はじめに
国立研究開発法人情報通信研究機構(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