2

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

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

确定一个词袋是否真的不应该属于任何类的最佳方法是什么?我知道我可以只发送 P(类出现的词袋)的最小阈值,如果所有类都低于该阈值,则将文档归类为未分类,但是我意识到这可以防止该分类器变得敏感.

是否可以选择创建一个未分类的类并使用我认为不可分类的文档对其进行训练?

谢谢,

标记

- 编辑 - -

我只是想 - 我可以为 P(bag of wordsoccurring global)*(number of words in document) 设置一个最大阈值。这意味着任何主要由常用词组成的文档(通常是我想要过滤掉的推文),例如。“是的,我同意你的看法”。会被过滤掉。- 您对此的想法也将不胜感激。

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

4

1 回答 1

1

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

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

问候,

于 2013-05-10T10:44:09.200 回答