He usado Jeffrey de la función para el cálculo de la partitura con el "buscar" método.
Hice un índice de corrupción de polititians de Argentina. Así que la más de la gente dijo que eran corruptos, mayor será la puntuación.
Por los datos que tenía, como los tweets fueron en español, acabo de escribir un pequeño diccionario más coherente con las necesidades del problema. Supongo que depende de lo que se desee analizar.
Además de este enfoque, hay métodos más sofisticados. Creo que hay un curso de coursera sobre la PNL.
Aquí es otro recurso:
https://sites.google.com/site/miningtwitter/basics/text-mining
Se dice que es obsoleta debido a los cambios de la API de twitter, pero el autor de twitteR paquete de adaptar el paquete a la nueva API. Así que primero es necesario instalar el paquete actualizado, tal vez la versión de origen.
Aquí es el autor de la página web. _http://geoffjentry.hexdump.org/
El posterior se necesita con el fin de no obtener duplicados de tweets al hacer una llamada más de 100 tweets.
Jeffrey Función de:
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
{
require(plyr)
require(stringr)
# we got a vector of sentences. plyr will handle a list
# or a vector as an "l" for us
# we want a simple array ("a") of scores back, so we use
# "l" + "a" + "ply" = "laply":
scores = laply(sentences, function(sentence, pos.words, neg.words) {
# clean up sentences with R's regex-driven global substitute, gsub():
sentence = gsub('[[:punct:]]', '', sentence)
sentence = gsub('[[:cntrl:]]', '', sentence)
sentence = gsub('\\d+', '', sentence)
# and convert to lower case:
sentence = tolower(sentence)
# split into words. str_split is in the stringr package
word.list = str_split(sentence, '\\s+')
# sometimes a list() is one level of hierarchy too much
words = unlist(word.list)
# compare our words to the dictionaries of positive & negative terms
pos.matches = match(words, pos.words)
neg.matches = match(words, neg.words)
# match() returns the position of the matched term or NA
# we just want a TRUE/FALSE:
pos.matches = !is.na(pos.matches)
neg.matches = !is.na(neg.matches)
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
score = sum(pos.matches) - sum(neg.matches)
return(score)
}, pos.words, neg.words, .progress=.progress )
scores.df = data.frame(score=scores, text=sentences)
return(scores.df)
}