Windows10にMeCabをインストールする

投稿日:2019/04/04

なぜ書いた?

一応同様の内容で既存記事はあります.
が,そのままの書き方ではうまくいかず,自分なりに解決した部分があったので自分メモとして記事を書きます.

環境

●Windows10 Home(64bit)
●Python3.6/pip(64bit)
●Ubuntu18.04.1 LTS on WSL

MeCabのインストール

①MeCabのダウンロード 
今回はWindows10やPythonに合わせるため64bit版が必要になるので,公式ページからではなく,こちらのGitHubから「mecab-64-?.???.?.exe」をダウンロードします.
そしてインストールしますが,Pythonに合わせるため文字コードではUTF-8を選択します.(個人的に理由関係なくUTF-8に統一したさある)

②環境変数に登録 
"スタート>設定>システム>ハージョン情報>システム情報>システムの詳細設定>環境変数"から,システム環境変数のPathにインストール先である「C:\Program Files\Mecab\bin」を追加する.

③動作確認 
コマンドプロンプト(PowerShell)を再起動し,以下コマンドで実行して何か文章を打って正常に動作するか確認する.
ただしアプリケーションの文字コードをUTF-8に設定しているので,Shift-JIS環境であるコマンドプロンプトでは文字化けしますがとりあえず最後に「EOS」と出れば大丈夫だと思います.

mecab
すもももももももものうち(入力文章) すもももももももものうち 險伜捷,荳闊ャ,*,*,*,*,* EOS

Pythonでの実行

①Pythonパッケージのインストール 
「mecab-python3」があるらしいが,Windows上で実行するので「mecab-python-windows」の方が良さそうです.
ということで,pipでそれをインストールします.

pip install mecab-python-windows


②動作確認 
以下コードで動作するか・文字コードが大丈夫か確認しましょう.

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

上記の結果になれば大丈夫です.次に進みます.

mecab-ipadic-NEologdのインストール

単語辞書はインストール当初のままでは最新の単語が含まれていません.

mecab.py
import MeCab m = MeCab.Tagger("-Ochasen") output = m.parse("キンタロー。が恋ダンスを踊っている。") print(output)
キンタロー キンタロー キンタロー 名詞-一般 。 。 。 記号-句点 が ガ が 助詞-格助詞-一般 恋 コイ 恋 名詞-一般 ダンス ダンス ダンス 名詞-サ変接続 を ヲ を 助詞-格助詞-一般 踊っ オドッ 踊る 動詞-自立 五段・ラ行 連用タ接続 て テ て 助詞-接続助詞 いる イル いる 動詞-非自立 一段 基本形 。 。 。 記号-句点 EOS

上の例では「キンタロー。」と「恋ダンス」で正しく区切りを付けられていません.
そのため最新の単語も含めた単語辞書であるmecab-ipadic-NEologdをインストールし,新しい単語の区切りができるようにします.
ここでWSLを使います.インストールにあたりビルドが必要であり,LinuxOS上でないとできない現状にあるためです.

①WSLの導入 
【Crystal】環境構築(Windows Subsystem for Linux)の環境構築①でまとめてあります.

②MeCab関連のインストール 
Ubuntu on WSLを管理者として起動し,以下コマンドでMeCab関連をインストールする.

$ sudo apt install -y make mecab libmecab-dev (mecab-ipadic-utf8)


③mecab-ipadic-NEologdのインストール 
以下コマンドでmecab-ipadic-NEologdをダウンロード・ビルドする.

$ git clone https://github.com/neologd/mecab-ipadic-neologd.git $ cd mecab-ipadic-neologd $ sudo bin/install-mecab-ipadic-neologd -n -y

①で共有フォルダの設定を済ませていれば,そこに「mecab-ipadic-neologd」がクローンされているとこを確認できます.
ビルドでできたファイルは恐らく,

C:\Users\(ユーザ名)\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_(...)\LocalState\rootfs

上記ディレクトリのlib,tmpフォルダのいずれかにあると思われますが,確認できていません.(多分tmpだろうなぁ)
コマンドによってコピーしているので気にしない人はそのまま進めましょう.

④WindowsのMeCabに反映させる 
ビルドで生成されたファイルをWindowsのインストール済みMeCabの辞書フォルダに移すことで反映させることができます.
下記コマンドでWindowsのMeCabフォルダにある辞書フォルダにコピーし,WSLのビルドしたファイルを削除しています.

$ cp -R `mecab-config --dicdir`/mecab-ipadic-neologd "/mnt/c/Program Files/MeCab/dic" $ rm -rf /tmp/mecab-ipadic-neologd


これでひとまずmecab-ipadic-NEologdのインストールは終わりです.
次章でPythonで動作確認しましょう.

Pythonで新辞書を使う

mecab.py
import MeCab tagger = MeCab.Tagger("-d $(rcpath)\..\dic\mecab-ipadic-neologd") result = tagger.parse("キンタロー。が恋ダンスを踊っている。") print(result) print("==================================================================") tagger = MeCab.Tagger("-d $(rcpath)\..\dic\mecab-ipadic-neologd -Ochasen") result = tagger.parse("キンタロー。が恋ダンスを踊っている。") print(result)
キンタロー。 キンタロー キンタロー。 名詞-固有名詞-人名-一般 が ガ が 助詞-格助詞-一般 恋ダンス コイダンス 恋ダンス 名詞-固有名詞-一般 を ヲ を 助詞-格助詞-一般 踊っ オドッ 踊る 動詞-自立 五段・ラ行 連用タ接続 て テ て 助詞-接続助詞 いる イル いる 動詞-非自立 一段 基本形 。 。 。 記号-句点 EOS

上記コードで実行して結果の「キンタロー。」と「恋ダンス」が正しく認識できていれば成功です.

また上記コードではMeCab.Taggerをインスタンス化する際に引数の「-d」オプションで先程インストールした新辞書を指定しています.
ここで「$(rcpath)\」を書かなくても実行できるらしい参考記事が多かったのですが,エラーになっちゃったので上記のように追記して実行できるようにしました.

まとめ

自然言語処理も頑張って学んでいきたい.
というか,Windows64bit版の野良MeCab作るってすげぇな….

タグ:

Comment

コメントはありません。
There's no comment.