mount /dev/hda1 /mnt/hda1 mount /dev/sda1 /mnt/usbでマウントでき,後は emeIFMとかいうファイルマネージャーでバックアップを取ればいいのだが,ここで問題発生.日本語ファイル名が化ける.私自身は決してファイル名に日本語を使わない.INSERT に smb が入っていれば問題ないのだが,入っていない.
R CMD check --use-gct RtoMecabでWarnings 一つまで減った.この一つというのは,コードに日本語が入っているというもの.
checking data for non-ASCII characters ... WARNING
AC_CHECK_LIB(mecab, mecab_new, \ has_mecab=1, has_mecab=0 ) dnl Checks for Mecab if test $has_mecab = 0; then AC_MSG_ERROR("FATAL: cannot find \ library for -lmecab.") fi AC_CHECK_LIB(mecab, mecab_new)気に入らないのは,AC_CHECK_LIB にライブラリ名と関数名の二つ以外にさらに引数を指定した場合,LIBS変数に -lmecab を自動的には加えてくれないらしい.なので同じチェックをすぐ下で繰り返す. 次に src/Makevar.in は次の一行.
PKG_LIBS = @LIBS@これだけで十分らしい.
$ rm src/RtoMecab.so $ autoconf $ R CMD check RtoMecab --no-latexなお,この処理で作成される共有ライブラリの名称は,デフォルトでは DESCRIPTIONの最初の行の
Package: RtoMecabが使われるらしい.複数のライブラリを作成する場合はどうなるのだろう?もっとも一つのソースに書くか,一括してリンクすればいいだけなので,そんな必要があるかはしらんけど.
dnl Checks for Mecab# 和布蕪ライブラリがあるか? AC_CHECK_LIB([mecab], [mecab_new], has_mecab=1, has_mecab=0 ) dnl ないなら,そこでストップ if test $has_mecab = 0; then AC_MSG_ERROR("FATAL: cannot find library for -lmecab") fi
とだけしておいた.
: ${R_HOME=`R RHOME`} if test -z "${R_HOME}"; then echo "could not determine R_HOME" exit 1 fi
:$だが,このコロンコマンドはtrueコマンドの代わりらしく,条件判定などにも使われる,とかNeil Matthewの60ページにある. シェルコマンドは分かりにくいなぁ.
@R_HOME@を利用する.
DESCRIPTION R/ data/ man/ src/と,これだけ.configure.acを作らねば. Rディレクトリには
mecab.R zzz.Rzzz.R の中身は
.First.lib <- function(lib, pkg) library.dynam("RtoMecab",pkg,lib) .Last.lib <- function(libpath) library.dynam.unload("RtoMecab", libpath)これだけ. srcディレクトリは
Makefile RtoMecab.cman ディレクトリには
package.skeleton(name = "mecab", "mecab", path="~/tmp/packages")で自動作成されたファイル
mecab-package.Rd mecab.Rdの二つだけ. data ディレクトリには,テスト用の日本語テキスト.
R CMD check mecab --no-latex R CMD build mecab --no-vignettes --force
$ R CMD INSTALL mecab_1.0.0.tar.gz ... 中略 gcc -shared -o RtoMecab.so RtoMecab.o -L/usr/local/lib/ -lmecab /usr/bin/ld: RtoMecab.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC RtoMecab.o: could not read symbols: 不正な値です collect2: ld はステータス 1 で終了しました make: *** [RtoMecab.so] エラー 1
言われたとおり, Makefile を修正.
SHLIB = gcc -shared -fPIC
一筋縄でいかんなぁ.しかし,一応,library(mecab) でロードされる.こちらのマシンのmecabはEUC版なので,入力ファイルもEUCに変換しておく.
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ beforeどうもヘッダファイルが正しく読み込めていないようなので,明示的にLD_INCLUDE_PATHを設定した他,ついでにR_HOME, JAVA_HOME, CLASSPATH なども設定してみた.ちなみに,この四つは今までは未設定で空のまま.しかし,エラーは消えない.
Rengine.c: In function ‘Java_org_rosuda_JRI_Rengine_rniParse’: Rengine.c:89: error: too few arguments to function ‘R_ParseVector’
どうもコードに問題があるらしい.コードを直さにゃ通らんか...
export C_INCLUDE_PATH=/usr/local/lib64/R/include
でヘッダファイルへのパスが通った.
make distcleanを実行する.これは
だそうな. 次にR-2.6.1を以下のようにコンパイルする.This removes any existing libraries which may not be recompiled to link against libR.so.
$ ./configure --enable-R-shlib $ make $sudo make installRのJava環境をセットしなおす.
$ sudo R CMD javareconf Java interpreter : /usr/lib/j2se/1.4/jre/bin/java Java version : 1.4.2-02 Java home path : /usr/lib/j2se/1.4 Java compiler : /usr/lib/j2se/1.4/bin/javac Java headers gen.: /usr/lib/j2se/1.4/bin/javah Java archive tool: /usr/lib/j2se/1.4/bin/jar Java library path: $(JAVA_HOME)/jre/lib/i386/client: $(JAVA_HOME)/jre/lib/i386: $(JAVA_HOME)/jre/../lib/i386::/usr/lib: /lib:/usr/lib/j2se/i386: /usr/lib/jni JNI linker flags : -L$(JAVA_HOME)/jre/lib/i386/client -L$(JAVA_HOME)/jre/lib/i386 -L$(JAVA_HOME)/jre/../lib/i386 -L -L/usr/lib -L/lib -L/usr/lib/j2se/i386 -L/usr/lib/jni -ljvm JNI cpp flags : -I/usr/lib/j2se/1.4/include -I/usr/lib/j2se/1.4/include/linux Updating Java configuration in /usr/local/lib/R Done.ところが,JAVA_HOMEをj2seにすると,R上のrJavaでこける.JAVA_HOMEもR_HOMEをアンセットして,もう一度
$ sudo R CMD javareconf Java interpreter : /usr/bin/java Java version : 1.6.0_03 Java home path : /usr/lib/jvm/java-6-sun-1.6.0.03/jre Java compiler : /usr/bin/javac Java headers gen.: /usr/bin/javah Java archive tool: /usr/bin/jar Java library path: $(JAVA_HOME)/lib/i386/server: $(JAVA_HOME)/lib/i386: $(JAVA_HOME) /../lib/i386::/usr/java/packages/lib/i386: /lib:/usr/lib JNI linker flags : -L$(JAVA_HOME)/lib/i386/server -L$(JAVA_HOME)/lib/i386 -L$(JAVA_HOME)/../lib/i386 -L -L/usr/java/packages/lib/i386 -L/lib -L/usr/lib -ljvm JNI cpp flags : -I/usr/lib/jvm/java-6-sun-1.6.0.03/jre/../include -I/usr/lib/jvm/java-6-sun-1.6.0.03/jre/../include/linux Updating Java configuration in /usr/local/lib/R Done.Javaのこと考えて,R-2.6.1をもう一度コンパイルとインストール.やれやれ.
rtest.java:9: TextConsole は abstract でなく、 org.rosuda.JRI.RMainLoopCallbacks 内の abstract メソッド rWriteConsole (org.rosuda.JRI.Rengine,java.lang.String,int) をオーバーライドしません。といわれる.この日本語何とかしてくれ.「オーバーライドしません」ではなくて,「オーバーライドされていません」だろう...そこで,無理やり rtest.java に
public void rWriteConsole(Rengine re, String text, int i) { System.out.print(text); }を追加して抽象関数をオーバーライドし,コンパイルした.実行すると libjri.soがないと文句を言ってくる.
$ java rtest Creating Rengine (with arguments) Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.library.path.そこでパスを明示すると,
$ java -Djava.library.path=R/lib/rJava/jri rtest Exception in thread "main" java.lang.NoClassDefFoundError: rtest今度はカレントディレクトリがセットされていない.疲れる.
$ java -Djava.library.path=.:R/lib/rJava/jri rtest Creating Rengine (with arguments) Rengine created, waiting for R [STRING "iris"] [REAL* (6.0)]と,まあ,実行された.修正ファイルはrtest.javaここ.
kekka2 <- list() j <- 1 for(i in 1:length(kekka)){ if(kekka[[i]][2] == "名詞"){ kekka2[[j]] <- kekka[[i]] j <- j+1 # kekka2 <- c(kekka2, kekka[[i]])#これはダメ # kekka2 <- list(kekka2, kekka[[i]])#ましてダメ } }こんなことしてみたけど,条件が偽となる元リストの要素がNULLとして返されてしまう.これを同時に削るのは無理かな?とりあえず NA を返して,最後に一行追加して,NA の行を取り去るという処理もできるけど.
kekka2 <- rapply( kekka[1:length(kekka)], function(x) if(x[2] == "名詞") x , else NA, how = "list") kekka2[!is.na(kekka2)]
bzip2 -cd cabocha-0.60pre2.tar.bz2 | tar xf -
./configure --with-charset=UTF8 make sudo make install sudo ldconfig # これを忘れないようにその上で Cabocha0.60pre2をインストール
./configure --with-charset=UTF8 make sudo make install sudo ldconfig # これも忘れないうちに実行しておく実行してみる.
$ cabocha 僕は,今日大学で授業があるんだ. 僕は,-----D 今日大学で---D 授業が-D あるんだ. EOS $ cabocha -f1 僕は,今日大学で授業があるんだ. * 0 3D 0/1 -1.541709 僕 名詞,代名詞,一般,*,*,*,僕,ボク,ボク O は 助詞,係助詞,*,*,*,*,は,ハ,ワ O , 記号,読点,*,*,*,*,,,,,, O * 1 3D 1/2 -1.541709 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー O 大学 名詞,一般,*,*,*,*,大学,ダイガク,ダイガク O で 助詞,格助詞,一般,*,*,*,で,デ,デ O * 2 3D 0/1 -1.541709 授業 名詞,サ変接続,*,*,*,*,授業,ジュギョウ,ジュギョー O が 助詞,格助詞,一般,*,*,*,が,ガ,ガ O * 3 -1D 1/2 0.000000 ある 動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル O ん 名詞,非自立,一般,*,*,*,ん,ン,ン O だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ O . 記号,句点,*,*,*,*,.,.,. O EOSいい模様.
> summ2 <- c() > summ2 NULL
/opt/Adobe/Reader8/