在R中安装coreNLP

在R中安装coreNLP,r,nlp,stanford-nlp,devtools,r-package,R,Nlp,Stanford Nlp,Devtools,R Package,我正在按照此链接上的说明使用coreNLP 然而,我发现了这个错误 > library(coreNLP) Error in get(method, envir = home) : lazy-load database '/Users/apple/Library/R/3.2/library/coreNLP/R/coreNLP.rdb is corrupt In addition: Warning messages: 1: In .registerS3method(fin[i, 1]

我正在按照此链接上的说明使用coreNLP

然而,我发现了这个错误

> library(coreNLP)

Error in get(method, envir = home) : 
lazy-load database '/Users/apple/Library/R/3.2/library/coreNLP/R/coreNLP.rdb is  corrupt
In addition: Warning messages:
 1: In .registerS3method(fin[i, 1], fin[i, 2], fin[i, 3], fin[i, 4],  :
 restarting interrupted promise evaluation
 2: In get(method, envir = home) :
 restarting interrupted promise evaluation
 3: In get(method, envir = home) : internal error -3 in R_decompress1
 Error: package or namespace load failed for ‘coreNLP’
上面的说明来自works,可能是在R中安装库时出了问题

重新运行这些命令以重新安装
corenlp
包装器:

> install.packages('devtools')
> devtools::install_github("statsmaths/coreNLP")
如果程序包未损坏,则应看到以下内容:

> devtools::install_github("statsmaths/coreNLP")
Downloading GitHub repo statsmaths/coreNLP@master
Installing coreNLP
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore CMD  \
  INSTALL '/tmp/RtmpFS9LWl/devtools667a3cdbc084/statsmaths-coreNLP-3a667c6'  \
  --library='/home/expert/R/x86_64-pc-linux-gnu-library/3.2' --install-tests 

* installing *source* package ‘coreNLP’ ...
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (coreNLP)
Reloading installed coreNLP

否则,
devtools
应该重新安装软件包。

遇到
java.lang.UnsupportedClassVersionError:edu/stanford/nlp/pipeline/StanfordCoreNLP:Unsupported major.minor version 52.0后,错误消息:

你需要

  • 安装java 8(作为超级用户)
  • 将操作系统使用的默认jvm更改为此jvm(*见下文)
  • 在命令行上运行
    R CMD javareconf
    ,然后
  • 将环境变量LD_LIBRARY_PATH设置为libjvm.so的存储目录
  • 重新启动R/RStudio

  • 确保您的计算机上存在交换文件(或交换分区)。调用
    free
    检查输出中是否有以
    swap
    开头的行,并且该行上的值不是零

我使用ubuntu,我的java 8 libjvm.so在这里:
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so

您可以在.Rprofile文件中执行此操作。在文件底部添加以下行:

Sys.setenv(LD_LIBRARY_PATH=paste0(Sys.getenv(“LD_LIBRARY_PATH”),“:”,“/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/”)

当我在R中执行此操作时:

R> Sys.getenv("LD_LIBRARY_PATH")
[1] "/usr/local/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/"
R> library(coreNLP)
R> initCoreNLP()
我得到这个结果:

Searching for resource: config.properties
Adding annotator tokenize
TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
Adding annotator ssplit
Adding annotator pos
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [1.1 sec].
Adding annotator lemma
Adding annotator ner
Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... done [5.6 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz ... done [2.1 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... done [3.8 sec].
Initializing JollyDayHoliday for SUTime from classpath: edu/stanford/nlp/models/sutime/jollyday/Holidays_sutime.xml as sutime.binder.1.
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/defs.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.sutime.txt
Reading TokensRegex rules from edu/stanford/nlp/models/sutime/english.holidays.sutime.txt
Adding annotator parse
Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [0.6 sec].
Adding annotator dcoref
Adding annotator sentiment

R> example(getSentiment)

gtSntmR> getSentiment(annoEtranger) # first Sentence of L'Etranger by A.Camus
  id sentimentValue sentiment
1  1              1  Negative
2  2              2   Neutral

gtSntmR> getSentiment(annoHp) # first Sentence of Harry Potter V1
  id sentimentValue    sentiment
1  1              4 Verypositive
(*)如何在Linux上查看默认jvm:

结果

java - auto mode
  link currently points to /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
要显示所有可用的备选方案,请使用

update-alternatives --list java
结果(在我的机器上):

改变备选方案:

sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

只是玩一下更新选项。

Hmm,奇怪,我按照您的代码看到了相同的行,但我安装了library:library(“coreNLP”,lib.loc=“~/library/R/3.2/library”),它再次显示了相同的错误,您使用的是哪个操作系统?终端上lsb发布版-a的输出是什么?在终端上执行a
rm-rf/Users/apple/Library/R/3.2/Library/coreNLP
,然后尝试在R中重新运行
devtools::install_github(“statsmath/coreNLP”)
。我仍然发现“错误:包或命名空间加载“coreNLP”失败”加载库时。您从
lsb_release-a
的输出是什么?我试图将路径设置为/usr/lib/jvm…但找不到jvm文件夹。我已经在我的计算机上安装了Java8尝试shell命令
updatedb;找到libjvm.so
,如果需要,从ubuntu存储库安装它。
update-alternatives --list java
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java