具有诸如 hasDate、hasLocation、第一个单词等特征的朴素贝叶斯文本分类器
Posted
技术标签:
【中文标题】具有诸如 hasDate、hasLocation、第一个单词等特征的朴素贝叶斯文本分类器【英文标题】:Naive Bayes text classifier with features such as hasDate, hasLocation, first word etc 【发布时间】:2012-12-07 12:09:04 【问题描述】:我正在尝试使用朴素贝叶斯文本分类器。我已经在代码中创建了一个词袋方法。在我的文档中,我注意到某些分类所特有的许多特征。这些特征的示例包括文档是否包含位置、日期或名称。这些都是布尔值,可以在文本分类之前确定。还有其他功能,例如第一个单词是什么等。
我了解基本的朴素贝叶斯方法。但未能找到有关将这些特征整合到分类器中的信息。
我的问题是是否可以将我上面提到的功能包含在词袋中?如果是这样,是否有这样的例子,我可以效仿。如果不是这种情况,您会推荐什么?
谢谢
【问题讨论】:
【参考方案1】:在朴素贝叶斯框架内,没有什么能阻止您添加不基于词袋表示的其他功能。假设您有一个基于词袋特征的类似然 p(document|class_1) = l_1。您有理由相信一些二元特征 b_1 和 b_2 也有助于分类(这些可以是分别包含日期和时间的文档,以使示例具体化)。
您估计概率 p(b_1 = 1 | class_1) = (#of docs in class 1 with b_1 = 1) / (#of docs in class 1)---p(b_1 = 0 | class_1) = 1 - p(b_1 = 1 | class_1)。您对类 2 和两个类的特征 b_2 执行相同的操作。现在将这些特征添加到分类规则中特别简单,因为朴素贝叶斯只是假设特征独立。所以:
p( class_1 | document ) \propto p(class_1) x l_1 x p(b_1|class_1) x p(b_2|class_1)
其中 l_1 的含义与以前相同(基于 BOW 特征的可能性),对于 p(b_i|class_1) 术语,您可以使用 p(b_i=1|class_1) 或 p(b_i=0|class_1) 术语取决于 b_i 的实际值。这可以以相同的方式扩展到非二进制功能,并且您可以继续添加您的心脏内容(尽管您应该知道您假设功能之间独立,您可能希望切换到不做这个假设的分类器)。
【讨论】:
感谢您的回复,这很有帮助。我还有一个问题。在词袋方法中,我使用拉普拉斯平滑来消除由于 p(word|class) 为 0 而导致类为 0 的概率。如果我将同样的平滑应用于我的二元特征是否正确。所以 p(b_1=1|class_1) = (#of docs in class 1 with b_1 = 1) + 1 / (#of docs in class 1) + 2。 你好 Ben,p( class_1 | document ) \propto p(class_1) in this what is \propto please, 你能解释一下这个陈述吗? 成正比:感兴趣的后验与先验类概率*类似然成正比(归一化常数为\sum_class p(class) p(features|class))以上是关于具有诸如 hasDate、hasLocation、第一个单词等特征的朴素贝叶斯文本分类器的主要内容,如果未能解决你的问题,请参考以下文章