wordnet中的lemma和synset有什么联系或区别?

What is the connection or difference between lemma and synset in wordnet?

我是 NLP 和 NLTK 的初学者。

我无法理解 wordnet 中引理和同义词集之间的确切 区别,因为两者产生几乎相同的输出。例如,对于蛋糕这个词,它会产生这个输出。

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')]

请帮助我理解这个概念。

谢谢。

这些术语基于单词 "lemma" 和 "synonym" 的一般含义。

A lemma 是字典中词条的 wordnet 版本:规范形式的词,具有单一含义。例如,如果你想在字典中查找 "banks",规范形式将是 "bank" 并且名词意思是 "financial institution" 和 "side of the river" 会有单独的引理,a动词分开一个"to bank (on)",等等

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

>>> synsets[0]
Synset('cake.n.01')
>>> synsets[0].lemmas()
[Lemma('cake.n.01.cake'), Lemma('cake.n.01.bar')]

这些是构成 "cake" 的第一个同义词集的引理。

Wordnet 提供了许多方法,可让您探索 hypernyms/hyponyms、使用域等关系。有关更多信息,您应该直接查看 Wordnet 文档; nltk 只是为它提供了一个接口。这是 Wordnet glossary.

同义词集表示特定单词的不同含义的集合。 而引理作为每个意义中的同义词。

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