2010-05-14 17 views
17

Me estoy embarcando en un proyecto de PNL para el análisis del sentimiento.¿Análisis de opinión con pitón NLTK para oraciones que usan datos de muestra o servicio web?

He instalado con éxito NLTK para Python (parece una gran pieza de software para esto). Sin embargo, tengo problemas para entender cómo se puede usar para llevar a cabo mi tarea.

Aquí es mi tarea:

  1. comienzo con una larga pieza de datos (digamos varios cientos de tweets en el tema de la elección del Reino Unido de su servicio web)
  2. me gustaría romper esto en oraciones (o información de no más de 100 caracteres) (supongo que puedo hacer esto en python ??)
  3. Luego buscar a través de todas las oraciones para instancias específicas dentro de esa oración, por ejemplo "David Cameron"
  4. entonces me gustaría para comprobar si hay sentimiento positivo/negativo en cada frase y lo considero como consecuencia

NB: No estoy realmente preocupado demasiado por la precisión porque mis conjuntos de datos son grandes y también no me preocupa demasiado el sarcasmo.

Éstos son los problemas que estoy teniendo:

  1. Todos los conjuntos de datos que puedo encontrar, por ejemplo, los datos de revisión de la película de corpus que viene con NLTK no están en formato de servicio web. Parece que ya se ha procesado algo. Por lo que puedo ver, el procesamiento (por stanford) se hizo con WEKA. ¿No es posible que NLTK haga todo esto solo? Aquí todos los conjuntos de datos ya se han organizado en positivo/negativo, como p. Ej. dataset de polaridad http://www.cs.cornell.edu/People/pabo/movie-review-data/ ¿Cómo se hace esto? (para organizar las oraciones por sentimiento, ¿es definitivamente WEKA? ¿o algo más?)

  2. No estoy seguro de entender por qué WEKA y NLTK se usarían juntos. Parece que hacen más de lo mismo. Si estoy procesando los datos con WEKA primero para encontrar el sentimiento ¿por qué necesitaría NLTK? ¿Es posible explicar por qué esto podría ser necesario?

He encontrado algunos scripts que se acercan un poco a esta tarea, pero todos usan los mismos datos preprocesados. ¿No es posible procesar estos datos yo mismo para encontrar el sentimiento en oraciones en lugar de utilizar las muestras de datos que figuran en el enlace?

¡Cualquier ayuda es muy apreciada y me ahorrará mucho pelo!

Saludos Ke datos opinión

Respuesta

12

La película ya ha sido marcada por los seres humanos como positivo o negativo (la persona que hizo la revisión dio a la película una calificación que se utiliza para determinar la polaridad). Estas etiquetas de estándar de oro le permiten entrenar un clasificador, que luego puede usar para otras revisiones de películas. Puede entrenar un clasificador en NLTK con esa información, pero aplicar los resultados a los tweets de elección puede ser menos preciso que adivinar al azar positivo o negativo. Alternativamente, puede revisar y etiquetar algunos miles de tweets usted mismo como positivos o negativos y utilizar esto como su conjunto de entrenamiento.

Para una descripción de la utilización de Naive Bayes para el análisis de opiniones con NLTK: http://streamhacker.com/2010/05/10/text-classification-sentiment-analysis-naive-bayes-classifier/

Entonces en ese código, en lugar de utilizar el corpus de películas, utilizar sus propios datos para calcular el número de palabras (en el método word_feats).

+0

sí, terminé en ese sitio después de un poco de búsqueda, pero creo que estoy un poco atascado en cómo obtener la estadística para cada revisión. ¿Cómo puedo usar nltk para darme una lista de los ID de revisión con un 1 o 0 para pos/neg? cheers ke –

+0

Posiblemente útil para futuros lectores: el corpus de revisión de películas tiene categorías "pos" y "neg". Para obtener una lista de archivos en la categoría "neg", simplemente use 'movie_reviews.fileids (" neg ")'. También puede extraer directamente todo el texto en la categoría negativa diciendo, por ejemplo, 'movie_reviews.sents (categories = [" neg "])'. (Estos métodos funcionan con todos los corpus nltk categorizados. Para enumerar las categorías en un corpus, use 'corpus.categories()'.) – alexis

1

¿Por qué no utiliza WSD. Usa la herramienta de desambiguación para encontrar sentidos. y usa la polaridad del mapa para los sentidos en lugar de la palabra. En este caso, obtendrá resultados un poco más precisos en comparación con la polaridad del índice de palabras.

+1

Suena genial. ¿Tiene algún documento o aplicación mencionando esto? – mixdev

Cuestiones relacionadas