2015-08-17 91 views
-2

我正在嘗試在用NLTK接口編寫的Python應用程序中使用斯坦福分析器。我嘗試了下面給出的代碼。帶有NLTK的斯坦福分析器產生空輸出

一切似乎正常工作,沒有錯誤,Java啓動,但我係統地得到一個空的迭代器()和程序不顯示解析樹。

我使用Windows 7,Python 3.4.3,JRE jre1.8.0_51。我對POS tagger做了同樣的處理,但得到了相同的空白結果。


import os 
from nltk.parse import stanford 
os.environ['STANFORD_PARSER'] = 'path\\jars' 
os.environ['STANFORD_MODELS'] = 'path\\jars' 
os.environ['JAVAHOME']= "path\\Java\jre1.8.0_51\\bin" 


parser = stanford.StanfordParser(model_path="path\\englishPCFG.ser.gz") 
sentences = parser.raw_parse_sents(("Hello the world.", "Thank you for helping me with this problem.")) 
print(sentences) 


for line in sentences: 
    for sentence in line: 
     sentence.draw() 
+1

你不能在同一個迭代器對象重複兩次。通過執行'print(句子)',你已經用完了迭代器,所以當你想繪製樹時它是空的。將'句子'保存在列表中以多次使用它。 – lenz

回答

0

嘗試:

sentences = list(parser.raw_parse_sents(("Hello the world.", "Thank you for helping me with this problem."))) 

for line in sentences: 
    for sentence in line: 
     sentence.draw() 
+0

謝謝你的幫助。它試用了你的解決方案,它工作。我想我的問題是阻止我的Java/Python界面的防火牆。如您所知,打印迭代器不會影響讀取光標的位置。再次感謝您的及時幫助。 –

+0

正如@lenz所說,你已經完成了在打印解析後的句子之後迭代迭代器。 – alvas