wordnet中引理和synset之间的联系或区别是什么?

时间:2017-02-04 08:44:45

标签: python nlp nltk wordnet

我是NLP和NLTK的完全初学者。

我无法理解wordnet 中的lemmas和synsets之间的确切 差异,因为两者产生的输出几乎相同。例如,对于单词cake,它会产生这个输出。

lemmas :  [Lemma('cake.n.01.cake'), Lemma('patty.n.01.cake'), Lemma('cake.n.03.cake'), Lemma('coat.v.03.cake')]

synsets :  [Synset('cake.n.01'), Synset('patty.n.01'), Synset('cake.n.03'), Synset('coat.v.03')]

请帮助我理解这个概念。

谢谢。

2 个答案:

答案 0 :(得分:9)

这些术语基于一般意义上的词语"引理"和"同义词"。

引理是wordnet在字典中的条目版本:规范形式的单词,具有单一含义。例如,如果你想查找"银行"在字典中,规范形式将是" bank"对于名词而言,将会有单独的引理,即金融机构"和#34;河的一侧",一个单独的动词"银行(上)"等。

术语 synset 代表"同义词集"。一组同义词是具有相似含义的一组词,例如, ship,skiff,canoe,kayak 可能都是 boat 的同义词。在nltk中,SAMEORIGIN实际上是一组具有相关含义的 lemmas 。以你的例子(synsetwn.synsets("cake")的结果)为例,我们也可以写:

wn.lemmas("cake")

这些是为#34; cake"提供第一个synset的lemmas。

Wordnet提供了许多方法,可以让您探索诸如上位词/下位词,使用域等关系。有关更多信息,请直接查看Wordnet文档; nltk只为它提供了一个接口。这是Wordnet glossary

答案 1 :(得分:5)

Synsets表示特定单词的不同感官集。 而lemmas在每种意义上都是同义词。

import nltk
from nltk.corpus import wordnet as wn
cake_synsets = wn.synsets("cake")
for sense in cake_synsets:
    lemmas = [l.name() for l in sense.lemmas()]
    print("Lemmas for sense : " + sense.name() + "(" +sense.definition() + ") - " + str(lemmas))

输出:

Lemmas for sense : cake.n.01(a block of solid substance (such as soap or wax)) - ['cake', 'bar']
Lemmas for sense : patty.n.01(small flat mass of chopped food) - ['patty', 'cake']
Lemmas for sense : cake.n.03(baked goods made from or based on a mixture of flour, sugar, eggs, and fat) - ['cake']
Lemmas for sense : coat.v.03(form a coat over) - ['coat', 'cake']

http://justanoderbit.blogspot.in/2017/10/synset-vs-lemma.html