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文件:
如果我尝试从命令行访问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文件有关,但我完全卡住了.我错过了一些明显的东西吗
如果有人能指出我正确的方向,我会非常感激.
提前致谢!
彼得
你的类路径是错误的 - 你正在使用一个目录,但你有 JAR 文件。您必须将所有 JAR 文件解压到您指定的目录中(不常见),或者必须将所有 JAR 文件添加到类路径中(更常见)。[显然,你必须纠正你的拼写错误,但我认为这些错误来自于你没有使用复制/粘贴的事实]
PS:如果您想要更及时的答案,请使用stats-rosuda-devel邮件列表。