2012-04-19 23 views
28

¿Hay algún paquete R que se centre en el análisis de opinión? Tengo una pequeña encuesta donde los usuarios pueden escribir un comentario sobre su experiencia de usar una herramienta web. Pido una clasificación numérica, y existe la opción de incluir un comentario.Análisis de opinión utilizando R

Me pregunto cuál es la mejor manera de evaluar la positividad o la negatividad del comentario. Me gustaría ser capaz de compararlo con la clasificación numérica que el usuario proporcione, utilizando R.

+2

Eche un vistazo al trabajo de Jeffery Breen aquí: http: //www.slideshare.net/jeffreybreen/r-por-ejemplo-mining-twitter-for – mweylandt

+0

@mweylandt, como compañero Jeffrey, es "r-e-y". Pero parece un método simple y ordenado. –

+0

Jeffrey Breen proporciona una excelente guía sobre todo para principiantes en Text Mining como yo. Promuevo visitar el enlace compartido por Paras. Desde ese enlace puede ir al sitio web del profesor Bing Liu, que está especializado en el tema: [Minería de opinión, Análisis de opinión y Detección de spam de opinión] [1] [1]: http: //www.cs.uic. edu/~ liub/FBS/sentiment-analysis.html Saludos, Rod – rodobastias

Respuesta

26

Y hay this package:

sentiment: Tools for Sentiment Analysis

sentimiento es un paquete de R con herramientas para el análisis de los sentimientos que incluyen clasificadores bayesianos para la positividad/negatividad y clasificación de la emoción.

Actualización 14 Dic 2012: se ha eliminado la archive ...

de actualización 15 de Mar de 2013: el paquete qdap tiene una función polarity, basado en el trabajo de Jeffery Breen

+1

Este paquete ya no está disponible para R 3.3 –

18

Here's el trabajo que he hecho en el análisis de los sentimientos en R.

El código es, de ninguna manera, pulido o bien embalado, pero I posted it on Github con documentación básica. Usé el ViralHeat sentiment API, que simplemente devuelve JSON, por lo que la función real para hacer el análisis de sentimiento es bastante trivial (vea el código here).

No dude en ponerse en contacto conmigo si tiene problemas para usarlo. Y tenga en cuenta que deberá registrarse para obtener una clave API con ViralHeat antes de que pueda usarla. Si encuentra que las cuotas son demasiado restrictivas, las contacté y estuvieron felices de darme muchas más consultas durante unos meses mientras jugaba con la API.

0

Puede seguir utilizando el paquete de opinión. Instálalo siguiendo el script a continuación.

Es posible que necesite R 3.x.

require(devtools) 
install_url("http://cran.r-project.org/src/contrib/Archive/sentiment/sentiment_0.2.tar.gz") 
require(sentiment) 
ls("package:sentiment") 
+1

paquete de configuración depende del paquete rstem, que tampoco es compatible con R 3.0.2 –

+0

Sí, incluso la fuente sitio: https://sites.google.com/site/miningtwitter/home advierte: Debido a los cambios en las API de Twitter, el código en este sitio de Google ya no es compatible ... aunque puede visitar su sitio web contenido – Matt

2

He tratado de reorganizar y proporcionar un paquete de análisis de los sentimientos de cohesión here. SentR incluye derivación y preprocesamiento de palabras y proporciona acceso a la API ViralHeat, una función de agregación predeterminada, así como a un método Naive Bayes más avanzado.

Instalación es relativamente simple:

install.packages('devtools') 
require('devtools') 
install_github('mananshah99/sentR') 
require('sentR') 

Y un ejemplo sencillo de clasificación:

# Create small vectors for happy and sad words (useful in aggregate(...) function) 
positive <- c('happy', 'well-off', 'good', 'happiness') 
negative <- c('sad', 'bad', 'miserable', 'terrible') 

# Words to test sentiment 
test <- c('I am a very happy person.', 'I am a very sad person', 
'I’ve always understood happiness to be appreciation. There is no greater happiness than appreciation for what one has- both physically and in the way of relationships and ideologies. The unhappy seek that which they do not have and can not fully appreciate the things around them. I don’t expect much from life. I don’t need a high paying job, a big house or fancy cars. I simply wish to be able to live my life appreciating everything around me. 
') 

# 1. Simple Summation 
out <- classify.aggregate(test, positive, negative) 
out 

# 2. Naive Bayes 
out <- classify.naivebayes(test) 
out 

que proporciona el resultado siguiente:

score 
1  1 
2 -1 
3  2 

    POS    NEG     POS/NEG    SENT  
[1,] "9.47547003995745" "0.445453222112551" "21.2715265477714" "positive" 
[2,] "1.03127774142571" "9.47547003995745" "0.108836578774127" "negative" 
[3,] "67.1985217685598" "35.1792261323723" "1.9101762362738" "positive" 

favor, siéntase libre de contribuir :) Esperanza ¡eso ayuda!

+0

hola Manan, me gusta su solución. Intenté y experimentaré más. ¿Tiene algún caso de uso como cualquier proyecto hecho que hizo público para que otras personas lo usen? Thx – seakyourpeak

+0

@seakyourpeak ¡gracias por el comentario! Estoy trabajando en un repositorio de extracción de sentimientos de Twitter (github.com/manans99), pero por el momento la documentación de cada función incluye un caso de uso de muestra. Si tiene más preguntas, no dude en enviarme un mensaje. – manan

+0

@manan Actualmente estoy trabajando en los datos de publicación de Facebook. Pude extraer la publicación y construir una wordcloud. Me preguntaba si crees que es una buena idea usar la palabra más común para mi lista negativa y positiva. Ej: si en mi wordcloud encontré como, malo, genial, amor, feliz, triste, avión, coche, transporte ... Me gustaría usar como, genial, amor, feliz como clasificador positivo y triste, malo como negativo ... ? –

Cuestiones relacionadas