見出し画像

WordNet を使ってPythonで類義語を調べる

「WordNet」の使い方を軽くまとめました。

・macOS 10.15.7
・Python 3.6

1. WordNet

WordNet」は意味に基いて作成された巨大な概念辞書です。

類義語」「上位概念」「下位概念」などがまとめられているDBになります。

・類義語 : 意味が似ている語。
【例】猫の類義語 → ねんねこ, にゃんにゃん, 猫, キャット, ネコ

・上位概念・下位概念 : 下位概念は上位概念の概念関係を承継。
【例】猫の上位概念 → 動物
   動物の下位概念 → 犬, 猫, 猿 

2. WordNetのDB定義

主なDB定義は、次のとおりです。

◎ word
単語のテーブルです。

・wordid : 単語ID
・lang : 言語 (jpn, eng)
・lemma : レンマ
・pron : -

◎ synset
概念のテーブルです。

・synset : 概念ID
・pos : 品詞ID
・src : -

◎ sense
概念と単語の関連付けのテーブルです。

・synset : 概念ID
・wordid : 単語ID
・lang : 言語 (jpn, eng)
・rank : -
・lexid : -
・freq : -
・src : -

◎ synlink
2つの概念の関係(上位・下位、包含・被包含など)のテーブルです。

・synset1 : 概念ID1
・synset2 : 概念ID2
・link : リンクID
・src : -

3. WordNetのDBのダウンロード

サイトの「Japanese Wordnet and English WordNet in an sqlite3 database」をクリックすることで、「WordNet」のDB(wnjpn.db)をダウンロードできます。

DB Browser for SQLite」で中身を確認することができます。

4. Pythonで類義語を調べる

以下のコード「wordnet_jp.py」をダウンロードします。

以下のコードを実行します。

【test.py】

import wordnet_jp

word = '楽しい'
synonym = wordnet_jp.getSynonym(word)
print(synonym)

「楽しい」という語が含まれる同義語集合は、次のとおりです。

{
    'gratifying': ['楽しい', '愉快', 'おもしろい', '悦ばしい', '満足', '心嬉しい', '痛快', '愉しい', '心うれしい', '面白い'],
    'happy': ['うれしい', '愉しげ', '楽しい', '明るい', '仕合わせ', 'ご機嫌', '楽しげ', '悦ばしい', '御機嫌', 'ハッピー', '心嬉しい', '大喜び', '幸福', '幸せ', '喜ばしい', '仕合せ', '嬉しい', '心うれしい', '嬉々たる'],
    'pleasant': ['愉しげ', '心地良い', '楽しい', 'よい', '好い', '快然たる', '愉快', '気持ち良い', '楽しげ', '快い', '麗しい', '快適', 'いい', '好いたらしい', '良い', '心地よい', '善い', '愉しい', '嬉しい', '心地好い'],
    'good': ['楽しい'], 'merry': ['楽しい', '楽しげ', '賑やか', '面白い'],
    'entertaining': ['可笑しい', '楽しい', '面白い'],
    'delicious': ['楽しい', 'おもろい', '愉快', 'おもしろい', '悦ばしい', '小気味好い', '心嬉しい', '愉しい', '喜ばしい', '心うれしい', '小気味よい', '面白い']
}

4. 参考



この記事が気に入ったらサポートをしてみませんか?