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

时间:2009-02-17 18:50:18

标签: python spam-prevention bayesian bayesian-networks

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

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

提前致谢。

澄清:我实际上在寻找贝叶斯垃圾邮件分类器,而不一定是垃圾邮件过滤器。我只想用一些数据训练它,然后告诉我一些给定的数据是否是垃圾邮件。抱歉有任何困惑。

6 个答案:

答案 0 :(得分:12)

试试Reverend。这是一个垃圾邮件过滤模块。

答案 1 :(得分:11)

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

对于贝叶斯分类,有许多Python模块。我刚刚回顾Orange,看起来非常令人印象深刻。 R有许多贝叶斯模块。您可以使用Rpy挂钩到R。

答案 2 :(得分:9)

RedisBayes对我很好看:

http://pypi.python.org/pypi/redisbayes/0.1.3

根据我的经验,与MySQL,PostgreSQL或任何其他RDBMS相比,Redis是您堆栈的一个非常棒的补充,可以帮助以极快的速度处理数据。

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 :(得分:3)

尝试使用bogofilter,我不确定它是如何从Python中使用的。 Bogofilter与许多邮件系统集成在一起,这意味着相对容易接口。

答案 4 :(得分:3)

SpamBayes 维护,并且已经成熟(即无需一直有新版本即可运行)。它会很容易地做你想要的。请注意,SpamBayes只是松散的贝叶斯(它使用卡方组合),但可能你是在进行任何类型的基于统计令牌的分类,而不是特定的贝叶斯分类。

答案 5 :(得分:1)

Python自然语言工具包(nltk)中的模块执行朴素的贝叶斯分类:nltk.classify.naivebayes

免责声明:我知道所有关于贝叶斯分类的废话,天真或世俗。