SudachiPy でユーザ辞書を作ってみた

前回のブログでGiNZA2.0 の導入について記述した。

toohsk.hateblo.jp

形態素解析を行ったところ期待した粒度で分割されていないことがあった。
これは形態素解析を行う上で仕方ない部分であり、
こういう場合には分割されてほしくない単語をユーザ辞書で管理する必要がある。

GiNZA はトークン化するためにSudachiPy を利用している。 1
なので、ユーザ辞書はSudachiPy にそう形で用意する必要がある。

前提

前回と同様、pyenv でPython 3.7.3 をインストールした環境でのコードを書いていきます。

注意

本来、GiNZA をインストールすると合わせてSudachiPy がインストールされるが、今回は手動でインストールする。

SudachiPy のインストール

SudachiPy とSudachiDict_coreをインストールします。

$ pip install SudachiPy
$ pip install https://object-storage.tyo2.conoha.io/v1/nc_2520839e1f9641b08211a5c85243124a/sudachi/SudachiDict_core-20190531.tar.gz

ユーザ辞書の元データ

前回、 金閣寺金閣 の2つに分割されてしまったので、 金閣寺 と出力されるように 金閣寺 をユーザ辞書に登録します。

金閣寺,4786,4786,5001,金閣寺,名詞,固有名詞,一般,*,*,*,キンカクジ,きんかくじ,*,*,*,*,*

4カラム目の 5001 はコストに相当するものですが、今回は適当に指定しています。

バイナリ化

SudachiPy でユーザ辞書を扱うためには、バイナリに変換した辞書を指定する必要があります。
以下のコマンドでバイナリ化できます。

$ sudachipy ubuild -s /path/to/system.dic user_dict.txt

ちなみに system.dic のありかですが、
今回、pyenv でSudachiPy をインストールしていることもあり、 pyenv 配下で使用している python バージョンの site-packages 以下に site-packages/sudachidict_core/resources/system.dic としてありました。
参考にしてください。

次回はこのバイナリ化した辞書を使って、GiNZA で形態素解析を行います。


  1. GiNZA のリポジトリSudachiおよびSudachiPy 参照