« 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