英数字しか処理していないと「未承諾広告※」と書いてあっても素通りしてしまうので、英数字以外の処理についても考えてみました。色々と調べてみると、形態素解析をするとデータベースのサイズは小さくなるものの精度はそれほど上がらず(解析の精度が悪いと下がることも)速度も遅くなる*1ようです。形態素解析しないとすると、N-gramを使うというのが良くあるようで、2gramを使うケースが多いようです。
形態素解析するとなるとまず言語を判定しなくてはいけなかったりと何かと大変そうなので、N-gramで実装してみることにしました。手抜きなので以下のルールで行くことにしました。
ためしにクリーンを2500通程度、スパムを1000通程度学習させて見たところ、データベースのサイズは5M弱になりました。日本語のスパムも認識しているようです。