我正在进行一个简单的消歧测试。但是nltk Lesk在句子“猫喜欢牛奶”中返回的单词'cat'的同义词是'kat.n.01',synsetid = 3608870。 (n)kat,khat,qat,quat,cat,阿拉伯茶,非洲茶(灌木Catha edulis的叶子,像烟草一样被咀嚼或用于制作茶;具有欣快兴奋剂的效果)“在也门kat是85%的成年人每天使用“ 这是一个简单的短语,但消歧任务失败了。
对于包含一个以上句子的集合中的许多单词而言,这种情况正在发生,例如在我的测试句中,我希望“狗”被消除歧义为“家犬”,但莱斯克给了我''pawl'(一个铰链)适合棘轮槽口的挡块,使车轮向前移动或阻止车轮向后移动) 它与训练集的大小有关,在我的测试中只有几句话吗?
这是我的测试代码:
def test_lesk():
words = get_sample_words()
print(words)
tagger = PerceptronTagger()
tags = tagger.tag(words)
print (tags[:5])
for word, tag in tags:
pos = get_wordnet_pos(tag)
if pos is None:
continue
print("word=%s,tag=%s,pos=%s" %(word, tag, pos))
synset = lesk(words, word, pos)
if synset is None:
print('No synsetid for word=%s' %word)
else:
print('word=%s, synsetname=%s, synsetid=%d' %(word,synset.name(), synset.offset()))