簡體   English   中英

NLTK將樹轉換為數組?

[英]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.

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