Skip to content

MeCab との違い

Suzume は MeCab とは根本的に異なるアプローチで日本語トークン化を行います。このページでは、意図的な設計上の違いと既知の制約を説明します。

設計思想

MeCabSuzume
アプローチ辞書駆動型特徴量駆動型
辞書50MB以上(必須)最小限(WASM含め約300KB)
未知語文字種にフォールバックパターンベースの候補生成
複合語辞書に基づき分割文字種ヒューリスティクスで結合
対象サーバーサイド、学術用途ブラウザ、リアルタイム、クライアントサイド

基本的なトレードオフ

MeCab は辞書に登録された全単語を知っており、正確に分割できます。Suzume は網羅的な辞書の代わりに文字種パターンを使用するため、確実に分割できない配列は結合します。

意図的な違い

以下の挙動は設計上の判断です。Suzume はこれらのケースで意図的に MeCab と異なる動作をします。

1. 漢字複合語の結合

連続する漢字列は単一の名詞トークンに結合されます。

入力: 経済成長
MeCab:  経済 / 成長     (2トークン)
Suzume: 経済成長         (1トークン)
入力: 開始予定
MeCab:  開始 / 予定     (2トークン)
Suzume: 開始予定         (1トークン)

理由: 完全な辞書がなければ、漢字複合語のどこで分割すべきか判断できません。結合するほうが安全な選択です — 過剰に結合されたトークンでも、テキスト範囲は正確に捕捉されます。特定の分割が必要な場合はユーザー辞書で定義できます。

2. カタカナ複合語の結合

連続するカタカナ列は単一の名詞トークンに結合されます。

入力: データベース
MeCab:  データ / ベース  (2トークン)
Suzume: データベース      (1トークン)
入力: セットリスト
MeCab:  セット / リスト  (2トークン)
Suzume: セットリスト      (1トークン)

理由: 漢字と同様、各外来語の辞書エントリがなければ分割は不正確になります。カタカナ語はほぼすべて外来語名詞のため、単一名詞としての結合は正しい判断です。

3. 数字+助数詞の結合

数字の後に続く助数詞・単位は単一トークンに結合されます。

入力: 3人
MeCab:  3 / 人          (2トークン)
Suzume: 3人              (1トークン)
入力: 100円
MeCab:  100 / 円        (2トークン)
Suzume: 100円            (1トークン)

理由: 多くのアプリケーション(検索、タグ付け、表示)では、「3人」を1つの単位として扱う方が有用です。

4. 日付の結合

完全な日付表現は単一トークンに結合されます。

入力: 2024年12月23日
MeCab:  2024 / 年 / 12 / 月 / 23 / 日  (6トークン)
Suzume: 2024年12月23日                    (1トークン)

理由: 日付は意味の原子単位です。分割しても実用的なメリットはありません。

5. ナイ形容詞の一体処理

「ない」で終わる特定の形容詞は、分割せず単一の語彙として扱います。

入力: だらしない
MeCab:  だらし / ない    (名詞 + 形容詞)
Suzume: だらしない        (単一の形容詞)
入力: もったいない
MeCab:  もったい / ない  (名詞 + 形容詞)
Suzume: もったいない      (単一の形容詞)

対象語: だらしない、つまらない、しょうがない、もったいない、くだらない、せわしない、やるせない、みっともない 等

理由: これらの語は現代日本語で不可分の形容詞として機能します。「語幹+ない」の分割は語源的には正しいですが、NLP アプリケーションでは有用ではありません。

6. スラング・現代語の形容詞対応

現代の口語的な形容詞をネイティブに認識します。

入力: エモい
MeCab:  (未知語または分割)
Suzume: エモい  (ADJ)

対応語: エモい、キモい、ウザい、ダサい 等

理由: MeCab の辞書には現代スラングが含まれていません。Suzume は一般的なスラング形容詞パターンを認識します。

Suzume が MeCab より優れるケース

MeCab の辞書のバグや文法的な不整合により、Suzume の方が正確な結果を出すケースがあります。

品詞の修正

MeCab は辞書の制約により品詞を誤分類することがあります。Suzume はルールベースの修正を適用します:

入力: よくある質問
MeCab:  よく(副詞) / ある / 質問
Suzume: よく(ADJ) / ある / 質問

よく は形容詞 良い の連用形であり、副詞ではありません。Suzume はこれを修正します。

スラング・現代語

MeCab の辞書には現代スラングが含まれておらず、不正確なトークン化が発生します:

入力: エモい曲
MeCab:  エモ(名詞) / い(不明) / 曲
Suzume: エモい(ADJ) / 曲(NOUN)

Suzume は現代的な形容詞パターン(エモい、キモい、ウザい、ダサい)を認識し、活用形(エモかった、エモくない等)も正しく処理します。

助詞の誤分類

MeCab は特定の文脈で助詞を名詞として誤分類することがあります。Suzume は文脈を考慮した修正を行います:

入力: 行くのは大変
MeCab:  行く / の(名詞,非自立) / は / 大変
Suzume: 行く / の(PARTICLE) / は / 大変

準体助詞の はここでは名詞ではなく助詞として機能しています。Suzume はこのような MeCab の体系的な問題を修正します。

制約

Suzume の特徴量ベースアーキテクチャに起因する既知の制限事項です。

結合された複合語の分割不可

Suzume は複合語の境界判定に辞書ではなく文字種特徴量を使用するため、漢字列やカタカナ列として結合された語を個別の単語に分割できません

入力: 東京都庁前
Suzume: 東京都庁前  (1トークン — 内部境界を判定不可)
MeCab:  東京 / 都庁 / 前  (3トークン — 辞書駆動)

回避策: ユーザー辞書を使って、分割が必要な特定の単語を登録できます。

typescript
suzume.loadUserDictionary('東京都庁,NOUN')

文脈依存の品詞分類

Suzume の特徴量ベースモデルは、辞書知識や深い文脈を必要とする品詞を区別できない場合があります。主なパターン:

補助動詞 vs 本動詞

て形の後に続く補助動詞を、本動詞として分類することがあります:

入力: 確認してあります
MeCab:  確認 / し / て / あり(AUX) / ます
Suzume: 確認 / し / て / あり(VERB) / ます

影響範囲: て形の後の ある、おく、みる、いく、くる。Suzume はこれらが補助動詞(AUX)として機能しているか本動詞(VERB)かを常に判定できるわけではありません。

で: コピュラ vs 助詞

助詞「で」には複数の文法的役割があり、Suzume は常に区別できません:

入力: マジで驚いた
MeCab:  マジ / で(AUX=断定) / 驚い / た
Suzume: マジ / で(PARTICLE) / 驚い / た

「マジ」のようなナ形容詞語幹の後の「で」は断定の助動詞です。Suzume はナ形容詞語幹の辞書レベルの知識がないため、助詞として誤分類する場合があります。

ない: 形容詞 vs 助動詞

「ない」は独立した形容詞にも否定の助動詞にもなります:

入力: 仕方ない
MeCab:  仕方 / ない(ADJ)     ← 語彙的形容詞
Suzume: 仕方 / ない(AUX)     ← 否定として誤分類

動詞連用形 vs 名詞

名詞として使われる動詞語幹(名詞化)は曖昧になりえます:

入力: 東京行きは何番線ですか
MeCab:  東京 / 行き(NOUN) / は / ...
Suzume: 東京 / 行き(VERB) / は / ...

なければ条件形

条件形「なければ」の分類が異なります:

入力: 行かなければ
MeCab:  行か / なけれ(AUX) / ば
Suzume: 行か / なけれ(VERB) / ば

品詞の粒度

Suzume は MeCab の詳細なサブカテゴリよりもシンプルな品詞タグセットを使用します。

MeCabSuzume
名詞,一般NOUN
名詞,固有名詞,地域NOUN
名詞,サ変接続NOUN
名詞,副詞可能NOUN
動詞,自立VERB
動詞,非自立VERB

MeCab はきめ細かなサブカテゴリ(固有名詞、サ変接続など)を提供しますが、Suzume はこれらを区別しません。サブカテゴリレベルの品詞が必要なアプリケーションでは MeCab の方が適している場合があります。

使い分けの指針

ユースケース推奨
ブラウザ / クライアントサイドアプリSuzume — サーバー不要
検索インデックス / タグ抽出Suzume — 複合語結合がむしろ有利
学術研究 / コーパス分析MeCab — 最大精度と品詞の詳細
リアルタイム UI(入力中の処理)Suzume — 高速、ネットワーク遅延なし
正確な複合語の分割MeCab — 辞書駆動の境界判定
未知語・現代語の処理Suzume — 未登録語にも頑健

Released under the Apache 2.0 License.