ただの日記

形態素解析プログラムをJavaに移植してみた

MySQLに登録したなろうのテキストを読み込んでmecabに突っ込んでいくrubyのプログラムを作っていた。

しかしどうにも遅いので、業を煮やしてJavaに移植。

そしたら同じ分量をmecabで分解してハッシュに蓄えても速度が5倍になった。

Java速いなー

しかし、その分コードとか妙に増えた。

rubyならハッシュへの足し算なんて

 

hash[“hoge”]=hash[”hoge”].to_i + 1

ですむけど、Javaだと

 

Integer i = hash.get(x);

if(i==null){
  i = new Integer(1);
  hash.put(x,i);
}else{
  hash.put(x, new Integer(i.intValue()+1));
}

とかになっちゃうから、簡単に行数が増える。

めんどいけど、Javaは厳密性が求められるので仕方がない・・・

 

しかしそれでも全テキストを処理しようとすると何時間かかるんだかわからないレベル。

やっぱり多すぎるよ、このテキスト量。

さらにマルチスレッド化して高速化しないと実用的にならんかも。

 

捨てたものはいらない部品。

体重は64.5kg

なろうの分析を掲載した

といっても文字数だけだけど。

とにかく掲載しました。

ここから形態素分解とかやっていくつもりだけど、いろいろエラーが出て苦戦中。

最初は動くんだけど、どこかでmecabがこけたり想定外のデータでRubyがこけたり……

数値データならまだしも文字データとなると、不正な文字や長過ぎる文章などあらゆる想定外の部分でエラーが発生してなかなか進まない。

さらにmecabよりもmecabの出力を読んでいるだけのrubyのほうが重かったりして、javaに乗り換えようかと考え中。

rubyはものすごく開発しやすいんだけど、速度はどうもね……

トレードオフだからしかたないんだけど、どうしようか……

 

それからこの土日、なんかだるくて家でゴロゴロしていたので無駄にkindleで本呼んだ。

「地底旅行」

「宇宙戦争」

「月世界へ行く」

この時代にこれを書いたと思うとすごいけど、もうちょっとキャラクター要素があったほうが楽しかった。

異星人の超絶テクノロジーをもっと描くならそれでおもしろいけど、それ以外の場合はキャラクター要素があったほうが楽しいと個人的には思う。

地質を熱く語られても、やっぱり個人的にはピンと来ないのでねぇ……

 

ちなみにだるいのはどうやらまた鉄不足だった模様。

亜鉛を飲み過ぎたか、それともコーヒーゼリー程度のカフェインでくらっちゃったのか不明。

どっちにしろ、鉄分補給します。

 

それから昨日ビデオカードを買ったわけだけど、今日はCPUも落札した。

少し前まではデスクトップで文章書くだけだったからいいけど、プログラム作って走らせるようになると2コアじゃ動作が緩慢でストレスが溜まる。

というころで、i7 2600を落札しました。

 

捨てたものは講義資料。

この感じじゃ講義資料をポツポツ捨てていくだけで1年ぐらいかかったりしてな。

体重は64.8kg

ビデオカードを落札した

やっぱりGPGPUがやりたいので、HD5770に見切りをつけてもうちょっと新しい世代のビデオカードを買うことにした。

そして昨日からずーっと探していたわけだが、多すぎて決まらなかった次第。

なんとなく予算1万円ぐらいということにしてRadeon R7 260XとかGeforce 750Tiとかそのあたりを狙うことにした。

とはいえ、実際にはメルカリやヤフオクにあるビデオカードをかたっぱしからTDPや性能を調べまくっていて相当な時間と手間を浪費したことは全く否定出来ない。

というか浪費しまくった。

 

結局、ヤフオクで750Tiを落札した。

送料入れたら11,000円ぐらいになりそうな金額・・・

なんか新品でも同じなんじゃないかというような価格に・・・

いたた・・・

まぁ、なにはともあれ、これでGPGPUで遊べるようになるでしょう・・・多分・・・

 

捨てたものは古い書類。

体重は64.8kg

JavaCLを使おうとした

なんとかGPGPUをやりたいともう一あがき。

aparapiがだめなら別のライブラリだ!とJavaCLというものに手を出してみた。

これがまたドキュメントがない。

日本語はもちろん、英語でも出てくるページの少ないこと。

mavenとかgitとか使ったことがないツールを入れて、古いドキュメントに騙されならが格闘すること数時間。

結局公式ページに二行書いてあったコマンドを実行するだけだったのだけれど、そこにたどりつくまで右往左往しまくった。

そしていざ実行してみると、エラー・・・・

どうもmavenくんが依存関係は解決してコンパイルとかはいったみたいなんだけど、実行できてない臭い。

おい!

 

やっぱりHD5770のopenclは怪しい。

ArrayFireですら挙動が怪しいし、フリーのOPENCLベンチもPCごとフリーズした。

CompuBenchみたいな手間がかかってそうなものは動くので、きっとこういう製品はうまくバグ回避しているんだろう。

そもそもメーカーサイトにOpenCL 1.0って書いてあるのに、入っているドライバは1.2。

ハードが対応していないと思うんだが、ドライバだけ1.2にしても成立するものなのだろうか……

やっぱり怪しい。

 

ということでやっぱりGPUを買い直したいんだけど、ヤフオク見ても比較サイト見ても品種がありすぎて困る。

10個ぐらいから選ぶなら簡単なんだけど、何十種類もあるからどう選んでいいかわからなくなる。

CompuBenchとOpenCLパフォーマンスと価格とTDPをみて比較してわけがわからなくなっている。

う~・・・もうエイヤで買っちゃうしかないな。

実際OpenCLさえ動いてさえくれれば2-3倍の速度差はきっと大きな問題じゃない。

とにかく動いてくれ!

 

今日捨てたものは講義資料。

体重は64.5kg。

GPGPUがやりたい

やっぱりGPGPUで遊びたいけど、Radeon HD5770はおかしくなったりフリーズしたりする………

どうも調べたところjava aparapiはOPEN CL 1.1以上が必要なようだけど、HD5770はOPEN CL1.0な雰囲気。

それじゃフリーズするさ……

 

しかしこのPCはceleron g1610というしょぼいCPUが乗っていて、そこにもGPUが載っている。

このGPUもOpen CL対応みたいなことがどこかに書いてあるので、これでいけるかも!とintelのOPEN CL DSKを入れてみる。

が、なんかだめ。

intelのツールはGPUを検知しているようだけど、GPGPUなベンチマークソフトとかではintelのGPGPUを検知していない。

グラフィック出力していない状態だと駄目なのかもしれない。

ということで、GPGPUをやりたくてもできなくてもやもやしている状態。

 

g1610よりましなCPUとGPGPUが出来るGPUを揃えるという意味でAMDのAPUに移行することも考えたけど、いまは次のZenが発表されているところで時期が悪い。

どうせ買うなら新しいコアの方がいい。

それに調べたところ、APUのA10-7850Kとか上位機種でもGPUはそれなりな様子。

CPU内臓だけどすごいということなので、今のRadeon HD5770相当ぐらいはあるのかと思ったけど、バイオ6のベンチを見るに半分ぐらいの性能な様子。

まぁ、普通のPCメモリをCPUと共有しているし、使える電力が限られるので当たり前といえば当たり前だけど、やっぱりがっかり。

APUはCPUとGPUのメモリ空間が一貫していて、メモリコピーが必要なくなるのでGPGPUのパフォーマンスがでやすいというような記事を読んで期待したのだけれど。

ロスが少なくても性能がイマイチではちょっとねぇ。

ということで、GPGPUができるグラボを買おう。

それぐらいの贅沢はいいだろう。

 

今日の一日一新はceleronでGPGPUをやろうともがいたことで……

余裕ないので大きな一日一新は出来ないなー。

 

今日捨てたものは研究室にいた時の資料。

体重は64.5kg。

クレジットカード解約した

全然使わないアメックスカードを解約した。

西友で5の付く日に買い物すれば割引になるけれど、実際にはそんなに西友に行かない。

ということで使いみちがなくて持て余していて、さらにつかわないと年会費がとられるらしいというので、いい厄介払いである。

考えてみれば意図的にクレジットカードを解約したのは初めてかも。

大学の生協で作ったカードはたしか解約しないといけなかったから解約しただけのはず。

 

ということで今日捨てたものはクレジットカードと付属のETCカード。

体重は64.5kg。

昼休みに警察に落し物の電話

をしてみた。

今日はちゃんと担当が居たので普通にことが運びました。

着払いで送ってくれるらしいけど、そのまえに書類記入が必要とのこと。

どうやら、書類が先に送られてきてそれを返送してから物が来るらしい。

なんだかまどろっこしいねぇ。

 

捨てたものは講義資料。

体重は64.8kg。

落し物のことで警察に電話してみた

この前の出張の際に新幹線の中で小物いれを落としたらしい。

その中に入っていた図書カードから図書館に連絡が行き、図書館から電話が我が家にやってきた。

てっきり届いたのかと思って図書館に赴くと、金沢の警察に連絡してくれとのこと。

なんだ、ただ図書館が連絡の中継ぎをしただけだったのか・・・

それなら直接行かないで電話でも良かったなぁ

まぁ、大したことでもないんでいいんだけど。

 

そして金沢の警察に電話したら今日は落し物係がお休みだという。

また明日とかに電話するか・・・

大したものは入っていなかったけど、かえってくるならそれに越したことはない。

しかし、どうやって帰ってくるのだろうか。

着払い?

まさか金沢まで取りに来いとか言わないよな・・・

 

それからまた腹くだした・・・

こんどはココナッツミルク飲料な気がする。

前は大丈夫だった気がするけど・・・まぁ、胃が弱っている時に飲んじゃダメってことだろうか。

 

あとここのところ、レッツノートのパームレストが熱くてやばいんですけど。

手がやけどしている気がする。

うーん、ノートPCのクーラー買わなきゃダメかね・・・

 

捨てたものは封筒類。

捨てたというより家族共有の方へ移動。自分使わないし。

体重は64.7kg

うーん、減量全然してないわー

普通に食べたいだけ食べてるからな~

そろそろ量を少し減らすか・・・

EC2の計算能力を活用してみた

昨日夕方から頭痛で日記どころじゃなかったので遅れて日記。

原因は分かっている。

金曜日にストレスマッハでやばかったのでビタミンCを飲んだ時に、いくらなんでも飲み過ぎた。

あかん。

なにごとも限度というものをわきまえなければ。

ビタミンCを摂り過ぎるとお腹がゆるくなり、お腹がゆるくなるとなんか変な筋肉を使うようで首筋とかが激しく疲労する。

そして頭痛。

あ~・・・ひどかった・・・

 

頭痛寸前の時につくったNBODYっぽい計算をしてGUIに表示するJavaプログラム。

これが遅い遅い。

数にもよるけど画面の更新に数秒かかる。

そこでなかの処理をスレッドにしてマルチコア対応にして、EC2のm4.x4largeで実行。

そしたら十倍ぐらい速くて16コアの威力を実感した。

いや~いいわこれ。

こういう使い方はちょこちょこしていこうと思う。

 

捨てたものは缶バッジのサンプル。

体重は64.2kg。