検索インデックスで省く文字

ブログ | 2012/2/12 17:14
3文字までの、ngramのインデックスも大きくなると、なかなか大変。
なので、少しでも文字を少なくして容量を削減したい。で、記号系はできるだけスルーする。

ngramの文字列配列を返す関数。
function ngramIndex($str,$wlen=3){
 $len = mb_strlen($str);
 $n = array();
 for($i=0; $i < $len; $i++){
   for($a=1; $a <= $wlen; $a++){
     $moji = mb_substr($str,$i,$a);
     if(preg_match('/[\r\n !"#$%()*+,-.:;<=>?¥ 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#*@§☆★○●◎◇◆□■△▲▽▼※→←↑↓〓∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬ʼn♯♭♪†‡¶◯ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪]/u',$moji)) continue;
     if($a == 1 && preg_match('/[ぁ-ゞァ-ヾ!-~0-9ー&〒]/u',$moji)) continue;
     $n[] = $moji;
   }
 }
 $n = array_unique($n);
 return $n;
}

スルーしてない記号は、固有名詞に出てきそうな、「'」「&」「@」「/」「&」「ー」「〒」。
「。」はスルーする。「モーニング娘。」は無視する。

これでいいか。
縮小 拡大

ログインしておくと、後で編集が可能です。

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close