使用rJava包中的R中的Stanford NLP库

Pet*_*lor 6 java r stanford-nlp rjava

有没有人有使用StanfordCoreNLP的经验(http://nlp.stanford.edu/software/corenlp.shtml通过r中的rJava?我现在一直在努力让它工作两天,并且认为我已经筋疲力尽了Google和之前关于StackOverflow的问题.

本质上我正在尝试使用R中的StanfordNLP库.我没有Java经验,但有其他语言的经验,所以要了解有关类和对象等的基础知识.

从我所看到的,随库提供的演示.java文件似乎表明,要使用Java中的类,您需要导入库然后创建一个新对象,类似于:

import java.io.*;
import java.util.*;

import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.util.*;

    public class demo {

        etc.
        etc.

        StanfordCoreNLP pipeline = new StanfordCoreNLP();

        etc.
Run Code Online (Sandbox Code Playgroud)

从R内部,我试过调用一些标准的java函数; 这工作正常,这让我觉得这是我试图访问导致问题的斯坦福图书馆的方式.

我将斯坦福ZIP解压缩到h:\ stanfordcore,因此.jar文件都在此目录的根目录中.除了zip中包含的各种其他文件外,它还包含主要的.jar文件:

  • 乔达-time.jar
  • 斯坦福大学corenlp-1.3.4.jar
  • 斯坦福大学corenlp-1.3.4-javadoc.jar
  • 斯坦福大学corenlp-1.3.4-models.jar
  • 乔达时间 - 2.1 sources.jar
  • jollyday-0.4.7-sources.jar
  • 斯坦福大学corenlp-1.3.4-sources.jar
  • xom.jar
  • jollyday.jar

如果我尝试从命令行访问NLP工具,它可以正常工作.

在R中,我初始化了JVM并设置了classpath变量:

.jinit(classpath = " h:/stanfordcore", parameters = getOption("java.parameters"),silent = FALSE, force.init = TRUE)
Run Code Online (Sandbox Code Playgroud)

在此之后,如果我使用该命令

.jclassPath() 
Run Code Online (Sandbox Code Playgroud)

这表明已添加包含所需.jar文件的目录,并在R中提供此输出:

[1]"H:\ RProject-2.15.1\library\rJava\java""h:\ stanfordcore"

但是,当我尝试创建一个新对象(不确定这是否是正确的Java术语)时,我收到一个错误.

我试过用几十种不同的方式创建对象(虽然基本上是在黑暗中拍摄),但最有希望的(因为它似乎实际上找到了类):

pipeline <- .jnew(class="edu/stanford/nlp/pipeline/StanfordCoreNLP",check=TRUE,silent=FALSE)
Run Code Online (Sandbox Code Playgroud)

我知道这会找到类,因为如果我将类参数更改为API中未列出的内容,我会找不到类错误.

然而,就目前而言,我得到了错误:

.jnew错误(class ="edu/stanford/nlp/pipeline/StanfordCoreNLP",check = TRUE,:java.lang.NoClassDefFoundError:无法初始化类edu.stanford.nlp.pipeline.StanfordCoreNLP

我的谷歌搜索表明这可能与找不到所需的.jar文件有关,但我完全卡住了.我错过了一些明显的东西吗

如果有人能指出我正确的方向,我会非常感激.

提前致谢!

彼得

Sim*_*nek 2

你的类路径是错误的 - 你正在使用一个目录,但你有 JAR 文件。您必须将所有 JAR 文件解压到您指定的目录中(不常见),或者必须将所有 JAR 文件添加到类路径中(更常见)。[显然,你必须纠正你的拼写错误,但我认为这些错误来自于你没有使用复制/粘贴的事实]

PS:如果您想要更及时的答案,请使用stats-rosuda-devel邮件列表。