【问题标题】:State of the art in spam prevention垃圾邮件预防的最新技术
【发布时间】:2012-04-09 07:02:39
【问题描述】:

垃圾邮件预防技术的最新技术是什么?

我已经阅读了 Paul Graham 关于贝叶斯过滤的文章。 (A Plan for Spam Better Bayesian Filtering

想知道是否有更多最新文章可用? (最好是AI相关的)

【问题讨论】:

  • 垃圾邮件预防?这需要更好地抚养孩子。
  • 任何形式的过滤都很糟糕,因为它需要您的 SMTP 服务器接受(即传递)垃圾邮件。接受垃圾邮件的问题是误报位于您的垃圾邮件文件夹中,而无需采取进一步措施。有人正在等待您回复您未看到的内容,并且不会生成未送达通知来提醒他们注意这一点。如果您确实查看您的垃圾邮件文件夹,垃圾邮件发送者就赢了。你什么都没取得;您仍在扫描您的电子邮件,将垃圾邮件与非垃圾邮件区分开来,只是位于不同的文件夹中。
  • 寻找理论解决方案,您最好询问computer science stackexchange

标签: artificial-intelligence spam article spam-prevention


【解决方案1】:

如果您试图阻止垃圾邮件单词、句子,例如“fasdhusdhfi”,而不是其他任何内容,您总是可以拥有一个单词及其同义词的数据库。然后,您可以检查输入在数据库中的已知单词是否少于 50%,您可以提出一个标志。您可以创建一个我不推荐的离线数据库,或者您可以使用一些在线数据库。对于单词列表,我建议

http://thesaurus.com/

对于这些词的同义词列表,我建议

http://www.synonyms.net/

我认为这两个可能是上述目的的最佳选择,因为它们都有一个您可以使用的 API(对于 synonyms.net,它位于 this 页面上),因此它不需要解析返回的页面中的单词.

然后,您可以将其与其他方法(如前所述)结合使用,例如贝叶斯过滤。

虽然这并不能真正满足您的 AI 需求,但它确实会阻止一系列消息。

为了满足您的“AI”要求,您可能能够适应 ALICE's Spam.aiml。它采用AIML 格式,但包含大量4 符号垃圾邮件的排列。这样做的问题是它很慢。

Spam.aiml 的一种可能替代方法是使用英语语言规则来检测垃圾邮件并对其进行过滤。可以使用以下规则:

每个单词必须至少有一个元音。为此,字母“Y”被视为元音。

没有一个单词连续超过 3 个辅音。为此,“TH”被认为是一个字母(以免弄乱“strNGTH”之类的词)。

没有一个词长于 34 个字母。例外情况是列出的字词here

某些字母组合不能出现。例如,字母“R”和“C”在常规的非俚语对话中永远不会直接并排出现。

您可以拥有一个包含不可能组合的数据库。我通过对包含 6578 个单词的数据库运行 2 个字母的每个排列来制作一个小的,并得出以下结果:

df bf kf gf jk kj sj fj gj hj lj sl

这些都是不可能的组合。当然,省略了诸如“zz”之类的组合。它们是:

aa bb cc dd ee ff gg hh ii jj kk ll mm nn pp qq rr ss tt uu vv ww xx yy zz

'oo' 被省略,因为它出现在许多单词中,例如 'look'。

长度超过 2 个字符且连续重复的字符串段将被标记为垃圾邮件。在字符串“lololololol”中,重复段为“lo”,并被标记为垃圾邮件。

同一个单词中超过 3 个相同的元音会被标记为垃圾邮件。例如:“oooouuuu”将被标记为垃圾邮件,因为“o”和“u”是重复超过 3 次的元音。

任何大于 1 个字符的单词都不能仅由元音组成。在这种情况下,“Y”不会被视为元音,以免误报“you”。

任何不符合这些规定 15% 或更多(拼写错误的余量)的输入都将被重定向到垃圾邮件。

如果你决定修改 ALICE 的文件,你可以得到很多here。更新版本可以在ALICE's Google Code page找到。

您还可以使用拼写检查器来帮助检测垃圾邮件。您可以针对诸如PyEnchant(对于Python)之类的拼写检查器运行输入,并阅读建议。如果输入没有建议,那么在大多数情况下可以安全地假定它是垃圾邮件。

它并不完美,但它应该在有限的范围内。我做了一个小程序来演示这样的垃圾邮件过滤会产生什么结果。这是输出:

>>> fdsahjfsd
'fdsahjfsd' is spam since more than 3 consonants appear in a row
>>> fhsdjhfksd
'fhsdjhfksd' is spam since it has no vowel
>>> jfsdkjl
'jfsdkjl' is spam since it has no vowel
>>> dk
'dk' is spam since it has no vowel
>>> ddds
'ddds' is spam since it has no vowel
>>> uxxs
'uxxs' is not spam
>>> kd
'kd' is spam since it has no vowel
>>> ukd
'ukd' is not spam
>>> asdjaskljlaskjldkasjkljdklas
'asdjaskljlaskjldkasjkljdklas' is spam since it is too long
>>> hdjaskj
'hdjaskj' is spam since invalid sequences detected

正如我之前所说,它并不完美,因为它会返回误报(例如“uxxs”),但这可以通过拼写检查实现来解决。

使用拼写检查实现的回退是您的垃圾邮件检测将基于字典中的单词数量。大多数拼写检查器只有前 10,000 个单词,因此一些不常见的单词可能会被阻止为垃圾邮件。但是,检查是否有超过 15% 的输入无效可以解决这个问题。

如果你觉得对你有帮助,可以获取我从here制作的小程序。它是用 Python 编写的。

此外,正如这里的其他答案所说,“最先进的”垃圾邮件过滤器需要多种方法。

您可以使用SpamAssasinPyZorReverendOrange,但最好的办法可能是将所有这些组合在一起。

如果你想为此使用 Lisp,一篇关于 Lisp 中贝叶斯过滤的好文章位于 here

如果您想通过神经网络执行此操作,那么this Codeproject 文章可能会很有用。它利用了一个简单易用的dll,示例代码几乎可以直接用于垃圾邮件过滤任务。

【讨论】:

  • 我没有投反对票,但您的帖子中似乎没有真正的“答案”,更像是一份建议清单。
  • 没错,但问题本身有点含糊。没有说明“首选”编程语言,所以我给出了不同语言的实现列表,也没有说明是垃圾邮件检测还是垃圾邮件字符串检测。没有再一次,“首选”实施也被说明。所以我推出了几个在线数据库。因此,正如您所说,我尝试根据问题提供尽可能多的建议。如果问题确实是关于垃圾邮件检测的问题,那么除了最终链接之外,我的回答或建议清单是无用的。
  • 对不起,如果我的问题含糊不清。我没有提到“垃圾邮件检测”或其他任何内容,因为根据我的谷歌搜索,我发现这些分类没有描述相关技术。实际上,我正在寻找通常针对不同类型的垃圾邮件陈述的理论解决方案。(实现是不是这样的,更不用说编程语言了)当然我不是投票给你的人:)
【解决方案2】:
【解决方案3】:

最先进的技术与其说是任何特定的算法,不如说是输入数据的质量和数量。要达到最先进的水平,您需要每天有数十万活跃用户和数百万条消息。换句话说,是 Gmail、Yahoo 或 Hotmail,或者有办法获取类似的海量实时数据。

将您的判决保存到最后一刻;准备好在用户请求邮件列表之前从用户的收件箱中提取邮件。找出值得信任的用户,并将他们的判断应用于所有其他用户的消息。尽可能多地收集外部输入(用户判断、发件人信誉、URL 目的地分析、您有什么),并将它们输入您的机器学习机器。

试图仅根据邮件内容过滤垃圾邮件是一场失败的游戏;垃圾邮件发送者知道如何将他们的消息变异到贝叶斯分类器只能看到噪音的程度。但是你可以用它来对付他们。 SpamAssassin 对此有很多证明,但同样,您需要对实时数据进行动态分析才能真正做到这一点。我什至会声称,一旦你有足够的相关输入,你用来制定判决的精确方法就变得次要了。

【讨论】:

    【解决方案4】:

    我一直(纯粹出于懒惰)使用SpamAssassin 的贝叶斯实现有一段时间了,它的表现相当糟糕。

    几个月前,我在我的武器库中添加了协同过滤系统 Vipul's RazorPyzor,由 SpamAssassin 控制,提高了垃圾邮件得分。我会半定期地向这两个系统发送垃圾邮件。它仍然不完美,但我的手机现在不那么频繁了。

    似乎“最先进”是有效技术的结合。

    【讨论】:

    • 我实际上正在寻找人工智能技术,或者至少是一些理论上的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2011-03-03
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多