用bogofilter对django_评论进行贝叶斯垃圾邮件过滤
django-bogofilter的Python项目详细描述
说明
贝叶斯过滤应用于评论垃圾邮件。
当Captcha不能再切割时,Akismet和Discs不是一个选项 而黄鼠狼们正在逼近,是时候看看问题是什么了 对付有史以来最大的垃圾邮件目标:电子邮件。统计 对单个信息的词频分析证明是简单的, 提供足够的训练数据,快速可靠。
使用专为评论垃圾邮件设计的工具的诀窍是 使用评论数据动态生成电子邮件。自定义电子邮件 标题允许我们给bogofilter输入任何我们认为相关的字段。培训 是从django管理器中完成的,使用自定义的仲裁类进行仲裁 而且这个应用程序是高度可配置的。
用法
如果你没有custom comments app, 制作一个
在自定义评论应用程序中,将模型从 bogofilter.model s.bogofiltercoment(这是一个代理模型,不会 添加任何新字段)
从bogofilter.forms.bogofiltercomentform将表单子类化
register bogofilter.moderation.bogofiltercomentrator或其子类 对于您的评论所附加到的模型。你可以这样做 应用程序的models.py文件中有类似的内容(假设 目标模型为条目:
ifEntrynotinmoderator._registry:moderator.register(Entry,BogofilterCommentModerator)
在admin.py中,您可能希望更改 自定义管理模型。将bogofilter.admin.bogo_status用作 列表显示。注册您的管理模型子类 bogofilter.admin.bogofiltercomentsadmin如下:
admin.site.unregister(BogofilterComment)admin.site.register(MyComment,MyCommentAdmin)
从管理员那里,训练博戈菲尔和一批通缉犯 不需要的(垃圾邮件)评论。每100个都是一个好的开始。在这之后 过滤“不确定”并相应地标记。下一个筛选依据 “不匹配”。假设你的火腿评论是公开的, 而垃圾邮件则不是。修复Bogofilter之间的任何冲突 通过将评论标记为垃圾邮件或火腿来显示状态和您的公共状态。
您可以通过 设置中的bogofilter_args变量。py:
BOGOFILTER_ARGS=['-o','0.7']# lower the spam_cutoff from the default 0.95
如果你在同一件事上不止一次使用博戈菲尔 帐户,您需要指定默认目录以外的目录 ~/.bogofilter:
BOGOFILTER_ARGS=['-d','./bogofilter_test_dir','-o','0.7']
提示
- 一些垃圾邮件机器人只在页面上停留几秒钟,这样它们就可以被清除 基于这个。您可以从 表单(它是一个浮点时间戳),将其存储在模型中,然后 如果是,则从版主类的“allow”方法返回false 小于某个值(4秒应足以避免错误 底片)。
- 出于某种原因,中庸信号可能会丢失,并发出垃圾评论 如果.bogotype()为's'(垃圾邮件)或页面上的时间低于 限制通过。你可以处理那些周期性的任务 删除它们。我每5分钟跑一次 与新注释相关的通知将忽略那些更新的注释。
- 定期删除垃圾邮件评论间隔足够长 允许你营救分类错误的火腿。
测试
python setup.py test
测试套件不知羞耻地取自django contrib的评论和 已转换为尽可能使用“bogofilter”应用程序。
使用python-2.7.6、python-3.3.4、django-1.6.2进行测试, Django-contrib-comments-1.5和Bogofilter-1.2.4。
学分
- 作者:stefan talpalaru stefantalpalaru@yahoo.com
- 主页:https://github.com/stefantalpalaru/django-bogofilter