[Namazu-devel-ja 1186] Re: 文字 N-gram ぽい実験 (Re: フレーズ検索って N-gram ですよね
Tadamasa Teranishi
yw3t-trns @ asahi-net.or.jp
2006年 8月 28日 (月) 19:59:02 JST
寺西です。
Tadamasa Teranishi wrote:
>
> Tadamasa Teranishi wrote:
> >
> > バグだらけでした。修正版です。
>
> さらにバグってまして...修正版です。
>
> * UTF-8 4バイト 対応です。
my $ct = 0;
$tmp =~
s/([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xef]|[\xf0-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf])/$ct++;
'';/egs;
my $res = length($tmp);
if ($res < $minres || ($res == $minres && $ct < $maxct)) {
というところは
my $ct = ($tmp =~
s/([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})//gs);
my $res = length($tmp);
if ($ct > 0 &&
(($res < $minres || ($res == $minres && $ct < $maxct))) {
というようにより簡単に書けますね。
$ct が 0 なら1文字もマッチしないので、これは条件から外した方が
よさそうです。
# そろそろ使えそうかな?
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E
Namazu-devel-ja メーリングリストの案内