朴素贝叶斯过滤器对于垃圾邮件过滤的效果如何?
我听说,垃圾邮件发送者轻易地通过填充额外的与垃圾邮件无关的单词来规避它们。您可以使用哪些编程技术来防止这种情况发生?
朴素贝叶斯过滤器对于垃圾邮件过滤的效果如何?
我听说,垃圾邮件发送者轻易地通过填充额外的与垃圾邮件无关的单词来规避它们。您可以使用哪些编程技术来防止这种情况发生?
我认为,要想打败你提到的那种垃圾邮件攻击,重要的不是学习方法,而是你训练的特征。我使用Fidelis Assis的OSBF-Lua,这是一个非常成功的过滤器:它在垃圾邮件过滤器比赛中一直获胜。它使用贝叶斯学习,但我认为它成功的真正原因是三个原则:
它不是基于单个单词进行训练,而是基于“稀疏双词组”进行训练:由0到4个“无关紧要”的单词分隔的一对单词。垃圾邮件发送者必须在某个地方放置他们的信息,而稀疏双词组非常擅长发现它们。它甚至可以找到附件垃圾邮件!它还会对消息头进行额外的训练,因为这些对于垃圾邮件发送者来说很难伪装。例如:在您的网络上发起并从未通过离线网络中继主机传递的消息可能不是垃圾邮件。如果垃圾邮件过滤器对其分类的信心较低,则会请求人类输入。(实际上,它会添加一个标题字段,说明“请在此消息上对我进行培训”;人类可以忽略该请求。)这意味着随着垃圾邮件发送者演变出新技术,您的过滤器也会演变以匹配它们。这些技术的结合非常有效。免责声明:我曾与Fidelis合作重构部分软件,以便将其用于其他目的,例如将常规邮件分类到组中,或者有朝一日尝试在博客评论和其他地方检测垃圾邮件。