knitr::opts_chunk$set( tidy = "styler", collapse = TRUE, comment = "#>" )
rjavacmecabは、takscape/cmecab-javaをrJava経由で呼び出してMeCabを利用するためのパッケージです。
このパッケージの開発のモチベーションは、既存のRパッケージよりも、比較的利用しやすい形態素解析の選択肢を提供することです。
rjavacmecabはRMeCabやRcppMeCabを代替するものではありません。あいだにJavaを経由することから、解析速度は他のパッケージよりも遅い一方で、このパッケージには次にあげるようなアドバンテージがあります。
あらかじめMeCabとJDKが利用できるようになっている必要があります。
MeCabの辞書はUTF-8を指定してインストールされていることを前提にしています。Windowsで64bit用のJDKを利用する場合、MeCabも64bit向けのものを用意する必要があります。Windows 64bitの場合、以下などを利用してください。
rjavacmecabはcmecab-javaのrJavaラッパーです。cmecab-javaを利用するためにはMeCabのダイナミックライブラリにパスが通っている必要があります。
Windowsの場合、インストールしたMeCabのディレクトリ以下のbin
ディレクトリにパスを通します。LinuxやMacの場合、LD_LIBRARY_PATH
にlibmecab.so
(Linuxの場合)やlibmecab.dylib
(Macの場合)のあるディレクトリを追加してください。
環境によってはrJavaパッケージはソースからビルドされている必要があります。rJavaをソースからビルドするには、多くの場合はJavaを適切にインストールしたあとにR CMD javareconf
を実行したうえで、R上でinstall.packages("rJava", type="source")
などとすれば解決します。
rJavaの周辺は比較的問題が起こりやすく、たとえばパッケージの読みこみ時にjvm
のロードに失敗したりするといったことがあります(古いバージョンのRStudioを使用している場合などに発生することが報告されています)。こうした場合はdyn.load()
関数に使用したいJREに付属しているダイナミックライブラリを明示的に渡すか、rJavaが読みにいっているファイルにシンボリックリンクを上書きするなどして対処します。
また、パッケージのビルド時にclang: error: unsupported option '-fopenmp
が発生してビルドに失敗する場合、Rパッケージのビルドに使用されるコンパイラの設定をしなおす必要があります。詳しくは以下に挙げる記事などを参考にしてください。
remotes::install_github("paithiov909/rjavacmecab")
if (rjavacmecab::is_mecab_available()) { rjavacmecab::rebuild_tagger() res <- rjavacmecab::cmecab(c("長期的自己実現で福楽は得られない", "幸せは刹那の中にあり")) str(res) }
if (rjavacmecab::is_mecab_available()) { res <- rjavacmecab::prettify(res) ## データフレームに整形します str(res) }
整形されたデータフレームは次のカラムからなります。IPA辞書とは異なる品詞体系の辞書を使っている場合は、素性情報をinto
引数に渡してください。
if (rjavacmecab::is_mecab_available()) { res <- rjavacmecab::pack(res) ## さらに整形して分かち書きにします print(res) }
確認できたかぎりでは-d
オプションは動作します。rjavacmecab::cmecab(str, "-d /MeCab/ipadic-neologd", sep = "\t")
のようにしてオプションを渡してください。
rjavacmecab::cmecab
とほぼ同様のAPIから、パッケージに同梱されているIgo (v0.4.5, IPA辞書)を利用することも可能です。ただし、仕様上、MeCabとは解析結果が異なる可能性があります。詳細はIgoのドキュメントを確認してください。
res <- rjavacmecab::igo("お前がそう思うんならそうなんだろう、お前ん中ではな") str(res)
rjavacmecab::igo
については、分かち書きの機能も利用できます。
res <- rjavacmecab::igo("お前がそう思うんならそうなんだろう、お前ん中ではな", mode = "wakati") str(res)
あらかじめ次のようなことをすればColabで試すことができます。
Rのランタイムはデフォルトで入っているので、rpy2経由でRを利用できます。マジックコマンドでロードします。
%load_ext rpy2.ipython
aptやaptitudeで入れることができます。
%%bash apt install mecab libmecab-dev mecab-ipadic-utf8
%%bash
apt install default-jre default-jdk
java -version # check java version
Pythonから設定してしまうと簡単です。
import os os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-11-openjdk-amd64"
%%bash R CMD javareconf
aptから入れることができます。
%%bash apt install r-cran-rjava
Rのinstall.packages()
から入れる場合、libjvm.soをdyn.load()
で明示的に指定して読み込まないとパッケージのインストールに失敗するため、先にdyn.load()
を呼びます。
%%R # このマジックコマンドをコードブロックの先頭に付けるとそのブロックにRが書ける dyn.load("/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so") install.packages("rJava")
ここまでの手順を踏んでrJavaがちゃんと入っていると、ふつうに入れることができます。
%%R remotes::install_github("paithiov909/rjavacmecab")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.