Cómo clasificar micro-textos (tweets, preguntas, etc.)

“No es bueno”, pero ¿qué es bueno? ¿Qué métrica estás usando: precisión, ROC? ¿Cuál es la distribución de las clases: sus variaciones, hay un fuerte desequilibrio de clase? ¿Cómo estás procesando los tweets? Podría seguir, pero aquí hay algunas ideas generales. Tenga en cuenta que estoy escribiendo esto por experiencia, no soy un experto en ML, NLP o IR.

¿Cómo has explorado los datos?

Graficar cosas de las diferentes clases juntas, por separado; encontrar características que dependen de la clase? Recuento de palabras gráficas, recuento de letras mayúsculas, puntuación. Busque tanta información como sea posible desde esta etapa, ya que estas ideas informan sus características. PCA podría ser útil para reducir la dimensión del comportamiento de los datos cuando se mueve en direcciones que son más variables (aproximadamente). Yo uso la versión de Sklearn, sobre la cual puedes leer aquí.

Considere las técnicas vecinas más cercanas para la agrupación, puede resultar que puede usar la versión supervisada de KNNs en su fase de modelado para construir un clasificador usando el clasificador sklearn KNN. Esto recientemente demostró ser bueno para un problema de clasificación de texto en el que estaba trabajando en las opiniones de la corte de apelaciones de los Estados Unidos.

¿Qué procesamiento le has hecho a los tweets?

Por lo general, dejaría de eliminar palabras eliminando la lematización (nltk en python)
pero esto depende totalmente de la tarea, es posible que deba considerar un conjunto personalizado de palabras clave dependiendo del dominio, por ejemplo.

¿Qué características has recopilado?
¿Algo resultó de la fase de Exploración / Visualización?
Aquí puede ir paso a paso y construir iterativamente características más complejas.
Supongo que comenzaste con una bolsa de palabras, ¿has considerado n-gramos de diferentes longitudes; dependiendo de sus necesidades, los gramos de caracteres pueden ser útiles.

Tfidf es un espacio de características estándar para vectores de documentos, por lo que normalmente intento esto. Encuentra los términos importantes (sin embargo, eliges definir esos términos) al observar la frecuencia con la que aparecen en tus documentos (que serán los tweets) y también escalar las diferentes longitudes en los tweets (esto puede ser menos importante para los tweets si un término es una palabra) por log del documento – relación de frecuencia de palabras.

Características de texto simple
No subestimes el poder de las características simples basadas en texto. Nuevamente, el recuento de caracteres de puntuación, el recuento de palabras, han resultado ser muy útiles para mí y para las personas de las que he aprendido en compilaciones de kaggle. Aquí está el testimonio 🙂
www.kaggle.com/c/stumbleupon/forums/t/6184/what-did-you-use
al menos lee el OP.

Modelos?

Con bastantes puntos de datos, algunas buenas características y dos clases, realmente debería estar bien, asumiendo cierta separabilidad (suave).

Bueno, con más de 1 millón de ejemplos, probablemente usarás algo rápido,
como tu eres. SVM, Regresión logística como modelos base para luego verificar dónde están bajo rendimiento y calibrar. Supongo que con millones de tweets tienes un espacio vectorial variable. ¿Cómo son las tasas de clasificación errónea? ¿Has mirado una matriz de confusión? Esta matriz podría darle una idea de dónde se descompone el algoritmo particular.

Si tiene los datos correctos para responder a su pregunta sobre las clases y tiene suficiente (debería tener suficiente), podría construir un clasificador decente aquí.

Pero, ¿qué quiero decir con decente? ¿Qué quieres decir con “no bueno”?

Intenté lo anterior y quiero acceder a hipótesis no lineales:

Luego, vaya por la ruta de los árboles de decisión, son bastante rápidos y pueden manejar la no linealidad de una manera elegante y útil. Por supuesto, hay una buena implementación de RandomForest (que combina los árboles de decisión (DT) de varias maneras) en sklearn, pero es posible que deba trabajar con muestras de sus tweets para manejar la complejidad del tiempo. Las implementaciones de bosques aleatorios ofrecen la oportunidad de hacer predicciones fuera de muestra para que pueda asegurarse de eso cuando se evite el sobreajuste. Por supuesto, los pliegues CV deben ser el arma de elección para evitar el sobreajuste.

Overkill ML nerd section

O siga la ruta de Modelos aditivos y use GBM con árboles de decisión, Owen: kaggle # 1 jura por estos:

Una gran charla en general, pero él comienza a hablar sobre GBDT a los 12 minutos. No tengo mucha experiencia con estos, pero puedes echar un vistazo a una buena página en papel en nih.gov que explica cómo funcionan (con algunas matemáticas si te interesan ese tipo de cosas) y cómo entrenarlos, aunque La descripción general de Owen realmente debería ser suficiente para comenzar a usar el DT en los modelos GBM con XGBoost.

Todavía siento que quieres salir nerd: Ensemble

Lea cómo puede agrupar todos estos modelos para una búsqueda aún más exhaustiva del espacio de hipótesis (la función que produce el patrón en el que busca esos tweets). Guía de ensamblaje de Kaggle. No importa el Kaggle en ese título, las técnicas son útiles si tienes el tiempo y los recursos informáticos.

TL; DR : me preguntaría

  • ¿Tengo los datos “correctos” para responder a esta consulta en particular?
  • ¿Cómo estoy procesando los datos? ¿Estoy reduciendo su complejidad demasiado o nada?
  • ¿Qué características del texto en sí me han parecido útiles?

Espero que esto ayude.
Saludos.

Considere el algoritmo KNN para la clasificación de tweets. Una palabra para tuitear un vector emparejado con la etiqueta de clase c es su conjunto de entrenamiento. a (i, j) es el peso de cada palabra en el tuit a

Para las palabras que no están en el léxico, puede tener el vector b para cada palabra única en su posición en cada tweet a, y calcular la puntuación de estado de ánimo de la nueva palabra

Con los datos de entrenamiento anteriores, debe poder calcular el vector de tweet de palabras de un conjunto de prueba y utilizar el clasificador KNN para ello.

Otra alternativa es calificar el tweet de un léxico clasificado y derivar los puntajes de nuevas palabras invisibles para calcular el puntaje general. Use esta puntuación para clasificar los tweets. Este es un modelo laico simple y funciona.