Tokenizer比較CJKTokenizer2, Standard/LocalProtobufMeCabTokenizer, TinySegmenterTokenizerの比較。あくまで目安。 | 比較項目 | CJKTokenizer2 | StandardMeCabTokenizer | LocalProtobufMeCabTokenizer | TinySegmenterTokenizer | | 検索漏れの少なさ | ○ | △ | △ | △ | | 適合度(精度)の高さ | △ | ○ | ○ | ○ | | 外部データ不要 | ○ | × | × | ○ | | ユーザ辞書の追加が可能 | × | ○ | ○ | × | | トークナイズ処理のパフォーマンス | ○ | × | △ | ○ | | 日本語以外の言語の検索 | ○ | △ | △ | △ |
検索漏れを少なくしたい場合、CJKTokenizer2が向いている。ただし、ノイズは多くなる。また、CJKTokenizer2は記号を無視するので、記号を検索したい場合は不適。 一方、検索精度を重視する場合は、日本語の分かち書きに基づくトークナイズを行うStandard/LocalProtobufMeCabTokenizer、TinySegmenterTokenizerの方が適している。Standard/LocalProtobufMeCabTokenizerは、MeCabをJNI経由で使用するため、別途MeCabがインストールされている必要がある。TinySegmenterTokenizerは、MeCabを必要としないが、原理上ユーザ辞書の利用は不可能。 トークナイズのパフォーマンス面では、Standard/LocalProtobufMeCabTokenizerが不利。この二つの中ではLocalProtobufMeCabTokenizerの方が、Standardよりも約30%高速。ただし、メモリは多めに消費する。また、LocalProtobufMeCabTokenizerを使用する場合、MeCabの辞書の文字コードは、必ずUTF-8でなければならない。 CJKTokenizer2は、日本語以外の言語、たとえば英語、中国語、韓国語等にも適用可能。他のTokenizerは、他の言語で書かれたテキストに適用すると、著しく精度が落ちる(その言語のコーパスを用いて学習しなおせばよいのだが、それは本ライブラリの範疇を超える)。
|