2015-09-06 57 views
0

這是我第一次在這裏發佈內容;所以如果我已經證明了任何不好的做法 - 請告訴。斯坦福OpenIE示例代碼無法正常運行

因此,目前我正嘗試使用來自斯坦福大學的OpenIE從Web挖掘數據中提取信息。由於我真正的新的Java,我只是複製他們的頁面的示例代碼片段:http://nlp.stanford.edu/software/openie.shtml

,看起來像這樣:

import java.util.*; 
    import edu.stanford.nlp.pipeline.StanfordCoreNLP; 
    import edu.stanford.nlp.pipeline.Annotation; 
    import edu.stanford.nlp.naturalli.NaturalLogicAnnotations; 
    import edu.stanford.nlp.ling.CoreAnnotations; 
    import edu.stanford.nlp.ie.util.RelationTriple; 
    import edu.stanford.nlp.util.CoreMap; 

    public static void main(String[] args) throws Exception { 
    Properties props = new Properties(); 
    props.setProperty("annotators", "tokenize,ssplit,pos,depparse,natlog,openie"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 

    Annotation doc = new Annotation("Obama was born in Hawaii. He is our president."); 
    pipeline.annotate(doc); 

    for (CoreMap sentence : doc.get(CoreAnnotations.SentencesAnnotation.class)) { 
     Collection<RelationTriple> triples = sentence.get(NaturalLogicAnnotations.RelationTriplesAnnotation.class); 
     for (RelationTriple triple : triples) { 
     System.out.println(triple.confidence + "\t" + 
      triple.subjectLemmaGloss() + "\t" + 
      triple.relationLemmaGloss() + "\t" + 
      triple.objectLemmaGloss()); 
     } 
    } 
    } 

然後我編譯成一個類,並把它放入openIE罐子從他們的網站。

我跑這樣的命令,這是幾乎相同的命令行調用示例:

java -mx1g -cp stanford-openie.jar:stanford-openie-models.jar Example 

但最終我得到這樣的錯誤:

Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... Exception in thread "main" edu.stanford.nlp.io.RuntimeIOException: java.io.IOException: Unable to resolve "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz" as either class path, filename or URL 

雖然它們的命令行調用會像他們的頁面上顯示的那樣工作,我認爲這是我Java技能的一個問題。不過,我無法弄清楚如何解決這個問題,也沒有問到在Stackoverflow上的相關問題會有所幫助。爲什麼它不能解決類路徑?

注意:我看到有人在他們的工作區中同時發佈CoreNLP,但我確信我不會將這些JAR放在同一個目錄下。

+0

錯誤是由試圖加載選區解析器的代碼而不是依賴解析器模型造成的。你能否像你看到的那樣精確地粘貼你的Example.java文件?如果您在註釋器列表中沒有「解析」,則不應出現此錯誤。 –

回答

2

將setProperty行更改爲以下內容。我面臨同樣的問題。這條線的改變使它工作。

另外,您應該在路徑中包含CoreNLP和Openie jar以幫助它正常工作。

props.setProperty("annotators", "tokenize,ssplit,pos,lemma,depparse,natlog,openie");