パスワードを忘れた? アカウント作成
7091213 journal
Perl

bluecrowの日記: 【研究】Wikipediaをコーパスとした全自動テキスト分類【成果物】

日記 by bluecrow

 Wikipediaのオリジナル(XML形式で配布されている)をコーパスに用いて、なるべく簡単にテキスト自動分類を行う。
この研究に技術的に真新しいことは何も出てこない。この研究の意義は再現性であり、追試性であり、実用性である。実装コストの低さである。
 まずWikipedia(XML)をテキストファイルに落とし込む。この際、ブラケットに囲まれたリンク情報を除く装飾情報および添付ファイルは削除しておく。
 次にWikipediaの約100件のカテゴリに対応する起点ページからリンクを2回まで辿ることで、そのカテゴリに属するページの集合(クラスタ)を取り出す。
このページ集合を元に、インデックスを作り、ページを形態素解析エンジンMeCabで分かち書きする。
 そして、前述の処理で作られたインデックスと分かち書きされたファイルを元に、ナイーブベイズアルゴリズム(Algorithm::NaiveBayes)によって
各記事のカテゴリを学習し、記録する。
 結果として、引数で与えたテキストは自動的にカテゴリに分類される。そこに人手は介在しておらず、それゆえにこのシステムは
Wikipediaコーパスに基づくテキスト自動分類システムとして位置付けられるであろう。
(以下略)

 20130120_bayes8.zip (11KB)

更新履歴
2013/01/20
  -c オプションでbayes.dbファイルを削除、再作成するように変更
  -b オプションでカテゴリファイルを指定可能に変更

6524754 journal
人工知能

bluecrowの日記: 大規模視覚認識チャレンジ(LSVRC 2012)でニューラルネットが圧勝

日記 by bluecrow

誰もタレコんでいないようなので、Large Scale Visual Recognition Challenge 2012でニューラルネットが圧勝した件について。
画像分類コンテストで圧勝したニューラルネットのスライドが公開された。
http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf
まとめや他チームのスライドもみれる。
http://www.image-net.org/challenges/LSVRC/2012/#workshop
古い知識しか持ち合わせていないタレコミ子としては、シグモイド関数を否定しmax関数を採用するなど、優勝チームの取った戦略を興味深く見ている。ニューラルネットの世界では「大規模ニューラルネットのブレークスルー: Deep Learning」 http://besom1.blog85.fc2.com/blog-entry-97.html など、密かなブレイクスルーが起きており、再び機械学習の最先端に躍り出た恰好だ。
タレコミ子より進んだ知識をお持ちの/.erは、このスライドのどんな点に注目するのだろうか。

2853862 journal
Java

bluecrowの日記: JunkUtil 1.1.0 の新規リリース

日記 by bluecrow

おめでとう! JunkUtil は記念すべきバージョン1.1.0のリリースを迎えました。

これは懸念事項となっていた、crypt パッケージのインターフェースの変更に伴うものです。
後方互換性を重視してきた JunkUtil にとって、この変更は一定の痛みを伴うものですが、いずれ避けては通れない道でもありました。

リリースの間隔がしばらく空いてしまいましたが、今後も JunkUtil は最も怠惰なJavaライブラリであるべく、リリースを続けてゆく所存です。
よろしくお願いいたします。

2012/04/29 1.1.0
・FileUtil#readFileを改善。
・MD5およびDESクラスをstaticメソッド化。Stringではなくbyte[]を返すように変更。
・上記インターフェースの更新に伴い、1.1.0とする。

793029 journal
Java

bluecrowの日記: JunkUtil開発の経緯について

日記 by bluecrow

自分の長年のJavaプログラミングで多くの障害になってきたのは、とにもかくにもライブラリの不足であった。PerlやPHPなら、そこにあって当然のクラスが、メソッドが、全く用意されていないという問題であった。

通称Commons(旧Jakarta Commons、現Apache Commons)の登場で、その状況は好転に向かったかに思えたが、俺の視点から見れば、それは五十歩百歩であった。ほとんどのライブラリはベータバージョンで開発が停止しており、ドキュメントの量と和訳は不十分であり、それらの詳しい使い方を包括的に解説したサイトは一向に現れなかった。
結局、その都度英語を読み、ライブラリの使い方に習熟せねばならないというのが、それが嫌なら、車輪の再発明(無駄な努力)をせねばならないというのが、Javaプログラマの悲しい現実であった。

俺には、JavaでCatを実装するのに、Grepを実装するのに、なぜあれほどぐちゃぐちゃしたコードが必要とされるのかが分からなかった。OOPLであるということは、煩雑さを許容するということなのだろうか。俺は「それは違う」と思う。少なくとも、Javaプログラマはgrepもどきを以下のようにシンプルに書くことが許されて然るべきだ。

List lines = FileUtil.readLines("readFile.txt"); //行の全読み込み
DataDumper.dumpList(System.out, new LzList(lines).grep("^B").list()); //Bで始まる行のダンプ

(これは一見無意味なプログラムだが、巨大なバッチファイルの一部だけを取り出して処理するためには、どうせこれと似たような処理が必要になる)

そうして、数年の月日が流れた。若かった俺は、世界(にいるであろう自分より優秀な人間)を信じて待った。きっとどこかの誰かが、俺の満足のいく完璧なライブラリを公開するだろうと。
実際、Apache CommonsやGoogleはそういう種類のライブラリを公開したかもしれない。しかしそれはやはり根本的に不完全で、俺が思っていた「簡単さ」を実現するものではなかった。上記のようなコードを書くことはできなかった。特にListとMapについては、まともな実装は皆無に近かった。

ファイルを一気読みしてListに格納するメソッドは現れなかった。
PerlのOptGetsのJava版は現れなかった。
PerlのConfigのJava版は現れなかった。
PerlのData::DumperのJava版は現れなかった。
ListやMapを集合論的に処理するライブラリは(それはサーブレットのパラメータを処理するための基礎となる)現れなかった。
俺の欲しいものは、結局誰も与えてくれなかった。

もう一度言おう。PerlのモジュールやPHPの関数のような、あるいはワンライナのような、それを呼べばたちまち仕事が終わる類のライブラリは、Javaには存在しない。
それはJavaがJavaらしくあるために必要なことだったが、現実にコードを書くプログラマの観点から見れば、単なる悪夢でしかなく。スクリプト言語の簡単さは常に羨望の的であった。

Javaはそれでも使われ、書かれた。ServletとJSPは、あるいはXMLは、Strutsという巨大で不気味なフレームワークと拡張タグに支配され、本来は不要であるはずのぐちゃぐちゃしたコードと記述で荒廃していた。
GUIアプリケーションはJFrameにメニューとショートカット・キーをつけるのもままならず、画面にはボタンが溢れていた。業務アプリでは未だにCSVの読み込みとExcelの出力(素のPOIは使いづらい)に苦労していた。

業務アプリの世界では、JavaはCOBOLの置き換えに使われた。無数のバッチが書かれ、無数のWEB帳票が書かれた。デファクトスタンダード。しかしだからどうだというのだろう。Javaは依然として小回りの利かない言語であり続けた。俺は苛立った。

統失という病気になり、俺は仕事のかわりに時間を手に入れた。労働はもはや難しかった。俺は膨大な余暇を、何かで埋め合わせなければならなかった。その時間を、オープンソースに割くことは妥当なことに思われた。なぜなら、相応に年を取った俺は、世界を信じて待つことの無意味さを理解していたからである。
俺はまずなによりも、自分のために、Javaを「簡単にする」ためのコードを書くことにした。

オーケー。分かっている。JunkUtil(ジャンク・ユーティリティ)は始まったばかりのプロジェクトだ。まだ機能は洗練されておらず、まだきっと多くのクラスとメソッドを追加する余地がある。俺の掲げる理想には程遠く、未来の行先は不透明だ。

だがこのプロジェクトは既に開始された。もう後戻りはできない。その名の通りJunk(ゴミ屑)と呼ばれても、車輪の再発明と呼ばれても、かまわない。俺はJavaを少しでも「簡単」にするために、その膨大な時間を投資しようと決めたのだ。

http://osdn.jp/projects/junkutil/

434973 journal
Java

bluecrowの日記: 【Java】JunkUtil公開【ライブラリ】

日記 by bluecrow

地元で就職できなくて暇なので、JunkUtilというプロジェクトを始めました。

http://www.arkhamsoft.jp/junkutil/

現状、以下が主なクラスです。

junkutil.common

 StringUtil……標準のStringクラスに不足している機能の補完
 FileUtil……ファイルの内容をListやStringで取得、書き出し
 NullUtil……各種nvl関数
 OptGets……引数の解析(バッチプログラムを作る際に効果的)
 DataDumper……なんでも見やすくダンプ表示(デバッグに効果的)
 Config……Iniファイルの読み込み(自動エンコード判別機能つき)

junkutil.set

 LzList、LzMap……orやand、setやmargeなど、パワフルな操作が可能に

junkutil.excel

 CSV……MS-CSV、TSVを解析
 ExcelUtil……Excelの読み書き

junkutil.gui

 LzLookAndFeel……外観を簡単に変えられるクラス
 LzMenu……メニューとアクションを手軽に関連付けできるようにしたクラス
 LzCallBack……LzMenuと共に使えるコールバック
 LzFrame, LzDialog……Escキーでのクローズに対応したクラス

typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...