#はじめに
RStudio+RMeCabで1年ほどテキスト解析をしてきたのですが、
そろそろPythonもやらないとと言う空気に駆られてPython上でMeCabを環境構築しようとしたところ苦戦。
PythonでMeCabを使えるようにすると、RStudioで文字化けし、
RStudioでMeCabを使えるようにするとPythonで文字化けしを繰り返す。
いろいろ検索するととRはSHIFT-JIS、PythonはUTF-8と言う事で文字コードの違いが原因の模様。
以下の様にRとPythonで呼び出す辞書を変えてRStudio,PythonでMeCabが使えるようになりました。
#環境
Windows10 64bit 言語:日本語
R 3.5.1 64bit
RStudio 1.1.463
MeCab 0.996-32bit
RMeCab 1.00
Python 3.6.8(anaconda3 5.3.0) 64bit
#導入する物
mecab-python-windows
MeCab 0.996-32bit-UTF-8辞書、SHIFT-JIS辞書再構築のため再導入
#導入方法
MeCabは"C:\Program Files (x86)\MeCab"にインストールしている場合を示します。
他のドライブの場合は適宜読み替えてください。
##1.以下のサイトを参考にPython用MeCabバインディングを入れる
https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43
##2.MeCabインストールの際UTF-8で辞書を作成し、辞書フォルダ名を変更。
辞書フォルダ"C:\Program Files (x86)\MeCab\dic\ipadic"のフォルダ名を
"C:\Program Files (x86)\MeCab\dic\ipadic-UTF8"に変更
##3.再度MeCabをインストールし、辞書をSHIFT-JISで作成。
これで "C:\Program Files (x86)\MeCab\dic"配下には以下の2つの辞書フォルダが出来る。
"C:\Program Files (x86)\MeCab\dic\ipadic"
"C:\Program Files (x86)\MeCab\dic\ipadic-UTF8"
##4.mecabrc-uファイルでUTF-8辞書を指定(2019/1/27追記)
この改訂以前はPythonから辞書を指定する際に-dオプションで直接指定していましたが、
-rオプションでmecabrcファイルから指定できることが分かりました。
こちらの方が直接辞書ファイルを指定する場合より判りやすくなるのこの方式を使用する事にしました。
C:\Program Files (x86)\MeCab\etc\mecabrcを開き以下の様に編集し
mecabrc-uの別名で保存。
6行目
(修正前)dicdir = $(rcpath)\..\dic\ipadic
(修正後)dicdir = C:\Program Files (x86)\MeCab\dic\ipadic-UTF8
これでC:\Program Files (x86)\MeCab\etc\には以下の2つのファイルが出来る。
mecabrc
mecabrc-u
#解析の実行
##RStudioからMeCabで形態素解析
通常通り以下の様に行います。
library(RMeCab)
RMeCabC("すもももももももものうち")
##PythonからMeCabでの形態素解析
####meCabrc-uファイルを指定してMeCabを呼び出し形態素解析。
import MeCab
m=MeCab.Tagger("-r C:\progra~2\MeCab\etc\mecabrc-u")
print(m.parse ("すもももももももものうち"))
-r オプションで指定する場合のフォルダ区切りは""です。
"/"ではなぜかRuntimeエラーが出ます。
#修正・変更履歴
##2020/1/11
Python用MeCabバインディングがmecab-python-windowsからmecabに変わったので、リンク先を変更しました。
##2019/1/31
-rでオプション指定した際のフォルダの区切り文字を/→\に修正しました。
##2019/1/27
辞書ファイルの指定を-dオプションから-rオプションでmecabrcファイルから指定する事に変更しました。
是に伴い、大幅に改訂しています。
##2019/1/9
Program Files (x86)の誤記を修正しました。
##2019/1/6
PCの調子が悪くなったので、OSを再インストールしてから行ったところ以下の間違いに気づきました。
Windowsは日本語を使用しています。
###UTF辞書のフォルダ名のショートパスが以下の通りでした。
(正)C:/progra~2/MeCab/dic/ipadic~1
(誤)C:/progra~2/MeCab/dic/ipadic-UTF8
###コマンドプロンプトからのMeCab使用
コマンドプロンプトからMeCabを使用したところ、MeCab64bitなしでも文字化けしませんでした。