Re:ゼロから始めるML生活

どちらかといえばエミリア派です

形態素解析器をいろいろ試す

日本語自然言語処理を行う際に、形態素解析をどうするかという問題はいつもつきまとってきます。

今回記事を書こうと思ったのは、Vaporettoなる形態素解析器を見かけたからです。 こちらに興味が湧いたのと、他の形態素解析器と比較してみたくなったので、やってみた次第です。

そんなわけで、今回は形態素解析で色々使って実験してみたのでそのメモです。

Vaporetto

Vaporetto is a fast and lightweight pointwise prediction based tokenizer. This repository includes both a Rust crate that provides APIs for Vaporetto and CLI frontends.

github.com

Rust製の軽量で高速な形態素解析器ってことですね。 形態素解析の中身については全くわかってないんですが、論文があるので詳しくはそちらをご参照ください。

https://www.anlp.jp/proceedings/annual_meeting/2022/pdf_dir/D2-5.pdf

とりあえず動かしてみる

READMEに書いてあるとおりに動かしてみます。

インストールとは別にモデルファイルのダウンロードが必要みたいで、それを読み込んで使うのが一番カンタンにつかう方法みたいですね。

速度比較

形態素解析の速度についてやんわり試してみたいと思います。

比較対象は、こちらの記事を参考に下記を比較してみたいと思います。

  • Mecab
  • Sudachi
  • Juman++ (今回Jumanはやってないです)

あたりと比較してみたいと思います。

その他条件は下記。

  • 環境:Google Colab
  • 使用データ:livedoorニュースコーパス

Mecab

Sudachi

Juman++

Vaporetto

結果

実際に動かしてみた結果がこちらです。

実行時間(sec)
Mecab 12.88736343383789
Sudachi 22.769251108169556
Juman++ 152.99283862113953
Vaporetto 11.956955432891846

※1: 形態素解析器はPythonから呼び出さなくても使用されるので、「Pythonから呼び出したときの性能では」という注釈は付きますので、形態素解析本体の速度ではないことはご容赦ください

※2: 実験ではテキストファイルの読み込みなどの、形態素解析以外の処理が若干含まれている点はご注意ください

※3: Google colabで実行しているので、厳密な速度評価になっていない点はご注意ください

形態素解析の結果を眺める

今度は、どれくらいいい感じに形態素解析サれてるのか、よくある形態素解析が難しい例を使ってみてみます。

外国人参政権

結果
Mecab ['外国', '人参', '政権', '\n']
Sudachi ['外国人参政権']
Juman++ ['外国', '人', '参政', '権']
Vaporetto ['外国', '人', '参', '政権']

魔法少女リリカルなのは

結果
Mecab ['魔法', '少女', 'リリカル', 'な', 'の', 'は', '\n']
Sudachi ['魔法', '少女', 'リリカル', 'な', 'の', 'は']
Juman++ ['魔法', '少女', 'リリカルなのは']
Vaporetto ['魔法', '少女', 'リリカル', 'な', 'の', 'は']

弁慶がなぎなたを持って

結果
Mecab ['弁慶', 'が', 'なぎなた', 'を', '持っ', 'て', '\n']
Sudachi ['弁慶', 'が', 'なぎなた', 'を', '持っ', 'て']
Juman++ ['弁慶', 'が', 'なぎなた', 'を', '持って']
Vaporetto ['弁慶', 'が', 'なぎなた', 'を', '持っ', 'て']

参考文献

下記の文献を参考にさせていただきました。

感想

ってことで、vaporettoは興味はあったんですが使ったことがなく、試してみるついでにいろいろ実験してみた次第です。 今回やってみた実験結果としては、

  • Vaporettoが一番速かった
    • Pythonから呼び出してるからなのかMecabといい勝負にはなってたけど、それでも速い
  • 区切りがいい感じにできていたのはJuman++
    • 魔法少女リリカルなのはが分割できるのはビビった

って感じでした。魔法少女リリカルなのはの衝撃がすごすぎるので今回はこのへんで。