日録2008年_2月 のバックアップ(No.33) - アールメカブ

アールメカブ


日録2008年_2月 のバックアップ(No.33)


過去の日録

_ 2008年 2月 9日(月) 雨

  • 06:00 起床
    • 07:20 研究室着
  • 午前
    • 一応,簡易的な configure.ac と Makefile.in を作成し,パッケージした結果,Unix系環境でコンパイル,また稼働可能なRパッケージが作成できた.
    • アルバイト学生に英語テキストファイルの構成作業を指示.
  • 午後.乾麺
    • アルバイト学生に英文テキスト構成作業を指示.
    • とりあえず configure.ac だが
dnl  Checks for Mecab# 和布蕪ライブラリがあるか?
AC_CHECK_LIB([mecab],has_mecab=1, has_mecab=0 )
dnl ないなら,そこでストップ
if test $has_mecab = 0; then
  AC_MSG_ERROR("FATAL: cannot find library for -lmecab")
fi

とだけしておいた.

  • また R のホームディレクトリだが
: ${R_HOME=`R RHOME`}
if test -z "${R_HOME}"; then
  echo "could not determine R_HOME"
 exit 1
fi
  • R に RHOME という引数をつけて実行すると,ホームディレクトリが返ってくるのであった.
  • ここで頭に使われている
    :$
    だが,このコロンコマンドはtrueコマンドの代わりらしく,条件判定などにも使われる,とかNeil Matthewの60ページにある. シェルコマンドは分かりにくいなぁ.

_ 2008年 2月 9日(月) 晴

  • 07:00 起床
    • 08:20 研究室着(整頓)
      • 整頓が過ぎて,疲れた.
    • autoconf, automake, libtool をインストール
  • 午後
    • mecabパッケージの雛形作成.とりあえず,ディレクトリ構成は
      DESCRIPTION  R/  data/  man/  src/
      と,これだけ.configure.acを作らねば. Rディレクトリには
      mecab.R  zzz.R
      zzz.R の中身は
      .First.lib <- function(lib, pkg)
         library.dynam("RtoMecab",pkg,lib)
      .Last.lib <- function(libpath)
         library.dynam.unload("RtoMecab", libpath)
      これだけ. srcディレクトリは
      Makefile  RtoMecab.c
      man ディレクトリには
      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
  • 隣にある64bit Fedoraで試してみたら,
$ 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に変換しておく.

  • autoconf automake について,あれこれいじる
  • 定時より少し遅れて帰宅,定時就寝

_ 2008年 2月 10日(日) 晴

  • 07:00 起床
  • 午後
    • configureを作成.
  • 定量よりのんで定時就寝

_ 2008年 2月 9日(土) 曇

  • 07:00 起床
    • 08:20 研究室着(整頓)
    • ベイズの準備
  • 午後.乾麺
    • 依頼されたデータベースとPHPの更新作業.どこかで入力ミスを行ったらしく,デバッグに時間がかかってしまった.
    • T氏来訪.妙なお話をうかがう.
    • ついでに整頓.
    • R と和布蕪のインターフェイスのパッケージかを始める.ところで,今回は他のライブラリに依存している.R CMD build を実行する際,和布蕪のライブラリを確認するようにしなければならない.とりあえず rJava_0.5-1.tar.gz を参考にしつつ,Writing R Extensionsを丁寧に読もう. ここでUbuntuにはautoconfが入っていないことに気がつく.configureを一から書くのは,さすがに勘弁.
  • 定時帰宅,定量のんで定時就寝

_ 2008年 2月 8日(金) 曇

  • 06:00 起床
    • 自転車のブレーキケーブルを調整
    • 07:20 研究室着(整頓)
  • 午前
    • 情報処理学会費を郵便局から納める.
  • 午後.来客と外食.
    • WHR-HP-G/U を設定.説明書にはモデムに接続し,それからWindowsにソフトをインストールし,そのソフトを起動して設定せよとある.モデムもWindowsもありません.これが家庭の平均的なアクセス環境ということらしい.マニュアルにはそれ以外書いていない.ので,ブラウザたちあげ,192.168.01 やら 192.168.12.1 やら試行する.URLが見つかったので,ブラウザからIPは*68に設定し,無線はWEP-PSK(AES)を設定.もう片方のIO-DATAのルータは2*8設定.設定は難しくないのだが,絡まったコードをやりくりしていて,思ったよりも時間がかかってしまった.
    • 基幹が変わったわけでもないのに,何だか早くなった気がする.
    • 採点作業
  • 定時帰宅,が,テキーラなどのみ,定時より1時間遅れて週就寝.

_ 2008年 2月 7日(木) 曇

  • 06:00 起床
    • 長いこと老人たちがゲートボールを楽しんでいた空き地が,造成され始めた.
    • 07:20 研究室着
  • 午前
    • Flushplugin-nonfreeなるアップデート.ここで nonfreeたぁ,どういう意味でぇ?
    • LeeのBayesian Statistics第3版だが,2版と比べると誤植が減り,また説明も丁寧になっているもよう.学生でも読めるかな(もっとも学生向けの本なのだが)?
    • 11:00-12:15 病院で花粉症の治療,410円,近くの薬局で薬(アレグラ錠60mg,1日2回*30日)と点鼻薬(フルナーゼ50ug28, 1日1回*3本),目薬処方(アイビナール点眼液,かゆいときのみ1回*3本),3990円.病院が新舎に移っており,昔の入り口から,旧舎内の臨時の誘導路を通ってたどり着いた.耳鼻科は月,木,金の午前(9:00-11:30)が受付.待ち時間に「武士の家計簿」を読む.
  • お昼.乾麺
    • たまたま goo の占いという欄が目に入った.占いなぞに興味はないが,しかし「欲しい情報が得られそう。信頼できる人に尋ねてみて。」とある.これって占いなのかね.
    • 16:30 - 20:00 会議(将来構想)
      • 会議後,S氏,H氏,T氏らと研究室で相談.
  • 定時より遅れて帰宅,遅れて就寝

_ 2008年 2月 6日(水) 曇

  • 06:00 起床
    • 07:20 研究室着(整頓)
  • 午前
    • 最近,RとJavaのインターフェイスを実現するCプログラムをコンパイルしようとすると,以下のようなエラーに遭遇する.
       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’

どうもコードに問題があるらしい.コードを直さにゃ通らんか...

  • SJava_0.69-0.tar.gzをコンパイルするために苦労して,その後 JavaからRを呼ぶにはJRI_0.2-4.tar.gzも使えるようだとおもって,こちらをコンパイルしようとしてるのだが.ちなみに同じことをFedoraで試してみると,こちらではRのヘッダファイルが読み込めないというエラーが出た.変だな.LD_INCLUDE_PATHなどに加えて,R_INCLUDE_DIR, R_SHARE_DIR,R_DOC_DIRもセットしたのだが...
    • 試行錯誤の末,FedoraではLD_INCLUDE_PATHではなく,
export C_INCLUDE_PATH=/usr/local/lib64/R/include

でヘッダファイルへのパスが通った.

  • さてさて,コードを直すのも面倒だなと思って,さらに良く調べると,JRIは,rJavaにすでに含まれており,わざわざコンパイルする必要がない...
  • いずれにせよ,libR.soがなかったようなので,Rをshare library オプション付きで再コンパイルすることにした.
  • R-2.6.0 のディレクトリで
    make distclean
    を実行する.これは

    This removes any existing libraries which may not be recompiled to link against libR.so.

    だそうな. 次にR-2.6.1を以下のようにコンパイルする.
    $ ./configure --enable-R-shlib
    $ make 
    $sudo make install
    Rの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をもう一度コンパイルとインストール.やれやれ.
  • さてここでJRI/examples にあった rtest.javaをコンパイルしようとすると
    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)]
    と,まあ,実行された.修正ファイルはfilertest.javaここ.
  • 午後.ヨーグルト.カロリーメイトチョコ.
    • LeeのBayesian Statistics第3版が届いた.2版は読んだことがあるが,とにかく誤植が多くて閉口だった.第3版はRのコードが付記されているらしいのだが.
    • 去年の早い段階で生協に発注し,その後,たびたび継続してきたInference and Disputed Authorship も同じく届いた.中を見ると,前書きと目次だけで38ページもある.
    • Alebert の LearnBayes?パッケージには Dirichlet 分布の関数が実装されていた.
  • 定時帰宅,定時就寝

_ 2008年 2月 5日(火) 晴

  • 06:00 起床
    • 07:20 研究室着
  • 午前
    • linux-headers-2.6.22.-14へのアップデートあり
    • Mainichi Daily News 1998-1999 (12.9 MB) をダウンロード
    • 時系列分析の要点をまとめる.Crawleyを引っ張り出す.
    • T大のY先生よりご著書を賜る.とても面白そうな本でうれしい.
  • 午後.工学部でカレー300円.試験期間中でもあり,周りに顔見知りの学生がたくさんいて,落ち着かん.
    • そろそろ花粉症の薬を貰いに行かなければならないもよう.
    • ベイズの要約を続ける.授業で取り上げられるのは,いつのことになるやら.
    • R であるリストから特定の要素だけを抽出し,抽出したベクトルをまとめて別のリストにまとめようという処理を次のように書いたが,ループなど使わない,もっと賢い方法がありそうな気がする.
      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)]
    • iGoogleなど使い出したけど,これをフルに使うと,OSとブラウザさえあれば,他のソフトは一切必要なさそう...フツーには.あと,RとTeXとEmacsがシームレスに使えればね.
    • 帰り際,近くの研究室の留学生から,アンケート結果の集計結果について「統計的検定」を行う方法を尋ねられた.しかし,いろいろお話をうかがっても分析意図やアンケート内容が良く分からず,ご本人はさかんに「エックス二乗検定」(「カイ二乗検定」のことらしい)をやりたいとおっしゃるのだが,どう説明してあげるべきか,少々弱った.一応,こうしたらどうかと意見は述べたけど,伝わっただろうか?
  • 定時帰宅.クローズアップ現代でソフトウェアのバグについての話題を取り上げていた.定時就寝.

_ 2008年 2月 4日(月) 晴

  • 06:00 起床
    • 昨日あれだけ飲んだのだが,別に何ともない...
    • 07:20 研究室着 (整頓)
  • 午前
    • Yahooにこういうテキスト解析サービスがある.
    • NTCIR Test Collection のデータコレクションNTCIR-3 CLIR: Topics and Relevance Judgments (17.2 MB)をダウンロード.
    • CaboCha がUTF-8に対応したという情報があったので,さっそくインストールしてみた.拡張子が bz2 となっている圧縮ファイルの解凍方法をすぐ忘れてしまう.
      bzip2 -cd cabocha-0.60pre2.tar.bz2 | tar xf -
      • configure は通ったが,make が通らない.CRF++: Yet Another CRF toolkitが必要なもよう.configureの際,意味なさそうだが, UTF8オプションをつけてみた.configureファイルを確認すると,実際,意味なし.
        ./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
        いい模様.
  • 午後.乾麺
    • CaboChaのCインターフェイスを試してみる.
    • CaboCha? Java をキーワードにGoogleしていたら,Swigなるものを見つけた.Swigについてはここのサイトなど参考になる.
    • Rでこういう初期化方法もあるのか.Albert Bayes p.48
      > summ2 <- c()
      > summ2
      NULL
    • ある方が作成したRによる統計関連のpdfファイルを見ていたら,Rで作成されたeps画像内のHelveticaフォントを表示できない.Adobe Reader 8「Helvetica」フォントを検出または作成できません.というエラーが出るようになった.先週ぐらいまでは何の問題もなかったはずなので,この間のUbuntuアップデートによる影響なのか?やれやれ,これは去年まで使っていたFedoraで,自分が作成したpdfでも頻出した現象である.作る側の対処は分かっているのだが.
      • いったん右クリックして,別のビューアーで開いた後,ダブルクリックしてAdobe Reader 8で開いたら,ちゃんとHelveticaを表示するようになった.わけが分からん.この Reader関連のファイルはここにあるようだが.
        /opt/Adobe/Reader8/
  • 定時帰宅,定時就寝

_ 2008年 2月 3日(日) 曇

  • 06:00 起床
  • 午後
    • 自宅のUbuntuにwineとR2WinBUGSをインストール.
    • 昼から寝るまで,ちびちびとやっていたら一升まるまる空けてしまった模様.
  • 定時就寝

_ 2008年 2月 2日(土) 曇

  • 06:00 起床
    • 07:20 研究室着 (整頓)
  • 午前
  • 午後.乾麺.ヨーグルト.
    • 例によってベイズ.
  • 整頓して定時帰宅、2合のんで定時就寝

_ 2008年 2月 1日(金) 曇

  • 06:00 起床
    • 07:20 研究室着 (整頓)
  • 午前
    • 充電.
    • Bayes 関連の調べ物.
    • 授業用にVBでHashtableを作成.
    • 黒マックにFinkをインストール sudo でClosest URLを使うよう指定した.
  • 午後.来客と外食.
    • 東京から電話.
    • 16:20-18:40 ゼミ.
  • 定時帰宅,4合ばかりのんで定時就寝.『算法少女』を一気に読んだ.