gpt4 book ai didi

python - NLTK 中没有 pos_tag 的 ne_chunk

转载 作者:太空狗 更新时间:2023-10-30 00:59:12 26 4
gpt4 key购买 nike

我正在尝试使用 nltk 中的 ne_chunk 和 pos_tag 对句子进行分块。

from nltk import tag
from nltk.tag import pos_tag
from nltk.tree import Tree
from nltk.chunk import ne_chunk

sentence = "Michael and John is reading a booklet in a library of Jakarta"
tagged_sent = pos_tag(sentence.split())

print_chunk = [chunk for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]

print print_chunk

这是结果:

[Tree('GPE', [('Michael', 'NNP')]), Tree('PERSON', [('John', 'NNP')]), Tree('GPE', [('Jakarta', 'NNP')])]

我的问题是,是否可以不包含 pos_tag(如上面的 NNP)而只包含树“GPE”、“PERSON”?“GPE”是什么意思?

提前致谢

最佳答案

命名实体分块器将为您提供包含 block 和标签的树。你不能改变它,但你可以把标签去掉。从您的 tagged_sent 开始:

chunks = nltk.ne_chunk(tagged_sent)
simple = []
for elt in chunks:
if isinstance(elt, Tree):
simple.append(Tree(elt.label(), [ word for word, tag in elt ]))
else:
simple.append( elt[0] )

如果您只想要 block ,请省略上面的 else: 子句。您可以调整代码以按照您想要的任何方式包装 block 。我使用 nltk Tree 将更改保持在最低限度。请注意,有些 block 由多个单词组成(尝试在您的示例中添加“New York”),因此 block 的内容必须是一个列表,而不是单个元素。

附言。 “GPE”代表“地缘政治实体”(显然是词组错误)。您可以在 nltk 书中看到“常用标签”列表,here .

关于python - NLTK 中没有 pos_tag 的 ne_chunk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44237087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com