« 学食は毎日がサービスデー | メイン | 蔵人のお好み焼き »

2005年09月08日

Text Classification with CEEK.JP NEWS

Text Classification with CEEK.JP NEWS

総合演習(情報特別演習)では、自然言語処理を勉強しています。自然言語処理に興味はあったけど、何から手をつけてよいかわからなかったので、今年は、イロハを知ることを目的に勉強中。

とりあえずの成果として Text Classification with CEEK.JP NEWS を作ったので公開します。成果というよりは、途中経過ですな。

CEEK.JP NEWS の 2005年8月 の記事データを基に、テキストの分類を行います。対応しているカテゴリーは、社会、政治、国際、経済、電脳、スポーツ、エンターテイメントの7つです。

ニュース記事を基にしているので、ニュースの方が分類が上手くいくと思います。また、特定の新聞社に絞らずに、ニュース検索 CEEK.JP NEWS のカテゴリーデータで学習しているので、少々精度が悪いような気もしますが。

分類が困難なニュース記事を分類するために開発しています。

ナイーブベイズ(Naive Bayes)分類法を用いており、2005年7月の記事でテストしたところ 81.5% の精度を示しました(統計的期待値は 14.3% / 求める精度は 90%)。スポーツ(96.5%)、エンターテイメント(90.2%)、は高い精度を示しましたが、政治(62.8%)、社会(70.4%)の精度はよろしくありません。

ナイーブベイズを用いています。計算方法も、教科書的な手法だと思います。各分野の精度について、コンフュージョン・マトリックスも作成しました。政治の分野の記事をの分類を試みたとき、正しく分類される記事は 62.8% で、間違えて 国際 に分類してしまう記事は 17.1% 存在するということがわかります。

人間がどれだけの精度で分類できるかも試した方が良いかもしれません。ニュース記事は、編集者(専門家)が分類しているので、一般人(凡人)が分類するとどうなるのかと。被験者を募集しようかな。

ということで、ぜひお試しあれ。

Perl + MySQL + SpeedyCGI で実装しています。トークン(単語)抽出は、形態素解析器を使わずに、単純に 同一種の文字の連続 をトークンとして扱うことにしました。そうすることによって、未知語への対応も容易になっていますが、ひらがなを無視することになります。ちなみに、トークンの抽出方法を変更しても 3% ほどしか精度に影響はありませんでした。

Naive Bayes のサンプルソースがあまり見つからなかったので、ソースコードは公開予定です。モジュール(オブジェクト)化してから公開します。 Perl と MySQL が入っていれば、簡単に使えるようなのを。ナイーブベイズで色々やりたい方の役に立てればな。と。

次は、スパムフィルタ(メール or ブログ)にチャレンジしつつ、クラスタリング(学習無し)の勉強を行います。

【関連記事】
総合演習 (2005年07月05日)

【関連情報】
・Text Classification with CEEK.JP NEWS
 http://labs.ceek.jp/classify/
・CEEK.JP NEWS
 http://news.ceek.jp/

2005年09月08日 23:38 | Development

トラックバック

コメント

×bayse
○bayes

投稿者 名無し : 2005年09月20日 16:32

>> 名無しさん
うわー。カッコ悪いことした。

grep bayse -r .
で含まれるのを探して、修正。

ご指摘、ありがとうございました。

投稿者 ceekz : 2005年09月20日 20:59

ソースコードが見てみたい。
|д゚)

投稿者 ウニ : 2005年11月16日 18:13

>> ウニ さん
現在、このシステムを使った別ページを準備中です。
それが終わり次第、コードを修正して公開しようと思います。

投稿者 ceekz : 2005年11月16日 22:24

楽しみです。
判定までの速度の速さにビックらこいてます。

投稿者 ウニ : 2005年11月18日 21:02

サンプルコード楽しみにしています。

投稿者 redhat : 2007年04月28日 18:11

>> redhat さん
公開すると書いて1年半も経ちましたね…。
連休中に出来ればと思います。

投稿者 ceekz : 2007年04月28日 20:58

コメントありがとうございます。個人的に作っているサービスでも自動分類機能があればなぁ。。と思っていたところにnaivebayesianというものを知りました。ちんぷんかんぷんなのですが、サンプルコード楽しみにしています!フランス語のサンプルコードは見つけたのですが。

http://www.xhtml.net/php/PHPNaiveBayesianFilter

投稿者 redhat : 2007年04月30日 00:11

>> redhat さん
PHP Naive Bayesian Filter の方が高機能っぽい…。
僕は、教科書的なものをそのまま Perl + MySQL で実装しただけなので :)

投稿者 ceekz : 2007年04月30日 18:53

>連休中に出来ればと思います。
楽しみです。
cpanのAlgorithm::NativeBayesを使っていますが
学習がある程度進むと学習時間が結構かかるので
改良版作成の参考にしたいと思います

投稿者 kio : 2008年04月08日 15:48

サンプルコードは結局公開されなかったのでしょうか・・・

投稿者 torazi : 2009年06月03日 15:42