本ページはプロモーション(PR)が含まれています
更新日: 2024/09/08
NLTKとWordNetの基本的な使い方・類義語について
目次
ふゅか
ねえ、NLTKって知ってる?WordNetっていう辞書データベースにアクセスできるんだって!超便利だよね♪
はるか
ああ、知ってる。単語の意味や同義語、反意語が簡単にわかる。
NLTKとWordNet
NLTK (Natural Language Toolkit) は、WordNet という辞書データベース(シソーラス)にアクセスするための便利なインターフェースを提供しています。これにより、単語の意味、同義語、反意語などを簡単に調べることができます。以下に、NLTK で WordNet を使う基本的な方法を説明します。
インストール・準備
まず、NLTK がインストールされていることを確認してください。pip を使ってインストールできます。
pip install nltk
次に、WordNet のデータをダウンロードする必要があります。
import nltk
nltk.download('wordnet')
nltk.download('omw-1.4') # オプション: 多言語対応の WordNet データ
基本的な使い方
Synset(同義語セット)
Synset は、共通の意味を持つ同義語の集合です。ある単語の Synset を取得するには、次のようにします。
from nltk.corpus import wordnet as wn
# "dog" の Synset を取得
synsets = wn.synsets('dog')
print(synsets)
WordNetに様々な同義語が登録され、文字通りの「犬」以外にも、複数の異なる意味が関連しています。
はるか
Synsetは英語で一つ以上の同義語のこと。
定義と例文
Synset を取得したら、その定義や例文にアクセスできます。例文は、空になる場合があります。
# "letter" の最初の Synset を取得
letter = wn.synsets('letter')[0]
# 定義を取得
print(letter.definition())
# 例文を取得
print(letter.examples())
Lemma(同義語)
Synset の同義語(Lemma)を取得することができます。
a = wn.synsets('a')[2]
# "a" の Synset の Lemma を取得
lemmas = py.lemmas()
print([lemma.name() for lemma in lemmas])
デオキシアデノシン一リン酸とAがaの同義語になっていることがわかります。
ふゅか
あとは、Synsetから同義語、つまりLemmaも取り出せるのよ!
はるか
そうだね。同義語のリストを作りたいときに役立つ。
反意語
反意語を見つけるには、Lemma を調べて、その反意語を取得します。
# "good" の反意語を見つける
good = wn.synsets('good')[1]
antonyms = [lemma.antonyms() for lemma in good.lemmas() if lemma.antonyms()]
print(antonyms)
Hypernym(上位語)と Hyponym(下位語)
単語の上位語や下位語を取得することができます。
token = wn.synsets('token')[0]
# "token" の最初の Synset の Hypernym を取得
hypernyms = token.hypernyms()
print(hypernyms)
# "token" の最初の Synset の Hyponym を取得
hyponyms = token.hyponyms()
print(hyponyms)
ふゅか
HypernymとHyponymも便利だよ!Hypernymはもっと一般的な用語、Hyponymは具体的な用語って感じ。これで単語の階層関係が見えてくる!
パス類似度の計算
Synset 間の類似度をパス類似度で測定することもできます。
# "dog" と "cat" の Synset を取得
dog = wn.synsets('dog')[0]
cat = wn.synsets('cat')[0]
# パス類似度を計算
similarity = dog.path_similarity(cat)
print(similarity)
関連記事
N-gramの意味とnltkを利用した実装例について
自然言語処理
【Transformers】警告The attention mask and the pad token id were not set. As a consequence・・・の解決方法
text-generation
transformers
自然言語処理
【Transformers】AutoModelForCausalLMの意味と使い方について
LLM
text-generation
transformers
自然言語処理
【Hugging Face】Transformersのインストール方法について
transformers
自然言語処理
bert-base-japanese-v2の使い方!MASKされた日本語を推測する
python
LLM
transformers
自然言語処理
fill-mask
Flaskで始める固有表現抽出!SpaCyとGiNZAを使った固有表現抽出(ner)の作り方!
Webアプリケーションフレームワーク
python
LLM
自然言語処理
flask





