我正在阅读一组句子,并使用NLTK的Stanford POS标注器为每个单词打上标记。我得到的输出如下:
wordnet_sense = []
for o in output:
a = st.tag(o)
wordnet_sense.append(a)
输出: [[(u'感觉', u'动词原形'), (u'伟大', u'形容词')], [(u'好', u'形容词')]]
我想将这些单词与它们的词性进行映射,以便在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,因为我认为如果它们不在那里,它们就不会被映射,但实际上它们是存在的。有人能帮忙吗?