NLTK WordNet: NLTK WordNetから同義語を検索 Python
⚡ スマートサマリー
WordNetは、英語の語彙データベースおよびNLTKコーパスリーダーであり、名詞、動詞、形容詞、副詞をシノセットにグループ化し、 Python 自然言語処理のために、プログラムは同義語、反義語、上位語、および単語の意味を調べます。

ワードネットとは何ですか?
WordNet WordNetは、英語の語彙データベースであるNLTKコーパスリーダーです。単語の意味、同義語、反義語を検索するために使用できます。意味指向型の英語辞書と定義できます。WordNetは、次のコマンドでインポートされます。
from nltk.corpus import wordnet as guru
WordNetは既製のコーパスとして提供されるため、一度読み込むだけで、自分で辞書を作成することなく、すぐに単語間の関係性を検索できます。
NLTK WordNetから同義語を検索する Python
統計によると、 155287 の単語と 117659 の同義語 英語のWordNetに含まれるセット。WordNetで利用できるさまざまな方法は、tyで検索できます。ping dir(guru)は、コーパスリーダーによって公開されるすべてのローダー属性とヘルパーメソッドを一覧表示します。
シノセット: これは同義語セット、または同義語の集合とも呼ばれます。例を見てみましょう。
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}の間にも関係があります。例えば、同義語は反義語の反対語であり、上位語と下位語は語彙概念の一種です。
を使ってプログラムを書いてみましょう Python 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'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
コードの説明:
- WordNetはコーパスなので、nltk.corpusパッケージからインポートされます。
- 同義語と反義語のリストは、最初は空として扱われ、追加処理に使用されます。
- 「active」という単語の同義語は、synsetsメソッドで検索され、同義語リストに追加されます。反意語も同様のプロセスで収集されます。
- 出力は次のように表示されます Python 重複するエントリが自動的に削除されるように設定します。
WordNetは、同義語や反義語に加えて、上位語(より広い意味を持つ語)、下位語(より具体的な意味を持つ語)、全体語、部分語も公開しているため、単一のクエリで単語を「is-a」階層全体に位置付けることができます。これらの関係性により、WordNetはスペルチェック、言語翻訳、スパム検出、その他人工知能におけるテキスト分析タスクのための実用的なシソーラスとなっています。
