朴素贝叶斯文本分类器 - 确定文档何时应标记为“未分类”

时间:2013-05-10 10:15:31

标签: java nlp classification document-classification

我设计并实现了一个朴素贝叶斯文本分类器(Java)。我主要使用它将推文分类为20个类。要确定文档属于我使用的类的概率

foreach(class)
{
   Probability = (P(bag of words occurring for class) * P(class)) / P(bag of words occurring globally)
}

确定一包单词是否真的不属于任何类别的最佳方法是什么?我知道我可以为P发送一个最小阈值(对于类发生的词包),如果所有类都在该阈值之下,那么将文档分类为未分类,但是我意识到这会阻止此分类器敏感

一个选项是创建一个Unclassified类并使用我认为无法分类的文档进行训练吗?

谢谢,

标记

- 编辑---

我刚想到 - 我可以设置P的最大阈值(全局发生的词袋)*(文档中的单词数)。这意味着任何主要由常用词组成的文档(通常是我想要过滤掉的推文),例如。 “是的,我同意你的看法”。会被过滤掉。 - 您对此的看法也将受到赞赏。

或许我应该找到标准偏差,如果它低,则确定它应该是未分类的?

1 个答案:

答案 0 :(得分:1)

我看到两个不同的选项,将问题视为一组20个二进制分类问题。

  1. 您可以计算P(doc在课堂上)/ P(doc不在课堂上)的可能性。一些朴素贝叶斯实现使用这种方法。
  2. 假设您有一些评估指标,您可以计算每个类的阈值并根据交叉验证过程对其进行优化。这是应用文本分类的标准方法。您将使用阈值(每个类一个),但它们将基于您的数据。在您的情况下,SCut或ScutFBR将是最佳选择,如本paper中所述。
  3. 此致