我在R中得到了一个代码,用于提取文本列表中的情感,并将其保存在一个数据框架中,这是一个情感分析项目。我对r和coreNLP还不熟悉,所以我一直在用内存之类的东西来解决问题,但我仍然不知道如何解决所有的问题。代码中的tripadvisor数据框架包含来自TripAdvisor网页的评论,我想从它们中提取情感。TripAdvisor$titleopinion是包含这些数据的列。
我得到的错误是:rJava::.jcall中的错误(挥发物$cNLP,“Ledu/stanford/nlp/管道/注释”),:带有签名的方法进程(I)Ledu/stanford/nlp/管道/注释;未找到。
我在每个R会话中运行的命令是:
我的个人电脑有8G的RAM,我有时会摆脱内存问题。我正在加载的dali1.csv包含大约450个文本实例,我想从中提取情感。
守则如下:
library(data.table)
library(devtools)
devtools::install_github("statsmaths/coreNLP")
#coreNLP::downloadCoreNLP()
library(coreNLP)
initCoreNLP("C:/TFG/stanford-corenlp-full-2016-10-31")
# Read the data
TripAdvisor <- read.csv("C:/TFG/Data/dali/dali1ENG.csv")
# Creating sentiment label
TripAdvisor$SentimentValue <- NA
TripAdvisor$SentimentValue <- ifelse(TripAdvisor$rating <= 2, "negative",
ifelse(TripAdvisor$rating == 3, "neutral",
ifelse(TripAdvisor$rating >= 4, "positive", TripAdvisor$SentimentValue)))
# Predict sentiment with coreNLP
TripAdvisor$SentimentCoreNLP <- NA
for(i in 1:nrow(TripAdvisor)){
print(i)
pos <- 0
neg <- 0
opinion <- TripAdvisor$titleopinion[i]
opinion.df <- getSentiment(annotateString(opinion))
for(j in 1:nrow(opinion.df)){
if(opinion.df$sentiment[j]=="Verypositive"){
pos = pos + 2
} else if(opinion.df$sentiment[j]=="Positive"){
pos = pos + 1
} else if(opinion.df$sentiment[j]=="Negative"){
neg = neg + 1
} else if(opinion.df$sentiment[j]=="Verynegative"){
neg = neg + 2
}
}
TripAdvisor$pos[i] <- pos
TripAdvisor$neg[i] <- neg
}
TripAdvisor$SentimentCoreNLP <- ifelse(TripAdvisor$pos > TripAdvisor$neg, "positive",
ifelse(TripAdvisor$pos < TripAdvisor$neg, "negative", "neutral"))
write.csv(TripAdvisor, file="C:/TFG/Data/dali/daliXENG.csv")
# Analysing SentimentValue vs. SentimentCoreNLP
# Table
table(TripAdvisor$SentimentCoreNLP, TripAdvisor$SentimentValue)
#100*(table(TripAdvisor$SentimentCoreNLP, TripAdvisor$SentimentValue)/(nrow(TripAdvisor)))这段代码应该正常工作,给我的人在一台有i3和8GRAM的机器上使用它时没有问题。任何关于内存问题和注解器缺失的洞察力都会受到欢迎和赞赏。对不起,我的英语不好,我还在学习:)
如果我缺少一些必要的信息,请告诉我,以便我可以提供。
发布于 2017-04-12 07:18:27
好的,我想我刚刚得到了答案,我想问题可能是标题栏的类型是因素,而不是字符。我修正了TripAdvisor$titleopinion <- as.character(TripAdvisor$titleopinion)。
如果有人读到,我是新来的,我不知道该怎么做,我应该删除这个问题吗?
https://stackoverflow.com/questions/43362750
复制相似问题