2012-07-23 42 views
5

如何在java中使用NLP提取SVO,我是nlp.i中的新成员,目前使用的是opennlp。但是如何在java中用java做一个关于句子的问题。如何使用nlp提取主题动词对象java

LexicalizedParser lp = **new LexicalizedParser("englishPCFG.ser.gz");** 
String[] sent = { "This", "is", "an", "easy", "sentence", "." }; 
Tree parse = (Tree) lp.apply(Arrays.asList(sent)); 
parse.pennPrint(); 
System.out.println(); 
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed"); 
tp.print(parse); 

得到在 新LexicalizedParser( “englishPCFG.ser.gz”)的编译错误; ** 构造LexicalizedParser(字符串)是未定义

回答

0

这是从斯坦福依存句法分析器代码,而不是来自OpenNLP。请按照stanford-parser目录中包含的ParserDemo.java(和/或ParserDemo2.java)中给出的示例进行操作,并确保您的演示代码和classpath中的stanford-parser.jar来自相同版本的解析器。我怀疑你正在使用较旧的演示代码的解析器的更新版本。

0

您可以使用Stanford CoreNLP。检查答案here for “粗略算法”如何从句子中获取主语谓词对象。

+0

使用textrunner是更好的api for this – 2012-07-27 06:41:18

2

看起来好像您正在使用新版本的Stanford NLP解析器。 在这个解析器的新版本构造函数不用于分配内存,而是我们有专用的函数。您可以使用:

LexicalizedParser lp = LexicalizedParser.loadModel("englishPCFG.ser.gz"); 

您可以使用此API的各种重载。

Stanford documentation for various overloads of loadModel

0

您可以使用混响。在这里检查答案“reVerb”如何从一个句子中获取信息提取