WordNet中lemma和synset之间的联系或区别是什么?

12

我对NLP和NLTK一窍不通。

我不太理解在wordnet中,lemma和synset之间的确切区别,因为它们产生的输出几乎相同。例如,对于单词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个回答

20

这些术语基于“引理”和“同义词”的一般含义。

Lemma是WordNet中词典条目的版本:以规范形式表示的单个含义单词。例如,如果您想在词典中查找“banks”,规范形式将是“bank”,而名词“金融机构”和“河岸边”以及动词“依靠”等都有不同的lemma。

术语synset代表“同义词集”。 同义词集是具有相似含义的一组单词,例如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')]

这些是“蛋糕”第一个同义词集中的引理。

Wordnet提供了很多方法,可以让您探索超类/子类、使用域等关系。有关更多信息,您应该直接查阅Wordnet文档;nltk只为其提供了接口。这里是Wordnet词汇表


12

同义词集表示一个特定单词的不同含义的集合。 而在每个含义中,词形引用它们的同义词。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接