我正在阅读句子列表并使用 NLTK 的斯坦福 POS 标记器标记每个单词。我得到这样的输出:
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
被识别为动词,但great
不good
被识别为形容词。我还检查了是否great
并且good
实际上属于 Wordnet,因为我认为如果它们不存在,它们就不会被映射,但它们确实存在。任何人都可以帮忙吗?