我正在寻找一个执行贝叶斯垃圾邮件过滤的 Python 库。我查看了 SpamBayes 和 OpenBayes,但两者似乎都没有维护(我可能错了)。
谁能推荐一个实现贝叶斯垃圾邮件过滤的优秀 Python(或 Clojure、Common Lisp,甚至 Ruby)库?
提前致谢。
澄清:我实际上是在寻找贝叶斯垃圾邮件分类器,而不一定是垃圾邮件过滤器。我只想使用一些数据来训练它,然后告诉我某些给定的数据是否是垃圾邮件。很抱歉有任何混淆。
我正在寻找一个执行贝叶斯垃圾邮件过滤的 Python 库。我查看了 SpamBayes 和 OpenBayes,但两者似乎都没有维护(我可能错了)。
谁能推荐一个实现贝叶斯垃圾邮件过滤的优秀 Python(或 Clojure、Common Lisp,甚至 Ruby)库?
提前致谢。
澄清:我实际上是在寻找贝叶斯垃圾邮件分类器,而不一定是垃圾邮件过滤器。我只想使用一些数据来训练它,然后告诉我某些给定的数据是否是垃圾邮件。很抱歉有任何混淆。
试试牧师。这是一个垃圾邮件过滤模块。
RedisBayes 对我来说看起来不错:
http://pypi.python.org/pypi/redisbayes/0.1.3
以我的经验,Redis 是你堆栈的一个很棒的补充,与 MySQL、PostgreSQL 或任何其他 RDBMS 相比,它可以帮助以极快的速度处理数据。
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')
希望有点帮助。
尝试使用bogofilter,我不确定如何从 Python 中使用它。Bogofilter 与许多邮件系统集成,这意味着接口相对容易。
SpamBayes 得到维护,并且已经成熟(即它无需一直发布新版本即可工作)。它会很容易地做你想做的事。请注意,SpamBayes 只是松散的贝叶斯(它使用卡方组合),但可能您正在使用任何类型的基于统计标记的分类,而不是特定的贝叶斯分类。
Python 自然语言工具包 (nltk) 中的一个模块执行朴素贝叶斯分类:nltk.classify.naivebayes
.
免责声明:我对贝叶斯分类一无所知,无论是幼稚的还是世俗的。