🎍
同義語検索ライブラリchikkarpyで独自の辞書を使う
chikkarpy とは
- 同義語検索ができるPythonライブラリ
- Sudachi同義語辞書をもとにしている
- 形態素解析器Sudachiと同じくワークス徳島NLPによる開発
使ってみる
$ pip install chikkarpy
$ echo バスタブ | chikkarpy
バスタブ 浴槽,bathtub,バス,bath,湯船,湯槽,湯舟
展開には方向がある
$ echo ケータイ | chikkarpy
ケータイ 携帯電話,ケータイ電話,携帯,移動電話,モバイルフォン,モバイル,mobile
$ echo 携帯 | chikkarpy
携帯
用言(動詞・形容詞)はデフォルトでは展開されない
デフォルトでは、体言のみが展開されます。
$ echo 取り決め | chikkarpy
取り決め 約束,取決め,申し合わせ,申合せ
$ $ echo 切り替え | chikkarpy
切り替え 切替え,切り換え,切換え,転換
-ev
オプションにより、用言(動詞・形容詞)も展開されます。
$ echo 取り決め | chikkarpy -ev
取り決め 約束,取決め,取り決める,取決める,申し合わせ,申合せ,申し合わせる,申合せる
$ echo 切り替え | chikkarpy -ev
切り替え 切替え,切り換え,切換え,切り替える,切替える,切り換える,切換える,転換
Pythonライブラリとして使う
上記は、CLIでコマンドとしてchikkarpyを利用する例です。Pythonライブラリとして使うための詳細は、公式READMEの該当セクションをご覧ください。
独自の同義語辞書を作って使う
デフォルトでは、ビルド済みのSudachi同義語辞書が使われます。この辞書ファイルは pip install
時にダウンロードされています。
自ら同義語辞書を作って利用することもできます。
Sudachi同義語辞書の形式
Sudachi同義語辞書では、単に同義語を列挙するだけでなく、展開抑制フラグなどの詳細情報が付与されています。
(画像出典)
0 : グループ番号
1 : 体言/用言フラグ (省略可)
2 : 展開制御フラグ (省略可)
3 : グループ内の語彙番号 (省略可)
4 : 同一語彙素内での語形種別 (省略可)
5 : 同じ語形の語の中での略語情報 (省略可)
6 : 同じ語形の語の中での表記ゆれ情報 (省略可)
7 : 分野情報 (省略可)
8 : 見出し
9 : 予約
10 : 予約
形式の詳細は次のページを確認のこと; SudachiDict/synonyms.md at develop · WorksApplications/SudachiDict
作って、使ってみる
辞書のソースを用意する
$ cat user_synonyms.txt
999999,1,0,1,0,0,0,(企業名),リーガルスケープ,,
999999,1,0,1,0,0,1,(企業名),Legalscape,,
999999,1,1,1,0,1,0,(企業名),LS,,
略記の LS
には多義性があります。 LS
と書かれていたからといって リーガルスケープ
を指すとは限りません(参考: LS - Wikipedia)。そのため、展開抑制、つまり3カラム目を「1」に設定しています。
辞書をビルドする
build
サブコマンドを使います。-i
で入力とするソースのテキストファイル、 -o
で出力するファイルのパスを指定します(デフォルトは synonym.dic
)。
$ chikkarpy build -i user_synonyms.txt -o user.dic
reading the source file...building the trie...done
writing the trie...1028 bytes
writing the word-ID table...19 bytes
writing the word_infos...93 bytes
writing synonym groups offsets...12 bytes
辞書を使う
-d
オプションで辞書ファイルを指定します。
$ echo リーガルスケープ | chikkarpy -d user.dic
リーガルスケープ Legalscape,LS
$ echo LS | chikkarpy -d user.dic
LS
想定通り、 LS
の場合には展開されません。
ちなみに、この「リーガルスケープ」というのは私が所属する会社の名前です。エンジニア募集中、法治国家のための社会インフラを一緒につくりませんか?
余談
「ちっかー」とは、徳島の方言で「竹輪(ちくわ)」のことです。
Discussion