つい最近、「RMeCab」を以下の環境で動くように設定できました。
- MacBook Air M1 : macOS Big Sur 11.4
- mecab: 0.996
- mecab-ipadic: 2.7.0-20070801
- R 4.1.1 GUI 1.77 Big Sur ARM build (7985)
- RStudio: Version 1.4.1717
自分の知識不足と不注意から、ここに至るまでに3日間かかりました。
##1日目
現在主に使っているMacBook Proと同じ環境をMacBook Airでも構築するために、Rをインストールしました。
パッケージ「dplyr」[magrittr]「stringr」「ggplot2」など入れました。
「RMeCab」をインストールする前に、「mecab」を入れます。
しかし、インストールするのは数年ぶりなので、色々忘れていました。
「mecabって何?」という状態から始めました。
以下を参考にソースからインストールします。
辞書もインストールします。
Macのターミナルを使うのは5年ぶりぐらいなので、立ち上げ方から思い出す必要があり、以下サイトを参考にしました。
ターミナルからmecabは正常に動きます。
% mecab
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
「RMeCab」をインストールし、動作を確認します。
library(RMeCab)
res <- RMeCabC("すもももももももものうち")
ところが、
*** caught segfault ***
address 0xffffffffffffffff, cause ‘memory not mapped’
Traceback:
1: RMeCabC(“すもももももももものうち”)
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Exception:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/Mecabra/Mecabra-929.10/src/tokenizer/tagger.cpp(110) [load_dictionary_resource(param)] /System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/Mecabra/Mecabra-929.10/src/param.cpp(130) [ifs] no such file or directory: ./dicrc
Selection:
と、「Rを閉じる」いうメッセージが出ました。
ここから試行錯誤の始まりです。
「RMeCab」を再インストールしようと思いましたが、アンインストールの仕方を知らないことに気づきました。
検索して調べました。
動きません。
「address 0xffffffffffffffff, cause ‘memory not mapped’」で検索したところ、RMeCabのフォーラムでこのメッセージに関する投稿を見つけました。
解決に近づいた、と思いました。
投稿を読んだところ、「MeCabをHomebrewでインストール」という文章に目がとまリました。
「Homebrewとは何だ?」となりました。
調べます。
もしかしたら、最近はこの方式でインストールするのかと考え、ターミナル上で実行します。
brew install mecab
brew install mecab-ipadic
しかし、RMeCabは動きません。
先ほど調べたサイトを読み直したところ、最初に行った「mecabのインストール」と「Homebrewを使ったインストール」は「別物」と考えるべきだ、ということがわかりました。
となると、「最初に行ったmecabのアンインストールをした方がいいのだろう」となります。
しかし、アンインストールの仕方がわかりません。
##2日目
ターミナルからのアンインストールの方法を調べました。
cd mecab-ipadic-2.7.0-20070801
make uninstall
make clearn
cd mecab-0.996
make uninstall
make clearn
うまくいきません。
再検索しました。
cd mecab-ipadic-2.7.0-20070801
sudo make uninstall
sudo make clearn
cd mecab-0.996
sudo make uninstall
sudo
make clearn
アンインストールできたようです。
でも変わらずRMeCabは動きません。
先月検索して知ったフォーラムの投稿で知ったサイトと、別途検索して見つけたサイトを調べ始めます。
RMeCabのソースファイルを取得することにしました。
色々調べた結果、色々と調べ、「ソースファイルの取得」=「クローン作成」ということに辿り着きました。
以下サイトを参考からソースをダウンロードしました。
先ほどのサイトで記載のあったRMeCab/src/Makevars内の記述を変更しようとしましたが、検索して調べた内容と違っていたので、とりあえず変更しないままインストールします(その前にアンインストールしています)。
install.packages("~/Downloads/mecab-0.996.tar.gz", repos=NULL, type="source")
RMeCabは動きませんでした。
辞書ライブラリへのシンボリックリンクの変更も試みました。
シンボリックリンクについても検索して意味を調べました。
試します。
sudo ln -s /opt/homebrew/Cellar/mecab/0.996/lib/libmecab.2.dylib /usr/local/lib/libmecab.dylib
sudo mkdir /usr/local/lib/mecab
sudo mkdir /usr/local/lib/mecab/dic
sudo ln -s /opt/homebrew/Cellar/mecab-ipadic/2.7.0-20070801/lib/mecab/dic/ipadic /usr/local/lib/mecab/dic/ipadic
うまくいかない場合はシンボリックリンクを外したりしました。
sudo unlink /usr/local/lib/libmecab.dylib
sudo unlink /usr/local/lib/mecab/dic/ipadic
sudo rmdir /usr/local/lib/mecab/dic
sudo rmdir /usr/local/lib/mecab
RMeCabは動きません。
Homebrewでインストールしたmcabをアンインストールしてやり直すことにしました
アンインストールの仕方を調べました。
上記サイトでは「mecabrc」という環境設定ファイルについて言及していますが、ここをいじるのは怖かったのでままにしました。
(何度目になるかわかりませんが)ソースからmecabをインストールします。
様々な組み合わせを試した中、たまたま見つけた以下のサイトで知った辞書の文字コード変換も試しました。
上記サイトで使われている「nkf」コマンドも知りませんので、調べました。
##3日目
RMeCabが動かないまま迎えた3日目。
今まで試したことを整理し、次にやるべきことを考えることにしました。
- 形態素解析モジュール「mecab」と「辞書」をMacに入れる
- それらを「R」から使えるようにするのが「RMeCab」
- 「mecab」と「辞書」をインストールする方法は2種類
- ソースからインストール
- Homebrewからインストール
- それぞれ「RMeCab」または「mecab」が動かないケースはネットで見つかる
- 解決している人もいる
- ネットで調べた例との違いを比べると、主に異なるのは「R」のバージョン
ということから、「解決しているケースと同じバージョンのRを使う」ことにしました。
Rのアンインストールの方法を調べることにしました。
Launchpadでは「x」(バツ)マークが出ないのでできませんでした。
「AppCleaner」というツールを使うことにしました。
アンインストール完了です。
「CRAN 」(Comprehensive R Archive Network)のサイトに戻りました。
誤ちに気づきました。
R-4.1.1.pkg (notarized and signed)
SHA1-hash: d0eed7d0755bc80911acb616508d41e1396f810e
(ca. 86MB)
R 4.1.1 binary for macOS 10.13 (High Sierra) and higher, Intel 64-bit build, signed and notarized package.
4.1.1はこれまで使っていたバージョンです。
スクロールして下の画面に移りました。
R-4.1.1-arm64.pkg (notarized and signed)
SHA1-hash: e58f4b78f9e4d347a12cc9160ee69d3d23e69f3b
(ca. 87MB)
R 4.1.1 binary for macOS 11 (Big Sur) and higher, Apple silicon arm64 build, signed and notarized package.
それぞれ、以下のように記載されています。
Intel 64-bit build
Apple silicon arm64 build
M1はIntel系ではなかったなと、
「ARM」というキーワードに覚えがあるな、と。
「M1 MacBook Air」と「RMeCab」を使うには、知識不足、加えて技術者の視点で見ていなかったな、と。
無事「RMeCab」が動きました。
こちらの手順に沿ってインストールしました。
念のためmecabと辞書のアンインストールコマンドを実行しておきます。
- MacBook Air M1 : macOS Big Sur 11.4
- mecab: 0.996
- mecab-ipadic: 2.7.0-20070801
- R 4.1.1 GUI 1.77 Big Sur ARM build (7985)
- RStudio: Version 1.4.1717
(Macターミナル)
brew uninstall mecab-ipadic
brew uninstall mecab
cd ~/Downloads
cd mecab-0.996
sudo make uninstall
sudo make clean
cd mecab-ipadic-2.7.0-20070801
sudo make uninstall
sudo make clean
再インストールです(引き続きMacターミナル)。
xcode-select --install
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=utf8
make
sudo make install
mecab
すもももももももものうち
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
(Rダウンロード)
R-4.1.1-arm64.pkg 実行
念のためRMeCabアンインストール実行。
そして再インストール。
(R起動画面)
remove.packages("RMeCab")
install.packages("RMeCab", repos = "https://rmecab.jp/R", type = "source")
library(RMeCab)
res <- RMeCabC("すもももももももものうち")
res
[[1]]
名詞
"すもも"
[[2]]
助詞
"も"
[[3]]
名詞
"もも"
[[4]]
助詞
"も"
[[5]]
名詞
"もも"
[[6]]
助詞
"の"
[[7]]
名詞
"うち"
了