Creé un clasificador Naive Bayes que utiliza la técnica de la bolsa de palabras para clasificar las publicaciones de spam en un tablero de mensajes. Funciona, pero creo que podría obtener mejores resultados si mis modelos consideraran el orden de las palabras y las frases. (p. ej., 'chicas' y 'en vivo' pueden no desencadenar una puntuación alta de spam, aunque 'chicas en vivo' probablemente sea basura). ¿Cómo puedo construir un modelo que tenga en cuenta el orden de las palabras?
He considerado almacenar n-gramas (check-out-these, out-these-live, these-live-girls), pero esto parece aumentar radicalmente el tamaño del diccionario en el que mantengo el puntaje y causa inconsistencia como frases con muy redacción similar pero diferente orden se deslizará a través.
No estoy atado a la clasificación bayesiana, pero me gustaría algo que alguien sin una sólida formación en estadísticas pudiera asimilar e implementar.
fuente
Respuestas:
Hay un truco muy simple para incorporar el orden de las palabras en una implementación de modelo de bolsa de palabras existente. Trate algunas de las frases, como los bi-gramos que ocurren con frecuencia (por ejemplo, Nueva York) como una unidad, es decir, una sola palabra en lugar de tratarlas como entidades separadas. Esto asegurará que "Nueva York" sea diferente de "Nueva York". También podría definir tejas de palabras de orden superior, como para n = 3,4, etc.
Puede usar Lucene ShingleFilter para descomponer el texto de su documento en tejas como un paso de preprocesamiento y luego aplicar el clasificador en este texto descompuesto.
fuente
Pruebe algunos modelos generativos como HMM. Simplemente consulte el siguiente enlace: /stats/91290/how-do-i-train-hmms-for-classification
fuente
Hay muchas técnicas. Ya has mencionado n-gram, luego hay una combinación de palabras y otras. Pero el problema principal (al menos desde su punto de vista) es que a medida que la característica se vuelve más compleja (como n-gramo), el recuento de características aumenta dramáticamente. Esto es manejable. Básicamente, antes de la clasificación, debe calificar sus características y luego umbral en un cierto puntaje. de esta manera, las funciones (o en su caso n-gramas) que se puntúan por debajo de cierto nivel se omiten y el recuento de funciones se vuelve manejable. En cuanto a la puntuación. Existen numerosas formas (que seleccionar dependen de su aplicación) para calificar las características. Puede comenzar con "Separación biormal", "chi cuadrado", "Ganancia de información", etc. No sé si esta respuesta le ayuda, pero si está interesado, puedo elaborar ...
Olvidé que, en la combinación de palabras, pones una ventana de tamaño m en el texto y extraes cada combinación de n palabras. por supuesto n
fuente