Posit CloudにMeCab, RMeCab, gibasa, Sudachiをインストールする
結論
それぞれのスクリプトを入手し、実行してください。
MeCabのインストール
RMeCabのインストール
Sudachi (sudachipy) のインストール
デモ環境もどうぞ
上記スクリプトを配置したPosit Cloudプロジェクトを用意しました。Googleアカウントなどでログインし、無料で利用できます (25時間まで)。
はじめに
大学の授業で「モダンなRプログラミング」(自称) を教えています。「文系情報学部」1なので、ローカルのPC (Mac) に環境構築させるのが大変かな2と、授業ではPosit Cloud (旧RStudio Cloud) にあらかじめ各回の授業で必要なパッケージなどをインストールして共有しています。
ある回のテーマがテキストマイニングで、日本語を処理するためにMeCabと、MeCabをRから利用するためのRMeCab、比較的新しいgibasaをインストールする必要がありました。また、別系統としてSudachiも使ってみることにしました。
Posit Cloudの環境
ただ、Posit Cloudはクラウドサービスなので、ソフトウェアのインストールや、実行 (呼び出し) にいろいろな制約があり、一般的な手順通りではうまくインストールできません。そもそもそういう用途を意図していないのでしょうけど。例えば、以下のような点で不便です。3
root権限がない
Posit Cloudは、裏でUbuntuが使われていますが、ユーザー権限で動いており、sudo
や apt
などのroot権限が必要なコマンドは実行できません。そのため、何かR以外のソフトウェアを使いたい場合は、ソースコードをダウンロードして、Posit Cloudの環境でコンパイルすることになります。
ソフトウェアをインストールした環境を共有しても、Rパッケージ以外はコピーされない
ユーザーのホームディレクトリ下にソフトウェアをインストールしても、環境を受講者に共有すると、別のユーザー環境が割り当てられ、ホームディレクトリ以下は、パッケージがインストールされる ~/R
ディレクトリ以外は共有されません。逆に言えば、インストール先に ~/R
以下を指定すれば共有できますが、(Linuxの) ライブラリへの絶対パス (/home/rXXXXX/R/...
の XXXXX
部分) が変わり4、一部のパッケージはライブラリを見つけられず、使用できません。
フリープランではメモリが1GBしか使えないので、少し大きなソフトウェアはコンパイルできない
これは「それで困るなら金を払え」ということなのですが、例えば、MeCabの辞書を強化するNEologd辞書を使おうとしても、コンパイル作業の途中でメモリ不足で強制終了されます。おそらく、RadiantやStanなどの大きなパッケージもコンパイルできないでしょう。5
なお、Pythonライブラリは pip
コマンドでインストールできますが、やはりメモリの問題で、データ分析系の大きめのライブラリはインストールできない場合があります。
そのような環境で、いろいろと試行錯誤して、とりあえず自分の意図した (授業ができる) 環境は作れたので、方法を紹介します。
MeCabのインストール
MeCabは日本語形態素解析器のデファクトスタンダードです。Linux環境では、ソースコードが公開されており、コンパイルしてインストールします。6
Posit Cloudの環境では、上述のようにroot権限がないため、システム領域 (/usr/local
下) にはインストールできません。そこで、インストール先をホームディレクトリ (/home/rXXXXX
) 以下に指定する必要があります。それ以外は一般的なインストール手順の通りです。MeCabとIPA辞書のソースコードをダウンロードし、ホームディレクトリ下にインストールするスクリプトを作成しましたので、ダウンロードしてPosit Cloud内に配置し、ファイルを開き “Run Script” ボタンを押せば、インストールができます。
これで、/home/rXXXXX/usr/local/
以下にMeCabがインストールされます。なお、上述のようにこのディレクトリは環境を共有しても引き継がれません。
RMeCabのインストール
次に、RからMeCabを呼び出すRMeCabパッケージをインストールします。この際、RMeCabはコンパイル中にMeCabを探す (mecab-config
コマンドなどを実行する) ため、先ほどのホームディレクトリ下にインストールしたMeCabを認識させる必要があります。また、コンパイル時には LD_LIBRARY_PATH
や CPPFLAGS
などの環境変数も正しく指定する必要があります。このあたりで、以前はじめてPosit CloudでRMeCabを使おうとして大分悩んだのですが、Sys.setenv()
関数とwithrというパッケージを使えば実現できる、ということがStack Overflowにあった (URL失念) ので、そのようにしてインストールするスクリプトを作成しました。これも、ダウンロードしてPosit Cloudに配置し、ファイルを開いて “Source” ボタンを押せば実行されます。MeCabのインストール場所を、withrパッケージの with_makevars()
関数に環境変数を指定してRMeCabパッケージに教えています。
gibasaのインストール
上記のスクリプトでは、gibasaパッケージもインストールしています。RMeCabと同様に、MeCabのインストール場所を教える必要があるため、Sys.setenv()
関数で mecabrc
ファイルの場所を、MECAB_DEFAULT_RC
という環境変数で指定しています。そして、GitHubに公開されているソースを remotes::install_github()
関数でインストールしています。
Posit Cloud上のRのバージョンについて
Posit Cloudでは、自動的に最新のRに環境が移行するようで、例えば少し前にR 4.2.1で作った環境を、しばらくしてから開くとR 4.2.2で立ち上がります。7そのため、上記スクリプトではR 4.2.2のインストールパスを直接指定していますが、今後バージョンが変わった際には、適宜数字を書き換える必要があります。
Sudachiのインストール
MeCab以外の形態素解析器として、近年利用が広がっているSudachiも使ってみました。sudachirパッケージもあるのですが、CRAN版、GitHub版ともに、Posit Cloudの環境では動作させることができませんでした。一方、つい先日投稿されたRでも、良いSudachi Lifeを送りたいという記事があり、RからPythonを呼び出すreticulateパッケージを使って比較的容易にSudachiを活用する例があったので、こちらに沿って教材は作成しました。
いずれにしてもSudachiのPython版sudachipyをインストールする必要がありますが、pipコマンドだけでインストールできます。こちらも、1行だけですがスクリプトにしており、“Run Script” ボタンで実行、インストールできます。
なお、Pythonライブラリは一度プロジェクトを再起動しないとRから見えないようなので、インストール後は画面右上の “…” メニューから、“Relaunch Project” を実行して再起動します。
完了!
これで、MeCab、RMeCab、gibasa、sudachipyが利用できるようになりました。ファイルを用意しておけば、それぞれ長くても数分以内に実行完了するので、講義をしながら適宜指示をして裏で実行させておき、話の区切りがついたところで操作に移る、ということができるでしょう。
デモ環境もどうぞ
上記スクリプトを配置したPosit Cloudプロジェクトを用意しました。Googleアカウントなどでログインし、無料で利用できます (25時間まで)。
おわりに
こんな感じの授業をしており、教材執筆、プレゼンテーションもできますので、データ分析、IT基礎関係の非常勤講師を探している大学、各種学校関係者の方はご検討いただければ幸いです。
Webサイトトップページのお問い合わせフォームなどからご連絡ください。
-
ヨソの立派な大学の博士課程を修了された先生が言うとなんか問題ですが、自分の母校なので、自分自身を省みて「そんなもの」でしょう。 ↩︎
-
実際のところ、
install.packages()
やbrew install
だけなのですが、それでも手順書を順番通りに実行してくれない人は、社会人研修でも多くいます。そういうトラブルシューティングは面倒なので、ベンダー系研修会社ではPC持ち込みを許可せず、すべて環境を用意して研修をやっています。 ↩︎ -
タダで素晴らしいものを使わせてもらっているので、それに文句を言うつもりはまったくなくて、「そういう環境だ」と思っているだけです。 ↩︎
-
Posit Cloudのプロジェクト番号 (URL) とも異なり、予測・決め打ちは不可能です。 ↩︎
-
多くのパッケージは、Posit社によってバイナリ版が用意されているので、CRANにあるものであれば、コンパイルは不要です。 ↩︎
-
Ubuntuなどで、バイナリパッケージが提供されていることもあります。 ↩︎
-
おそらく、バージョンを固定する方法はありません。切り替えは、画面から簡単にできます。 ↩︎