はじめに|自然言語処理に興味がある人へ
こんにちは!
突然ですが、こんなことを思ったことはありませんか?
- 「人の言葉をプログラムで分析できたら面白そう!」
- 「チャットボットってどうやって日本語を理解してるの?」
- 「AIが文章を読んだり書いたりするって、どういう仕組みなの?」
実は、こういった“人の言葉(自然言語)をコンピューターで扱う技術”のことを、「自然言語処理(NLP)」といいます。
そしてその第一歩になるのが、**「形態素解析(けいたいそかいせき)」**という作業なんです。
形態素解析は、簡単に言うと「文章を単語ごとにバラバラに分けて、それぞれの意味や種類を調べること」。
たとえば、「私はペンを持っています」という文を、「私」「は」「ペン」「を」…のように分けて、それぞれが名詞なのか動詞なのか、という情報まで取り出すことができます。
この技術を使えば、
- テキストからキーワードを取り出したり
- 検索エンジンで使われたり
- AIチャットボットが言葉を理解する手助けになったり
と、いろんな場面で活用できるようになります。
この記事では、Pythonで人気の形態素解析ツール「MeCab(メカブ)」を使って、
実際に形態素解析を試してみる方法をやさしく解説していきます。
「パソコンが日本語をどうやって理解してるの?」
そんな疑問を持っている人に、ピッタリの内容です!
「自然言語処理」や「AI」に少しでも興味がある方は、ぜひこの機会にMeCabを触ってみましょう!
Pythonの基本がわかる方なら、誰でも試せる内容になっているので安心してくださいね♪
1. 形態素解析とは?
まずは、形態素解析(けいたいそかいせき)って何なのか、カンタンに説明しますね。
■ 文章を“単語のかたまり”に分けるしくみ
形態素解析とは、文章を「意味のある単位=単語」に分ける処理のことです。
たとえば、この文章:
昨日の夜ごはんはカレーでした
これを形態素解析すると、こうなります。
昨日|の|夜ごはん|は|カレー|でした
1つの文が、意味のある小さなパーツに分かれていますね!
さらに、それぞれの単語が「名詞」「助詞」「動詞」など、どんな役割を持っているか(品詞)も分かります。
- 「昨日」→ 名詞(時間)
- 「は」→ 助詞
- 「でした」→ 助動詞(「です」の過去形)
…といった具合です。
■ なぜ必要なの?
日本語って、単語と単語の間にスペースがないんです。
たとえば英語では「I love curry」のようにスペースで区切られていますが、
日本語では「アイラブカレー」って全部くっついてる感じ。
そのままじゃプログラムには意味が伝わりません。
だからまずは、「どこで区切ればいいのか」「どの単語がどんな意味を持ってるのか」を教えてあげる必要があるんですね。
■ 形態素解析を使うとできること
形態素解析ができると、こんなことができるようになります:
- 名詞だけを抜き出してキーワードリストを作る
- ユーザーが入力した文章の意味を分析して検索精度を上げる
- AIチャットボットが文を理解する手助けになる

つまり、形態素解析は自然言語処理の“入り口”!
テキストを扱うあらゆるAI技術や文章解析の基本となる、大事なステップなんです。
2. MeCabのインストールと環境構築(OS別)
ここからは、実際にPythonでMeCabを使うための準備をしていきます!
「難しそう…」と思った方も大丈夫!
手順どおりに進めれば、誰でもMeCabを使えるようになりますよ!
✅ ステップ1:Pythonのバージョンを確認しよう
まずは、お使いのPythonのバージョンを確認します。
MeCabをPythonで使うには、「Python 3.6以上」が必要です。
python --version
とターミナル(またはコマンドプロンプト)に打って、バージョンが「3.6」以上ならOK!
✅ ステップ2:pip(パッケージ管理ツール)のバージョンもチェック
つづいて、Pythonのライブラリをインストールするために必要な「pip」のバージョンもチェックします。
pip --version
もし古かったら、以下のコマンドで最新版にアップデートしましょう。
pip install --upgrade pip
💻【Windowsユーザー向け】インストール手順
Windowsでは、MeCabの本体を別でインストールする必要があります。
① Microsoft Visual C++のインストール(重要)
MeCabはC++で作られているため、「Visual C++ ランタイム」が必要です。
以下のリンクからダウンロードして、64bit版をインストールしてください。
🔗 Microsoft公式ページ(Visual C++ 再頒布可能パッケージ)
② MeCab本体のインストール
- 以下のGitHubページから、64bit対応のMeCabインストーラーをダウンロードします。
(※「mecab-setup.exe」のようなファイル)
🔗 Unofficial Windows Installer for MeCab
- インストーラーを実行し、**文字コードは「UTF-8」**を選んでインストール。
- インストール先のフォルダー(例:
C:\Program Files\MeCab)をメモしておきましょう。
③ 環境変数を設定しよう(少しだけPCの設定)
MeCabをPythonから使えるようにするには、「環境変数」にMeCabのパスを追加する必要があります。
- スタートメニューで「環境変数」と検索 → 「システム環境変数の編集」をクリック
- 「Path」を選んで編集
- MeCabのインストール先(例:
C:\Program Files\MeCab\bin)を追加!
これで、MeCabのコマンドがどこでも使えるようになります。
🍎【Macユーザー向け】インストール手順
Macは比較的カンタンです。Homebrewが使えれば、以下のコマンドで一発!
brew install mecab
まだHomebrewを使ったことがない方は、Homebrew公式サイトを見ながらインストールしてください。
✅ ステップ3:Python用のMeCabライブラリをインストール
PythonからMeCabを使うには、「mecab-python3」というライブラリをインストールします。
pip install mecab-python3
✅ ステップ4:辞書をインストールしよう(おすすめ:Unidic-lite)
MeCabは辞書がないと動きません。
デフォルトでIPA辞書が使われますが、初心者には軽量なUnidic-liteがおすすめです。
pip install unidic-lite
これで準備完了!🎉
✅ ここまでのまとめ
| ステップ | 内容 | 補足 |
|---|---|---|
| 1 | Pythonのバージョン確認 | 3.6以上が必要 |
| 2 | pipの更新 | 最新にしよう |
| 3 | MeCab本体のインストール | Windowsのみ必要 |
| 4 | 環境変数の設定 | Windowsのみ必要 |
| 5 | mecab-python3をインストール | Pythonで使えるように |
| 6 | Unidic-liteのインストール | 軽くて手軽な辞書 |
3. PythonからMeCabを使う方法
準備が整ったら、いよいよPythonのコードでMeCabを使ってみましょう!
ここでは、基本的な形態素解析と、よく使う「分かち書き」について紹介します。
✅ MeCabの基本:Taggerオブジェクトを作る
まずは、MeCabをインポートして、解析のための“Tagger(タグ付け)”というオブジェクトを作ります。
import MeCab
tagger = MeCab.Tagger() # デフォルトの設定
これで、形態素解析の準備OKです!
✅ 文を解析してみよう
次に、parse() メソッドを使って、文章を解析してみましょう。
text = "昨日の夜ごはんはカレーでした"
result = tagger.parse(text)
print(result)
🔍 出力される内容(一部例):
昨日 名詞,副詞可能,*,*,*,*,昨日,キノウ,キノー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
夜ごはん 名詞,一般,*,*,*,*,夜ごはん,ヨルゴハン,ヨルゴハン
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー
でした 助動詞,*,*,*,特殊・デス,過去形,です,デシタ,デシタ
EOS
1行ずつが「単語」とその情報(品詞など)に分かれて出力されています!
✅ 分かち書きで“単語だけ”を取り出す
分かち書きとは、単語ごとに空白を入れて出力する方法です。
これは機械学習などでもよく使われます!
tagger_wakati = MeCab.Tagger("-Owakati")
wakati_result = tagger_wakati.parse(text)
print(wakati_result)
出力例:
昨日 の 夜ごはん は カレー でした
✅ リスト形式にしたい場合
split() を使えば、単語をリストに変換できます!
word_list = wakati_result.split()
print(word_list)
出力:
['昨日', 'の', '夜ごはん', 'は', 'カレー', 'でした']
こうしてリスト形式にすれば、あとで「名詞だけを取り出す」などの加工がしやすくなります!
🔚 このセクションのまとめ
| 内容 | 方法 |
|---|---|
| 通常の解析 | tagger.parse(テキスト) |
| 分かち書き | MeCab.Tagger('-Owakati') |
| 単語リスト取得 | .split() を使う |

次は「名詞だけを取り出す方法」など、もう少し実践的な解析に進みます!
4. 特定の品詞だけを取り出す方法
ここでは、文章の中から「名詞だけ」や「動詞だけ」など、特定の品詞を取り出す方法を紹介します!
キーワード抽出やタグ生成などでとても役立つテクニックです!
✅ Node(ノード)を使う方法
MeCabでは、parseToNode() というメソッドを使うと、文章を単語ごとの「ノード(Node)」として扱えます。
各Nodeには、
surface(表面の文字列)feature(品詞などの情報)
といった属性があるので、細かく処理できます。
🔍 例:名詞だけを抽出するコード
import MeCab
text = "昨日の夜ごはんはカレーでした"
tagger = MeCab.Tagger()
node = tagger.parseToNode(text)
while node:
word = node.surface # 単語そのもの
features = node.feature.split(',') # 品詞などの情報がカンマ区切りで入っている
part_of_speech = features[0] # 最初の要素が「品詞」
if part_of_speech == "名詞":
print(word)
node = node.next # 次の単語に進む
出力:
昨日
夜ごはん
カレー
このように、品詞が「名詞」の単語だけが取り出せました!
✅ よく使う品詞一覧
| 品詞 | 説明 |
|---|---|
| 名詞 | モノやコト(例:カレー、昨日) |
| 動詞 | 動作や状態(例:する、食べる) |
| 形容詞 | 性質や状態(例:大きい、すごい) |
| 助詞 | 文のつなぎや補助(例:は、が、を) |
| 記号 | 句読点や絵文字など(例:!、😊) |
✅ 応用:名詞のリストを作ってまとめて処理
nouns = []
node = tagger.parseToNode(text)
while node:
word = node.surface
features = node.feature.split(',')
if features[0] == "名詞":
nouns.append(word)
node = node.next
print(nouns)
出力:
['昨日', '夜ごはん', 'カレー']
このように、必要な品詞だけを抽出してリスト化しておけば、あとでCSVに保存したり、キーワード分析に使ったりと、いろんな活用ができますよ!
🔚 このセクションのまとめ
| やりたいこと | 方法 |
|---|---|
| 品詞ごとに処理したい | parseToNode() を使う |
| 名詞だけを取り出す | features[0] == "名詞" で判定 |
| 単語の表記を取得 | node.surface を使う |

次は、MeCabの辞書に「自分で作った単語」を追加する方法をご紹介します!
5. MeCabの辞書に単語を追加する方法
たとえば「ドラゴンボール」のような**複合語(作品名・固有名詞など)**が、
うまく一つの単語として認識されないときに使えるのが、自作辞書の追加です。
MeCabでは、辞書に好きな単語を追加して、きちんと一語として扱わせることができます!
✅ どんなときに辞書を追加する?
- 固有名詞(アニメ名・商品名など)が途中で分かれてしまう
- 自分だけの専門用語を一語で扱いたい
- より精度の高い解析をしたい
🔧 手順1:CSVファイルを作成しよう
まずは、追加したい単語の情報をCSV形式で記述します。
▶ 例:「ドラゴンボール」を登録したい場合
ファイル名:dict.csv
内容(1行):
ドラゴンボール,,,,,名詞,固有名詞,一般,*,*,*,ドラゴンボール,ドラゴンボール,ドラゴンボール
これで「ドラゴンボール」という単語が、**固有名詞(名詞)**として認識されるようになります!
🔍 手順2:辞書の場所を確認
✅ Unidic-liteの場所を調べる
pip show unidic-lite
この中の Location: を確認して、
そのフォルダの中にある unidic_lite のパスをメモしておきましょう。
💡 手順3:辞書ファイル(.dic)を作成する
次に、ターミナルまたはコマンドプロンプトで以下を実行します。
【Windowsの場合】
mecab-dict-index -f utf8 -t utf8 -d <辞書フォルダのパス> -u db.dic dict.csv
【Macの場合】
/usr/local/bin/mecab-dict-index -f utf8 -t utf8 -d <辞書フォルダのパス> -u db.dic dict.csv
これで db.dic という辞書ファイルが新しく作成されます。
🧪 手順4:Pythonで新しい辞書を使ってみよう
import MeCab
# 作成した辞書ファイルへのパス
new_dict_path = "C:\\path\\to\\your\\unidic_lite\\db.dic"
tagger = MeCab.Tagger(f"-Owakati -u {new_dict_path}")
text = "僕はドラゴンボールが大好きです"
result = tagger.parse(text).split()
print(result)
▶ 出力例:
['僕', 'は', 'ドラゴンボール', 'が', '大好き', 'です']
辞書を使わなかった場合はこうなる可能性があります:
['僕', 'は', 'ドラゴン', 'ボール', 'が', '大好き', 'です']
MeCabが「ドラゴン」と「ボール」に分けてしまうのを防げます!
🔚 このセクションのまとめ
| 手順 | 内容 |
|---|---|
| 1 | CSVで単語を定義(例:「ドラゴンボール」) |
| 2 | Unidic-liteの辞書フォルダを調べる |
| 3 | mecab-dict-index で新しい辞書を作成 |
| 4 | -u オプションで新辞書をMeCabに読み込ませる |
6. まとめ|MeCabで自然言語処理を始めよう
おつかれさまでした!
ここまでで、PythonとMeCabを使った形態素解析の基本がしっかり理解できましたね。
✅ 今回学んだことをふりかえってみましょう:
- 形態素解析とは?
文章を単語ごとに分けて、それぞれの品詞や意味を調べる処理です。 - MeCabを使うメリット
日本語の文章を正確かつスピーディーに解析できる、定番の解析ツールです。 - Pythonでの使い方
mecab-python3ライブラリと、分かち書きや品詞判定の基本的なコードを紹介しました。 - 名詞だけを取り出す方法
parseToNode()とnode.featureを使って、特定の品詞だけを抽出する方法を解説しました。 - 独自辞書の追加方法
「ドラゴンボール」のような複合語も、自作辞書でしっかり認識させることができましたね!
🎯 MeCabを使えば、あなたの自然言語処理の世界が広がる!
MeCabを使えるようになると、検索、分類、要約、AIチャットボット、テキストマイニングなど、
さまざまな自然言語処理の分野に一歩踏み出すことができます。
Pythonの力と合わせれば、あなたも日本語を理解するアプリを作れるようになりますよ!

次は、もっと高度な解析ができるSudachiPyやJanomeなどにも挑戦してみると、より深くNLPの世界が楽しめます♪
あわせて読みたい|自然言語処理やテキスト操作の関連記事
MeCabとあわせて読んでおくと理解が深まる、おすすめ記事を紹介します!
- 🔗 Python正規表現の使い方入門|reモジュールで文字列を簡単マッチング!
┗ 単語の抽出やパターンマッチングに便利な「正規表現」をやさしく解説! - 🔗 Pythonの文字列メソッド一覧|初心者向けにわかりやすく解説【replace・join・stripなど】
┗ テキスト前処理にも役立つ、基本的な文字列操作を網羅! - 🔗 【Python入門】jsonモジュールの使い方|JSONの読み書きと変換をやさしく解説!
┗ MeCabで処理したデータをJSON形式で保存したいときにおすすめ!
よくある質問(Q&A)
- QMeCabがうまく動作しません。どこを確認すればいい?
- A
Pythonのバージョン(3.6以上)、pipの最新版、MeCab本体のインストール、環境変数の設定(Windows)を順に確認してみてください。特にWindows環境では、Visual C++が入っていないと動きません。
- QMeCabの解析結果が思った通りに分割されません。
- A
デフォルトの辞書では新しい言葉や固有名詞を正確に扱えない場合があります。自作辞書を追加して、認識させたい単語を登録してみてください。
- QSudachiやJanomeとMeCabは何が違うの?
- A
MeCab:軽量&高速。カスタマイズ性が高く、業務利用でもよく使われます。
Janome:Pure Python製で導入が簡単。環境依存が少ない。
Sudachi:表記揺れに強く、最新の辞書(SudachiDict)を搭載。
それぞれに特徴があるので、目的に応じて使い分けると◎。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。