MecabをインストールしてPythonで使う【Windows】

MecabをインストールしてPythonで使う【Windows】 プログラミング

この記事では、Windows上のPythonでMecabを利用する方法を説明しています。
普段利用しているWindowsで、気軽に形態素解析をしたい人向けの記事です。

本記事の内容

  • MecabをインストールしてPythonで使うための環境
  • MecabのWindowsへのインストール
  • PythonからMecabを利用する
  • Pythonで利用するMecabの辞書を変更する
  • Pythonで辞書指定によりMecabを利用する
  • MecabをインストールしてPythonで使う【Windows】のまとめ

それでは、まずは今回利用する環境についてから解説します。

MecabをインストールしてPythonで使うための環境

  • Windows 10 Home (バージョン1909)※以下の説明は64bit前提
  • Python 3.7.3
  • Mecab 0.996.2
  • mecab-0.996.2(Pyhtonライブラリ)
  • Ubuntu 20.04 LTS

pipコマンドが使えることは前提です。

MecabのWindowsへのインストール

ダウンロード

下記URLへアクセスします。
https://github.com/ikegami-yukino/mecab/releases

mecab-64-0.996.2.exe

mecab-64-0.996.2.exeをクリックして、ダウンロードを開始します。
ファイルは、適当な場所に保存してください。

インストール

ダウンロードしたexeを起動します。

mecab-64-0.996.2.exeの言語選択

「OK」をクリック。

mecab-64-0.996.2.exeの文字コード選択

「UTF-8」を選択して、「次へ」をクリック。

mecab-64-0.996.2.exeの同意画面

「同意する」にチェックを入れて、「次へ」をクリックします。

mecab-64-0.996.2.exeのインストール先選択

初期では「C:\Program Files\MeCab」が設定されています。
変更する場合は、存在するディレクトリに変更します。
そして、「次へ」をクリック。

mecab-64-0.996.2.exeのグループ作成画面

「プログラムグループを作成しない」にチェックいれます。
Pythonから利用する上では、グループは必要ありません。
「次へ」をクリック。

mecab-64-0.996.2.exeのインストール最終確認

インストール先を確認します。
問題なければ、「インストール」をクリック。

mecab-64-0.996.2.exeインストール中

インストールが開始。
その途中で次のダイアログが出る場合があります。

mecab-64-0.996.2.exe利用ユーザの確認

「はい」をクリックします。
常に管理者権限ありのユーザがMecabを動かすとも限りませんので。
例えば、バッチ専用のユーザで動かす場合など。

mecab-64-0.996.2.exeの辞書作成

「OK」をクリックすると、コマンドプロンプトが起動します。
そして、ガーッと処理をして、コマンドプロンプトが自動的に閉じられます。
最後に次が表示。

mecab-64-0.996.2.exeのインストール完了

「完了」をクリックすれば、Mecabのインストールが完了です。
しかし、まだンストールだけが完了しただけです。

Pythonから利用できるようにパスの設定が必要となります。
次でパスの設定を行います。

パスの設定

環境変数にMeCabをインストールしたフォルダのパスを設定します。
今回は、「C:\soft\MeCab」にインストールしました。
そのため、設定するパスは「C:\soft\MeCab\bin¥」となります。

ここでちょっとした便利なノウハウを説明します。
環境変数の設定が少しだけ楽になります。

以下に「sysdm.cpl」と入力して、Enterを押してください。

ここに入力して検索

以下の画面が立ち上がります。

システムのプロパティ

「詳細設定」のタブを開きます。

システムのプロパティ:詳細設定

ここまでかなり早く到達できました。
そこそこ使えるノウハウだと個人的には重宝しています。

あとは、もう説明は省きます。
システム環境変数の「Path」にMecabをインストールしたフォルダにある「bin」を指定します。

動作確認

パスの設定が終わったら、動作確認です。
コマンドプロンプトを起動します。

次のように「mecab -v」を入力します。
コマンドを発行する場所は、どこでもいいです。

C:\>mecab -v
mecab of 0.996

インストールしたバージョンが表示されれば、OKです。
一応、Mecabの形態素解析の機能も確認しておきましょう。

コマンドプロンプトで以下のようにコマンド実行します。

C:\>echo 'DOS窓では、基本的には日本語がアウトです' | mecab
'       蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,*
DOS     蜷崎ゥ・荳闊ャ,*,*,*,*,*
窓      險伜捷,荳闊ャ,*,*,*,*,*
ナ       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
ヘ       險伜捷,荳闊ャ,*,*,*,*,*
A       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
基本    險伜捷,荳闊ャ,*,*,*,*,*
I       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
には日本語が    險伜捷,荳闊ャ,*,*,*,*,*
A       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
        險伜捷,荳闊ャ,*,*,*,*,*
E       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
        險伜捷,荳闊ャ,*,*,*,*,*
g       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
        險伜捷,荳闊ャ,*,*,*,*,*
ナ       蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,*
キ       險伜捷,荳闊ャ,*,*,*,*,*
'       蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,*
        險伜捷,荳闊ャ,*,*,*,*,*
@       蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,*
EOS

文字化けは、コマンドプロンプトがUTF-8に対応していないからです。
Mecab自体は、UTF-8で動くように選択してインストールしました。
とにかく、機能的には問題ないようです。

PythonからMecabを利用する

PythonとMecabを連携させる

PythonとMecabを連携させる仲介役が必要です。
その仲介役を以下のコマンドでインストールします。

pip install mecab

次のように表示されれば、インストール成功です。

Installing collected packages: mecab
Successfully installed mecab-0.996.2

PythonでMecabを動かす

以下のコードで動きを確認します。

import MeCab

mecab = MeCab.Tagger()
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))

実行結果に、以下のようなモノが表示されれば連携は成功です。
つまり、PythonからMecabを利用できているということです。

DOS     名詞,固有名詞,組織,*,*,*,*
窓       名詞,一般,*,*,*,*,窓,マド,マド
で       助詞,格助詞,一般,*,*,*,で,デ,デ
は       助詞,係助詞,*,*,*,*,は,ハ,ワ
、       記号,読点,*,*,*,*,、,、,、
基本      名詞,一般,*,*,*,*,基本,キホン,キホン
的       名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
に       助詞,格助詞,一般,*,*,*,に,ニ,ニ
は       助詞,係助詞,*,*,*,*,は,ハ,ワ
日本語     名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
が       助詞,格助詞,一般,*,*,*,が,ガ,ガ
アウト     名詞,一般,*,*,*,*,アウト,アウト,アウト
です      助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS

これでPythonからMecabを利用することができました。
ここで終了と言ってもよいのですが、次で辞書の変更について説明します。

Pythonで利用するMecabの辞書を変更する

Mecabは、辞書をもとに形態素解析を行っています。
そして、その精度は辞書に依存すると行っても過言ではありません。

現状では、デフォルトの辞書を用いています。
このデフォルトの辞書をもっと良い辞書に変更します。
良い辞書とは、形態素解析の精度が上がる辞書と言えますね。

ただ、Windowsでは少々手間のかかる作業となります。
そもそも、Mecab自体がWindowsでの利用を想定していません。

だから、手間がかかるということですね。
必要な作業は以下。

  • Ubuntuのインストール
  • mecab-ipadic-NEologd辞書のダウンロード
  • mecab-ipadic-NEologd辞書ファイルのコンパイル

下記でそれぞれを説明してきます。

Ubuntuのインストール

WindowsにUbuntuをインストールします。
そのインストールしたUbuntu上で作業をしようということです。

以下のページ通りに行えば、インストール可能です。
https://qiita.com/whim0321/items/093fd3bb2dd287a72fba

mecab-ipadic-NEologd辞書のダウンロード

ダウンロードする場所は、Ubunts側で適当に決めてください。
今回は、/opt/mecabとします。

以下のコマンドで移動可能です。

cd /opt/mecab

ここでダウンロードを開始します。

sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

ダウンロードに少し時間がかかります。
ダウンロードが完了したら、/opt/mecabに「mecab-ipadic-neologd」ディレクトリが作成されています。

mecab-ipadic-NEologd辞書ファイルのコンパイル

Mecabで利用できるように辞書を作成します。
ダウンロードしたのは、辞書を作成するための情報です。

Ubuntuでの作業です。
先ほどダウンロードしたディレクトリに移動します。

cd mecab-ipadic-neologd

mecabのインストール

コンパイルを行う前にやることがあります。
mecabのインストールです。
あと、関連するモノもインストールします。

sudo aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file

「Mecabはインストール済みだよ!!」という声があるでしょう。
でも、それはWindows上の話です。

コンパイルで必要になるのは、Ubuntu上のMecabなのです。
ここは割り切ってインストールしましょう。
インストール後は、以下のコマンド確認です。

mecab -v

辞書ファイルのコンパイル

次のコマンドを実行。

sudo ./bin/install-mecab-ipadic-neologd -n

インストールが開始されて、ズラズラとテキストが流れます。
しばらくすると、以下のように確認をしてきます。

 辞書ファイルのコンパイル

もちろん、「yes」を入力してEnter。
さらに、ズラズラとテキストが流れます。

 辞書ファイルのコンパイル完了

上図のような表示になれば、コンパイル成功です。
辞書ファイルが作成されました。
辞書ファイルの作成場所は、「/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd」とわかります。

Pythonで辞書指定によりMecabを利用する

辞書を作成しましたが、それはあくまでUbuntu上での話です。
Ubuntuで作成された辞書ファイルをWindows側で参照できるようにします。

辞書ファイルをコピーする

WindowsでMecabをインストールしたフォルダに「dic」フォルダが存在しています。
今回の場合であれば、C:\soft\MeCab\dicですね。
ここに「ipadic-neologd」フォルダを作成します。

この新しく作成したフォルダに辞書ファイルをコピーします。

cp /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/* /mnt/c/soft/MeCab/dic/ipadic-neologd

コピーが成功すれば、以下のようになります。

 辞書ファイルのコンパイルのファイル一覧

これでPython(Windows上)から、新たに作成した辞書を参照できるようになりました。

PythonでNEologd辞書を指定してMecabを利用する

「PythonからMecabを利用する」で使ったコードを修正します。
MeCab.Taggerに辞書を利用する記述を加えただけです。

import MeCab

mecab = MeCab.Tagger('-d C:\soft\MeCab\dic\ipadic-neologd')
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))

結果は以下。

DOS窓    名詞,固有名詞,一般,*,*,*,DOS窓,ドスマド,ドスマド
で       助詞,格助詞,一般,*,*,*,で,デ,デ
は       助詞,係助詞,*,*,*,*,は,ハ,ワ
、       記号,読点,*,*,*,*,、,、,、
基本的     名詞,固有名詞,一般,*,*,*,基本的,キホンテキ,キホンテキ
に       助詞,格助詞,一般,*,*,*,に,ニ,ニ
は       助詞,係助詞,*,*,*,*,は,ハ,ワ
日本語     名詞,一般,*,*,*,*,日本語,ニホンゴ,ニホンゴ
が       助詞,格助詞,一般,*,*,*,が,ガ,ガ
アウト     名詞,一般,*,*,*,*,アウト,アウト,アウト
です      助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS

「DOS窓」・「基本的」を名詞として認識できていますね。
こんな短い文章ですが、 NEologd辞書の方が優秀だと感じます。

MecabをインストールしてPythonで使う【Windows】のまとめ

そもそも、MecabはLinux系で利用するモノです。
Linuxだと、とても簡単に利用できます。

しかし、本記事ではMecabをWindowsのPythonで動かそうとしています。
だから、ここまで大変な作業になります。

でも、検証作業は普段利用しているWindowsで行いたいですよね。
その意味でも、Windows上でPythonからMecabを利用することに意義はあります。

ただ、本記事ではかなり丁寧に説明をしています。
インストールから、辞書作成まで。

よって、記事に通りに作業を行えば、それほど苦労はしないでしょう。
ただし、途中でUbuntuが出てくる違和感には、ある程度の我慢が必要かもしれません。
特にLinux系のOSに慣れていない方には。

タイトルとURLをコピーしました