這是基於一個圖書館pymeta2一些Python代碼解析這種類型的樹。
import pymeta.grammar
def f(name,E):
print name+' -> '+' '.join(E)
return name
G=pymeta.grammar.OMeta.makeGrammar("""
name = spaces ('.'|letterOrDigit|'-')+:n -> ''.join(n)
expr = token("(") name:p expr+:e token(")") -> f(p,e)
| token("(") name:p name:e token(")") -> p
""",{'f':f})
s="(ROOT (S (NP (ADJP (JJ Bahasa)) (NN daerah) (NN merupakan) (NN bahasa) (NN yang) (NN digunakan) (NN dalam) (NN bahasa) (NN pergaulan) (NN sehari-hari) (NN di) (NN suatu) (NN daerah) (NNP tertentu)) (VP (VBZ .))))"
G(s).apply("expr")
運行這段代碼的輸出是:
ADJP -> JJ
NP -> ADJP NN NN NN NN NN NN NN NN NN NN NN NN NNP
VP -> VBZ
S -> NP VP
ROOT -> S
(我後(JJ文)增加一個額外的支架,使這項工作,我懷疑這是問題的一個錯字? )
是的,解決了,我試着循環它直到樹的末尾,並得到關係..謝謝 – xuweisen