MeCab との違い
Suzume は MeCab とは根本的に異なるアプローチで日本語トークン化を行います。このページでは、意図的な設計上の違いと既知の制約を説明します。
設計思想
Suzume はトークナイザーであり、形態素解析器ではありません
MeCab は形態素解析器です — テキストを形態素に分解し、詳細な文法情報を付与することを目的としています。Suzume はトークナイザーです — 検索、表示、テキスト処理などの実用的なアプリケーションのために、テキストを意味のある単位に分割することを目的としています。形態素解析は Suzume の目標ではありません。この目的の根本的な違いが、以下に述べる多くの動作の違いを説明しています。
| MeCab | Suzume | |
|---|---|---|
| アプローチ | 辞書駆動型 | 特徴量駆動型 |
| 辞書 | 50MB以上(必須) | 最小限(WASM含め約400KB) |
| 未知語 | 文字種にフォールバック | パターンベースの候補生成 |
| 複合語 | 辞書に基づき分割 | 文字種パターンに基づき結合 |
| 対象 | サーバーサイド、学術用途 | ブラウザ、リアルタイム、クライアントサイド |
基本的なトレードオフ
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.14
MeCab: 3 / . / 14 (3トークン)
Suzume: 3.14 (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 は一般的なスラングの形容詞・動詞パターンを認識し、活用形(エモかった、バズった等)も正しく処理します。
7. 複合動詞の結合
連用形の動詞語幹に続く補助動詞は、複合動詞として結合されます。
入力: 走り込む
MeCab: 走り / 込む (2トークン)
Suzume: 走り込む (1トークン)入力: 食べ続ける
MeCab: 食べ / 続ける (2トークン)
Suzume: 食べ続ける (1トークン)対応するV2要素: 込む、出す、続く、返す、合う、直す、切る、上がる、抜く、続ける、つける、替える、合わせる、上げる、下げる、掛ける、入れる 等(40以上のパターン)
理由: 複合動詞は日本語で単一の語彙単位として機能します。分割すると複合的な意味が失われます。
8. タリ活用副詞の結合
タリ活用の副詞語幹に「と」が続く場合、単一の副詞に結合されます。
入力: 堂々と
MeCab: 堂々 / と (2トークン)
Suzume: 堂々と (1トークン、ADV)対象語幹: 泰然、堂々、悠々、淡々、粛々、颯爽、毅然、漫然、茫然、呆然、唖然、愕然、断然、俄然、歴然、整然、雑然、騒然、憮然、黙然、昂然、凛然、厳然
理由: これらの語幹+と の組み合わせは慣用的に副詞として使われ、単一トークンの方が有用です。
9. お/ご接頭辞の処理
Suzume はお/ごの敬語接頭辞を名詞から分割しますが、不可分な語彙の場合は結合を維持します。
入力: お茶
Suzume: お(PREFIX) / 茶(NOUN) (分割 — 分離可能な接頭辞)
入力: お金
Suzume: お金(NOUN) (維持 — 不可分な語彙)
入力: お母さん
Suzume: お母さん(NOUN) (維持 — 家族語)不可分な例外語: お金、お前、おかず、おでん、おもちゃ、おすすめ、おいら、おっぱい、おしっこ、おもらし、おっさん、お疲れ様、お出で/おいで、および家族語(お母さん、お父さん、お兄ちゃん、お姉さん、おじさん、おばさん、おじいさん、おばあさん等)
理由: 多くの文脈では、お/ごは分離すべき文法的接頭辞です。しかし一部の語は接頭辞と語彙化しており、分割すると不正確になります。
10. 敬称の分割
敬称は名前から分割されます。
入力: 田中さん
MeCab: 田中さん (1トークン)
Suzume: 田中 / さん (2トークン)対象敬称: さん、ちゃん、様、君、殿、さま
例外: お兄ちゃん、お母さんなどの家族語は単一トークンとして維持されます。
理由: 検索や表示の用途では、名前と敬称を分離する方が有用です。
11. URL・メンション・ハッシュタグの処理
URL、@メンション、#ハッシュタグは単一トークンに結合されます。
入力: https://example.com にアクセス
Suzume: https://example.com / に / アクセス
入力: @user_name に送信
Suzume: @user_name / に / 送信
入力: #推し活 について
Suzume: #推し活 / について理由: これらは現代テキストにおける不可分な識別子です。分割するメリットはありません。
12. 長音記号の処理
長音記号(ー)は前のトークンに結合され、連続する長音記号は1つに正規化されます。
入力: あのー
MeCab: あの / ー (2トークン)
Suzume: あのー (1トークン)
入力: すごーーい
Suzume: すごーい (正規化)理由: 長音は修飾する語の一部です。
13. 口語代名詞の結合
MeCab が分割する口語代名詞を結合します。
入力: こいつは
MeCab: こ / いつ / は (3トークン)
Suzume: こいつ / は (2トークン)対象: どいつ、こいつ、そいつ、あいつ
14. 分割ルール
Suzume は MeCab が1つのトークンとして出力するが、別々の単位であるべきものを分割します。
ったら題目助詞:
入力: あなたったら
MeCab: あなたったら (1トークン)
Suzume: あなた / ったら (代名詞 + 助詞)ってば強調助詞:
入力: もうってば
MeCab: もうってば (1トークン)
Suzume: もう / ってば (副詞 + 助詞)複数接尾辞ら:
入力: 彼ら
MeCab: 彼ら (1トークン)
Suzume: 彼 / ら (代名詞 + 接尾辞)漢字副詞+に:
入力: 次に
MeCab: 次に(副詞) (1トークン)
Suzume: 次(NOUN) / に(PARTICLE) (2トークン)漢字+カタカナ複合名詞:
入力: 量子コンピュータ(ユーザー辞書未登録の場合)
Suzume: 量子 / コンピュータ (2トークン)15. 使役受身の分割
MeCab は五段動詞の未然形+使役「さ」を1トークンに結合する場合があります。Suzume はこの不整合を正規化します。
入力: 飲まされた
MeCab: 飲まさ / れ / た (使役が結合)
Suzume: 飲ま / さ / れ / た (動詞 + 使役 + 受身 + 過去)理由: MeCab は一部の使役受身形を分割し(読ま + さ + れた)、他を結合します(飲まさ + れた)。Suzume はすべてのケースを正規化します。
16. 漢語+として副詞の分割
MeCab は漢語+としてを単一の副詞として扱います。Suzume は副詞形+する活用に分割します。
入力: 依然として
MeCab: 依然として (1トークン、副詞)
Suzume: 依然と / し / て (副詞 + 動詞 + 助動詞)理由: これらはタル形容詞の副詞形(漢語+と)に続くする活用です。分割することでより正確な文法構造を提供します。
17. 県+市の分割
県+市の複合名詞は行政区画の境界で分割されます。
入力: 神奈川県横浜市(MeCab が1トークンで出力する場合)
Suzume: 神奈川県 / 横浜市 (県/市の境界で分割)注: この分割ルールは 県+市 パターンにのみ適用されます。都+区(東京都新宿区)や 府+市(大阪府大阪市)などの組み合わせは §22 の固有名詞結合ルールにより単一トークンに結合されます。
理由: 県と市は異なる行政レベルであり、境界の分割は検索やジオコーディングにおいて有用です。
18. コピュラ否定の分割
MeCab は「じゃない」を単一の助動詞として扱う場合があります。Suzume は分割します。
入力: じゃない
MeCab: じゃない (1トークン、助動詞)
Suzume: じゃ / ない (助動詞 + 助動詞)理由: コピュラと否定を分割することで、より細かい文法分析が可能になります。
19. テクニカルテキストの結合
技術的な識別子は単一トークンに結合されます。
snake_case識別子:
入力: user_name
Suzume: user_name (1トークン)バージョン番号:
入力: v1.2.3
Suzume: v1.2.3 (1トークン)ブランド+番号:
入力: iPhone15
Suzume: iPhone15 (1トークン)ASCIIドット記法:
入力: console.log
Suzume: console.log (1トークン)理由: これらは技術テキストにおける不可分な識別子です。分割するメリットはありません。
20. 名詞+接尾辞の結合
名詞の後に続く一字の接尾辞は結合されます。
入力: 報告書
Suzume: 報告書 (1トークン)
入力: 成功率
Suzume: 成功率 (1トークン)対象接尾辞: 書、誌、時、率、性
理由: これらの名詞+接尾辞の組み合わせは単一の語彙として機能します。
21. 助詞の結合
特定の複数助詞の連接は結合されます。
か+も → かも:
入力: 行くかもしれない
Suzume: 行く / かも / しれ / ないの+に → のに(過去形の後):
入力: 行ったのに
Suzume: 行っ / た / のにず+に → ずに:
入力: 食べずに
Suzume: 食べ / ずに理由: これらの助詞の組み合わせは複合助詞として機能し、単一単位の方が有用です。
22. 固有名詞+地域の結合
連続する固有名詞と地域接尾辞は結合されます。
入力: 東京都新宿区
Suzume: 東京都新宿区 (1トークン — 地名)理由: 複数の地理的要素からなる地名は、検索や表示において単一のエンティティとして扱うべきです。
品詞分類の違い
MeCab と Suzume では品詞分類の方針が異なり、同じ語に対して異なる品詞を付与するケースがあります。Suzume は 150 以上のルールに基づき、独自の品詞体系で分類します。
形容詞連用形(〜く)
MeCab は形容詞の連用形(〜く形)を副詞として分類します。Suzume はこれらを形容詞として扱います:
入力: よくある質問
MeCab: よく(副詞) / ある / 質問
Suzume: よく(ADJ) / ある / 質問入力: 美しく咲く花
MeCab: 美しく(副詞) / 咲く / 花
Suzume: 美しく(ADJ) / 咲く / 花「く」で終わり、原形が「い」で終わる語、または漢字を含む表層形はすべて形容詞連用形として認識されます。
代名詞の認識
MeCab は多くの代名詞を普通名詞として分類します。Suzume はこれらを代名詞として扱います:
入力: みんなで行こう
MeCab: みんな(名詞) / で / 行こう
Suzume: みんな(PRONOUN) / で / 行こう対象語: あなた、あんた、みんな、みな、皆、某、拙者、我輩、彼女、彼氏、奴、我、わし、いくら(疑問代名詞)
ナ形容詞の認識
MeCab はナ形容詞語幹を名詞(形容動詞語幹)として分類します。Suzume はこれらを形容詞として認識します:
入力: きれいな花
MeCab: きれい(名詞) / な / 花
Suzume: きれい(ADJ) / な / 花対象語: きれい、しずか、おだやか、げんき、しんちょう、ありきたり、無限、滅多
注: 一部の形容動詞語幹は意図的に名詞のまま維持: マジ、不安、不要、乙、不便、公式、可能、容易、積極、健康、傍若無人
じゃ活用の扱い
MeCab は「じゃ」(口語コピュラ)の分類が文脈により変動します。Suzume は一貫して助動詞として扱い、後続の「ない」「なかっ」「な」も統一的に分類します:
入力: そうじゃない
MeCab: そう / じゃ(助詞) / ない(形容詞)
Suzume: そう / じゃ(AUX) / ない(AUX)て形後の補助動詞
て/で の後の補助動詞「いる」を Auxiliary として分類します:
入力: 食べている
MeCab: 食べ / て / いる(動詞)
Suzume: 食べ / て(AUX) / いる(AUX)また、動詞・形容詞の後の て/で は助詞ではなく Auxiliary として分類します。
文脈依存の品詞判定
Suzume は曖昧な語に対して文脈を考慮した品詞判定を行います:
そう: コピュラの前では形容詞(そうだ=伝聞)、Auxiliary の後では Auxiliary(しまいそう=様態)、それ以外では副詞。
でも: 疑問詞の後では助詞(何でも)、文・節の境界では接続詞(でも、...)。
いかが: コピュラの前でなければ副詞、コピュラの前では代名詞(いかがですか)。
大変: な の前では形容詞(大変な)、それ以外では副詞(大変良い)。
スラング・現代語
MeCab の辞書には現代スラングが含まれておらず、不正確なトークン化が発生します:
入力: エモい曲
MeCab: エモ(名詞) / い(不明) / 曲
Suzume: エモい(ADJ) / 曲(NOUN)Suzume は現代的な形容詞パターン(エモい、キモい、ウザい、ダサい、イタい、エロい)を認識し、活用形(エモかった、エモくない等)も正しく処理します。現代的な動詞パターン(バズる、ググる、パクる)にも対応しています。
助詞の誤分類
MeCab は特定の文脈で助詞を名詞として分類します。Suzume は 30 以上の助詞に対して文脈を考慮した品詞判定を行います:
入力: 行くのは大変
MeCab: 行く / の(名詞,非自立) / は / 大変
Suzume: 行く / の(PARTICLE) / は / 大変準体助詞の「の」はここでは名詞ではなく助詞として機能しています。Suzume はこのようなケースで助詞として分類します。
カタカナオノマトペ
MeCab はカタカナのオノマトペ(畳語パターン)を名詞として分類します。Suzume は副詞として認識します:
入力: ワクワクする
MeCab: ワクワク(名詞) / する
Suzume: ワクワク(ADV) / するオノマトペ+っとパターンも結合されます:
入力: どきっとする
MeCab: どき / っと / する
Suzume: どきっと(ADV) / するいいの品詞判定
MeCab は「いい」を動詞(原形: いう)として分類する場合があります。Suzume は後続が動詞でない場合、形容詞として扱います:
入力: いい天気
MeCab: いい(動詞,いう) / 天気
Suzume: いい(ADJ) / 天気で+あるコピュラの処理
Suzume はコピュラ「である」パターンに文脈を考慮した品詞判定を行います:
入力: 重要である
Suzume: 重要 / で(AUX,だ) / ある(VERB)
入力: 問題であった
Suzume: 問題 / で(PARTICLE) / あっ(VERB) / たないの文脈依存判定
Suzume は「ない/なく/なかっ」が存在形容詞として機能する場合、Auxiliary ではなく Adjective として分類します:
入力: 時間がない
Suzume: 時間 / が / ない(ADJ) ← 存在の否定
入力: 食べない
Suzume: 食べ / ない(AUX) ← 否定の助動詞なら+ないの判定
「なら」の後に「ない/なく/なかっ」が続く場合、Suzume は動詞(なる)として分類します:
入力: ならない
Suzume: なら(VERB,なる) / ない(AUX)個別単語の品詞の違い
以下の語は MeCab と Suzume で品詞分類が異なります:
| 語 | MeCab | Suzume | 理由 |
|---|---|---|---|
| なら | 助動詞 | PARTICLE | 条件の助詞 |
| 違い | 名詞 | VERB | 「違う」の名詞形 |
| 推し | 動詞 | NOUN | 現代的な名詞用法 |
| 嫌い | 動詞 | ADJ | ナ形容詞 |
| 大変 | 名詞 | ADV | 副詞用法 |
| 超 | 接頭詞 | NOUN | 現代的な用法 |
| びっくり | 名詞 | ADV | 副詞 |
| なるほど | — | ADV | 副詞 |
| たくさん | — | ADV | 副詞 |
| いずれ | — | ADV | 副詞 |
| お疲れ様 | — | INTJ | 感動詞 |
| よろしく | — | ADV | 副詞 |
| おめでとう | 感動詞 | ADV | 副詞 |
| じゃん | 助動詞 | PARTICLE | 文末助詞 |
| や | 助動詞 | PARTICLE | 関西コピュラ → 助詞 |
| よう | 助動詞 | AUX | 助動詞(様) |
| 時々 | 副詞 | NOUN | 名詞用法 |
| 遥か | 副詞 | ADJ | ナ形容詞 |
| どう | 副詞 | ADJ | ナ形容詞 |
| まじ | 助動詞 | ADJ | 形容詞(※カタカナ「マジ」は NOUN) |
| なんて | 副詞 | PARTICLE | 助詞 |
| っていう | 助詞 | DET | 連体詞 |
| という | 助詞 | DET | 連体詞 |
| まして | 副詞 | CONJ | 接続詞 |
| いわば | 副詞 | CONJ | 接続詞(言わば) |
| 寒し | 形容詞 | NOUN | 古語名詞形 |
| 付け | 接尾 | NOUN | 名詞 |
| 得(するの前) | 名詞 | VERB | 一段動詞 得る |
| むしろ | 副詞 | OTHER | その他 |
| その後 | — | ADV | 副詞 |
| しどろもどろ | — | ADV | 副詞 |
| 無い/無く | 助動詞 | ADJ | 漢字「ない」形容詞 |
制約
Suzume の特徴量ベースアーキテクチャに起因する既知の制限事項です。
結合された複合語の分割不可
Suzume は複合語の境界判定に辞書ではなく文字種特徴量を使用するため、漢字列やカタカナ列として結合された語を個別の単語に分割できません。
入力: 東京都庁前
Suzume: 東京都庁前 (1トークン — 内部境界を判定不可)
MeCab: 東京 / 都庁 / 前 (3トークン — 辞書駆動)回避策: ユーザー辞書を使って、分割が必要な特定の単語を登録できます。
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 の基本品詞(pos)は MeCab よりもシンプルなタグセットです。
| MeCab | Suzume pos |
|---|---|
| 名詞,一般 | NOUN |
| 名詞,固有名詞,地域 | NOUN |
| 名詞,サ変接続 | NOUN |
| 名詞,副詞可能 | NOUN |
| 動詞,自立 | VERB |
| 動詞,非自立 | VERB |
ただし、extendedPos フィールドにより、より細かい品詞サブカテゴリを取得できます:
| MeCab サブカテゴリ | Suzume extendedPos |
|---|---|
| 名詞,固有名詞 | NounProper |
| 名詞,固有名詞,人名 | NounProperGiven / NounProperFamily |
| 名詞,数 | NounNumber |
| 名詞,サ変接続 | NounVerbal |
| 名詞,形式名詞 | NounFormal |
| 動詞,連用形 | VerbRenyokei |
| 動詞,未然形 | VerbMizenkei |
| 形容詞,連用形 | AdjRenyokei |
| 形容動詞語幹 | NaAdjectiveStem |
| 助詞,格助詞 | ParticleCase |
| 助詞,係助詞 | ParticleBinding |
MeCab の詳細なサブカテゴリが必要な場合は、extendedPos を活用することで多くのケースに対応できます。詳細は API リファレンス の ExtendedPOS セクションを参照してください。
使い分けの指針
| ユースケース | 推奨 |
|---|---|
| ブラウザ / クライアントサイドアプリ | Suzume — サーバー不要 |
| 検索インデックス / タグ抽出 | Suzume — 複合語結合がむしろ有利 |
| 学術研究 / コーパス分析 | MeCab — 最大精度と品詞の詳細 |
| リアルタイム UI(入力中の処理) | Suzume — 高速、ネットワーク遅延なし |
| 正確な複合語の分割 | MeCab — 辞書駆動の境界判定 |
| 未知語・現代語の処理 | Suzume — 未登録語にも頑健 |