Estoy buscando una implementación de código abierto, preferiblemente en python, de Textual Sentiment Analysis ( http://en.wikipedia.org/wiki/Sentiment_analysis ). ¿Alguien está familiarizado con una implementación de código abierto que pueda usar?
Estoy escribiendo una aplicación que busca en Twitter algún término de búsqueda, como "youtube", y cuenta tweets "felices" versus tweets "tristes". Estoy usando el appengine de Google, por lo que está en Python. Me gustaría poder clasificar los resultados de búsqueda devueltos desde Twitter y me gustaría hacerlo en Python. No he podido encontrar tal analizador de sentimientos hasta ahora, específicamente no en Python. ¿Está familiarizado con la implementación de código abierto que puedo usar? Preferiblemente, esto ya está en Python, pero si no, espero que pueda traducirlo a Python.
Tenga en cuenta que los textos que estoy analizando son MUY cortos, son tweets. Entonces, idealmente, este clasificador está optimizado para textos tan cortos.
Por cierto, Twitter admite los operadores ":)" y ":(" en la búsqueda, que tienen como objetivo hacer precisamente esto, pero desafortunadamente, la clasificación proporcionada por ellos no es tan buena, así que pensé que podría intentarlo yo mismo. .
¡Gracias!
Por cierto, una demostración temprana está aquí y el código que tengo hasta ahora está aquí y me encantaría abrirlo con cualquier desarrollador interesado.
Buena suerte con eso.
El sentimiento es enormemente contextual y la cultura de los tweets empeora el problema porque no se le da el contexto para la mayoría de los tweets. El objetivo de Twitter es que puede aprovechar la enorme cantidad de contexto compartido del "mundo real" para incluir una comunicación significativa en un mensaje muy corto.
Si dicen que el video es malo, ¿eso significa malo o malo ?
fuente
Gracias a todos por sus sugerencias, ¡de hecho fueron muy útiles! Terminé usando un clasificador ingenuo bayesiano, que tomé prestado de aquí . Comencé alimentándolo con una lista de palabras clave buenas / malas y luego agregué una función de "aprender" empleando los comentarios de los usuarios. Resultó funcionar bastante bien.
Los detalles completos de mi trabajo como en una publicación de blog .
Nuevamente, su ayuda fue muy útil, ¡así que gracias!
fuente
He elaborado una lista de palabras etiquetadas con sentimiento. Puedes acceder a él desde aquí:
http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip
Encontrarás un breve programa de Python en mi blog:
http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/
Esta publicación muestra cómo usar la lista de palabras con oraciones individuales, así como con Twitter.
Los enfoques de listas de palabras tienen sus limitaciones. Encontrará una investigación de las limitaciones de mi lista de palabras en el artículo "Un nuevo ANEW: Evaluación de una lista de palabras para el análisis de sentimientos en microblogs". Ese artículo está disponible en mi página de inicio.
Tenga en cuenta
unicode(s, 'utf-8')
que falta un en el código (por razones pedagógicas).fuente
Muchos trabajos de investigación indican que un buen punto de partida para el análisis de sentimientos es mirar los adjetivos, por ejemplo, si son adjetivos positivos o negativos. Para un bloque corto de texto, esta es prácticamente tu única opción ... Hay artículos que analizan documentos completos o análisis a nivel de oraciones, pero como dices, los tweets son bastante cortos ... No existe un enfoque mágico real para comprender el sentimiento de una oración, así que creo que su mejor opción sería buscar uno de estos artículos de investigación y tratar de obtener su conjunto de datos de adjetivos con orientación positiva / negativa.
Ahora bien, dicho esto, el sentimiento es específico del dominio y es posible que le resulte difícil obtener un alto nivel de precisión con un conjunto de datos de propósito general.
Buena suerte.
fuente
Creo que puede resultarle difícil encontrar lo que busca. Lo más parecido que conozco es LingPipe , que tiene alguna funcionalidad de análisis de sentimientos y está disponible bajo un tipo limitado de licencia de código abierto, pero está escrito en Java.
Además, los sistemas de análisis de sentimientos generalmente se desarrollan entrenando un sistema en datos de reseñas de productos / películas que son significativamente diferentes del tweet promedio. Se optimizarán para texto con varias oraciones, todas sobre el mismo tema. Sospecho que sería mejor que usted mismo creara un sistema basado en reglas, tal vez basado en un léxico de términos de sentimiento como el que proporciona la Universidad de Pittsburgh .
Consulte We Feel Fine para ver una implementación de una idea similar con una interfaz realmente hermosa (y twitrratr ).
fuente
Eche un vistazo a la herramienta de análisis de sentimientos de Twitter . Está escrito en Python y usa el clasificador Naive Bayes con aprendizaje automático semi-supervisado. La fuente se puede encontrar aquí .
fuente
Quizás TextBlob (basado en NLTK y patrón) sea la herramienta de análisis de sentimientos adecuada para usted.
fuente
Me encontré con Natural Language Toolkit hace un tiempo. Probablemente podrías usarlo como punto de partida. También tiene muchos módulos y complementos, por lo que tal vez ya tengan algo similar.
fuente
Pensamiento un tanto loco: podría intentar usar la API de Twitter para descargar un gran conjunto de tweets y luego clasificar un subconjunto de ese conjunto con emoticonos: un grupo positivo para ":)", ":]", ": D", etc. y otro grupo negativo con ":(", etc.
Una vez que tenga esa clasificación cruda, puede buscar más pistas con frecuencia o análisis de ngramas o algo por el estilo.
Puede parecer una tontería, pero se han realizado investigaciones serias al respecto (búsqueda de "análisis de sentimientos" y emoticonos). Digno de una mirada.
fuente
Hay una API de Twitter Sentiment de TweetFeel que realiza un análisis lingüístico avanzado de los tweets y puede recuperar tweets positivos / negativos. Ver http://www.webservius.com/corp/docs/tweetfeel_sentiment.htm
fuente
Para aquellos interesados en codificar Twitter Sentiment Analyis desde cero, hay un curso de Coursera " Ciencia de datos " con código Python en GitHub (como parte de la tarea 1 - enlace ). Los sentimientos son parte del AFINN-111 .
Puede encontrar soluciones de trabajo, por ejemplo aquí . Además de la lista de opiniones AFINN-111, existe una implementación simple de construir una lista de términos dinámica basada en la frecuencia de los términos en los tweets que tienen una puntuación pos / neg (ver aquí ).
fuente