MeCab との違い
MeCab と Suzume は、語の境界と品詞の付け方が異なります。まず調べたい話題を選び、比較例で具体的な違いを確認してください。
意図的な差異の正本は、テスト期待値を生成する Python の MeCab 正規化パイプラインです。
話題から探す
| 調べたいこと | 詳細 |
|---|---|
| 複合語、数字と単位、地名、接尾辞の境界 | 複合語・数量・名前 |
| 複合動詞と補助動詞、助詞、否定、文語の境界 | 動詞・文法表現 |
| 口語の表記、長音、識別子、URL、記号 | 表記・技術テキスト |
| 同じトークンに付く品詞、原形、拡張品詞 | POS 分類の違い |
比較条件
この比較ガイドの MeCab の境界と表示する素性は、すべて MeCab 0.996 と mecab-ipadic 2.7.0-20070801(UTF-8 版 IPA 辞書)の出力から記録しています。ラベルは読みやすいように MeCab のカンマ区切り素性を略記していますが、トークン境界は書き換えていません。mecab を既定の設定で実行し、ユーザー辞書は読み込んでいません。使用中の設定は次のコマンドで確認できます。
mecab --version
mecab -DMeCab の出力は、選択した辞書、そのコスト、ユーザー辞書によって変わります。UniDic、NEologd、カスタマイズした IPA 辞書では、このページと異なる境界や品詞になることがあります。上記の正規化パイプラインは、この IPA 辞書の出力を起点に、Suzume の一般化した比較規則を適用してテスト期待値を生成します。
比較の読み方
各比較では、MeCab 行に MeCab の日本語品詞名、Suzume 行に公開 API のタグ(NOUN、VERB、ADJ など)を、コードごとに日本語の品詞名を併記して示します。各トークンには品詞色のアンダーラインが付くので、2つのトークナイザーがどこで分割・結合するかが一目で分かります。
設計思想
MeCab は選択した辞書の語彙・品詞体系・接続コストに基づいて形態素を解析します。Suzume はコンパクトな辞書と文字種・文法・接続規則を使い、検索や表示に使うトークンを生成します。
| MeCab | Suzume | |
|---|---|---|
| アプローチ | 辞書駆動型 | 特徴量駆動型 |
| 辞書 | 外部辞書が必要。サイズと出力は選択した辞書に依存 | コンパクトな辞書を WASM バイナリに内蔵(gzip 後に約 260KiB) |
| 未知語 | 文字種にフォールバック | パターンベースの候補生成 |
| 複合語 | 選択した辞書に基づく境界 | 辞書と構造規則。未知の連続列は結合する場合あり |
| 対象 | 辞書に基づく詳細な解析 | ブラウザ・エッジ・ネイティブでのコンパクトな検索・表示用トークン化 |
制約
Suzume の特徴量ベースアーキテクチャに起因する既知の制限事項です。
結合された複合語の分割不可
Suzume は、未知の同一文字種複合語の内部にある任意の語彙境界を推測できません。ただし、文法規則やコンパクトな辞書で根拠のある境界は分割できます。
Suzume は内部境界を判定できず、MeCab は辞書に基づいて分割します
回避策: アプリケーションで必要な境界は、ユーザー辞書ガイドの実行時読み込み例を使って登録します。JavaScript、Python、Go、C++、C、ネイティブ CLI の例を掲載しています。
使い分けの指針
| ユースケース | 推奨 |
|---|---|
| ブラウザ / クライアントサイドアプリ | Suzume — サーバー不要 |
| 検索インデックス / タグ抽出 | Suzume — 複合語結合がむしろ有利 |
| 特定の MeCab 辞書/コーパスとの互換性 | MeCab — その辞書の境界と品詞体系を維持 |
| リアルタイム UI(入力中の処理) | Suzume — 高速、ネットワーク遅延なし |
| 辞書で定義された複合語分割 | MeCab — 選択した辞書に基づく境界判定 |
| 辞書にない語へのパターン候補 | Suzume — 語彙エントリがない文字列も解析可能 |