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

⚡ スマートサマリー

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

  • 🧩 コーパスリーダー: WordNetはnltk.corpusからインポートされ、英語の意味指向辞書として機能します。
  • 🔁 シノセット: シノセットとは、同義語の集合のことで、例えば「犬」に対して返される8つの意味などがこれに該当します。
  • 🔗 語彙的関係: 相互的な意味的リンクは、同義語、反義語、上位語、下位語を結びつけます。
  • 🧪 同義語と反義語: ローping synsetsとlemmasを網羅することで、単語のすべての同義語と反義語を収集します。
  • 🌳 階層: 上位語、下位語、全体語、部分語は、単語を名詞、動詞、形容詞、副詞のサブグループに分類する。
  • 🤖 AIの利点: WordNetは、スペルチェック、翻訳、スパム検出といったテキスト分析タスクを支える技術です。

NLTK WordNet

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

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はスペルチェック、言語翻訳、スパム検出、その他人工知能におけるテキスト分析タスクのための実用的なシソーラスとなっています。

よくあるご質問

WordNetは、英語用のNLTKコーパスリーダーおよび語彙データベースです。意味指向の辞書のように機能し、簡単な操作で単語の意味、同義語、反義語を調べることができます。 Python コマンド。

シノセット(synonym setの略)とは、同じ概念を共有する単語のグループのことです。wordnet.synsets(“dog”)を呼び出すと、複数のシノセットが返され、それぞれが「dog」という単語の異なる意味を表しています。

wordnet.synsets(word) をループし、各 synset の lemma() を反復処理します。同義語を収集するために lemma.name() を追加し、反義語を収集するために lemma.antonyms() を呼び出します。ラップしますping set() の結果は重複エントリを削除します。

上位語はより広範で一般的な用語(食事は朝食の上位語)であり、下位語はより具体的な用語(米は食事の下位語​​)です。WordNetはこれらを関連付けて「is-a」階層を形成します。

英語のWordNetには、約155,287語が収録されており、約117,659の同義語セットに分類されています。このデータベースは、名詞、動詞、形容詞、副詞の4つの品詞にまたがり、それぞれが独自のサブネットに格納されています。

人工知能の分野において、WordNetは単語の意味曖昧性解消、スペルチェック、言語翻訳、スパム検出といったテキスト分析タスクを支援します。その構造化された関係性により、機械学習モデルは生のトークンだけでは得られない、より豊富な言語的特徴を活用できます。

はい。AIや機械学習のパイプラインでは、WordNetの類似度指標であるパス類似度やWu-Palmer類似度などが用いられます。これらの指標は、上位語と下位語の階層構造において、2つのシノセット間の最短経路を測定することで、それらの類似度を評価します。

通常の辞書は定義をアルファベット順に並べますが、WordNetはシノセットや語彙的関係を通して単語を意味的に関連付けているため、機械がプログラムで走査できる、辞書と類語辞典を組み合わせたような働きをします。