NLTK WordNet: NLTK WordNetから同義語を検索 Python

ワードネットとは何ですか?

Wordnet は NLTK コーパス リーダーであり、英語の語彙データベースです。単語の意味、同義語、反意語を検索するために使用できます。意味指向の英語辞書として定義できます。次のコマンドでインポートします。

from nltk.corpus import wordnet as guru

NLTK WordNetから同義語を検索する Python

統計によると、 155287 の単語と 117659 の同義語 英語 WordNet に含まれるセット。

WordNet で使用できるさまざまなメソッドは、「dir(guru)」と入力すると見つかります。

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', ' __eq__'、'__format__'、' __ge__'、'__getattr__'、'__getattribute__'、'__gt__'、'__hash__'、'__init__'、'__le__'、'__lt__'、'__module__'、'__name__'、'__ne__'、'__new__'、'__reduce__' 、'__reduce_ex__'、'__repr__'、'__setattr__'、'__sizeof__'、'__str__'、'__subclasshook__'、'__unicode__'、'__weakref__'、'_unload'、'subdir'、'unicode_repr']

wordnet で利用できる機能のいくつかを理解してみましょう。

シンセット: 同義語集合、同義語集とも呼ばれます。 例を確認してみましょう

from nltk.corpus import wordnet
syns = wordnet.synsets("dog")
print(syns)

出力:

[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]

語彙関係: これらは相互に作用する意味関係です。 {x1,x2,…xn} と {y1,y2,…yn} の間に関係がある場合、{y1,y2,…yn} と {x1,x2,…xn} の間にも関係があります。 たとえば、同義語は反意語の反対であり、上位語と下位語は語彙概念の一種です。

を使ってプログラムを書いてみましょう パイソン Wordnet を使用して単語「active」の同義語と反意語を検索します。

from nltk.corpus import wordnet
	synonyms = []
	antonyms = []

	for syn in wordnet.synsets("active"):
		for l in syn.lemmas():
			synonyms.append(l.name())
			if l.antonyms():
				 antonyms.append(l.antonyms()[0].name())

	print(set(synonyms))
	print(set(antonyms))

コードの出力:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — 同義語

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} — 反意語

Wordnet プログラムコード 出力

コードの説明

  1. Wordnet はコーパスであるため、ntlk.corpus からインポートされます。
  2. 同義語と反意語の両方のリストは空とみなされ、追加に使用されます。
  3. active という単語の同義語がモジュール synsets で検索され、同義語リストに追加されます。 XNUMX 番目のプロセスについても同じプロセスが繰り返されます。
  4. 出力は印刷されます

まとめ

WordNet は、大手企業で使用されている語彙データベースです。 検索エンジン。 WordNet から、特定の単語またはフレーズに関する情報を次のように計算できます。

  • 同義語(同じ意味を持つ言葉)
  • 上位語 (特定のクラスを指定するために使用される一般的な用語 (つまり、食事は朝食です)、下位語 (ご飯は食事です)
  • ホロニム(タンパク質、炭水化物は食事の一部です)
  • メロニム(食事は毎日の食物摂取の一部です)

WordNet は、座標用語、派生語、意味などに関する情報も提供します。 任意の XNUMX つの単語間の類似点を見つけるために使用されます。 関連する単語の結果に関する情報も保持します。 簡単に言えば、辞書またはシソーラスとして扱うことができます。 ワードネットをさらに深く掘り下げると、次のような合計 XNUMX つのサブネットに分割されます。

  1. 名詞
  2. 動詞
  3. 形容詞
  4. 副詞

人工知能の分野でテキスト分析に使用できます。 Wordnet を利用すると、スペル チェック、言語翻訳、スパム検出などのためのコーパスを作成できます。

同様に、このコーパスを使用して成形し、動的な機能を動作させることができます。 これは、すぐに作成できるコーパスのようなものです。 自分好みの使い方ができます。