R的AFINN LEXICON情感分析

时间:2020-07-20 13:07:16

标签: r twitter sentiment-analysis

我是一个新手,我想与Rstudio合作完成我的最终项目。我正在使用AFINN情感词典,我在网上找到了此代码,但是我不断收到错误消息,我不确定我要去哪里。

这是代码

setwd("F:/SKRIPSI/EKSTRAKSI FITUR/AFINN")


#tweets <- data.frame(read.csv("tweets.csv"))

#tweets <- read_csv("F:/SKRIPSI/EKSTRAKSI FITUR/AFINN/05a_stemming_3000c.csv", 
#                   col_types = cols(label = col_character(), 
#                                    text = col_character()))
#df1 <- tweets$text
#mat.or.vec(nrow(tweets),2)

tweets <- data.frame(read.csv("F:/SKRIPSI/EKSTRAKSI FITUR/AFINN/05a_stemming_3000c.csv"))

pacman::p_load(tm)
library(tm)
library(SnowballC)
dtm.control <- list(
  tolower = TRUE, 
  removePunctuation = TRUE, 
  removeNumbers = TRUE,
#  stopwords = stopwords("english"),
#  stemming = FALSE,
  wordLengths = c(2,"inf")
)

corpboston <- Corpus(VectorSource(tweets$text))
dtm.boston <- DocumentTermMatrix(corpboston, control = dtm.control)

afinn_list <- read.delim(file = "afinn-indo.txt", header = FALSE, stringsAsFactors = FALSE)  
names(afinn_list) <- c("word", "score")  
afinn_list$word <- tolower(afinn_list$word)

sentiment <- function(afinn_list, tweets) {
  tweet.sent <- mat.or.vec(nrow(tweets), 2)
  colnames(tweet.sent) <- c('text', 'label')
  word.frequency <- vector('list', nrow(tweets))
  for(f in 1:nrow(tweets))
  { 
    
    tweet.sent[f, 1] <- tweets$text[f]
    tweet.sent[f, 1] <- tweets$label[f]
    corpboston <- Corpus(VectorSource(tweets$text[f]))
    dtm.boston <- DocumentTermMatrix(corpboston, control = dtm.control)
    TermFreq <- data.frame(findFreqTerms(dtm.boston), dtm.boston$v)
    word.frequency[[f]] <- data.frame(findFreqTerms(dtm.boston), dtm.boston$v)
    sentwords <- intersect(findFreqTerms(dtm.boston), afinn_list[,1])
    sentwords.index <- match(sentwords, afinn_list[,1])
    
    if(length(sentwords.index) > 0)
    {
      sentwords.score <- affin_list[sentwords.index,2]
      sentwords.freq <- TermFreq[match(sentwords,TermFreq[,1]),2]
      tweet.sent[f,3] <- sum(sentwords.score*sentwords.freq)
    }
  }  
  return(tweet.sent)}
TweetSent <- data.frame(sentiment(affin_list, tweets))

这是错误

enter image description here

我希望每个人都能提供帮助,谢谢!

0 个答案:

没有答案