自然言語処理
NLP

「日本語ワードネット」を用いた複数キーワードの類語一括抽出方法

More than 1 year has passed since last update.

はじめに

国立研究開発法人情報通信研究機構(NICT)で公開されている、「日本語ワードネット」という日本語の類語辞書があります。
http://compling.hss.ntu.edu.sg/wnja/

これを用いる事で、ある語に対しての類語が引ける訳なのですが、実際に実用するとなると、複数の語(キーワード)に対してまとめて類語を抽出したいといった要求が出てきます。
ですが、現状どのサイトを見ても「(1つの)キーワードに対して類語取れました、以上」と言ったものばかりだったので、複数キーワードに対して一括して類語抽出する手順についてまとめてみました。

手順

1.辞書のDL

まずは辞書をサイトからDLします。
サイトのメニューから「リリース・ダウンロード」を選択します。
[Japanese Wordnet and English WordNet in an sqlite3 database]とあるリンクをクリックしてDLします。

2.sqliteのインストール

サイトよりDLしてインストールします。

3.SQLの作成

sqliteで実行するselect文を列挙したSQLのファイルを作成します。

検索するといくつか記述方法があるようですが、今回はこちらのサイトを参考にしました。

但しこの際にselectする項目を"word2.*"とだけしてしまうと、連続でselect文を実行した場合、どこからどこまでが何のキーワードで検索した結果なのかが分からなくなってしまうため、適当なカラム名でキーワードも出力するようなselect文に拡張します。
("適当なカラム名 AS キーワード"をselectに追加)

実際のSQLのイメージ
(以下'キーワード'を実際に検索したいキーワードに置き換えて下さい)


select 'キーワード' as KEYWORD, word2.*
from word as word1 inner join sense as sense1 on ( word1.wordid = sense1.wordid)inner join sense as sense2 on ( sense1.synset = sense2.synset)
inner join word as word2 on ( word2.wordid = sense2.wordid and word2.lang='jpn')
where word1.lemma = 'キーワード' and word1.lang = 'jpn';


上記のSQLを類語抽出したいキーワード分列挙したテキストファイルを作成します。
  → ※文字コードをUTF-8としないとsqliteで読み込めないので注意

4.実行

コマンドラインで作成したSQLを実行します。

・コマンドラインを起動し、sqliteのインストール先のフォルダに移動

・sqliteを起動
 sqlite3 データベース名

・出力ファイルを指定
 .output 出力ファイル名

  → ※以降全てのコマンド入力の結果はコンソールに表示されないので注意

・SQLファイルを読込実行
 .read SQLファイル名

といった手順で、出力ファイルに結果が出力されます。


結果例)
「発注」と「労働」といったキーワードで実施した場合

発注|157855|jpn|誂える||v
発注|162377|jpn|註文||v
発注|182242|jpn|頼む||v
発注|191970|jpn|オーダー||v
発注|203269|jpn|注文||v
発注|207209|jpn|発注||v
発注|217629|jpn|発註||v
発注|227948|jpn|オーダ||v
労働|159374|jpn|労働||n
労働|207938|jpn|労役||n
労働|228799|jpn|肉体労働||n
労働|159374|jpn|労働||n
労働|179519|jpn|バイト||n
労働|195552|jpn|雇用||n
労働|196648|jpn|働き口||n
労働|206010|jpn|アルバイト||n
労働|213311|jpn|仕事||n
労働|155790|jpn|就労||v
労働|159375|jpn|労働||v
労働|169181|jpn|勤労||v
労働|195589|jpn|働く||v
労働|220551|jpn|勤める||v
労働|230042|jpn|勤務||v
労働|159375|jpn|労働||v
労働|169181|jpn|勤労||v
労働|173457|jpn|立ち働く||v
労働|195589|jpn|働く||v