2015-06-01 3 views
0

Я хочу видеть формат выходных данных в Stanford Parser для NLP. Я загрузил файл jar из этой ссылки. http://nlp.stanford.edu/software/lex-parser.shtmlStanford Parser (Typed Dependencee) Исключение

Затем я импортирую его в Eclipse и написал следующий код.

package hammad.NLP; 

import java.io.StringReader; 
import java.util.Collection; 
import java.util.List; 

import com.chaoticity.dependensee.Main; 

import edu.stanford.nlp.ling.CoreLabel; 
import edu.stanford.nlp.parser.lexparser.LexicalizedParser; 
import edu.stanford.nlp.process.CoreLabelTokenFactory; 
import edu.stanford.nlp.process.PTBTokenizer; 
import edu.stanford.nlp.process.TokenizerFactory; 
import edu.stanford.nlp.trees.GrammaticalStructure; 
import edu.stanford.nlp.trees.GrammaticalStructureFactory; 
import edu.stanford.nlp.trees.PennTreebankLanguagePack; 
import edu.stanford.nlp.trees.Tree; 
import edu.stanford.nlp.trees.TreebankLanguagePack; 
import edu.stanford.nlp.trees.TypedDependency; 

public class Test { 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    try 
    { 

     String text = "A quick brown fox jumped over the lazy dog."; 
     TreebankLanguagePack tlp = new PennTreebankLanguagePack(); 
     GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory(); 
     LexicalizedParser lp = LexicalizedParser.loadModel("C:/Stanford Parser/Java/stanford-parser-full-2015-04-20/stanford-parser-3.5.2-models/edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz"); 
     lp.setOptionFlags(new String[]{"-maxLength", "500", "-retainTmpSubcategories"}); 
     TokenizerFactory<CoreLabel> tokenizerFactory = 
       PTBTokenizer.factory(new CoreLabelTokenFactory(), ""); 
     List<CoreLabel> wordList = tokenizerFactory.getTokenizer(new StringReader(text)).tokenize(); 
     Tree tree = lp.apply(wordList);  
     GrammaticalStructure gs = gsf.newGrammaticalStructure(tree); 
     Collection<TypedDependency> tdl = gs.typedDependenciesCCprocessed(true); 

     Main.writeImage(tree,tdl, "image.png",3); 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

}

Это дает следующее исключение.

Exception in thread "main" java.lang.NoSuchMethodError: edu.stanford.nlp.trees.TypedDependency.gov()Ledu/stanford/nlp/trees/TreeGraphNode; 

Я искал TypedDependency и обнаружил, что gov() существует в нем, но происходит исключение. Я много искал об этом, но не нашел никакой помощи в этом отношении. Я буду благодарен вам, если вы поможете мне в этом.

ответ

1

Это связано с несовместимостью последних выпусков кода Stanford NLP и DependenSee, который был построен против v2.0.5 (2013-04-05) из Stanford Parser. Если вы закомментируете строку Main.writeImage(tree,tdl, "image.png",3); и вместо этого просто сделаете System.out.println(tdl);, тогда она отлично работает.

Ваши варианты либо: не использовать DependenSee, исправить DependenSee, чтобы быть совместимым с последними Стэнфордского NLP релизы (вероятно, легко), или понизить до старой версии Стэнфордского NLP ....

Смежные вопросы