@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Lingua::JA::Summarize::Extract のパッチ(みたいなもの)

Lingua-JA-Summarize-Extract-0.02 - summary generator for Japanese - metacpan.org

Lingua::JA::Summarize::Extract::ResultSet の as_string() メソッドで一番最後に $self->length の長さで要約された文字列をカットしているが、せっかく句読点「、。」とかでセンテンスを区切っているのに最後にそれが考慮されてないので「〜と思います。」が「〜と思い」のようになってしまう。

数文字(数バイト)くらいオーバーしてもかまわないから、文章がきちっと「。」で終わって欲しい場合もあるので(というか今の自分がそうだ)、それを修正してみた。のが以下。


ただこれ、デフォルトだと $self->length は 255 なのだけど、たとえば mysql の varchar(255) 型に格納することを想定してそうなってるのだとすると、「。」で終わらなくてもいいから Perl のほうでちゃんと 255 バイト以内に収まるようにしてあげるほうが良い(mysql が勝手にぶった切ることで最後の一文字が破壊されて文字化けになるかもしれない)ので、バグではないと思う(ので、パッチというのもちょっと違う気が・・・)。厳格に $self->length の長さでカットするのと、そうでないのと二種類あると良いなと思う。

動的にサブルーチンを書き換えるのは 404 Blog Not Found:perl - パッチなしでパッチする を参考にした。 mala さんもむかしどこかでそういうのを(dankogai より先に)書いてた記憶があるけど見つけられなかった。 nowa だったかも。