丁宇 | DING Yu

SPAM、Bayesian和中文 3

用PHP的话,将Naive Bayes Classifier算法集成进你的程序的办法有三。

1. 自行实现算法

想完全自己动手的话,可以参考IBM developerWorks上的这篇“Implement Bayesian inference using PHP”的教程,自己实现所有的计算和分类过程。因为这个教程写得非常详细且深入浅出,自行编码的话倒也不算很难。

2. 使用“PHP Naive Bayesian Filter”及其CakePHP实现

“PHP Naive Bayesian Filter”是一名法国的PHP爱好者写的过滤器,由介绍可知这个过滤器是以Perl的Algorithm::NaiveBayes CPAN为基础改写的,我Google发现这个过滤器的人气还挺旺的,相关的讨论也不少。

值得一提的是,有人将这一过滤器集成进了CakePHP!这就是Lilblogs项目。项目的开发者写了一系列的models、controllers和components,把上述“PHP Naive Bayesian Filter”重新包装了一遍。我试用并研究了一段时间,效果还不错,就是代码风格我不喜欢,所以最终没有在LT中使用Lilblogs的算法。

3. 使用“b8”-我的选择

“b8”同样是一个开源的Bayesian算法。和Lilblogs的做法不同,b8是一个完整的过滤器,它不仅实现了分类算法,还编写了数据存储部分的代码。有趣的是作者声称b8的分类算法对blog上的评论做了特别的优化,而不是像其它算法一样更多地考虑分类电子邮件。不过我数学不好,没看出来它的特殊之处到底在哪里。

b8自带了三种存储引擎,首选的是轻量的Berkeley DB,这是其作者一再推荐的引擎,如果你用别的引擎的话,b8会不断地提示让你用Berkeley DB。另外两种分别是MySQL和SQLite。

b8的文档比较全面和详细,推荐阅读。

下文说说如何在CakePHP中使用b8。