2011-11-05 17 views
3

這是我的代碼的一部分:我怎樣才能獲得樹的斯坦福德依賴關係「nsubj」的主體價值?

String sentence="My dog also likes eating sausage."; 
LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz"); 
TokenizerFactory tf = PTBTokenizer.factory(false, new WordTokenFactory()); 
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed"); 

List tokens = tf.getTokenizer(new StringReader(sentence)).tokenize(); 
lp.parse(tokens); // parse the tokens 
Tree t = lp.getBestParse(); 

我怎樣才能獲得主題(狗)的價值?

這是一種依賴,我想提取主題:

nsubj(likes-4, dog-2) 
+0

感謝,巴特煮布鍋。 – user1017014

回答

6

嘗試是這樣的:

String sentence="My dog also likes eating sausage."; 
LexicalizedParser lp = new LexicalizedParser("resources/stanford-parser-2011-06-27/grammar/englishPCFG.ser.gz"); 
TokenizerFactory tf = PTBTokenizer.factory(false, new WordTokenFactory()); 
TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed"); 

List tokens = tf.getTokenizer(new StringReader(sentence)).tokenize(); 
lp.parse(tokens); // parse the tokens 
Tree t = lp.getBestParse(); 

TreebankLanguagePack languagePack = new PennTreebankLanguagePack(); 
GrammaticalStructure structure = languagePack.grammaticalStructureFactory().newGrammaticalStructure(t); 
Collection<TypedDependency> typedDependencies = structure.typedDependenciesCollapsed(); 

for(TypedDependency td : typedDependencies) { 
    if(td.reln().equals(EnglishGrammaticalRelations.NOMINAL_SUBJECT)) { 
    System.out.println(td); 
    } 
} 

,它將打印:

nsubj(likes-4, dog-2) 
相關問題