2012-07-23 80 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」如何從一個句子中獲取信息提取