NLTK将树转换为数组?

2024-10-01 07:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我把树变成了一个列表: 插入一个已经标记的句子,它将返回一个树。在

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)

我该如何根据这个字符串创建一个包含列表的列表呢? 我需要它来列出这样的清单:

^{pr2}$

Tags: 标记列表hatdefwithdtredresult
1条回答
网友
1楼 · 发布于 2024-10-01 07:49:57

这比您想象的要容易得多:-)NLTK的Tree是一个列表(更具体地说,它是从list类派生的)。它的结构正是你所追求的。只需对cp.parse()的结果使用普通的list方法。下面是一个近似的例子(动态构建一棵树以供说明):

>>> 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()看到真实的结构:

^{pr2}$

相关问题 更多 >