[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 メーリングリストの案内