Help us understand the problem. What is going on with this article?

PythonとMeCabで形態素解析(on Windows)

はじめに

Windowsでの形態素解析環境の構築を手伝うことが多くなってきたので、
一連の流れをまとめて備忘録的に書き留めておくことにしました。

以下、Python上で形態素解析器MeCabを使って
形態素の一覧出力が出来るようになることを目標に話を進めていきます。

導入するもの一覧

Anaconda3 64bit
MeCab 0.996 64bit
mecab-python-windows

Anacondaのインストール

Pythonの統合環境であるAnacondaのインストールを行います。
Anacondaは、以下のURLからダウンロードできます。

https://www.continuum.io/downloads

ダウンロードする際は、3.x の最新バージョンを使用OSのbit数に応じて選択してください。
本記事においては、3.xの64bit版の環境を想定して話を進めていきます。
なお、2.xの古いバージョンを使うことも出来ますが、サポートが限定されているので、
2.xでしか動かないプログラムがある場合など以外はインストールの推奨はしません。

インストールの手順については画面通りに実行しますが、
インストールする場所を決める際は、必ずインストールする場所をメモしておいてください。
また、Pathの確実な追加のため、
インストール途中のオプション"add Path"にはチェックを入れないことを推奨します。

インストールが終了したら、”環境変数の編集”を開き"Path"を選択し、
”編集”の"新規"でメモに書き留めておいたパスを追加、追加したパスを一番上に設定します。

以上の手順が済んだら、確認のためにPowerShell・CommandPromptを起動し、

python --version

と入力しエンターを押してみましょう。
”Python3.x :: Anaconda”のようなログが出力されれば、
Anaconda環境の導入は完了です。

MeCabの導入

Pythonにおいて、形態素解析をする際のモジュールには複数選択肢があります。
JanomeやJumanやMeCab、Esanpyを利用してのkuromojiなどがありますが、
今回は比較的実行速度も精度も高いと言われているMeCabを使って環境を組んでいきます。

MeCabの実行プログラム本体をダウンロードします。
今回は公式の32bit版ではなく、有志がビルドした64bit版を使います。
以下のURLよりダウンロードできます。
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996

上記のページから”mecab-0.996-64.exe”を選択してダウンロードしてください。
インストールする際に辞書の文字コードの指定がある場合はUTF-8を選択してください。

インストールが終わった後、
Anacondaの時と同じく”環境変数の編集”で"Path"を選択し、”編集”の"新規"で

(システムドライブ名):\Program Files\MeCab\bin

などMeCabのインストール先のパスを追加します。
追加出来たらPowerShell・CommandPromptを起動し、

mecab

と入力し、その後に適当に文章を入力してみましょう。
例えば、”形態素解析”と打ってみたら、

形態素解析
        險伜捷,荳€闊ャ,*,*,*,*,*
`       蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,*
態      險伜捷,荳€闊ャ,*,*,*,*,*
f       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
解析    險伜捷,荳€闊ャ,*,*,*,*,*
EOS

こんな感じになるはずです。
文字化けしていますが、
PowerShell・CommandPromptがUTF-8に対応していないだけで、
実際は出力が出来ているので、ここではあまり気にしなくて大丈夫です。

このような出力が出来るようになれば、
とりあえずMeCab実行環境は導入完了です。

mecab-pythonの導入

次に、MeCabをPython上で使えるようにします。
そのためには、Python上のMeCabバインディングを導入する必要があります。
バインディングとは、外部プログラムを利用できるようにするライブラリみたいなものです。
今回はWindows用のmecab-python-windowsというバインディングを導入します。
導入はAnaconda環境に対してなので、
アプリ一覧からAnaconda Promptを起動し、インストール作業を行います。

起動したら、

pip install ipykernel
pip install mecab-python-windows

この二つをそれぞれ入力します。
インストール中に必要パッケージがない、もしくはバージョンが合わないなど、
エラーを吐く場合は、pip installコマンドでそれぞれ順番にインストールしてください。

インストールが完了したら、

(MeCabのインストール先)/bin

にある"libmecab.dll"というファイルを

(Anacondaのインストール先)/Lib/site-packages

にコピー&ペーストしてください。

ここまで出来たらPowerShell・CommandPromptを起動し、

pythonを実行状態("python"を入力してEnter)にして、

import MeCab

と打ってみてください。このコードを打ってエンターを押してみてエラーが出なければ、
pythonバインディングの導入は完了です。

Pythonで形態素解析

それでは実際にPythonで形態素解析してみましょう。

入力文は"すもももももももものうち"で、
コードは以下のような感じに。

import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("すもももももももものうち"))

これをpythonに通してみると

>>> import sys
>>> import MeCab
>>> m = MeCab.Tagger ("-Ochasen")
>>> print(m.parse ("すもももももももものうち"))
すもも  スモモ  すもも  名詞-一般
                  助詞-係助詞
もも    モモ    もも    名詞-一般
                  助詞-係助詞
もも    モモ    もも    名詞-一般
                  助詞-連体化
うち    ウチ    うち    名詞-非自立-副詞可能
EOS

こんな感じで文章の分析が出来るようになります。

ちなみに-Ochasenの部分はmecabの出力モードで
mecabrc: (デフォルト)
-Ochasen: (ChaSen 互換形式)
-Owakati: (分かち書きのみを出力)
-Oyomi: (読みのみを出力)
以上の4つのモードがあります。
色々変えて試してみると良いかもです。

最後に

mecabで出力される結果は一見リストっぽいですが、文字の固まりです。
なので、大規模なデータ処理をするには、
改行記号・タブ記号などを判別して各要素を分割してリスト化する必要があります。
そこらへんは、時間あれば次の記事とかに書こうかなと思います。

追記:リスト化は↓
https://qiita.com/menon/items/2b5ad487a98882289567

menon
自然言語処理とか、情報検索とか、WEBとかなんか色々やってます(-ω-)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした