2010-06-21 PLDAとHadoop

NLP.app

Yi Wang, Hongjie Bai, Matt Stanton, Wen-Yen Chen and Edward Y. Chang.
PLDA: Parallel latent Dirichlet allocation for large-scale applications.
In Proc. of the Fifth International Conference on Algorithmic Aspects in Information and Management (AAIM 2009), pages 301-314. 2009.

をshuhei-kさんが紹介. 内容はシンプルでLDAを並列で処理するという話. MPI使った方法とMapReduce使った方法と2つについて書いてあったが, 超大規模にしなければ,実用上はそこまで大差ないみたい.

去年トピックモデルについて一通り勉強したおかげて, 今日の話は割とすんなりと理解できた. 去年の今頃と比べたら飛躍的な進歩で,これは,自分でも褒めても良いと思う. しかーし,これでカンペキかと言えば全くそんなことないので, さらなる高みを目指してがんばるよ!

はじめてのHadoop

はじめてHadoopをさわってみる. 今まで勉強会でHadoopの話を聞いてはいたものの, やっぱ自分で触ってみないと,よく分からないね. 能動的に動くって大切だなぁ.

さて,触って見たところ,改造自体は超簡単. しかし久々にJavaを触って, プロトタイプ宣言やデフォルト引数が無かったり色々と勝手が違って戸惑った. やっぱ他の言語メインで触ってたら,鈍るよなー. 前まではJavaは結構好きだったんだけど,今はC++の方が馴染んでいるかも.

最初の一歩

何から手をつけていいか分からない人も多いかと思うので(自分がそうだった), コマンドをはっておく. なおhadoopはインストール済みで,適当な作業用ディレクトリを作成

  • cloud9の利用
wget http://www.umiacs.umd.edu/~jimmylin/dist/cloud9-r0.2.tar.gz
tar xf cloud9-r0.2.tar.gz
cd umd-hadoop-core
rm -r hadoop ←インストール済みの場合はHADOOP_HOMEに対してシンボリックリンクをはってやればよい
ln -s /usr/lib/hadoop ./hadoop
vi build.xml
   パスを修正
   <!-- <fileset dir="hadoop/hadoop-0.20.1">  -->
   <fileset dir="hadoop">
ant
gunzip ./data/bible+shakes.nopunc.gz
hadoop dfs -mkdir /user/yuta-h
hadoop dfs -put ./data/bible+shakes.nopunc /user/yuta-h
hadoop jar cloud9.jar edu.umd.cloud9.demo.DemoWordCount /user/yuta-h/bible+shakes.nopunc demo 5 1
  • デモの改造
cd src/dist/edu/umd/cloud9/
mkdir my
cp ./demo/DemoWordCount.java my/InvertedIndexing.java
vi my/InvertedIndexing.java
 適当にいじる.
  「package」を「edu.umd.cloud9.my」に
   class名をInvertedIndexingに
   などなど...
cd ../../../../../
ant
hadoop jar cloud9.jar edu.umd.cloud9.my.InvertedIndexing /user/yuta-h/bible+shakes.nopunc demo 5 1

後処理

やったのは,転地インデックス作った後のデータに対して検索かけるという課題なんだけど, 色々とJava特有の文法とかに惑わされたりで, 集計後の後処理プログラムを書くのに数時間かかってしまった.. (30分くらいでサクッと書けたらカコイイね〜)

行数で言えば200行ちょい. 式解釈も,電卓を作った経験があれば,そこまで難しくない. 凡庸なアルゴリズムでの実装だけど,まぁ動いたから,これで良しとしよう, 後日どこかにUPします.

本日のツッコミ
こな (2010-06-22 [Tue] 20:04)

おおー。hadoopずっと試してみたかったんでこれを機会に閲覧しながら、試してみようと思います!

shirayu (2010-06-24 [Thu] 21:39)

最初動かすまでちょっと難しいけど,
意外と,触ってみると簡単なのでぜひ〜!