首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的coreNLP :Ledu/stanford/nlp/管道/注释;未找到

R中的coreNLP :Ledu/stanford/nlp/管道/注释;未找到
EN

Stack Overflow用户
提问于 2017-04-12 07:12:40
回答 1查看 327关注 0票数 0

我在R中得到了一个代码,用于提取文本列表中的情感,并将其保存在一个数据框架中,这是一个情感分析项目。我对r和coreNLP还不熟悉,所以我一直在用内存之类的东西来解决问题,但我仍然不知道如何解决所有的问题。代码中的tripadvisor数据框架包含来自TripAdvisor网页的评论,我想从它们中提取情感。TripAdvisor$titleopinion是包含这些数据的列。

我得到的错误是:rJava::.jcall中的错误(挥发物$cNLP,“Ledu/stanford/nlp/管道/注释”),:带有签名的方法进程(I)Ledu/stanford/nlp/管道/注释;未找到。

我在每个R会话中运行的命令是:

  1. Sys.setenv(JAVA_HOME='C:\Program Files\Java\jre1.8.0_121')
  2. 选项(java.parameters= "-Xmx8g")

我的个人电脑有8G的RAM,我有时会摆脱内存问题。我正在加载的dali1.csv包含大约450个文本实例,我想从中提取情感。

守则如下:

代码语言:javascript
复制
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的机器上使用它时没有问题。任何关于内存问题和注解器缺失的洞察力都会受到欢迎和赞赏。对不起,我的英语不好,我还在学习:)

如果我缺少一些必要的信息,请告诉我,以便我可以提供。

EN

回答 1

Stack Overflow用户

发布于 2017-04-12 07:18:27

好的,我想我刚刚得到了答案,我想问题可能是标题栏的类型是因素,而不是字符。我修正了TripAdvisor$titleopinion <- as.character(TripAdvisor$titleopinion)。

如果有人读到,我是新来的,我不知道该怎么做,我应该删除这个问题吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43362750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档