「WordNetの日本語版が欲しい」
「Pythonで日本語WordNetを処理したい」
このような場合には、この記事が参考になります。
本記事の内容
- 日本語WordNetとは?
- 日本語WordNetのダウンロード
- 日本語WordNetの動作確認
それでは、上記に沿って解説していきます。
日本語WordNetとは?
WordNetの日本語版です。
WordNet自体の説明は、ここでは行いません。
最新の日本語WordNetのバージョンは、1.1となります。
最新と言っても、2010年10月22日のリリースです。
また、日本語WordNetはPrinceton WordNet 3.0に準じています。
Princeton WordNetは、2011年6月に3.1をリリースしたのが最後です。
よって、WordNet自体がプロジェクトとして止まった状況です。
というより、完成したということかもしれません。
そうは言っても、日本語WordNetには以下のモノが登録されています。
- 57,238 概念 (synset数)
- 93,834 words 語
- 158058 語義 (synsetと単語のペア)
- 135,692 定義文
- 48,276 例文
何もないよりは、全然ありがたいことです。
以上、日本語WordNetについての説明でした。
次は、日本語WordNetをダウンロードしていきます。
日本語WordNetのダウンロード
日本語 WordNet
http://compling.hss.ntu.edu.sg/wnja/
上記が公式ページです。
Webページの作りが、かなり古いです。
iframeを多用した昔ながらのページと言えます。
そのため、以下のURLから直接ダウンロードしましょう。
ダウンロードリンク
http://compling.hss.ntu.edu.sg/wnja/data/1.1/wnjpn.db.gz
ちなみに、上記ページはSSL未対応です。
その辺でブラウザから警告が出る場合は、wgetコマンドを使いましょう。
Windowsの場合なら、PowerShellでwgetコマンドが使えます。
wget -O wnjpn.db.gz http: //compling .hss.ntu.edu.sg /wnja/data/1 .1 /wnjpn .db.gz |
wnjpn.db.gzが保存できたら、解凍します。
解凍すると、wnjpn.dbが確認できます。
なお、Windowsの場合なら、gz対応のファイル解凍ツールを使いましょう。
ちなみに、私はCygwinを使って解凍しました。
Cygwin上で次のコマンドを実行。
$ gzip -d wnjpn.db.gz |
Cygwinがあれば、余計なツールをインストールする必要がなくなります。
その点では、Cygwinは非常に価値があると言えます。
以上、日本語辞書のダウンロードを説明しました。
次は、日本語WordNetの動作確認を行います。
日本語WordNetの動作確認
wnjpn.dbは、SQLiteのデータベースです。
動作確認としては、次の二つを行います。
- データの確認
- Pythonからのデータ利用(類義語検索)
それぞれを下記で説明します。
データの確認
SQLiteがインストール済みなら、次のようにテーブル一覧を確認できます。
sqlite> .tables ancestor pos_def synlink synset_def var iant xlink link_def sense synset synset_ex word |
WindowsへのSQLiteのインストールは、次の記事で解説しています。
ただ、次のようにGUI画面で確認したい人もいるでしょう。

上の画面は、HeidiSQLでwnjpn.dbに接続している状況です。
HeidiSQLのインストールについては、次の記事で説明しています。
HeidiSQLは、MySQLやMariaDBだけではなく、SQLiteにも対応しています。
Pythonからのデータ利用(類義語検索)
wnjpn.dbを用いて、類義語検索を行います。
そのためには、次のスクリプトをダウンロードします。
wordnet_jp.py
https://github.com/yoheiMune/python-playground/blob/master/09_wordnet/wordnet_jp.py
wordnet_jp.py
conn = sqlite3.connect( "./wnjpn.db" ) |
wordnet_jp.py上にデータベースのパスが、記載されています。
パスを変更するか、同じディレクトリにwnjpn.dbを設置するか、どちらでも構いません。
ここでは、wordnet_jp.pyと同じディレクトリ上に動作確認にスクリプトを作成しています。
test.py
import wordnet_jp import pprint word = '犬' synonym = wordnet_jp.getSynonym(word) pprint.pprint(synonym) |
すべて同じ場所に設置しているということです。

この状況で上記コードを実行します。
結果は、以下となります。
{ 'canis_familiaris' : [ '飼い犬' , 'ドッグ' , '犬' , '飼犬' , '洋犬' , 'イヌ' ], 'spy' : [ '廻者' , '間諜' , '工作員' , '犬' , '間者' , '探' , '諜報員' , '諜者' , '密偵' , 'スパイ' , '秘密捜査員' , 'いぬ' , 'まわし者' , '隠密' , '探り' , '廻し者' , '回し者' , '回者' ]} |
上記は、「犬」の同義語になります。
確かに、スパイという意味でも「犬」は使われます。
これは、なかなか面白い考察を与えてくれますね。
以上、日本語WordNetの動作確認を説明しました。