2016-01-31 66 views
1

這可能會複製此堆棧溢出question。但是,我面臨一個不同的問題。這是我的工作代碼。將python NLTK解析樹保存到映像文件

import nltk 
from textblob import TextBlob 
with open('test.txt', 'rU') as ins: 
    array = [] 
    for line in ins: 
     array.append(line) 
for i in array: 
    wiki = TextBlob(i) 
    a=wiki.tags 
    sentence = a 
    pattern = """NP: {<DT>?<JJ>*<NN>} 
    VBD: {<VBD>} 
    IN: {<IN>}""" 
    NPChunker = nltk.RegexpParser(pattern) 
    result = NPChunker.parse(sentence) 

    result.draw() 

enter image description here 此產品解析樹逐一對所有的句子。實際上,在我的「test.txt」中,我有超過100個句子。因此,手動將每個文件保存到.ps文件是非常困難的。我怎麼能修改我的代碼來保存這些樹到一個帶有標籤的單個.ps或.png文件(如:1.png,2.png ...)。這意味着我需要獲取多個圖像文件。 在此先感謝。

+0

'result.save('something.svg)'? – alvas

+0

沒有alvas。我得到了這個--'' AttributeError:'樹'對象沒有'save''屬性 – miller

回答

1

雖然這是Saving nltk drawn parse tree to image file中的一個重複問題,但下面是一個更簡單的答案。

鑑於result樹對象:

>>> import nltk 
>>> from nltk import pos_tag 
>>> pattern = """NP: {<DT>?<JJ>*<NN>} 
... VBD: {<VBD>} 
... IN: {<IN>}""" 
>>> NPChunker = nltk.RegexpParser(pattern) 
>>> sentence = 'criminal lawyer new york'.split() 
>>> pos_tag(sentence) 
[('criminal', 'JJ'), ('lawyer', 'NN'), ('new', 'JJ'), ('york', 'NN')] 
>>> result = NPChunker.parse(pos_tag(sentence)) 
>>> result 
Tree('S', [Tree('NP', [('criminal', 'JJ'), ('lawyer', 'NN')]), Tree('NP', [('new', 'JJ'), ('york', 'NN')])]) 

現在做到這一點:

>>> from nltk.draw.tree import TreeView 
>>> TreeView(result)._cframe.print_to_file('tree.ps') 

然後你會看到tree.ps文件出現在當前目錄。

+0

它完成了訣竅...它仍然只產生一個圖像(實際上它的全部離開循環到文件的最後一個句子)我需要更多比每個不同名稱的句子的圖像要多。我怎麼能改變它?我嘗試了很多方法。仍在奮鬥中。 – miller