PythonでMeCabを使ってみる(Windows10 64bit)


はじめに

当記事に書いていること

  • MeCabのインストール方法
  • MeCabのサンプルプログラム(Python)

MeCabとは

日本生まれの形態素解析エンジンです。
http://taku910.github.io/mecab/

形態素解析とは

形態素解析とは、言語学においてある言葉が変化・活用しない部分を最小単位の「素」と捉え、その素ごとに言葉を分解してゆく手法のことである。
weblio辞書 - 形態素解析

例:私は生粋の日本人です
→ 私 は 生粋 の 日本人 です

インストールの前提

  • OS: Windows10 Home 64bit
  • Python: Python 3.6.5 (Anacondaによるインストール)
  • 実行環境:Visual Studio Code 1.28.2

MeCabをインストールする

64bit向けのインストーラーを作成した方がいるようなのでありがたく使用させてもらいます。
ダウンロード完了後、インストールを実行します。
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996
>mecab-0.996-64.exe

MeCabを環境変数に設定する

環境変数[Path]にMeCabをインストールしたフォルダのパスを設定します。
例:C:\Program Files\MeCab\bin

設定後、コマンドプロンプトで以下を実行してみてPathが通っているか確認します。文字化けはしていますが、MeCab自体は動作しているようなのでOKです。

C:\Users\nannd>mecab
私の名前はあああです。
私の名  險伜捷,荳€闊ャ,*,*,*,*,*
O       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
はあああ        險伜捷,荳€闊ャ,*,*,*,*,*
ナ       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
キ       險伜捷,荳€闊ャ,*,*,*,*,*
B       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
EOS

PythonにMeCabを取り込む

コマンドプロンプトで以下を実行します。

C:\Users\(username)>pip install mecab-python-windows

続いて、MeCabのインストール先/binにある「libmecab.dll」をコピー&ペーストします。
コピー元例:C:\Program Files\MeCab\bin
コピー先例:C:\ProgramData\Anaconda3\Lib\site-packages

PythonでMeCabを動かしてみる

形態素解析の対象ファイルを作成する

事前準備として形態素解析の処理対象とするテキストを作成しておきます。文章は何でもOKです。

mecab_text.txt
実践ドメイン駆動設計。エリック・エヴァンスが確立した理論を実際の設計に応用する。

Pythonで形態素解析を実行する

サンプルプログラムを動かしてみます。

mecab_test.py
import MeCab
import sys
import re
from collections import Counter

# ファイル読み込み
infile = 'C:\\Users\\nannd\\mecab_text.txt' # ※txtファイルの格納場所は各自変えてください
with open(infile ,encoding="utf-8") as f:
    data = f.read()

parse = MeCab.Tagger().parse(data)
lines = parse.split('\n')
items = (re.split('[\t,]', line) for line in lines)

# 形態素解析の結果を表示
for item in items:
    print(item)
実行結果
['実践', '名詞', 'サ変接続', '*', '*', '*', '*', '実践', 'ジッセン', 'ジッセン']
['ドメイン', '名詞', '一般', '*', '*', '*', '*', 'ドメイン', 'ドメイン', 'ドメイン']
['駆動', '名詞', 'サ変接続', '*', '*', '*', '*', '駆動', 'クドウ', 'クドー']
['設計', '名詞', 'サ変接続', '*', '*', '*', '*', '設計', 'セッケイ', 'セッケイ']
['。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。']
['エリック・エヴァンス', '名詞', '一般', '*', '*', '*', '*', '*']
['が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ']
['確立', '名詞', 'サ変接続', '*', '*', '*', '*', '確立', 'カクリツ', 'カクリツ']
['し', '動詞', '自立', '*', '*', 'サ変・スル', '連用形', 'する', 'シ', 'シ']
['た', '助動詞', '*', '*', '*', '特殊・タ', '基本形', 'た', 'タ', 'タ']
['理論', '名詞', '一般', '*', '*', '*', '*', '理論', 'リロン', 'リロン']
['を', '助詞', '格助詞', '一般', '*', '*', '*', 'を', 'ヲ', 'ヲ']
['実際', '副詞', '助詞類接続', '*', '*', '*', '*', '実際', 'ジッサイ', 'ジッサイ']
['の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ']
['設計', '名詞', 'サ変接続', '*', '*', '*', '*', '設計', 'セッケイ', 'セッケイ']
['に', '助詞', '格助詞', '一般', '*', '*', '*', 'に', 'ニ', 'ニ']
['応用', '名詞', 'サ変接続', '*', '*', '*', '*', '応用', 'オウヨウ', 'オーヨー']
['する', '動詞', '自立', '*', '*', 'サ変・スル', '基本形', 'する', 'スル', 'スル']
['。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。']
['EOS']
['']

それっぽい結果が返ってきました!形態素解析が実行され、その結果が配列に格納されていますね。

参考資料