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

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

More than 1 year has passed since last update.

はじめに

当記事に書いていること

  • 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
image.png

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']
['']

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

参考資料

https://qiita.com/unias_day/items/f041b7c46543f38f78f7

wanko5296
SE. Views are my own. アウトプット先はこちらになりました→https://wannko5296.hatenablog.com/
https://twitter.com/wannko5296/
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
ユーザーは見つかりませんでした