phone pattern number machine learning guide machine-learning classification nltk feature-selection

machine learning - pattern - Elegir características para identificar las preguntas de Twitter como "útiles"



nltk phone number (2)

Recopilo un montón de preguntas de la transmisión de Twitter usando una expresión regular para seleccionar cualquier tweet que contenga un texto que comience con un tipo de pregunta: quién, qué, cuándo, dónde, etc. y termina con un signo de interrogación.

Como tal, termino recibiendo varias preguntas no útiles en mi base de datos como: ''¿a quién le importa?'', ''¿Qué es esto?'' etc. y algunos útiles como: ''¿Con qué frecuencia hay una pelea de baloncesto?'', ''¿Cuánto pesa un oso polar?'' etc

Sin embargo, solo estoy interesado en preguntas útiles.

Tengo aproximadamente 3000 preguntas, ~ 2000 de ellas no son útiles, ~ 1000 de ellas son útiles y las he etiquetado manualmente. Estoy intentando usar un clasificador bayesiano ingenuo (que viene con NLTK) para tratar de clasificar las preguntas automáticamente para no tener que seleccionar manualmente las preguntas útiles.

Para empezar, intenté elegir las primeras tres palabras de una pregunta como característica, pero esto no ayuda mucho. De cada 100 preguntas, el clasificador pronosticó que solo alrededor del 10% -15% era correcto para preguntas útiles. Tampoco eligió las preguntas útiles de las que predijo que no serían útiles.

He intentado con otras características, como: incluir todas las palabras, incluida la longitud de las preguntas, pero los resultados no cambiaron significativamente.

¿Alguna sugerencia sobre cómo debo elegir las características o continuar?

Gracias.


Una característica muy poderosa que podrías probar y compilar (no estoy seguro si es posible) si hay una respuesta al tweet en cuestión.


Algunas sugerencias al azar.

Agregue un paso de procesamiento previo y elimine palabras de finalización como this , a , of , and , etc.

How often is there a basketball fight

Primero quitas algunas palabras de finalización, obtienes

how often basketball fight

Calcule la puntuación de tf-idf para cada palabra (Tratando cada tweet como documento, para calcular la puntuación, necesita todo el corpus para obtener la frecuencia de los documentos).

Para una oración como la anterior, calcula la puntuación de tf-idf para cada palabra:

tf-idf(how) tf-idf(often) tf-idf(basketball) tf-idf(fight)

Esto podría ser útil.

Pruebe a continuación las características adicionales para su clasificador

  • puntaje promedio de tf-idf
  • puntaje mediano de tf-idf
  • puntaje máximo de tf-idf

Además, pruebe con un pos-tagger y genere una oración categorizada para cada tweet.

>>> import nltk >>> text = nltk.word_tokenize(" How often is there a basketball fight") >>> nltk.pos_tag(text) [(''How'', ''WRB''), (''often'', ''RB''), (''is'', ''VBZ''), (''there'', ''EX''), (''a'', ''DT''), (''basketball'', ''NN''), (''fight'', ''NN'')]

Entonces posiblemente tenga características adicionales para probar eso relacionado con pos-tags.

Algunas otras características que pueden ser útiles, consulte el documento - qtweet (que es un documento para la identificación de preguntas de tweets) para obtener más información.

  • si el tweet contiene alguna url
  • si el tweet contiene algún correo electrónico o número de teléfono
  • si hay algún sentimiento fuerte como ! sigue la pregunta.
  • si las palabras de unigramo están presentes en los contextos de los tweets.
  • si el tweet menciona el nombre de otro usuario
  • si el tweet es un retweet
  • si el tweet contiene algún hashtag #

FYI, el autor de qtweet intentó 4 clasificadores diferentes, a saber, Random Forest, SVM, J48 y regresión logística. El bosque aleatorio tuvo el mejor desempeño entre ellos.

Espero que ayuden