0

NLTK で解析されたツリー オブジェクトの葉の値を変更したいと考えています。次のコードを使用します。

t = Tree(line)
chomsky_normal_form(t, horzMarkov=2, vertMarkov=1, childChar = "|", parentChar = "^")
print t

for leaf in t.leaves():
    if leaf==k[0][1]:
        leaf = "newValue"
 print t

今のように、2 つの「print t」はツリーのまったく同じ出力を提供します。この方法で葉に値を設定できると思っていましたが、間違っていたようです。葉の値を更新するにはどうすればよいですか? 各リーフのクラスは str です。したがって、それらを変更することは可能ですが、ツリー内のオブジェクトを更新することは更新されないようです。

4

2 に答える 2

2

treepositions('leaves')( docs ) を使用して、ツリー内の葉の位置を取得し、ツリー内で直接変更できます。

t = Tree(line)
chomsky_normal_form(t, horzMarkov=2, vertMarkov=1, childChar = "|", parentChar = "^")

for leafPos in t.treepositions('leaves'):
    if t[leafPos] == k[0][1]:
        t[leafPos] = "newValue"
 print t
于 2014-12-03T14:41:35.033 に答える