AI

MeCabとは?インストール・出力の読み方・辞書選びとPython実装を実測で解説

MeCabとは?インストール・出力の読み方・辞書選びとPython実装を実測で解説

MeCabは、日本語の文を単語(形態素)に切り分け、それぞれに品詞や原形を付ける解析エンジンです。検索インデックスの作成、問い合わせログの集計、機械学習の前処理といった場面で、いまも日本語処理の入口を担っています。ただし本体の最終リリースは0.996、日付は2013年2月18日。標準辞書のIPAdicにいたっては2007年8月版のまま止まっています。「どう動かすか」だけでなく「どこまで古さを許容できるか」まで含めた判断が要る、というのが現在の実情です。この記事では導入コマンドから出力フォーマットの読み方、辞書による解析結果の違い、TF-IDFへ渡す実装まで、検証環境(macOS 26.6 / Python 3.9.6 / mecab-python3 1.0.12 / Homebrew mecab 0.996)で実行した結果を添えて説明します。形態素解析という処理そのものの定義は形態素解析の仕組みと具体例にまとめてあるので、用語から確認したい場合はそちらを先にご覧ください。

まとめ

  • Python から使うなら pip install mecab-python3 unidic-lite の2パッケージだけ。コンパイルもOS別の手順も不要です。ただしARM版Windowsにはwheelが配布されていません。
  • 出力の形式は辞書で変わります。IPAdicは表層形+カンマ区切り9列、UniDicは表層形+タブ区切り7列で、互換性はありません。
  • 未知語では素性が7列に減り、原形が * になります。読みと発音は列そのものが消えます。
  • TF-IDFやBM25へ渡すときは、品詞で絞り込んで原形に揃えたトークン列を作る関数を1つ用意すれば足ります。
  • 本体0.996は2013年、IPAdicは2007年、NEologdの更新は2020年9月で停止。新語を扱うならユーザー辞書の運用が前提になります。
  • 速度は8,600字あたり数ミリ秒。バッチ前処理では問題になりませんが、速度は選定の決め手にはなりません。

以下、導入から辞書の運用まで順に見ていきます。

MeCabが担う処理と、2013年で更新が止まった本体の扱い

1行のテキストから取り出せる品詞・原形の情報と係り受け解析との境界

MeCabに文を渡すと、1行につき1形態素が返ります。各行は「表層形」とタブ区切りの「素性(feature)」で構成され、文の終わりには EOS が付きます。素性に入るのは品詞、品詞細分類、語形変化の型、語形変化の形、原形、読み、発音。後段の処理で実際に使うのは、たいてい品詞(名詞だけ残す等)と原形(語形変化を原形に揃える)の2つだけです。

係り受けまでは扱いません。主語と述語の関係を取りたいなら、CaboChaやGiNZAといった係り受け解析器を重ねる構成になります。MeCab単体でできるのは、単語への分割と品詞付与まで。ここが処理範囲の境界です。

最終リリース0.996から13年、それでも使われ続ける仕様上の理由

MeCab公式サイトの新着情報に載っている最新版は0.996で、日付は2013年2月18日。GitHubのtaku910/mecabにはタグもリリースも作られておらず、デフォルトブランチで2020年以降に入ったコミットはlibmecab.html と index.html というドキュメントHTMLの更新だけです(2026年10月時点の最終コミットは2025年2月の Update index.html)。開発は事実上終了しています。

それでも現役なのは、仕様が固まっていて壊れないから。公式サイトが説明するとおり、MeCabはパラメータの推定に条件付き確率場(CRF)を用いています。モデルが確定しているため、同じ辞書と同じ入力からは何年経っても同じ結果が返ります。検索インデックスや過去ログの再集計のように「去年と同じ切り方」を保証したい用途では、更新が続くツールより有利に働く性質です。

逆に、新しい語彙を継続的に拾いたい用途では選ばないでください。商品名やサービス名が毎月増えるECの検索ログ分析、SNSの投稿分析といった領域だと、辞書のメンテナンス工数が本体の安定性のメリットを上回ります。

GPL・LGPL・BSDの3択ライセンスと商用組み込みの判断

公式サイトはMeCabを「GPL、LGPL、またはBSDライセンス」で配布すると明記しています。0.93(2006年7月)でLGPL単独からこの3択に変わった経緯も新着情報に残っています。利用者側が3つのうち1つを選べる形式なので、BSDを選べば社内システムや商用サービスへの組み込みに実質的な制約はかかりません。コピーレフトを避けたい案件でも、BSDを選べば済みます。

ただし本体と辞書のライセンスは別物です。IPAdicは奈良先端科学技術大学院大学(NAIST)が著作権を持つBSD系の条件、NEologdはApache License 2.0で配布されています。商用サービスに載せる前に、辞書側の条件を必ず個別に確認してください。

Pythonはpipのみ、CLIはOS別のインストール手順と導入条件

Python環境で必要な2パッケージと本体・辞書を導入する最短手順

いちばん短い導入手順がこれです。MeCab本体(libmecab)はwheelに同梱されているため、Homebrewやapt、Visual Studioのビルドツールを別途そろえる必要はありません。

python3 -m venv .venv
. .venv/bin/activate
pip install mecab-python3 unidic-lite
python -c "import MeCab; print(MeCab.Tagger().parse('形態素解析を試す'))"

mecab-python3 が持つのはライブラリ本体だけで、辞書は含まれません。mecab-python3のREADMEも、使うには辞書を別に入れる必要があり、最初の1つとして unidic-lite を勧めています。辞書を入れずに MeCab.Tagger() を呼ぶと辞書が見つからないというエラーになります。unidic-lite を入れておくと、引数なしの MeCab.Tagger() がそれを自動で拾う実装です。IPAdic形式の出力が欲しい場合は pip install ipadic を追加してください。最終行の1行で解析結果が表示されれば導入は完了です。

Windowsでもこの手順は変わりません。1.0.12では win_amd64 のwheelがcp38からcp314まで配布されており、インストーラ版のMeCabを別途入れずに済みます。READMEの注記どおり、Windowsのwheelは「Visual C++ 再頒布可能パッケージ」が入っている前提です。Apple Siliconも同様で、macosx_11_0_arm64 のwheelが用意されています。Linuxは manylinux_2_17 のx86_64とaarch64が両方そろっています。

ARM版Windowsでpip installが失敗する原因と回避策

例外がARM版Windows(Snapdragon搭載のCopilot+ PCなど)です。1.0.12の配布物に win_arm64 のwheelは無く、ARM64版Pythonでは pip install がソース配布物からのビルドへ回り、MeCab本体が入っていない環境ではそのまま通りません。配布の有無はwheelだけを取りに行くと確かめられます。ARM64版Python 3.14の手元環境で2026年10月に実行した結果が次です。

> pip download mecab-python3==1.0.12 --only-binary=:all: --no-deps --platform win_arm64 --python-version 3.13 -d wheels
ERROR: Could not find a version that satisfies the requirement mecab-python3==1.0.12 (from versions: none)
ERROR: No matching distribution found for mecab-python3==1.0.12

> pip download mecab-python3==1.0.12 --only-binary=:all: --no-deps --platform win_amd64 --python-version 3.13 -d wheels
Saved ./wheels/mecab_python3-1.0.12-cp313-cp313-win_amd64.whl

同じ条件で win_amd64 を指定するとwheelが取れるので、原因はARM向けの配布が無いことに尽きます。回避策は2つ。x64版のPythonを入れてエミュレーションで動かすか、WSL2のUbuntu上で pip install mecab-python3 unidic-lite を実行するかです。本番環境がLinuxなら、開発機もWSL2に寄せたほうが辞書のパスや文字コードの差を持ち込まずに済みます。

コマンドライン版が必要になる条件とOS別の入れ方・辞書の確認方法

シェルから mecab コマンドを叩きたい、あるいはユーザー辞書をコンパイルしたい場合は、本体をOSのパッケージマネージャで入れます。ユーザー辞書の作成に使う mecab-dict-index はpipのwheelに含まれないため、後述の辞書カスタマイズをやるならこちらが必須です。

# macOS (Homebrew)
brew install mecab mecab-ipadic

# Debian / Ubuntu
sudo apt install mecab libmecab-dev mecab-ipadic-utf8

# 動作確認
mecab --version

Homebrewの場合、mecab --version が返すのは mecab of 0.996 という1行。辞書の場所は /usr/local/etc/mecabrc の dicdir 行で決まり、mecab-ipadicを入れると /usr/local/lib/mecab/dic/ipadic が設定されます。いま有効な辞書の確認には mecab -D を使ってください。

Google ColabとDockerでのpipによる導入と辞書コンパイルの条件

Colabのノートブックなら、セルの先頭で1行流せば準備が終わります。

# Colab のセル
!pip install mecab-python3 unidic-lite

Dockerでも考え方は同じです。slim系のベースイメージにpipで入れるだけで通ります。

# Dockerfile
FROM python:3.13-slim
RUN pip install --no-cache-dir mecab-python3 unidic-lite

ビルドツールの追加は要りません。OS側にMeCabを入れる従来の手順(apt-get install からのシンボリックリンク作成)が不要になる点で、wheelにlibmecabが同梱されている効果がいちばん分かりやすく出る場面です。ユーザー辞書をイメージ内でコンパイルする必要がある場合だけ、apt-get install mecab を足してください。

コマンドラインでの使い方:実行結果と出力フォーマットの切り替え

IPAdicの既定出力の9列とEOSの読み方・該当しない列の扱い

標準入力に文を流すと、IPAdicでは次の形式で返ります。

$ echo "東京都の形態素解析エンジンを使う" | mecab
東京	名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー
都	名詞,接尾,地域,*,*,*,都,ト,ト
の	助詞,連体化,*,*,*,*,の,ノ,ノ
形態素	名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析	名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
エンジン	名詞,一般,*,*,*,*,エンジン,エンジン,エンジン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
使う	動詞,自立,*,*,五段・ワ行促音便,基本形,使う,ツカウ,ツカウ
EOS

タブの左が表層形、右がカンマ区切りの素性です。IPAdicの素性は9列。順に品詞、品詞細分類1、品詞細分類2、品詞細分類3、語形変化の型、語形変化の形、原形、読み、発音を表し、該当しない列は * で埋まります。最終行の EOS は文の終端を示す制御行であって解析結果ではありません。行を1件ずつ処理するときは EOS を必ず除外してください。

-Owakati・-Oyomi・-Fによる用途別の出力の切り替え

分かち書きだけが欲しい、読み仮名だけが欲しいといった用途には、専用の出力モードがあります。必要な列だけを取り出せるので、後段でのパース処理を丸ごと省けます。

$ echo "東京都の形態素解析エンジンを使う" | mecab -Owakati
東京 都 の 形態素 解析 エンジン を 使う

$ echo "東京都の形態素解析エンジンを使う" | mecab -Oyomi
トウキョウトノケイタイソカイセキエンジンヲツカウ

$ echo "東京都で解析した" | mecab -F'%m,%f[0],%f[6]\n' -E'---EOS---\n'
東京,名詞,東京
都,名詞,都
で,助詞,で
解析,名詞,解析
し,動詞,する
た,助動詞,た
---EOS---

-F が各形態素の出力書式、-E が文末の書式を指定します。%m は表層形、%f[n] は素性のn番目(0始まり)を指すので、%f[0] が品詞、%f[6] が原形です。指定子の一覧は公式の出力フォーマット解説にあり、単語生起コストの %c や文字種の %t も同じ書式で取り出せます。-Owakati の出力は各語の後ろに半角スペースが入り、行末にも1つ残る仕様です。そのまま split() へ渡す前提なら支障はありませんが、文字列比較に使うなら strip() が要ります。

PythonからのMeCab呼び出しと未知語で崩れる素性への対処

parseで文字列を受け取る最小コードと辞書の明示・Taggerの再利用

MeCab.Tagger を1つ作り、parse() に文字列を渡すのが基本形です。返り値はコマンドライン版と同じ書式の文字列なので、行ごとに分割してタブで切ります。

import MeCab
import ipadic

tagger = MeCab.Tagger(ipadic.MECAB_ARGS)

for line in tagger.parse("東京都の形態素解析エンジンを使う").splitlines():
    if line == "EOS":
        break
    surface, feature = line.split("\t")
    fields = feature.split(",")
    print(surface, fields[0], fields[6])

Tagger の生成にはコストがかかるので、モジュール内で1つ作って使い回してください。リクエストごとに生成する実装だと、辞書の読み込みが毎回走ります。なお ipadic.MECAB_ARGS は -r と -d を組み立てた文字列です。これを渡さなければ unidic-lite が使われるため、辞書を明示しない実装は環境によって出力が変わります。本番コードでは必ず指定してください。

分かち書きだけを取り出す1行と-Owakatiによる単語リストの取得

形態素の情報が要らず単語の並びだけ欲しい場合は、Tagger の引数に -Owakati を渡します。素性のパースが不要になるぶん、実装は1行で済みます。

wakati = MeCab.Tagger(ipadic.MECAB_ARGS + " -Owakati")
words = wakati.parse("東京都の形態素解析エンジンを使う").split()
# ['東京', '都', 'の', '形態素', '解析', 'エンジン', 'を', '使う']

split() を引数なしで呼べば、行末の余分な空白も同時に落ちます。word2vecの入力を作るだけなら、この形で十分間に合います。

parseToNodeと、未知語で素性が7列に減る落とし穴への対処

トークン単位で扱うなら parseToNode() を使います。ここで踏みやすいのが、辞書に無い語(未知語)では素性の列数そのものが減るという挙動です。IPAdicで「スマートウォッチ」を解析すると、次のようになります。

import MeCab
import ipadic

tagger = MeCab.Tagger(ipadic.MECAB_ARGS)

node = tagger.parseToNode("スマートウォッチを検索した")
while node:
    if node.surface:
        fields = node.feature.split(",")
        print(node.surface, len(fields), node.stat, node.feature)
    node = node.next

# スマートウォッチ 7 1 名詞,一般,*,*,*,*,*
# を 9 0 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
# 検索 9 0 名詞,サ変接続,*,*,*,*,検索,ケンサク,ケンサク
# し 9 0 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
# た 9 0 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ

既知語は9列、未知語は7列しかありません。7列目(インデックス6)の原形は * で、読みと発音にいたっては列そのものが存在しません。未知語に付く品詞は公式の未知語処理の定義どおり文字種ごとに決まり、カタカナの連続なら「名詞,一般」になります。fields[6] で原形を取るコードは例外を出さずに * を返すため、集計結果に * という語が混ざったまま気づかない、という壊れ方をします。fields[7] まで触れば今度は IndexError です。未知語かどうかは node.stat で判別できます(0が既知語、1が未知語)。

fields = node.feature.split(",")
base = fields[6] if len(fields) > 6 and fields[6] != "*" else node.surface

この分岐を入れておけば、未知語では表層形がそのまま原形として扱われます。ただしインデックス6という位置はIPAdic固有です。UniDicでは別の位置になるので、辞書ごとに定数として切り出してください。語彙集計では、この1行の有無で上位語のランキングが変わります。集計まで含めた流れはテキストマイニングの手法とやり方で扱っています。

MeCabの分かち書きをTF-IDF・BM25の検索や分類の入力へ渡す実装

TfidfVectorizerへ品詞フィルタ付きトークナイザを渡すコード例

分かち書きした結果を数値化するところまで進めると、MeCabの出番は「トークナイザ関数」1つに集約されます。scikit-learnのTfidfVectorizerは tokenizer 引数に任意の関数を受け取るので、前章の未知語対策を入れた関数をそのまま渡せます。

import MeCab
import ipadic
from sklearn.feature_extraction.text import TfidfVectorizer

tagger = MeCab.Tagger(ipadic.MECAB_ARGS)
KEEP_POS = {"名詞", "動詞", "形容詞"}
DROP_SUB = {"非自立", "代名詞", "数", "接尾"}

def tokenize(text):
    words = []
    node = tagger.parseToNode(text)
    while node:
        fields = node.feature.split(",")
        if node.surface and fields[0] in KEEP_POS and fields[1] not in DROP_SUB:
            base = fields[6] if len(fields) > 6 and fields[6] != "*" else node.surface
            words.append(base)
        node = node.next
    return words

docs = [
    "問い合わせへの返信が遅い",
    "返信メールが届かない",
    "請求書を再発行してほしい",
]
vec = TfidfVectorizer(tokenizer=tokenize, token_pattern=None, lowercase=False)
X = vec.fit_transform(docs)
print(vec.get_feature_names_out())
print(X.shape)

押さえどころは3つあります。token_pattern=None は、独自の tokenizer を渡したときに既定の正規表現が使われない旨の警告を止めるための指定です。lowercase=False にしておくと、英字の製品名を勝手に小文字へ寄せません。品詞は名詞・動詞・形容詞だけを残し、「こと」「もの」のような非自立語や数詞は落とします。助詞を残したままだと、どの文書にも出る「が」「を」が上位の特徴語に紛れ込む原因です。重み付けの計算式やコサイン類似度での使い方はTF-IDFの仕組みと実装で詳しく説明しています。

問い合わせの自動分類や解約の兆候検知のように、このトークン列をモデルの特徴量として使う段階まで進めるなら、前処理・学習・評価を分けずに設計したほうが手戻りが減ります。辞書の選定から精度評価まで含めて任せたい場合は機械学習モデル開発の範囲として相談できます。

BM25やハイブリッド検索へ渡すときに分割単位を揃える注意点

検索用途でも同じ tokenize 関数が使えますが、条件が1つ増えます。インデックス作成時とクエリ解析時で、辞書と品詞フィルタを完全に一致させることです。文書側をIPAdicで「形態素」の1語、クエリ側をUniDicで「形態」「素」の2語に分けると、語が一致せずスコアが0になります。辞書を切り替えるときは、インデックスを全件作り直す前提で計画してください。

BM25で日本語を扱う際の実装上の落とし穴はBM25の計算式とPython実装の解説に、ベクトル検索と組み合わせる構成はBM25とベクトル検索を統合するハイブリッド検索にまとめています。検索エンジン側で形態素解析を持つ場合は、Elasticsearchのkuromojiが同じ役割を担います。設定方法はElasticsearchの日本語全文検索とkuromojiの辞書追加をご覧ください。

辞書の選び方:IPAdicとUniDicで変わる分割単位と出力列

同一文をIPAdicとUniDicで解析したときの分割単位と出力列の差

辞書は精度の設定値ではなく、出力の仕様そのものを決めます。同じ「東京都の形態素解析エンジンを使う」を両方で解析すると、列の構造も語の切り方も一致しません。

# IPAdic(助詞の行は省略)
東京	名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー
都	名詞,接尾,地域,*,*,*,都,ト,ト
形態素	名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析	名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ

# UniDic (unidic-lite)(助詞の行は省略/末尾の空欄はアクセント等の未使用列)
東京	トーキョー	トウキョウ	トウキョウ	名詞-固有名詞-地名-一般			0
都	ト	ト	都	名詞-普通名詞-一般			1
形態	ケータイ	ケイタイ	形態	名詞-普通名詞-一般			0
素	ソ	ソ	素	接尾辞-名詞的-一般
解析	カイセキ	カイセキ	解析	名詞-普通名詞-サ変可能			0

まず目に付くのが形式の違いです。IPAdicは表層形のあとにカンマ区切りの9列が来るのに対し、UniDicは表層形のあとにタブ区切りで7列(発音・読み・語彙素・品詞・語形変化の型・語形変化の形・アクセント)が並びます。IPAdic前提で書いた surface, feature = line.split("\t") は、UniDicでは要素が8個になり ValueError: too many values to unpack で落ちます。

より厄介なのが parseToNode 経由の場合です。UniDicでも node.feature はカンマ区切りで返りますが、列数は26前後あり、fields[6] が指すのは原形ではなく語彙素読み(「東京」なら トウキョウ)。例外は出ないまま、カタカナの読みを原形として集計し続けることになります。辞書を差し替えるなら、素性のインデックスは必ず総点検してください。

分割単位も違います。IPAdicは「形態素」を1語と見なす一方、UniDicは「形態」と「素」に分けます。UniDicが採用する短単位語という基準では、複合語をより細かく割るためです。検索インデックスの再構築で辞書を入れ替えるとヒットする語が変わるのは、これが理由です。品詞体系も別物で、IPAdicが接尾(地域)とする「都」をUniDicは普通名詞として扱います。品詞名で条件分岐しているコードは、辞書を変えた瞬間に全滅すると考えてください。

IPAdicは2007年版、NEologdは2020年9月で更新停止

更新状況は選定の前提になるので、数字で押さえておきます。

辞書 pipパッケージ 元データの版 素性の形式
IPAdic ipadic 1.0.0 2.7.0-20070801(2007年8月) 表層形+カンマ区切り9列
UniDic unidic-lite 1.0.8 UniDic 2.1.2 表層形+タブ区切り7列
NEologd なし(自前ビルド) 2020年9月10日で更新停止 表層形+カンマ区切り9列

IPAdicは19年間更新されていません。Homebrewのmecab-ipadicも、Ubuntuのmecab-ipadicパッケージも、上流の版番号は同じ2.7.0-20070801です。NEologdは新語に強い拡張辞書として広く使われましたが、mecab-ipadic-NEologdのリポジトリに入った最後の定期更新は2020年9月10日版で、最終コミットも2020年9月14日のまま止まっています(2026年10月時点)。2020年以降に生まれた製品名やサービス名は、どちらの辞書にも入っていないと考えてください。新語対応が要件なら、NEologdを入れて済ませるのではなく、次に説明するユーザー辞書を運用へ組み込む必要があります。

ユーザー辞書で固有名詞を1語にまとめるCSV作成とコンパイルの手順

未知語は文字単位で細かく割れます。「鬼滅の刃」はIPAdicで「鬼」「滅」「の」「刃」の4語になり、作品名としては集計できません。1語にまとめるには、CSVを書いて mecab-dict-index でコンパイルします。CSVの列定義とコストの考え方は公式の単語の追加方法に従っています。

# seed.csv(表層形,左文脈ID,右文脈ID,コスト,品詞,細分類1..3,語形変化の型,語形変化の形,原形,読み,発音)
# 文脈IDを空欄にすると自動推定される
スマートウォッチ,,,1000,名詞,一般,*,*,*,*,スマートウォッチ,スマートウォッチ,スマートウォッチ
鬼滅の刃,,,1000,名詞,固有名詞,一般,*,*,*,鬼滅の刃,キメツノヤイバ,キメツノヤイバ
$ /usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index \
    -d /usr/local/lib/mecab/dic/ipadic -u user.dic -f utf-8 -t utf-8 seed.csv
reading seed.csv ... 2
emitting double-array: 100% |###########################################|
done!

$ echo "鬼滅の刃とスマートウォッチを検索した" | mecab -u user.dic
鬼滅の刃	名詞,固有名詞,一般,*,*,*,鬼滅の刃,キメツノヤイバ,キメツノヤイバ
と	助詞,並立助詞,*,*,*,*,と,ト,ト
スマートウォッチ	名詞,一般,*,*,*,*,スマートウォッチ,スマートウォッチ,スマートウォッチ
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
検索	名詞,サ変接続,*,*,*,*,検索,ケンサク,ケンサク
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS

コンパイルは一瞬で終わり、-u で指定するだけで反映されます。先ほど * しか返さなかった「スマートウォッチ」も、原形と読みが埋まった状態に変わりました。コストの値は小さいほど優先されます。既存の語より確実に優先させたい固有名詞は、まず1000前後で登録し、意図通りに切れなければ数百まで下げて調整してください。Pythonから使うなら MeCab.Tagger(ipadic.MECAB_ARGS + ' -u user.dic') のように引数へ足します。

MeCabを使わないほうがよい場面と新語対応・Python実装の移行先

速度で困る場面はまずありません。43字の同じ文を200回つないだ8,600字のテキストを50回解析したところ、処理時間の中央値はIPAdicで6.8ミリ秒、unidic-liteで18.5ミリ秒でした(macOS 26.6 / Python 3.9.6)。毎秒にすると数十万字から100万字台。数十万件のログをバッチで回す程度なら、MeCabがボトルネックになることはありません。避けるべき理由は速度以外にあります。

新語が継続的に増える対象での移行先=Sudachiと辞書の運用コスト

辞書更新が止まっている以上、新語はユーザー辞書で誰かが追加し続けることになります。SudachiのPython辞書 SudachiDict-core は20260723版が2026年9月に公開され、解析器もsudachi.rsのv0.7.0(同じく2026年9月、PythonバインディングのSudachiPy 0.7.0はPython 3.10以上が対象)まで更新が続いています。語彙の追加を自前で抱え込まずに済む構成です。ECの商品名やSNSの流行語のように語彙が毎月増える対象なら、辞書の運用コストまで含めた総額はSudachiのほうが低く収まります。分割の粒度をA・B・Cの3モードから選べる点も、検索用と分析用で使い分けたい場面では効いてきます。

新規のPython実装でfugashiを選ぶ条件と属性による素性の参照

mecab-python3 は本体のSWIGラッパを維持する立場のため、APIは0.996当時のままです。同じメンテナ(Paul O’Leary McCann氏)が開発しているfugashi(1.5.2、2025年10月リリース、Python 3.14対応を追加)はCythonで書き直されており、word.surface や word.feature.pos1 のように属性でトークンを扱えます。素性を自前でsplitする必要が無くなるぶん、前述のインデックス問題を踏みにくくなる点が実務では大きい違いです。

解析エンジン同士の精度・辞書・向く用途の比較はMeCab・Sudachi・JUMAN++の用途別の選び方にまとめています。自前で解析器を持たずクラウドの言語処理サービスへ寄せる選択肢を検討するなら自然言語処理APIの比較と組み込み手順、分かち書きではなく意味の近さで文書を扱いたい場合はPythonでのembedding生成が出発点です。形態素解析がNLP全体のどこに位置するかは自然言語処理(NLP)の仕組みとLLMとの関係で整理しています。

よくある質問

MeCabの読み方、インストール時のエラー、Windows・Rでの使い方、JUMAN++との選び分けについて、検索の多い5つの質問に答えます。

MeCabの読み方は何ですか?

「めかぶ」と読みます。海藻の和布蕪(めかぶ)が名前の由来で、開発者の工藤拓氏が好きな食べ物から取ったものです。英語表記の正式な綴りはMeCabで、MとCが大文字になります。検索では表記ゆれや打鍵ミスによる別の綴りでたどり着く場合もありますが、指しているソフトウェアはいずれも同じです。

MeCabのインストールで辞書が見つからないというエラーが出るのはなぜですか?

mecab-python3 にライブラリ本体しか含まれておらず、辞書が別パッケージだからです。pip install unidic-lite または pip install ipadic を追加してください。コマンドライン版で同じエラーが出るなら、まず mecab -D を実行します。現在有効な辞書のパス・文字コード・サイズが表示されるので、mecabrc の dicdir が実在するディレクトリを指しているかをここで突き合わせられます。

MeCabをWindowsで使うにはインストーラが必要ですか?

x64版のPythonから使うだけなら不要です。mecab-python3 1.0.12は win_amd64 のwheelを配布しているため、pip install mecab-python3 unidic-lite だけで動きます。ARM版Windowsではwheelが無いので、x64版PythonかWSL2を使ってください。コマンドライン版が要る場合は公式のインストーラ(mecab-0.996.exe、IPA辞書同梱)を使いますが、途中で辞書の文字コードをSHIFT-JIS・UTF-8・UTF-16・EUC-JPの4つから選ばされ、初期選択はSHIFT-JISです。UTF-8のテキストを扱うならここでUTF-8を選んでください。

MeCabをRから使うことはできますか?

RMeCabパッケージを使えば可能です。RMeCabはCRANに登録されておらず作者の独自リポジトリで配布されているため、install.packages("RMeCab", repos = "https://rmecab.jp/R", type = "source") のように配布元を指定します。内部で呼ぶのは本体のlibmecabなので、先にOS側へMeCabと辞書を入れておくことが前提。頻度表を直接返す RMeCabFreq() や、形態素のリストを返す RMeCabC() が用意されている分、テキストマイニング用途ではPython版より手数が少なく済みます。

MeCabとJUMANはどちらを選べばよいですか?

目的で分かれます。分割の速さと実装例の多さを重視するならMeCab、文脈を踏まえた精度を重視するならJUMAN++です。JUMAN++は公式リポジトリの説明どおり再帰型ニューラルネット言語モデル(RNNLM)で単語列のもっともらしさを評価するため、精度は高い一方で処理は重くなります。リリースは2023年10月のv2.0.0-rc4が最新で正式版はまだ出ていませんが、コミットは2026年10月時点でも継続中です。辞書や向く用途まで含めた比較は形態素解析ツールの比較記事で表にまとめています。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.23 テックブログ Renta!不正アクセスでサービス停止:再開未定の現状と運営側の停止判断・証拠保全・段階的再開
  2. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期
  3. 2026.10.24 テックブログ カプコン不正アクセス:CAPCOM ID 1,177万件漏えいと196件の乗っ取りへの対処
  4. 2026.10.24 テックブログ ブラストメール不正アクセス:配信先288件の漏えいと利用企業の報告・通知の手順
  5. 2026.10.17 コラム カスハラ奨励金とは?東京都40万円の第2回要件と11月6日までに間に合う取組

RELATED POSTS 関連記事

目次