日本語を語に切る処理を、大量の文書に対して行う場面があります。速さがそのまま取り込みの時間になります。
実際に入れて測ったところ、1秒あたり1229万字でした。辞書の読み込みも2.2ミリ秒で終わります。
実際に入れて処理の量を測りました。取り込みの時間を見積もれる速さです。
MeCabがどれくらいの量を扱えるのかを、実際に走らせて測りました。使ったのは社内規程を模した文書12件・383文字です。
同じ文書を2000回繰り返し解析して、かかった時間から1秒あたりの文字数を出しました。辞書の読み込みは測る前に済ませています。
for label, tg in DICTS:
tg.parse('') # 初回の読み込みを外に出す
n = 2000
t0 = time.perf_counter()
for _ in range(n):
tg.parse(text)
el = time.perf_counter() - t0
1回あたり 383文字の文書を、繰り返し解析する 辞書 回数 かかった時間 1秒あたりの文字数 IPADIC 2000回 62.3ミリ秒 12,298,207字 UniDic 2000回 78.9ミリ秒 9,708,811字 辞書の読み込みにかかる時間(1回目の解析まで) IPADIC 2.2ミリ秒 UniDic 2.0ミリ秒
上の表を見てください。1秒あたり1229万字でした。公式ページも、平均的に他の解析器より高速に動作するとしています。
この速さを使うと見積もりが立ちます。1000万字の文書なら、解析そのものは1秒ほどです。
実際の取り込みでは読み込みや索引への書き込みが加わります。解析の部分は、取り込み全体のなかで無視できる大きさになります。
辞書の読み込みは2.2ミリ秒で終わりました。処理のたびに起動する構成でも負担になりません。
同じ計測台で測ったKuromojiは176.4ミリ秒でした。起動を繰り返す使い方では、この差が積み上がります。
辞書を替えると2割ほど遅くなる。読み込みはどちらも速い。
日本語を語に切って品詞を付ける解析器です。辞書を外から差し替えられる作りになっています。
MeCabは、日本語を語に切って品詞を付ける解析器です。公式ページによれば、大学と研究所を通じて開発されたものです。
作りの方針がはっきりしています。公式ページは言語・辞書・コーパスに依存しない汎用的な設計を基本方針としているとしています。
つまり辞書は差し替える前提です。前の節の計測でも、2種類の辞書を切り替えて動かしました。
辞書 語の総数 語の種類 IPADIC 246個 110種 UniDic 245個 109種 両方の辞書で語の集合を作り、どれだけ重なるか IPADIC だけに出る語: 4種 例: 仮・払・超・過分 UniDic だけに出る語: 3種 例: 仮払・分・超過 両方に出る語: 106種
違いは小さく見えますが、中身が重要です。「仮払」はIPADICでは仮と払に割れ、UniDicでは1語のままでした。
「超過分」はさらに分かれます。IPADICは超と過分に切りました。UniDicは超過と分です。語として自然なのは後者です。
この計測では106種が共通でした。大半は同じで、差が出るのは一部です。
選ぶときは、自社でよく使う語を実際に切って比べるのがいちばん確実です。全体の語数を比べても判断できません。
使ったのはPythonから呼び出す形です。本体の依存には入れていません。辞書はどちらも軽量な配布物を使っており、完全版とは収録語彙が違います。分割の単位そのものを選べる解析器はSudachiの記事で扱っています。
MeCabは出力の形を切り替えられます。要らない項目を落とすと、後段に渡す量が大きく減ります。
MeCabの出力は用途に応じて形を変えられます。実際に切り替えて、出てくる量を測りました。
【区切るだけ】
宿泊 費 の 上限 は 1 泊 12000 円 と する 。
【読みだけ】
シュクハクヒノジョウゲンハ1ハク12000エントスル。
【既定の形】
宿泊 名詞,サ変接続,*,*,*,*,宿泊,シュクハク,シュクハク
費 名詞,接尾,一般,*,*,*,費,ヒ,ヒ
出力の文字数の違い
区切るだけ 30字
読みだけ 27字
既定の形 306字
同じ一文でも、区切るだけなら30字、すべて出すと306字です。10倍の差があります。
索引を作るだけなら、区切った結果だけで十分です。品詞で絞りたいなら品詞が要ります。読みでの検索を作るなら読みも足してください。
公式ページも、利用者がこれらの出力の形を自由に定義できるとしています。決まった形に合わせる必要はありません。
3番目を忘れると、索引と検索で語がそろわなくなります。作り直しの負荷については増分インデックスの記事を参照してください。
辞書には自社の語を足せます。公式ページも、辞書を作り直すための道具を用意しているとしています。
足すかどうかは、その語で実際に検索されるかで決めてください。割れていても困らない語のほうが多いです。
要る項目だけ出せば、後段に渡す量が減る。
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る