Python的贝叶斯垃圾邮件过滤库

18

我正在寻找一个python库,用于贝叶斯垃圾邮件过滤。我看了SpamBayes和OpenBayes,但两者似乎都没有维护(我可能是错的)。

有人能推荐一个实现贝叶斯垃圾邮件过滤的好的Python(或Clojure,Common Lisp,甚至Ruby)库吗?

谢谢提前。

澄清:实际上,我正在寻找一个贝叶斯垃圾邮件分类器,而不仅仅是一个垃圾邮件过滤器。我只想使用一些数据对其进行训练,并在以后告诉我某些给定的数据是否为垃圾邮件。对于任何混淆,我很抱歉。

6个回答

11

你想要垃圾邮件过滤还是贝叶斯分类?

对于贝叶斯分类,有许多Python模块可供选择。我最近刚刚评论了非常令人印象深刻的Orange软件。在R中也有许多贝叶斯模块可供使用。您可以使用Rpy连接到R。


11

尝试使用Reverend。它是一个垃圾邮件过滤模块。


@dfrankow:是的,divmod.org似乎不再在线了。PyPI在这里为Reverend提供了一个页面:http://pypi.python.org/pypi/Divmod%20Reverend/0.2.4 - Paul D. Waite
在那个页面上,主页(divmod.org)已经崩溃了。因此,可以安装PyPi包,但是包的原始来源已经消失了。 - dfrankow
2
我联系了divmod的人,并询问了关于reverend的事情。Reverend的原始源代码可在此处获得:http://bazaar.launchpad.net/~divmod-dev/divmod.org/trunk/files/head:/Reverend/ - Emil Stenström

9
RedisBayes对我来说看起来很不错: http://pypi.python.org/pypi/redisbayes/0.1.3 根据我的经验,Redis是你的技术栈中一个非常棒的补充,可以帮助处理数据,速度比MySQL、PostgreSQL或其他关系型数据库快得多。
import redis, redisbayes
rb = redisbayes.RedisBayes(redis=redis.Redis())

rb.train('good', 'sunshine drugs love sex lobster sloth')
rb.train('bad', 'fear death horror government zombie god')

assert rb.classify('sloths are so cute i love them') == 'good'
assert rb.classify('i fear god and love the government') == 'bad'

print rb.score('i fear god and love the government')

rb.untrain('good', 'sunshine drugs love sex lobster sloth')
rb.untrain('bad', 'fear death horror government zombie god')

希望这有些帮助。

3

SpamBayes是一款成熟的软件(即它不需要经常发布新版本就可以正常工作),并且得到了维护。它可以轻松地完成你想要的任务。请注意,SpamBayes只是松散的贝叶斯分类器(它使用卡方组合),但是假定你追求的是任何基于统计令牌的分类方法,而不是特别是贝叶斯方法。


3

尝试使用bogofilter,不确定如何在Python中使用它。Bogofilter已集成到许多邮件系统中,这意味着相对容易进行接口交互。


1
Python自然语言工具包(nltk)中的一个模块实现了朴素贝叶斯分类:nltk.classify.naivebayes
免责声明:我对贝叶斯分类一窍不通,无论是朴素还是世俗。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接