未踏の中間合宿を終えて、ちょっと中だるみ状態である。
自分の仕事の先が見えてきたというか、もうこれぐらいでいいかなと感じて
きたか。技術的な困難な点は、あと1点のみ。
フレームを使ったエキスパートシステムの構築である。
HTMLを読み取って、それがどんなページであるかを判断して、どこに入力す
るべき要素があり、どこに出力するべき要素があるかを判断するプログラム
である。
入力するべき部分は、2種類。
(1) Formタグの中のInputの項目
(2) URIのパスが既に商品番号などである場合が多いので、パス
出力する可能性のあるところは判断するところが難しいが、Webページの本
文か、一覧(リスト)であることが多い。メニュー部分だったらメニューそ
のものとなる。
一覧は、タグが使われていれば話が早いがテーブルで構成されているか
もしれない。本文だって何が本文かは人が見ればすぐわかるが、HTMLのコー
ドを覗き込んでどれだっていうのは難しい。
いずれも判断は100%とはいかないだろう。
そしてそのWebページが、どんな種類のページあるかを判断するのは、上記
のように入力要素があるか、本文が大半を占めるか、リストがあるかによ
る。逆に入力要素があれば、ログイン画面か入力画面、リストがあれば一覧
画面、本文があれば詳細記事というように判断できる。
これらの判断をするために、HTMLのDOM構造が入力データとなり、プログラ
ム中にifという条件文が100以上積み上げられるようになる。たくさんの条
件分岐があると人間はそれが正しいかどうかデバッグが大変になる。そこ
で、ルールエンジン(プロダクションシステム)という条件文を扱いやすく
したプログラミング言語が出てくるのである。
これによって構築されたプログラムを、エキスパートシステムという。
私も修士論文のときに、if文が数十個ぐらいのものに相当するものを作っ
た。わけがわからなくなる直前だったが、、、
これからHTML解析のためのエキスパートシステムを構築して、スクレイピン
グに役立てようと思うが、、、あと1ヶ月。間に合うかな。。。
ただ人間が理解できるぐらいのif文の塊ではあまり意味がない。
我々が理解できなくなるぐらいのif文となって、予想外の答えであるが、結
果として私たちが予想したものよりも正しい解答だったとわかって、初めて
価値がある。
ちなみに10年ちょっと前の修士論文のときは、CLIPSというLISPライクなも
のを使った。今でも細々と開発していることがわかってうれしい。Javaでは
CLIPS互換から発展中のJess、私の未踏プロジェクトではRubyで開発してく
れているRulebyというのを使う予定だ。
CLIPS http://www.ghg.net/clips/CLIPS.html
Jess http://www.jessrules.com/
Ruleby http://ruleby.org/
他にもいろいろあるけれど、JBossに吸収されたDroolsが有名かな、って誰もしらないよ。
しかしずっと人工知能にこだわっているなぁ。。。。これがやりたいがために未踏に応募したのだが間に合うかなぁ偶然ではるが、畑PMが社長を勤めておられるサイボウズラボの中谷さんもWebの本文抽出というプログラムも書かれている。
http://labs.cybozu.co.jp/blog/nakatani/2007/09/web_1.html