« Perl Monger への道は遠い | メイン | はてな認証 API »

2006年05月02日

Lingua::JA::Summarize 0.03, 0.04

 Lingua::JA::Summarize の 0.03 と 0.04 をリリースしました。CPAN のミラーにはまだ届いていないと思いますので、http://search.cpan.org/~kazuho/ からダウンロード願います。

 0.03 では、TF-IDF の計算式が間違っていたという恐ろしいバグを修正しました (すいませんすいません)。正しく修正できていると思います。たぶん...
 なお、チューニングとして、複数の形態素を結合する場合のコスト計算は sum(log(probability))*(log(wordcount)*0.7+1)、TF は occurences-0.5 としています。

 それだけではあんまりなので、 0.04 では以下の機能を追加しました。

1) EUC 以外の文字コードのサポート

内部文字コードと mecab の文字コードをそれぞれ指定することができます。たとえば、内部文字コードが UTF-8 で mecab の文字コードが Shift JIS の場合は、以下のようになります。

$s = Lingua::JA::Summary->new({
   charset => 'utf8',
   mecab_charset => 'sjis'
});

また、インスタンス単位ではなく、モジュール全体の指定を変更することもできます。

$Lingua::JA::Summary::Defaults{mecab_charset} = 'sjis';

後者のやり方を導入したことで、文字コード非依存な Lingua::JA::Summarize を呼び出すモジュールを作るのが簡単になったと思います。Charsbar さんがおっしゃっているようなデフォルトの文字コード推定機能は実装していませんが、まあ十分じゃないでしょうか? (ダメですかね)

2) minwords のサポート

取り出すキーワード数の下限を設定できるようになりました。

0.03 以前の Lingua::JA::Summarize では、条件によっては、ひとつもキーワードが抽出できない、ということがありました。検出精度を優先する立場から言えばこの動作は正しいのですが、一方で現場では、「必ず3個以上のキーワードを表示したい」といったケースがあります。そこで、 0.04 以降では、

my @keywords = $s->keywords({ minwords => 3, maxwords => 5 });

のように、下界を指定してキーワードを抽出できるようにしました。この例だと、必ず3個以上5個以下のキーワードが抽出できるので、「動いてないんじゃないの」的な不安や苦情を免れることができます。

投稿者 kazuho : 2006年05月02日 11:51 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/574