僕の世界観を変えてみる

文系男子が趣味でプログラミングを勉強していくブログです。他にも日常で起きたどうでもいいことや愚痴を書いていきたいです。座右の銘は和を以て貴しとなすです。仲良くやろうよ。

【python3】Mecabをpythonで使えるようにするまで【Windows10編】

f:id:htmllifehack:20181123211904j:plain

なんとなくmecabやってみようかなー的な。

なんとなく文章生成してみようかなー的な。

そんな気分だったのでちょっと形態素解析に手を出してみました。

結構ハマったのでびっくりですね。


Windows10にMeCabをインストール

pythonのバージョンを確認

python --version

64bitだった場合
https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43
ページ下にあるリンクからmecab-0.966-64.exeをダウンロードし実行する。

pythonでmecabを使うためにはmecab-python3をpipでインストールする必要がある。
が、普通にやってもうまくいかない。

Command "python setup.py egg_info" failed with error code 1 in C:\Users\Owner\AppData\Local\Temp\pip-install-824a3xtp\mecab-python3 というエラーがでる。

mecab-python3にあるsetup.pyの中のコードがエラーを出しているようでエラー内容はout of range
どうやらsetup.pyを書き換えないといけないらしい。

非常にめんどくさい。

ただ神が存在するのでこちらのページ
簡単にインストールできるmecab-python-windowsが配布されている。

これをpipでインストールすればOK

Windows で pip で mecab-python をいれる - Qiita

なんでこんなめんどくさいのかは不明。

mecabは32bitしかないので32bitようにmecab-python3が作られたからなのか。

はたまたpython2.7のときに作られたからなのか。

mecab-python3
ここからmecab-python3をダウンロードできるのであえていばらの道を歩みたい人はここからどうぞ。

環境変数にmecabを追加

pathにmecabを追加

C:\Program Files\MeCab\bin

環境変数にmecabrcを追加

mecabrcとは

dicdir = $(rcpath)\..\dic\ipadicなる文字が書かれたテキストファイル

辞書の場所を指定するファイル?

f:id:htmllifehack:20181123215203j:plain

関係ないけどtempが2つある謎

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

windowsではインストールできないのでwindows subsystem linux 略してWSLを利用する。

windows store からUbuntuをインストール
※WSLとかで調べて

Ubuntsuの設定

まず最初はアップデート、そしてgitのインストール。

$ sudo apt-get install update upgrade
$ sudo apt-get install git

neologdのURL
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md

そしてgit clone

git cloneだけじゃインストールされないので生成されたneologdフォルダの中にあるinstall-mecab-ipadic-Neologdを実行する。

$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ ./install-mecab-ipadic-NEologd

僕はそのままインストールしちゃったけど嫌だったらmecabのディレクトリ作ってそこにインストールしてね。

mecab-ipadic-Neologdがインストールされたのでそこまで移動。

$ cd /usr/lib/x86_64-linux-gnu/mecab/dic/
$ ls mecab-ipadic-neologd
char.bin  dicrc  left-id.def  matrix.bin  pos-id.def  rewrite.def  right-id.def  sys.dic  unk.dic

なにもディレクトリを指定しなかった場合は/usr/lib/x86_64-linux-gnu/mecab/dicにインストールされる。

ってことでmecab-ipadic-neologdというフォルダをwindows側へコピー。

Cドライブはアクセス拒否されてできなかったのでDドライブなど他のドライブへコピーする。

/usr/lib/x86_64-linux-gnu/mecab/dic/ $ sudo cp -r mecab-ipadic-neologd  /mnt/d/mecab-ipadic-neologd
余談 ubuntu側からwindows側のパスを知るコマンド

wslpathというコマンドを使ってUbuntu側ではどこにいるのかを確認できる。

DドライブのMeCabフォルダのパスを調べる例

$ wslpath 'd:\MeCab'
/mnt/d/MeCab

するとUbuntu側でDドライブのMeCabフォルダにアクセスするには/mnt/d/MeCabというパスを用いればよいことがわかる。

jupyter notebookで確かめる

neologdのインストールが終了すると使い方がコマンドラインに表示される。

Taggerの引数で-dオプションを用いることでneologdを使える。

import MeCab

text = "吾輩は猫である。名前はまだない。9日に"
t = MeCab.Tagger('-Ochasen -d D:\mecab-ipadic-neologd\mecab-ipadic-neologd')
result = t.parse(text)

吾輩は猫である	ワガハイハネコデアル	吾輩は猫である	名詞-固有名詞-一般		
名前	ナマエ	名前	名詞-一般		
は	ハ	は	助詞-係助詞		
まだ	マダ	まだ	副詞-助詞類接続		
ない	ナイ	ない	形容詞-自立	形容詞・アウオ段	基本形
。	。	。	記号-句点		
9日	ココノカ	9日	名詞-固有名詞-一般		
に	ニ	に	助詞-格助詞-一般		
EOS

ちなみにneologdを使わずにデフォルトのまま使うとこんな結果になる。

吾輩	ワガハイ	吾輩	名詞-代名詞-一般		
は	ハ	は	助詞-係助詞		
猫	ネコ	猫	名詞-一般		
で	デ	だ	助動詞	特殊・ダ	連用形
ある	アル	ある	助動詞	五段・ラ行アル	基本形
名前	ナマエ	名前	名詞-一般		
は	ハ	は	助詞-係助詞		
まだ	マダ	まだ	副詞-助詞類接続		
ない	ナイ	ない	形容詞-自立	形容詞・アウオ段	基本形
。	。	。	記号-句点		
9	9	9	名詞-数		
日	ニチ	日	名詞-接尾-助数詞		
に	ニ	に	助詞-格助詞-一般	

まとめ

とりあえず今回はここまで。

コマンドラインでmecabを使うと文字化けするんだけど、めんどくさいから直していない。

というかpythonで文字化けしてなけりゃ別にいいよね、使わないんだし。

一応調べてみるとmecabインストールのときにshif-jisじゃなくてutf-8を選べって記事を読んだけど、そもそもそんな選択肢でてこないしなんならmecabの64bit版ってutf-8にしてあるんじゃないのって話よ。

よくわからないけどpythonで使えるようにするまでにすごい苦労した。

1週間かそこらは悩み続けたよ。

同じ悩みを抱える子羊たちよ、参考になれば幸いです。