[229]
    アレの処理
    すい
    
    また最近多いアレの件ですが。 >>web:177 でも教えていただいたアレの処理。
処理を
「投稿データ中にアレによく含まれている単語があったら、
 単語1回につき何点と点を付けていき、文章全体での合計点が
 とある閾値を越えたらアレと見なす。」
にしてみてはどうかな?と思ったのですが、どうでしょう?
例えば perl だと↓この程度で済みますよね。
# ********** #
sub	isSPAM{	( &SPAMpoint($_[0]) >= $SPAM )	}
sub	SPAMpoint{
	local	$ten = 0;
	if( -r 'spam.txt' ){
		require	'spam.txt';		# SPAM 単語辞書を読み込む。
		local	$buff = $_[0];	# 調査対象の文字列をコピー
		local	$Z = ' ';	# 全角スペース文字(正規表現中に直接記述すると perl によってはエラーになるため、一旦、変数に格納してから使う)
		# 単語が行をまたぐ場合などの対策
		$buff =~ s/$Z//go;	# 全角スペース文字を削除
		$buff =~ s/\s//go;	# 改行やスペース文字類を削除
		for( $j=0 ; $j < $#SPAM ; $j+=2 ){
			local( $word , $point ) = ( $SPAM[$j] , $SPAM[$j+1] );
#			print	"検索[$word/$point点]\n";	# for DEBUG
			while( $buff =~ s/$word// ){	# 見つけた単語は調査対象文字列から削除していく
#				print	"->$word:$point\n"	if( $deb );	# for DEBUG
				$ten += $point;
			}
		}
	}
	$SPAM = $SPAM || 10;	# 閾値 $SPAM が定義されていなかったら(単語辞書が無かったとか)初期値 10 にしておく。
	$ten;
}
# ********** #
使う辞書ファイル spam.txt は↓こんな雰囲気で。
--↓-- spam.txt --↓--
# スパム判定用辞書	2006/07/21 22時
# スパム書込みと見なす閾値。合計点が、この点 以上ならスパム書込みとみなす。
$SPAM = 6;
# 単語 , 得点 の配列。(単語は正規表現可能)
# 見つけた単語を文字列から削除しながら調査していくので、検索する単語順に定義すること。
# (連想配列を使うと、配列参照時の順番が変わってしまうため、普通の配列を使用している)
@SPAM = (
	'出会い'		,  3.5,
	'エロ'			,  3,
	'えろ'			,  3,
	'素人'			,  3,
	'男女'			,  4,
	'女性'			,  4,
	'女'			,  3,
	'レア(画像|動画)'	,  5,
	'動画'			,  4,
);
----------
使い方は
# ----------
$TEXT = << '_TEXT_';
	テスト用の書込み文章 貼り付け位置
_TEXT_
# ----------
if( &isSPAM($TEXT) ){	print	"*スパムだ*\n"	}	# 判定だけ
print	&SPAMpoint($TEXT) . "点\n";		# 点数を得る場合
な、感じで。
&isSPAM(); や &SPAMpoint(); にタイトル,本文,URLなどの文字列を全て連結して投げる。
&isSPAM( $FORM{'subject'} . $FORM{'body'} .~~ ); とか。