[英]NLTK Convert Tree to Array?
首先,我將樹轉換為列表:您插入已經標記化的句子並返回樹。
def LanguageCreateTree(tokenizedSentence):
cp = nltk.RegexpParser(GRAMMAR)
result = cp.parse(tokenizedSentence)
result = str(result)
print(result)
>>> A red cat with a hat
(S A/DT (VP red/VBN (NP cat/NN)) with/IN a/DT hat/JJ)
我將如何根據此字符串創建包含列表的列表? 我需要它能夠像這樣制作一個列表:
[['A','DT'], ['VP', ['red','VBN'], ['NP', ['cat','NN']]], ['with','IN'], ['a','DT'], ['hat','JJ']]]
這比你想象的容易得多:-) NLTK的Tree
類是一個列表(更具體地說,它是從列表類派生的)。 它具有您所追求的結構。 只需對cp.parse()
的結果使用普通的列表方法。 這是一個近似的例子(在飛行中構建一棵樹用於說明):
>>> from nltk import Tree
>>> t = Tree.fromstring("(S A/DT (VP red/VBN (NP cat/NN)) with/IN a/DT hat/JJ)")
>>> print(t[1])
(VP red/VBN (NP cat/NN))
>>> print(t[1][0]) # Element 0 of the subtree at index 1
red/VBN
在這個例子中,我沒有從POS標簽中分離出單詞; 你的樹看起來會有所不同。 另請注意, Tree
有很好的打印方式,但您可以使用repr()
來查看真實的結構:
>>> print(repr(t[1]))
Tree('VP', ['red/VBN', Tree('NP', ['cat/NN'])])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.