Toby Segaran インタビュー @YouTube O'ReillyMedia (2008)

集合知プログラミング
Programming Collective Intelligence: Building Smart Web 2.0 Applications



Toby Segaran: MIT に入るために、17歳のときにニュージーランドから来ました。卒業後、バイオ関係のソフトウェア会社を始めました。

Interviewer: ほう、会社を始めたんですか。

T: ええ、ノースカロライナで 3年ほどやりました。買収されてボストンに戻り、そこでさらに4年ほど働きました。その間に、この本を書きました。その後、サンフランシスコに行くことにしました。ずっと住んでみたかったんです。

I: そのバイオテクノロジーの会社はどんなことをやっていたんですか? どんな技術を開発していました? あるいは、何を中心にしていましたか?

T: ネットワークシミュレーションです。製薬会社の人がやってきて、時系列に見れるやつです。それで私たちが言うんです。たんぱく質の相互作用構造によると、こういうことが起きていると考えられます。目の前で見ている現象を引き起こした根本原因は、これであると思われます、と。

I: すごいですね。大学で生物学を学んだんですか? それとも独学ですか?

in

ci-bayes - ベイジアンフィルターの Java 実装

Toby Segaran の Programming Collective Intelligenct のベイジアン分類器を Java で実装した ci-bayes というプロジェクトが java.net に公開されていた。
https://ci-bayes.dev.java.net/

使い方は簡単。
FisherClassifier fc=new FisherClassifierImpl();
fc.train("The quick brown fox jumps over the lazy dog's tail","good");
fc.train("Make money fast!", "bad");
String classification=fc.getClassification("money"); // should be "bad"

日本語の場合は、文章を単語に切り分ける処理であるWordListerの実装をデフォルトのものから変更する必要がある。

Hadoop本が O'Reilly の Rough Cuts に登場

Apache Hadoop の本が Safari のドラフト版書籍 Rough Cuts に登場した。Hadoop は、Google が crawler のインデックス作成に用いている大量データシステム基盤、Google File System (GFS) と MapReduce のオープンソース実装で、現在は Yahoo! のインデックス作成にも使われている。
http://safari.oreilly.com/9780596521974

yooreeka - Algorithms of the Intelligent Web のソースコードが Google Code に

Algorithms of the Intelligent Web のソースコードが、LGPG のライブラリとして Google Code に登場した。yooreeka はユーレカと発音してよいのだろう。英語の eureka のスペルをいじったもので、元はギリシア語。日本語では「我、発見せり」と訳される。データの山から集合知を引き出すライブラリとして、いい名前だ。

『集合知プログラミング』のR実装

Rも相性がいいですね。
http://d.hatena.ne.jp/mrkn/20080725/collective_intelligence_in_gnu_r

R や SQL のように、データの集合に対して同じ演算を一括して実行するような記述ができる言語は、協調フィルタリングを簡潔に書ける。より正確には、繰り返し処理を書かないで済む。

とはいえ、『集合知プログラミング』で使われている Python の list comprehension もきれい。オブジェクト指向言語なら、"Collective Intelligence in Action" で示されているように、データそのものに演算を定義することによっても、読みやすいコードになる。

協調フィルタリングは同じ演算を均一に行うけど、他のデータマイニング手法、例えば k-means clustering などは、条件による処理の分岐が欠かせないし、繰り返し処理も書くことになるだろう。

in

『集合知プログラミング』の Ruby 実装

本を読みながら、『集合知プログラミング』の Pythonコードを Ruby に移植している人がいた。
http://www.thoughtstoblog.com/articles/2008/09/10/programming-collective-intelligence

コードはこちら
http://github.com/whoisjake/collective_intelligence_rb/tree/master

Yahoo! Search BOSS

Web全体をインデックス化して独自のサーチエンジンを作るには、数百億円かかるらしい。Yahoo! が公開した BOSS (Build Your Own Search Service) の API を使うと、資金力のない企業にも、アイデア勝負で独自の検索エンジンが作れる。

Yahoo! Search BOSS は、Yahoo! が莫大な資金を投入して作成した検索インデックス、検索機能を API を通じて公開するもの。Yahoo! Search API との違いは、クエリの数に制限が無いこと、検索結果の表示方法に自由があること、など。

クエリの数に制限が無いといっても、bot による大量データ取得などの、Yahoo! が意図しない利用に対しては、規約上、Yahoo! は制限することができる。

こんなサービスを無料で提供して、Yahoo! は何で儲けるのかというと、もちろん広告。

8. FEES AND PAYMENT

ratproxy のインストール (cygwin)

Google が公開した、Webアプリの脆弱性検査ツール ratproxy をインストールした。

1. ratproxy をダウンロードする。ここでは、1.51 をダウンロードした。

2. make する。

$ make
cc ratproxy.c -o ratproxy  -Wall -O3 -Wno-pointer-sign -D_GNU_SOURCE http.c mime.c ssl.c -lcrypto -lssl
cc1: error: unrecognized command line option "-Wno-pointer-sign"
cc1: error: unrecognized command line option "-Wno-pointer-sign"
cc1: error: unrecognized command line option "-Wno-pointer-sign"
cc1: error: unrecognized command line option "-Wno-pointer-sign"
make: *** [ratproxy] Error 1

Algorithms Of The Intelligent Web の発刊は 2009年3月までに

だそうです。


My book "Algorithms of the Intelligent Web" should be released by March 2009.
http://www.marmanis.com/web/guest/201

著者は Haralambos Marmanis さん。見慣れない感じのお名前ですが、どこの国系の方なんでしょうかね。Marmanis を Google の「ウェブ全体から検索」で探しても 3870件しか該当がありません。かなり希少なお名前のようです。

LikedIn の公開プロフィールはこちら
http://www.linkedin.com/pub/0/490/539

SQL による『集合知プログラミング』の実装

『集合知プログラミング』のコードを Oracle の SQL (+PL/SQL) で実装するという意欲的な試みをする人がいた。Oracle Data Mining の開発マネージャである Marcos M. Campos さん。
http://oracledmt.blogspot.com/2008/09/collective-intelligence-1-building-rss.html

『集合知プログラミング』より前は、ビジネス向け、データ解析者向けのデータマイニング本がほとんどであった。開発者向けのデータマイニング技術の本が出たことに感銘を受けて、Oracle の SQL でも実装してみることにした、とのこと。第一回目は、RSSフィードの取得処理まで。

Oracle が XML を扱えることは知っていたが、HTTP も使えるそうだ。

req  := UTL_HTTP.BEGIN_REQUEST(url);
resp := UTL_HTTP.GET_RESPONSE(req);  
IF (resp.status_code >=400 AND

Syndicate content