gpt4 book ai didi

python - NLTK - 标记后加入专有名词

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:33 29 4
gpt4 key购买 nike

我有一个句子,我首先标记化然后使用 nltk 标记:

sentence = 'Ronald McDonald exercised at the Central Park on Monday.'

tokens = nltk.word_tokenize(sentence)
print(tokens)

tagged = nltk.pos_tag(tokens)
print(tagged)

使用 nltk.pos_tag,Ronald、McDonald、Central、Park 和 Monday 成为专有名词 (NNP) - 这是正确的。我现在把句子的所有专有名词都写在另一个变量中,因为我以后要用到它们。

propernouns = [word for word,pos in tagged if pos == 'NNP']
print(propernouns)

现在,在我 95% 的情况下,文本中紧跟在后面的任意数量的专有名词确实属于一起。 “罗纳德麦当劳”就像“中央公园”一样。

问题:我如何更改“代词”中的代码,它迭代“标记”,提取所有 NPP 并将它们写入变量,就像现在一样 - 但是当它找到 2 或更多 (<NNP>+)紧接着彼此,它们被写成一个由空格分隔的字符串。

最佳答案

使用 itertools.groupby 将具有相同 NNP 标签的连续词组分组:

from itertools import groupby
groups = groupby(tagged, key=lambda x: x[1]) # Group by tags
names = [[w for w,_ in words] for tag,words in groups if tag=="NNP"]
#[['Ronald', 'McDonald'], ['Central', 'Park'], ['Monday']]
names = [" ".join(name) for name in names if len(name)>=2]
#['Ronald McDonald', 'Central Park']

关于python - NLTK - 标记后加入专有名词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715600/

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