在NLTK Python的朴素贝叶斯分类器中使用文档长度
我正在使用Python中的NLTK构建垃圾邮件过滤器。我现在检查单词的出现并使用NaiveBayesClassifier,得到.98和F的准确度为.92的垃圾邮件和非垃圾邮件:0.98。但是,在检查我的程序错误的文档时,我注意到很多被归类为非垃圾邮件的垃圾邮件都是非常短的邮件。
所以我想把文档的长度作为NaiveBayesClassifier的一个特性。问题是它现在只处理二进制值。有没有其他方法可以做到这一点比例如:长度< 100 =真/假?
(p.s.我构建了类似于http://nltk.googlecode.com/svn/trunk/doc/book/ch06.html示例的垃圾邮件检测程序)
没有找到相关结果
已邀请:
2 个回复
驮帽俺篮号
你已经从prob_classify获得了第一个术语,所以剩下要做的就是估计P(len | cl)和P(len)。 在建模文档长度时,您可以随心所欲地使用它,但是为了开始,您可以假设文档长度的日志是正态分布的。如果您知道每个类和整体中日志文档长度的均值和标准差,那么很容易计算P(len | cl)和P(len)。 这是估算P(len)的一种方法:
要记住的唯一棘手的事情是,这是在对数长度而不是长度上的分布,并且它是连续分布。因此,长度为L的文档的概率为:
可以使用每个类中的文档的对数长度以相同的方式估计条件长度分布。这应该给你P(cl | doc,len)所需要的东西。
哭木算