gpt4 book ai didi

Python:将 NLTK Stanford POS 标签映射到 WordNet POS 标签

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:26 24 4
gpt4 key购买 nike

我正在阅读句子列表并使用 NLTK 的 Stanford 词性标注器标记每个单词。我得到这样的输出:

wordnet_sense = []

for o in output:
a = st.tag(o)
wordnet_sense.append(a)

输出:[[(u'feel', u'VB'), (u'great', u'JJ')], [(u'good', u'JJ')]]

我想将这些词与它们的 POS 映射,以便它们在 WordNet 中被识别。

我试过这个:

sense = []

for i in wordnet_sense:
tmp = []

for tok, pos in i:
lower_pos = pos[0].lower()

if lower_pos in ['a', 'n', 'v', 'r', 's']:
res = wn.synsets(tok, lower_pos)
if len(res) > 0:
a = res[0]
else:
a = "[{0}, {1}]".format(tok, pos)

tmp.append(a)

sense.append(tmp)

print sense

输出:[Synset('feel.v.01'), '[great, JJ]'], ['[good, JJ]']]

所以 feel 被识别为动词,但是 greatgood 不被识别为形容词。我还检查了 greatgood 是否真的属于 Wordnet,因为我认为如果它们不存在就不会被映射,但它们确实存在。谁能帮忙?

最佳答案

这是来自 pywsd 的一个可爱的函数:

from nltk.corpus import wordnet as wn

def penn2morphy(penntag, returnNone=False):
morphy_tag = {'NN':wn.NOUN, 'JJ':wn.ADJ,
'VB':wn.VERB, 'RB':wn.ADV}
try:
return morphy_tag[penntag[:2]]
except:
return None if returnNone else ''

关于Python:将 NLTK Stanford POS 标签映射到 WordNet POS 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35458896/

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