🎍

同義語検索ライブラリchikkarpyで独自の辞書を使う

2021/05/25に公開

chikkarpy とは

WorksApplications/chikkarpy

使ってみる

$ 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