2016-08-21 9 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 - > 'の扉'

はTree.fromstring内の太字で1 stat_parser出力を呼び出すことが可能です。

これらは同じですが、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

また、stat_parserの代わりにnltkパーサを使用することは可能ですか? –

+0

nltk_dataで利用できる文法は複数あり、nltkでそれらを使用することも、nltk treebank corpusから作成することもできます。 http://www.nltk.org/howto/parse.htmlおよびhttp://stackoverflow.com/q/6115677/1168680、およびポイント6についてはhttp://www.nltk.org/book/ch08をご確認ください。 html – RAVI

関連する問題