私はNLPとNLTKの完全な初心者です。
正確なワードネットの見出語とシンセットの違いは、どちらもほぼ同じ出力を生成しているため、理解できませんでした。たとえば、Wordケーキの場合、この出力が生成されます。
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')]
この概念を理解するのを手伝ってください。
ありがとうございました。
これらの用語は、「補題」および「同義語」という単語の一般的な意味に基づいています。
補題は、辞書内のエントリのWordnetバージョンです。単一の意味を持つ正規形式の単語です。たとえば、辞書で「銀行」を検索する場合、正規の形式は「銀行」になり、「金融機関」と「川の側」を意味する名詞には別々の見出語があり、動詞「tobank(on)」など.
synsetという用語は、「同義語のセット」を表します。同義語のセットは、同様の意味を持つ単語のセットです。 船、スキフ、カヌー、カヤックはすべてボートの同義語である可能性があります。 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です 用語集 。
シンセットは、特定の単語のさまざまな意味のセットを表します。一方、各意味での同義語としての見出語。
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