2012-04-19 5 views
28

Ci sono pacchetti R che si concentrano sull'analisi dei sentimenti? Ho una piccola indagine in cui gli utenti possono scrivere un commento sulla loro esperienza nell'uso di uno strumento web. Chiedo una classifica numerica e c'è la possibilità di includere un commento.Analisi del sentimento usando R

Mi chiedo quale sia il modo migliore per valutare la positività o la negatività del commento. Mi piacerebbe essere in grado di confrontarlo con la classifica numerica che l'utente fornisce, con R.

+2

Dai un'occhiata al lavoro di Jeffery Breen qui: http: //www.slideshare.net/jeffreybreen/r-by-example-mining-twitter-for – mweylandt

+0

@mweylandt, come mio amico Jeffrey, è "r-e-y". Ma sembra un metodo semplice e accurato. –

+0

Jeffrey Breen fornisce un'ottima guida soprattutto ai principianti di Text Mining come me. Promosso per visitare il link condiviso da Paras. Da questo link è possibile visitare il sito web del professor Bing Liu che è specializzato sull'argomento: [Estrazione di Opinione, Analisi di Sentiment e Rilevazione di Spam di Opinione] [1] [1]: http: //www.cs.uic. edu/~ liub/FBS/sentiment-analysis.html Cordiali saluti, Rod – rodobastias

risposta

26

E c'è this package:

sentiment: Tools for Sentiment Analysis

sentimento è un pacchetto R con strumenti per la sentiment analysis tra cui classificatori Bayesiani per la positività/negatività e classificazione emozione.

Aggiornamento 14 dicembre 2012: è stato rimosso per la archive ...

Aggiornamento 15 Mar 2013: il pacchetto qdap ha una funzione polarity, basata sul lavoro di Jeffery Breen

+1

Questo pacchetto non è più disponibile per R 3.3 –

18

Here's il lavoro che ho fatto sul sentiment analysis in R.

Il codice è, in alcun modo, lucido o ben confezionato, ma I posted it on Github con documentazione di base. Ho usato il ViralHeat sentiment API, che restituisce solo JSON, quindi la funzione effettiva per fare l'analisi del sentimento è piuttosto banale (vedere il codice here).

Non esitate a contattarmi se avete problemi ad usarlo. E nota che dovrai registrarti per una chiave API con ViralHeat prima che tu possa usarlo. Se hai trovato le quote troppo restrittive, le ho contattate e sono state felici di darmi altre domande ancora per alcuni mesi mentre giocavo con l'API.

0

È ancora possibile utilizzare il pacchetto sentiment. Installalo seguendo lo script qui sotto.

Potrebbe essere necessario 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

il pacchetto setiment dipende dal pacchetto rstem, che non è supportato anche da R 3.0.2 –

+0

Sì, anche la fonte sito: https://sites.google.com/site/miningtwitter/home avverte: a causa di cambiamenti nelle API di twitter, il codice in questo sito di Google non è più supportato ... sebbene sia più che benvenuto sfogliare il suo contenuto – Matt

2

Ho cercato di riorganizzare e di fornire un pacchetto di analisi sentimento coesa here. SentR include word stemming e preelaborazione e fornisce l'accesso all'API ViralHeat, una funzione di aggregazione predefinita e un metodo Naive Bayes più avanzato.

L'installazione è relativamente semplice:

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

E un semplice esempio di classificazione:

# 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 

Che fornisce il seguente risultato:

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" 

Non esitate a contribuire :) Speranza questo aiuta!

+0

ciao Manan, mi piace la tua soluzione. Ho provato e sperimenterò di più. Hai qualche caso d'uso come qualsiasi progetto fatto da te reso pubblico per altre persone? Grazie – seakyourpeak

+0

@seakyourpeak grazie per il commento! Sto lavorando a un repository di estrazione di sentimento Twitter di esempio (github.com/manans99), ma per il momento la documentazione per ogni funzione include un caso d'uso di esempio. Se hai altre domande, non esitare a contattarmi. – manan

+0

@manan Attualmente sto lavorando sui dati dei post di Facebook. Sono stato in grado di estrarre il post e costruire un wordcloud. Mi stavo chiedendo se pensi che sia una buona idea usare la parola più comune per la mia lista negativa e positiva. Es: se nella mia wordcloud ho trovato come, brutto, grande, amore, felice, triste, aereo, macchina, trasporto .... Vorrei usare come, grande, amore, felice come classificatore positivo e triste, cattivo come negativo .. ? –