mecab, cabocha, juman, knpの処理速度とか
knpを初めて使ってみたら結構処理が遅かったので、どれくらい速度に差があるのか検証してみました。
速度のオーダーを確かめてみる程度の検証です(真面目な検証ではない)
■実験設定
pythonからsubprocessを使って*1各ツールを呼び出し
ウェブコーパスからn文を解析して、1文辺りの時間を計測、ツール間で比較しました
KNPは解析速度が文字数により指数的に低下するようなので、KNPについては文字数を変えて実験してみました。(mecab, cabochaはそこまで文字数に依存しない)
日本語の1文は、だいたい30~40文字くらいの目安感です(きっちりした文章だともうちょい長い)
40文字ってどれくらいかと言うと
「特に上流部なんかは補充が効かないところが多く、一度やられると少し時間がかかります」
これできっちり40文字。
■実験結果
解析器 | 入力文数 | 1文の文字数 | 実行時間 | 1文辺りの実行時間(およそ) |
---|---|---|---|---|
(入力をそのまま出力) | 10^6 | - | 7sec | 10^-5 sec |
MeCab | 10^4 | 20~40 | 12sec | 10^-3 sec |
CaboCha | 10^3 | 20~40 | 5sec | 5*10^-3 sec |
CaboCha | 10^3 | 80~100 | 15sec | 10^-2 sec |
juman + KNP | 10^2 | 0~20 | 8sec | 10^-1sec |
juman + KNP | 10^2 | 20~40 | 40sec | 5*10^-1sec |
juman + KNP | 10^2 | 40~60 | 120sec | 1sec |
juman + KNP | 10 | 60~80 | 23sec | 2sec |
こうしてみると、改めてcabochaは速いですね。
KNPはcabochaの100~1000倍程度の目安。文字数が多めになってくると1文1秒程度ですね。