垃圾广告留言是一件很讨厌的事情。对于防止垃圾广告的方法,常见的对付垃圾广告留言的方法是验证码,不过,普通的验证码已经可以通过人工智能的方式破解图片验证码,而如果将验证码设计的较为复杂而难以识别,无疑会极大影响正常用户的使用体验。因此,满足绝大多数正常人留言的同时,还需要增强识别垃圾广告留言,使得垃圾留言的处理对正常留言影响最小。
为了完成这个功能,想到了一个比较好的方法,就是使用类似“垃圾邮件”的处理方法,按照关键字权值对留言进行智能分析,通过分析判断某个留言是否属于垃圾广告留言。
比如,和广告相关的词语都赋予不同的权值,比如“打印机”赋值为10、“虚拟主机”赋值20,超级链接可以赋予更大的权值,例如一条超级链接地址赋值为100,这样,当留言提交之后,系统自动分析留言的内容,搜索可能的广告词语,如果出现广告词语,就将其累加权值,通过合计数值来分析这则留言是否类似垃圾留言,如果留言中包含数十条超级链接,以及大量广告词语的,则肯定计算出来的合计权值就特别大,对于这样的留言直接按照垃圾留言处理(比如直接屏蔽IP并删除留言),合计权值小于50的,表明可能是正常留言,直接发布,合计权值大于50,但又不是特别大,说明有可能是广告垃圾留言,也可能不是,这时候,就显示一个校验码,要求用户进行验证,通过校验码机制来验证发表留言的到底是正常人还是程序。
这样,对于80%的正常留言,可以直接发布,剩下20%的可能是垃圾留言,程序自动加入校验码验证,正常留言的用户不会多输入验证码,甚至不会感觉到有什么不变,整个留言发布对大多数用户都有比较好的体验。
另外发言频率上的一定限制,同一个内容重复发布都应该在这个需求中考虑进来。频率限制自然很好处理,限制重复发布,不能简单的依照比较标题或者内容来判断,因为聪明的广告发布程序既然能攻破你的验证码图片,这点内容的花样变更就不在话下,再标题上加一个简单的循环就随便将你的比照处理掉了。这样的话,还是用以上的权值的方式随机的选取一定位置的词语字符赋值,如果在下一条留言中对相同字的赋值等于或者大于上一条信息,那么就极有可能是垃圾信息的接连重复发布!
考虑到这里可能用到的全文检索,那么建立文字索引将使得这种需求的查询判断速度上要相对的快一些,性能暂时未知!
【部分借鉴原作者思路文字】