2017-02-04 2 views
1

Я полный новичок в НЛП и НЛТК.Какова связь или разница между леммой и синхронизацией в wordnet?

Я не был в состоянии понять точную разницу между чешуями и synsets в 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')] 

, пожалуйста, помогите мне понять эту концепцию.

спасибо.

ответ

3

Термины основаны на общем смысле слов «лемма» и «синоним».

A lemma является версией слова wordnet в словаре: слово в канонической форме с одним значением. Например, если вы хотите найти «банки» в словаре, каноническая форма будет «банком», и будут существовать отдельные леммы для существительных, означающих «финансовое учреждение» и «сторона реки», отдельное для глагол «в банк» и т. д.

Термин synset означает «набор синонимов». Набор синонимов представляет собой набор слов со схожим значением, например. судно, лодка, каноэ, байдарки все могут быть синонимами для boat. В nltk a synset представляет собой набор лемм со связанным значением. Берет пример (результаты 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')] 

Это Лемма, составляющие первый synset данный для «пироги».

Wordnet предоставляет множество методов, которые позволяют вам исследовать отношения, такие как гиперним/hyponyms, домены использования и многое другое. Для получения дополнительной информации вы должны посмотреть прямо в документации Wordnet; nltk просто предоставляет интерфейс для него. Вот Wordnet glossary.

1

Синтезы представляют собой набор различных чувств определенного слова. Принимая во внимание леммы как синонимы в каждом смысле.

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