2016-08-21 86 views
0
from stat_parser import Parser 
sent = "Open the door" 
print parser.parse(sent) 

from nltk import Tree 
t = Tree.fromstring("(RRC (ADJP (JJ open)) (NP (DT the) (NN door)))") 
grammar_from_parse = "\n".join([rule.unicode_repr() for rule in t.productions()]) 
print grammar_from_parse 

上面的代碼輸出調用輸出

(RRC(ADJP(JJ開))(NP(DT的)(NN門)))

RRC - > ADJP NP

ADJP - > JJ

JJ - > '打開'

NP - > DT NN

DT - > '的'

NN - > '門'

是否可以調用stat_parser輸出一個是內Tree.fromstring大膽。

雖然它們是一樣的,但Idea是爲了避免將它粘貼到Tree.fromstring上。

CFG.fromstring是否也接受其他CFG輸出?

語法= CFG.fromstring( 「」 「輸出 」「」)

+0

您需要更清楚一點,以便我們能更好地幫助您。通常,通過指定什麼是您的輸入,以及您希望的輸出有助於我們理解您的需求。順便說一句,只需要檢查一下,你使用這個'stat_parser':https://github.com/emilmont/pyStatParser或者是其他的東西? – alvas

回答

1

你只需要解析輸出轉換爲STR()

from stat_parser import Parser 
from nltk import Tree, CFG, RecursiveDescentParser 

sent = "open the door" 
parser = Parser() 
print parser.parse(sent) 

t = Tree.fromstring(str(parser.parse(sent))) 
grammar_from_parse = "\n".join([rule.unicode_repr() for rule in t.productions()]) 
print grammar_from_parse 
grammar = CFG.fromstring(grammar_from_parse) 

rd_parser = RecursiveDescentParser(grammar) 
for tree in rd_parser.parse(sent.split()): 
    print(tree) 
+0

另外有可能使用nltk解析器而不是stat_parser? –

+0

在nltk_data下可以使用多種語法,您可以將它們與nltk一起使用,也可以從nltk treebank語料庫創建一個語法。檢查:http://www.nltk.org/howto/parse.html和http://stackoverflow.com/q/6115677/1168680和第6點 - http://www.nltk.org/book/ch08。 HTML – RAVI