Sudachiとは
Sudachiはオープンソースの形態素解析エンジンのひとつで形態素解析や分かち書きの処理が行えます。
Sudachiを開発した研究所が徳島にあるのでSudachiとなったのでしょうか。
MeCabにSudachiにCabochaと、、、
食べ物にまつわるのがお決まりっぽいですね。
前回はMeCabを入れてみたので、今回はSudachiを使って形態素解析をしてみます。
MeCabの導入方法、MeCabの辞書の導入方法についてはこちらをどうぞ
SudachiPy
今回はSudachiをインストールしてPythonで使うためにSudachiPyを入れます。
公式のGitHubを見て進めれば大丈夫ですが、備忘録としてこちらにも記載しておきます。
SudachiPyの導入手順
SudachiPyのインストール
仮想環境に入ったらSudachiPyをインストールします。
辞書のインストール
次に辞書をインストールします。
辞書はsmall、core、fullの3種類ありますが、まずはcoreを入れて進めます。
インストールが完了したら、あとはPythonファイルを作成して動かしていきます。
sudachi.pyの作成
公式のGitHubに載せているコードをそのまま張り付けて動かしてみます。
from sudachipy import tokenizer from sudachipy import dictionary tokenizer_obj = dictionary.Dictionary().create() # 複数粒度分割 mode = tokenizer.Tokenizer.SplitMode.C [m.surface() for m in tokenizer_obj.tokenize("国家公務員", mode)] # => ['国家公務員'] mode = tokenizer.Tokenizer.SplitMode.B [m.surface() for m in tokenizer_obj.tokenize("国家公務員", mode)] # => ['国家', '公務員'] mode = tokenizer.Tokenizer.SplitMode.A [m.surface() for m in tokenizer_obj.tokenize("国家公務員", mode)] # => ['国家', '公務', '員']
実行して確認してみます。
動かしてみるとコメントアウトされている内容が表示されました。
なるほど、単語ごとに区切られていますね。
MeCabのNEologdインストールの時に検証した文章でも試してみます。
「鬼滅の刃は週刊少年ジャンプの看板作品だったが、今では呪術廻戦が人気だ!」
画像が小さいので、ひとつ抜き出してみました。こうなっています。
MeCabの時とほとんど一緒で、NEologdのほうが精度が良いですね。
NEologdでは「鬼滅の刃」「呪術廻戦」「週刊少年ジャンプ」が一単語になっていました。
では次の手を打ってみます。
SudachiDict-fullのインストール
さっきはsudachidict_coreをインストールしていたので、デフォルトの状態でした。
fullにしてみたは精度がよくなるのでは?と思ったのでこちらで試してみます。
sudachi.pyの更新
coreはデフォルトの状態だったので、辞書をfullに指定します。
品詞なども確認したいのでコードを追加しています。
from sudachipy import tokenizer from sudachipy import dictionary tokenizer_obj = dictionary.Dictionary(dict_type="full").create() mode = tokenizer.Tokenizer.SplitMode.C sample_text= "鬼滅の刃は週刊少年ジャンプの看板作品だったが、今では呪術廻戦が人気だ!" tokens = tokenizer_obj.tokenize(sample_text, mode) print(tokens) array = [] for t in tokens: array = t.surface(),t.part_of_speech(),t.reading_form(),t.normalized_form() print(array)
PythonでSudachiを動かしてみる
更新ができたら、再度実行してみます!
分かち書きで見ても、精度が上がっていますね!
「呪術廻戦」はダメでしたが、「鬼滅の刃」「週刊少年ジャンプ」は一単語として認識されています!
coreではなく、fullを最初から使うのでよさそうですね。