videos tipos textos texto redes para niños neuronales neuronal machine learning clasificador clasificacion automatica nlp svm feature-extraction sentiment-analysis

nlp - redes - tipos de textos para niños



Selección y reducción de características para la clasificación de texto (4)

Actualmente estoy trabajando en un proyecto, un analizador de sentimientos simple de tal manera que habrá 2 y 3 clases en casos separados . Estoy usando un corpus que es bastante rico en el uso de palabras únicas (alrededor de 200,000). Utilicé el método de bolsa de palabras para la selección de características y para reducir el número de características únicas , se realiza una eliminación debido a un valor de umbral de frecuencia de ocurrencia . El conjunto final de características incluye alrededor de 20,000 características, que en realidad es un 90% de disminución , pero no lo suficiente para la precisión prevista de la predicción de prueba. Estoy usando LibSVM y SVM-light a su vez para entrenamiento y predicción (tanto lineal como RBF kernel ) y también Python y Bash en general.

La precisión más alta observada hasta ahora es de alrededor del 75% y necesito al menos el 90% . Este es el caso para la clasificación binaria . Para el entrenamiento multi-clase , la precisión cae a ~ 60% . Necesito al menos un 90% en ambos casos y no sé cómo aumentarlo: mediante la optimización de los parámetros de entrenamiento o mediante la optimización de la selección de funciones .

He leído artículos sobre la selección de características en la clasificación de textos y lo que encontré es que se usan tres métodos diferentes, que tienen una clara correlación entre ellos. Estos métodos son los siguientes:

  • Aproximación de frecuencia de bolsa de palabras (BOW)
  • Ganancia de información (IG)
  • X ^ 2 Estadística (CHI)

El primer método ya es el que uso, pero lo uso de manera muy simple y necesito una guía para un mejor uso del mismo con el fin de obtener la precisión suficiente. También me falta conocimiento sobre implementaciones prácticas de IG y CHI y estoy buscando cualquier ayuda para guiarme de esa manera.

Muchas gracias, y si necesita información adicional para obtener ayuda, házmelo saber.

  • @larsmans: Umbral de frecuencia : estoy buscando las ocurrencias de palabras únicas en los ejemplos, de modo que si una palabra ocurre en diferentes ejemplos con suficiente frecuencia, se incluye en el conjunto de características como una característica única.

  • @TheManWithNoName: Antes que nada, gracias por su esfuerzo en explicar las preocupaciones generales de la clasificación de documentos. Examiné y experimenté todos los métodos que presenta y otros. Encontré el método de Diferencia Proporcional (PD) el mejor para la selección de características, donde las características son uni-grams y la Presencia de Término (TP) para la ponderación (no entendí por qué etiquetó Frecuencia-Término-Frecuencia-Documento-Inversa (TF- IDF) como un método de indexación, más bien lo considero como un enfoque de ponderación de características ). El preprocesamiento también es un aspecto importante para esta tarea como usted mencionó. Utilicé ciertos tipos de eliminación de cadenas para refinar los datos, así como el análisis morfológico y la derivación . También tenga en cuenta que estoy trabajando en turco , que tiene diferentes características en comparación con el inglés. Finalmente, logré alcanzar ~ 88% de precisión (medida f) para la clasificación binaria y ~ 84% para clase múltiple . Estos valores son pruebas sólidas del éxito del modelo que utilicé. Esto es lo que he hecho hasta ahora. Ahora trabajando en modelos de agrupación y reducción, hemos probado LDA y LSI y pasamos a moVMF y quizás a modelos esféricos (LDA + moVMF), que parece funcionar mejor en corpus que tienen naturaleza objetiva, como el corpus de noticias. Si tiene información y orientación sobre estos temas, lo agradeceré. Necesito información especialmente para configurar una interfaz (python orientada, de código abierto) entre los métodos de reducción de dimensiones del espacio de características (LDA, LSI, moVMF, etc.) y los métodos de agrupamiento (k-means, hierarchical etc.).


El svm lineal se recomienda para funciones de gran dimensión. Según mi experiencia, la máxima limitación de la precisión de SVM depende de las "características" positivas y negativas. Puede hacer una búsqueda en cuadrícula (o en el caso de svm lineal puede buscar el mejor valor de costo) para encontrar los parámetros óptimos para la máxima precisión, pero al final está limitado por la separabilidad de sus conjuntos de características. El hecho de que no obtenga el 90% significa que todavía tiene trabajo por hacer para encontrar mejores características para describir a los miembros de las clases.


Esto es probablemente un poco tarde para la mesa, pero ...

Como señala Bee y ya lo sabe, el uso de SVM como clasificador se desperdicia si ya ha perdido la información en las etapas anteriores a la clasificación. Sin embargo, el proceso de clasificación de texto requiere mucho más que solo un par de etapas y cada etapa tiene efectos significativos en el resultado. Por lo tanto, antes de buscar medidas de selección de características más complicadas, existen varias posibilidades mucho más simples que normalmente requerirán un consumo de recursos mucho menor.

¿Preprocesa los documentos antes de realizar tokensiation / representation en el formato de bolsa de palabras? Simplemente eliminar las palabras de suspensión o la puntuación puede mejorar la precisión considerablemente.

¿Ha considerado alterar su representación de bolsa de palabras para usar, por ejemplo, pares de palabras o n-gramas? Puede encontrar que tiene más dimensiones para empezar pero que se condensan mucho más y contienen información más útil.

También vale la pena señalar que la reducción de dimensión es la selección de características / extracción de características. La diferencia es que la selección de características reduce las dimensiones de forma univariada, es decir, elimina términos de manera individual tal como aparecen actualmente sin alterarlos, mientras que la extracción de características (que creo que Ben Allison se refiere) es multivariante, combinando uno o más términos únicos juntos para producir términos orthangonales más altos que (con suerte) contienen más información y reducen el espacio de características.

En cuanto a su uso de la frecuencia de los documentos, ¿está utilizando simplemente la probabilidad / porcentaje de documentos que contienen un término o está utilizando el término densidades que se encuentran en los documentos? Si la categoría uno tiene solo 10 douments y cada uno contiene un término una vez, entonces la categoría uno de hecho está asociada con el documento. Sin embargo, si la categoría dos tiene solo 10 documentos que contienen el mismo término cien veces cada uno, obviamente la categoría dos tiene una relación mucho más alta con ese término que la categoría uno. Si no se toman en cuenta las densidades de los términos, esta información se pierde y cuantas menos categorías tenga, más impacto tendrá esta pérdida. En una nota similar, no siempre es prudente retener los términos que tienen altas frecuencias, ya que pueden no proporcionar información útil. Por ejemplo, si un término aparece cientos de veces en cada documento, se considera un término de ruido y, si bien parece importante, no hay ningún valor práctico para mantenerlo en su conjunto de características.

Además, ¿cómo indexa los datos? ¿Utiliza el Modelo de espacio vectorial con indexación booleana simple o una medida más complicada como TF-IDF? Teniendo en cuenta el bajo número de categorías en su escenario, una medida más compleja será beneficiosa, ya que pueden tener en cuenta la importancia del término para cada categoría en relación con su importancia en todo el conjunto de datos.

Personalmente, probaría primero con algunas de las posibilidades anteriores y luego consideraría ajustar la selección / extracción de características con una (o una combinación de) ecuaciones complejas si necesita un impulso de rendimiento adicional.

Adicional

Según la nueva información, parece estar en el camino correcto y una precisión del 84% + (F1 o BEP - precisión y recuperación basados ​​en problemas de clase múltiple) generalmente se considera muy bueno para la mayoría de los conjuntos de datos. Es posible que haya adquirido con éxito todas las características de información enriquecida de los datos, o que algunas aún estén siendo eliminadas.

Una vez dicho esto, algo que puede usarse como un predictor de la buena reducción de dimensión agresiva para un conjunto de datos en particular es el análisis de "Conteo atípico", que utiliza la disminución de la ganancia de información en características periféricas para determinar qué tan probable es que la información perderse durante la selección de funciones. Puede usarlo en los datos en bruto y / o procesados ​​para dar una estimación de cuán agresivamente debe apuntar a eliminar las características (o eliminarlas según sea el caso). Un documento que lo describe se puede encontrar aquí:

Papel con información de recuento de valores atípicos

Con respecto a describir TF-IDF como un método de indexación, tiene razón en que es una medida de ponderación de características, pero considero que se usa principalmente como parte del proceso de indexación (aunque también se puede usar para la reducción de dimensiones). El razonamiento para esto es que algunas medidas están mejor orientadas hacia la selección / extracción de características, mientras que otras son preferibles para la función de ponderación específicamente en sus vectores de documentos (es decir, los datos indexados). En general, esto se debe a que las medidas de reducción de dimensión se determinan por categoría, mientras que las medidas de ponderación de índices tienden a estar más orientadas al documento para proporcionar una representación vectorial superior.

Con respecto a LDA, LSI y moVMF, me temo que tengo muy poca experiencia con ellos para proporcionarles alguna guía. Lamentablemente, tampoco he trabajado con los conjuntos de datos turcos ni con el lenguaje python.


Estoy seguro de que es demasiado tarde para ser útil al afiche, pero tal vez sea útil para otra persona. El enfoque chi-cuadrado para la reducción de funciones es bastante simple de implementar. Suponiendo la clasificación binaria de BoW en las clases C1 y C2, para cada característica f en candidate_features calcule la frecuencia de f en C1; calcule el total de palabras C1; repetir cálculos para C2; Calcule un chi-sqaure para determinar las características candidatas del filtro en función de si el valor p está por debajo de un cierto umbral (p. Ej. P <0.05). Se puede ver un tutorial usando Python y nltk aquí: http://streamhacker.com/2010/06/16/text-classification-sentiment-analysis-eliminate-low-information-features/ (aunque si recuerdo correctamente, creo el autor aplica incorrectamente esta técnica a sus datos de prueba, lo que sesga los resultados informados).


Recomendaría la reducción de dimensionalidad en lugar de la selección de características. Considere la descomposición de valores singulares , el análisis de componentes principales , o incluso mejor considerando que está adaptada para representaciones de bolsa de palabras, asignación latente de Dirichlet . Esto te permitirá retener teóricamente representaciones que incluyan todas las palabras, pero colapsarlas a menos dimensiones explotando relaciones de similitud (o incluso de tipo sinónimo) entre ellas.

Todos estos métodos tienen implementaciones bastante estándar a las que se puede acceder y ejecutar: si nos informa el idioma que está utilizando, yo u otra persona lo guiaré en la dirección correcta.