我最近写了一个贝叶斯垃圾邮件过滤器,参考了Paul Graham的文章Spam计划和我在codeproject上找到的C#实现 来创建自己的过滤器。
我刚注意到CodeProject上的实现在计算垃圾邮件概率时使用了唯一标记总数(例如如果Ham语料库中总共包含10000个标记,但只有1500个是唯一的标记,则将1500用于计算概率作为ngood),而在我的实现中,我使用了Paul Graham文章中提到的帖子数,这让我想知道哪种方法更好地计算概率:
- 帖子计数(如Paul Graham文章中所述)
- 唯一标记总数(如codeproject上的实现中使用的)
- 标记总数
- 包括标记总数(即b + g >= 5的那些标记)
- 唯一包括标记总数