Je suis nouveau sur Twitter Sentimental Analysis avec twitteR, et j'ai utilisé le positif.txt et le negative.txt de Hu et Liu. J'étais si content que tout se passe bien, mais les scores de plus de 1000 tweets se sont tous révélés neutres (score = 0)? Je ne peux pas comprendre ce qui s'est mal passé, toute aide est grandement appréciée!Twitter Sentimental Analysis avec twitteR, tous les scores sont zéro?
setup_twitter_oauth(consumer_key, consumer_secret, token, token_secret)
#Get tweets about "House of Cards", due to the limitation, we'll set n=1500
netflix.tweets<- searchTwitter("#HouseofCards",n=1500)
tweet=netflix.tweets[[1]]
tweet$getScreenName()
tweet$getText()
netflix.text=laply(netflix.tweets,function(t)t$getText())
head(netflix.text)
write(netflix.text, "HouseofCards_Tweets.txt", ncolumns = 1)
#loaded the positive and negative.txt from Hu and Liu
positive <- scan("https://stackoverflow.com/users/xxx/desktop/positive_words.txt", what = character(), comment.char = ";")
negative <- scan("https://stackoverflow.com/users/xxx/desktop/negative_words.txt", what = character(), comment.char = ";")
#add positive words
pos.words =c(positive,"miss","Congratulations","approve","watching","enlightening","killing","solid")
scoredsentiment <- function(hoc.vec, pos.word, neagtive)
{
clean <- gsub("(RT|via)((?:\\b\\W*@\\w+)+)", "",hoc.vec)
clean <- gsub("^\\s+|\\s+$", "", clean)
clean <- gsub("[[:punct:]]", "", clean)
clean <- gsub("[^[:graph:]]", "", clean)
clean <- gsub("[[:cntrl:]]", "", clean)
clean <- gsub("@\\w+", "", clean)
clean <- gsub("\\d+", "", clean)
clean <- tolower(clean)
hoc.list <- strsplit(clean, "")
hoc=unlist(hoc.list)
pos.matches = match(hoc, pos.words)
scoredpositive <- sapply(hoc.list, function(x) sum(!is.na(match(pos.matches, positive))))
scorednegative <- sapply(hoc.list, function(x) sum(!is.na(match(x, negative))))
hoc.df <- data.frame(score = scoredpositive - scorednegative, message = hoc.vec, stringsAsFactors = F)
return (hoc.df)
}
twitter_scores <- scoredsentiment(netflix.text, scoredpositive, scorednegative)
print(twitter_scores)
write.csv(twitter_scores, file=paste('twitter_scores.csv'), row.names=TRUE)
#draw a graph to show the final outcome
hist(twitter_scores$score)
qplot(twitter_scores$score)
Tout fonctionne, mais le score pour chaque tweet est le même (score = 0)
Tout fonctionne, sauf qu'il ne fonctionne pas .... got it. Où est-ce que 'markedpositive' et' scorenegative' sont définis en dehors de la fonction afin que vous puissiez les utiliser comme entrées pour la fonction? Je soupçonne que si vous avez exécuté ce code sur un environnement propre (redémarrer R), cela ne fonctionnerait plus. – cory
@cory LOL J'ai vraiment plus de travail sur mon utilisation de lanaguge haha il a effectivement traversé à nouveau après que je ai redémarré R, mais je n'ai encore que score = 0 pour tous les tweets – LenaLD
'scorepositive' et' scorenegative' ne sont pas définis dans le code que vous avez posté. – cory