2009年6月9日火曜日

[newsy] 1ページでテクノロジーニュースを見られるWebサービス作りました

独学のためにひっそりと公開していたのだけれど、MOONGIFTさんでとりあげてもらったので([MOONGIFT] RSSフィードを使ったニュースサイトを構築する「newsy」)、この際だから当ブログでも紹介しておきましょうか。

newsy
http://newsy.appspot.com


TechmemeTechfugaのような、いわゆるニュースアグリゲーター(っていうのかな?)です。

英語圏の有名ブログ/ニュースサイトのRSSフィードを定期的に読み込んで、Google, Apple, Web, Gadgetsなどのカテゴリに自動で分類しています。

ただ、オススメの記事をズバっと推薦するような機能は全然ありません。
ふわ〜っと半リアルタイムで記事が流れて行く感じです。


このサービスを作ったきっかけ

1. 「集合知プログラミング」


とにかくべらぼうに刺激になる本です。
Web一般に興味があって、プログラミングをかじった経験のある人なら絶対に心おどるはず。

newsyのカテゴリ分類は、この本の6章(「ドキュメントフィルタリング」)で紹介されている単純ベイズ分類器を利用しています。
何度か人力でトレーニングするうちに、エントリーを自動で適切なカテゴリに分類してくれるようになるのはけっこう快感です。
(精度はそれなりですが)

サンプルコードをそのまま利用したらものすごく負荷が高くなりそうだったので、自分なりにカスタマイズしました。


2. Google App Engineがcronに対応した

ドメインからお察しの通り、newsyはGoogle App Engine(GAE)上で動いています。
(Django + app-engine-path)

前々から趣味的なWebアプリを作るにはもってこいだったGAEのcron対応という大盤振る舞いに、こちとらのぼせあがってしまったわけです。

「集合知プログラミング」もそうですが、自動でとか勝手にとか、そういうキーワードが大好物な無精者ですから、こりゃやるしかないぞ、と。

具体的にはRSSフィードの読み込みに利用しています。
(15分おきに1フィードの割合)
フィードの読み込み時に上記の単純ベイズ分類器でカテゴリ分けを行っています。



これから追加したい機能

・オススメ記事のレコメンデーション機能
・検索機能
・記事のクラスタリング
・システムをオープンソースとして提供

実は、ソースコード自体はGithubの公開リポジトリに置いてあるのですが、他人が利用することを全く考えていないので、そのままではアプリとして使えない仕様になっていると思います。。。
その辺は今後の課題ということで、よろしくお願いします。

0 件のコメント: