5

Vamos a empezar con un problema sencillo. Digamos que tengo una oración de 350 char y me gustaría dividir la oración en un cubo de "Buen humor" o en un cubo de "Mal humor".frases cántaros por el estado de ánimo

¿Cuál sería la mejor manera de diseñar un algoritmo para dividir la oración?

Respuesta

5

Clasifique manualmente un grupo de oraciones por estado de ánimo. Luego alimentar a estos en un clasificador de Bayes ingenuo. Use algo como SpamBayes como punto de partida.

+0

Si Bayes no funciona bien, puede intentar http://en.wikipedia.org/wiki/C4.5_algorithm – ldog

1

Una sugerencia simple/ingenua sería dividir primero cada oración en palabras individuales, o usar una expresión regular y buscar palabras específicas de una lista "positiva" (por ejemplo, "me gusta", "feliz", "puede "," do ", etc.) y una lista" negativa "(" antipatía "," triste "," no puede "," no hacer "), resuelva cuál es más frecuente en cada oración y cuélelo según corresponda .

Dependiendo de sus requisitos y conjunto de datos esto puede ser adecuado, o puede que desee investigar técnicas más avanzadas como Bayesian filtering.

+1

El problema con esto es si dije algo así como "eso no estaba mal", mostraría que hay 2 palabras que son "malas" pero en realidad es una oración positiva.Además, no puede hacer el número par = positivo porque "eso salió terriblemente mal" es una mala frase. – locoboy

+0

Nunca dije que trataría todos los casos de una manera súper inteligente, realmente depende de su conjunto de datos y de cuánto tiempo quiera dedicar a él. Puede que no valga la pena gastar el tiempo y el esfuerzo en una solución "perfecta". –

+0

Puede basarse en la idea básica al considerar no solo palabras, sino pares de palabras, triples de palabras, etc. Al considerar todas las n-tuplas de palabras para todo n, puede dar cuenta de toda la información. Sin una gran cantidad de datos, esto generalmente no proporcionará mucha información para valores altos de n (más allá de pares o triples, en la práctica), por lo que querrá truncar con un valor bajo de n. Pero esto es exactamente lo que se hace en un clasificador de Bayes, así que ahorre el esfuerzo y construya sobre los existentes. –

0

Puede jugar con la herramienta Weka para entrenar un clasificador que funcione bien en su caso. Recomendaría probar el algoritmo J48 que creo que es una implementación del algoritmo C4.5 para entrenar árboles de decisión.

0

máquina de intentar aprender de un grupo de este tipo de frases. Use algunas características, por ejemplo, emoticones como indicadores de estado de ánimo. Observe la calidad y agregue/modifique su conjunto de características.

1

Dependiendo del dominio de las oraciones y de la precisión requerida, este podría ser un problema extremadamente difícil. Hay muchos trabajos académicos sobre análisis de sentimientos; un buen comienzo podría ser here - un artículo corto y clásico.

Los pasos me gustaría sugerir que tomar, conduciría gradualmente a un clasificador mejor y mejor:

  1. mano clasificar algunos documentos, y los utilizan para entrenar a un algoritmo ya hecha. Me gustaría sugerir el uso de SVM (por ejemplo, utilizando LibSVM in WEKA, o SVMLight), pero Bayes ingenuo o árboles de decisión, como se sugirió anteriormente, podría funcionar también.

  2. Mano clasificar algunos documentos más, y pasar de un modelo basado en unigram a uno más sofisticado, por ejemplo. basado en bigram o partes de discurso. Esto se puede hacer fácilmente con TagHelper tools, que tomará sus textos y los transformará en archivos listos para WEKA utilizando estas técnicas. Esto agregará un contexto al estado de ánimo de cada término (por ejemplo, "no" y "malo" vs. "no está mal").

  3. Finalmente, puede agregar reglas y diccionarios personalizados, que agregarían conocimiento específico del dominio a su algoritmo. Pueden representarse como funciones adicionales para el mismo motor de clasificación o como un paso de clasificación adicional.

1

Esto se llama Sentiment Analysis, y el artículo de Wikipedia tiene una buena descripción de las técnicas disponibles. Una salida fácil sería usar el Google Prediction API, y entrenarlo con un conjunto de oraciones de sentimiento positivo, negativo y neutral.

Cuestiones relacionadas