1

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

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

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

4

4 回答 4

9

我的第一个问题 -你为什么不只使用你列出的这三种服务之一?他们似乎完全按照您的意愿行事。抱歉我玩世不恭,但我怀疑你独自工作能否在合理的时间内击败设计这些网站使用的算法的软件工程师,特别是考虑到他们的收入来源取决于他们做得有多好。

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

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

于 2008-11-28T19:07:23.483 回答
2

Python有一些优势。

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

  2. MIME 电子邮件解析非常简单。

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

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

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

于 2008-11-28T20:00:30.380 回答
1

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

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

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

于 2008-11-28T20:15:35.030 回答
1

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

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

于 2008-11-29T02:50:48.273 回答