垃圾邮件检测服务的最佳语言选择[关闭]

Posted

技术标签:

【中文标题】垃圾邮件检测服务的最佳语言选择[关闭]【英文标题】:Best language choice for a spam detection service [closed] 【发布时间】:2010-09-24 11:50:53 【问题描述】:

我有大约 20 个左右活跃的博客,它们收到了相当多的垃圾邮件。因为我讨厌 CAPCHA,所以另一种选择是非常智能的垃圾邮件过滤。我想构建一个简单的 REST api,比如垃圾邮件检查服务,我会在我的所有博客中使用它。这样我就可以整合 IP 块并将垃圾邮件检测卸载到第 3 方,例如 Akisment、Mollom、Defensio,并且在将来的某个时候编写我自己的垃圾邮件检测,以真正让我的头脑进入一些非常有趣的垃圾邮件检测算法。

我选择的语言是 php,我认为自己非常精通,我真的可以深入挖掘并提出解决方案。我觉得这个项目可以作为学习另一种语言的一个很好的练习。想到的最大的 2 是 Python 和 Ruby on Rails,因为每个人都在谈论它们,就像我们的救世主的下一个到来一样。由于这主要是一个 API 并且没有任何管理员或公众面向任何东西,看起来运行一个简单的 http 服务器的基本 Python 似乎是要走的路。我错过了什么吗?伟大的社区,你会推荐什么?我很想听听您的语言、书籍和最佳实践建议。

这必须扩展,我想在编写时考虑到这一点。现在我可能可以使用 3rd 方的免费计划,但很快我就必须扩展整个事情以真正独立思考。现在我想我会把所有的东西都存储在一个 mysql 数据库中,直到我可以对它做一些真正的分析。谢谢!

【问题讨论】:

【参考方案1】:

我的第一个问题 - 您为什么不直接使用您列出的这三种服务中的一种? 看来它们完全符合您的要求。抱歉我玩世不恭,但我怀疑你独自工作能否在合理的时间内击败设计用于这些网站的算法的软件工程师,尤其是考虑到他们的收入来源取决于他们的工作做得如何。

再说一次,你可能只是比他们聪明=P。我不是一个可以判断的人。无论如何,我推荐 python,因为您所说的原因 - 您不需要花哨的公共接口,因此 python 在这方面缺乏卓越并不重要。 Python 也很适合进行文本处理,并且它有很好的内置绑定来使用数据库(例如 sqlite;当然,如果你觉得有必要,你可以安装 MySQL)。

缺点:它可能会有点慢,这取决于你的算法有多复杂。

【讨论】:

简短回答:因为我想避免设置和依赖第 3 方服务。最终目标是安装数以千计,所以当它的成本效益进一步开发时,我不会是人与山:) 很公平!如果您使用那么多,它们似乎也不会免费。 我同意克劳迪乌的担忧。尽管为所有服务提供统一 API 的想法有点吸引人。 ;)【参考方案2】:

Python 有一些优势。

    Python 中有几个 HTTP 服务器框架。查看WSGI reference implementation,了解如何使用 WSGI 标准来处理 Web 请求。它非常干净且可扩展。需要花一点时间研究一下,WSGI 就是为请求添加细节,直到您到达处理的阶段,该阶段是时候制定回复了。

    MIME email parsing 非常简单。

    之后,您将使用网站黑名单和内容过滤来检测垃圾邮件。

    站点黑名单可以是一个大而奇特的 RDBMS。或者可以是简单的腌制 Python 域名和 IP 地址集。我推荐一个简单的pickle set对象,它存在于内存中。它很快。您可以让您的 RESTful 服务在收到一些强制刷新的 GET 请求时从源文件重新加载此集合。

    文本过滤很难。我会从SpamBayes开始。

【讨论】:

虽然 SpamBayes 脚本以电子邮件过滤为中心,但标记化代码很容易适应其他文本分类,并且分类器通常可以保持不变。源代码分发中有一个示例演示了使用 SpamBayes 引擎作为过滤代理,这与此任务类似。【参考方案3】:

我谦虚地推荐Lua,不仅因为它是一种出色、快速的语言,已经与网络服务器集成,还因为您可以利用OSBF-Lua,这是一种现有的垃圾邮件过滤器,已经在多个垃圾邮件过滤比赛中获胜连续几年。 Fidelis Assis 和我做了大量工作,试图将模型推广到电子邮件之外,我们很高兴与您合作将其与您的应用程序集成,这正是 Lua 的设计目的。

至于扩展,在训练模式下,我们在 2006 年的机器上每秒处理数百封电子邮件,因此即使对于繁忙的网站也应该可以很好地工作。

我们需要与您一起对没有邮件标题的内容进行分类,但我已经在朝着这个方向努力了。欲了解更多信息,请写信 nr@cs.tufts.edu。 (是的,我希望人们向我发送垃圾邮件。这是为了研究!)

【讨论】:

【参考方案4】:

我不得不推荐 Akismet,因为它易于使用且准确度高。仅使用 WordPress.com API 密钥和 API 调用,您就可以确定来自用户的给定文本块是否是垃圾邮件。我一直在使用适用于 WordPress 的 Akismet 插件,它使用相同的 API,并且在过去一年左右的时间里取得了出色的成果。

Zend Framework 有一个很棒的 Akismet PHP 类,您可以独立于框架的其余部分使用,这应该使集成非常简单。文档也很详尽。

【讨论】:

以上是关于垃圾邮件检测服务的最佳语言选择[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

实例教程:如何用自然语言处理来预测垃圾邮件?

用于电子邮件垃圾邮件检测的神经网络输入

使用 naive-bayes 检测垃圾邮件

如何将垃圾邮件移至垃圾邮件文件夹? [关闭]

易宝典文章——玩转Office 365中的Exchange Online服务 之二十四 配置垃圾邮件筛选器反垃圾邮件

用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)