【python3】Mecabをpythonで使えるようにするまで【Windows10編】
なんとなく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なる文字が書かれたテキストファイル
辞書の場所を指定するファイル?
関係ないけど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週間かそこらは悩み続けたよ。
同じ悩みを抱える子羊たちよ、参考になれば幸いです。