簡體   English   中英

在NLTK中更改葉子的值

[英]Change value of leaf in NLTK

我想更改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

現在,兩個“ print t”給出了樹的完全相同的輸出。 我認為可以通過這種方式為葉子設置值,但是看來我錯了。 我應該如何更新葉子的價值? 每片葉子的類是str。 因此可以更改它們,但似乎無法更新來更新樹中的對象。

您可以使用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

我以前沒有使用Tree的經驗,並且類文檔也沒有建議一種改變葉子的明顯方法。 但是,從葉子方法的源頭看,它似乎只是列表的一種裝扮形式。 我在控制台中擺弄了一分鍾,我認為這可能使您朝正確的方向前進:

>>> t = Tree("(s (dp (d the) (np dog)) (vp (v chased) (dp (d the) (np cat))))")
>>> t.leaves()
['the', 'dog', 'chased', 'the', 'cat']
>>> t[0][0][0] = "newValue"
>>> t.leaves()
['newValue', 'dog', 'chased', 'the', 'cat']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM