マイ・スウィート・ビーンズ

齋藤崇治。東大博士課程で政治学を研究しています。

M3 MacでRMeCab触っていたら発狂した件 (解決済み)

M1 macではスペックが足りないように思われたので意気揚々とM3 proを購入。旧PCから新PCへの移行は大体スムーズに行ったが、ただ一つ、MeCabだけメチャクチャ手間取ったので備忘録。

 

MeCabについては以下をお読みください。

taku910.github.io

 

何が起こったか

とりあえずMeCabmacにインストールし、Rで形態素解析を行った。すると以下のような結果が示された。

 

> RMeCabC("庭には")
1
̾\xbb\xec
"\xe5\xba"
2
̾\xbb\xec
"\xad\xe3"
3
\xb5\xad\xb9\xe6
"\x81\xab\xe3\x81"
4
̾\xbb\xec
"\xaf"
 
本当は、この\xbbなどに名詞などが入り、「庭」という単語が名詞に分類されたことが分かるようになる。しかし、ここでは、文字化けを起こしているため、一体何が起きているのか分からない
 

問題の所在

まず、そもそもこの問題がRMeCabの問題かMeCabの問題なのかを明らかにする必要がある。すでに、MeCab自体はインストールしていたので、ターミナルを開いて以下のように入力した。

 


   $ mecab
Drive in The Rain そう One more futureキミを探して 駆けるよユニバース Drive


しかし、ここでも先ほどと同じように本来「名詞」などと出力されるところが文字化けを起こしていた。そのため、RMeCabサイドではなく、MeCabサイドの問題であることが分かった。

 

解決

色々調べた結果、この問題はMacあるあるの「エンコーディング」の問題だろうということになった。Macエンコーディング問題については以下が詳しい。

shohei-doi.github.io

そして、以下のサイトに辿り着いた。

qiita.com

しかし、ここからがまた大きく手間取った。試行錯誤の末気づいたが、MeCabの中のコードを色々加工したためにエラーがどんどん大きくなっていったらしい。ということで、おとなしく既にインストールしたMeCabとその辞書(mecab-ipadc)をアンインストールすることにした。以下のコードは、ダウンロードフォルダにmecab-0.996やmecab-ipadic-(以下略)を落としていた場合の対応である。

 

$ cd ~/Downloads
$ cd ~ mecab-ipadic-2.7.0-2007080
$ sudo make clean

$ cd ~/Downloads
$ cd ~ mecab-0.996
$ sudo make uninstall
$ sudo make clean

言われてみれば当たり前だが、このアンインストールが極めて重要である。これによって、新しくきちんとまっとうなmecabmecab-ipadicをインストールできるのだから。

 

あとは、上の記事に従って、きちんとインストールするだけである。

$ cd ~/Downloads
$ curl -fsSL "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE" -o mecab-0.996.tar.gz
$ tar xf mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure --with-charset=utf8
$ make
$ sudo make install

$ cd ~/Downloads
$ curl -fsSL "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM" -o mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zvxf mecab-ipadic-2.7.0-20070801.tar.gz
$ tar xf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf-8
$ make
$ sudo make install

ここで重要なのは、./configure --with-charset=utf-8である。これによって、mecabmecab-ipadicのファイルがutf-8形式に変換され、macでも問題なく読み込めるようになる。

 

そして、再びterminalでmecabコマンドを開き先ほどと同じ文章を入力したら問題なく形態素解析を行うことできた。最後にRMeCabでも同様に行った結果、きちんと文字化けせず形態素解析を行うことができた。めでたしめでたし