【问题标题】:document classification using naive bayes in python在 python 中使用朴素贝叶斯进行文档分类
【发布时间】:2012-05-17 22:58:54
【问题描述】:

我正在做一个在 python 中使用朴素贝叶斯分类器进行文档分类的项目。我也使用了 nltk python 模块。文档来自路透社数据集。我执行了诸如词干提取和停用词消除之类的预处理步骤,并继续计算索引词的 tf-idf。我使用这些值来训练分类器,但准确度很差(53%)。应该怎么做才能提高准确率?

【问题讨论】:

  • 你解决了什么分类任务?是主题分类还是别的什么?

标签: python nltk document-classification


【解决方案1】:

分类器不工作的原因可能有很多,有很多方法可以调整它。

  • 你用足够多的正面和反面例子训练它了吗?
  • 您是如何训练分类器的?您是否将每个单词都作为特征赋予它,或者您是否还添加了更多特征来训练它(例如文本的长度)?
  • 您到底想对什么进行分类?指定的分类是否有与之相关的特定词?

所以这个问题相当广泛。也许如果您提供更多详细信息,您可以获得更多相关建议。

【讨论】:

  • 我们如何使用文本长度作为特征?我的意思是对于每个文本,我们将有一个可变的长度。假设有 10 个文档 [d1,d2,....d10],长度 =[1,2,3,4,5,6,7,8,9,10]。对于真实的世界场景,它将是 10000... 文档。那么我们如何将它表示为一个特征呢?
【解决方案2】:

如果您使用的是 nltk 朴素贝叶斯分类器,那么您实际上可能使用的是平滑多元伯努利朴素贝叶斯文本分类。如果您的特征提取函数映射到所有浮点值的集合中,这可能是一个问题(听起来可能是因为 您使用 tf-idf) 而不是所有布尔值的集合。

如果您的特征提取器返回 tf-idf 值,那么我认为 nltk.NaiveBayesClassifier 将检查是否为 true

tf-idf(word1_in_doc1) == tf-idf(word1_in_class1)

而不是任何适合 tf-idf 的连续分布的适当问题。

这可以解释您的准确率低,特别是如果一个类别在您的训练集中出现 53% 的时间。

您可能想查看在 scikit-learn 中实现的多项式朴素贝叶斯分类器。

有关多项式和多元伯努利分类器的更多信息,请参阅this very readable paper

【讨论】:

    【解决方案3】:

    可能有帮助的几点:

    • 不要使用停止列表,它会降低准确性(但要删除标点符号)
    • 查看单词特征,仅以前 1000 个为例。降低维度将大大提高您的准确性;
    • 使用二元组和一元组 - 这会稍微提高准确性。

    您还可以找到其他加权技术,例如 log(1 + TF) * log(IDF) 将提高准确性。祝你好运!

    【讨论】:

      【解决方案4】:

      就像 Maus 所说的那样,NLTK 朴素贝叶斯 (NB) 使用伯努利模型加上平滑来控制特征条件概率==0(对于训练中分类器未看到的特征)平滑的常用技术是拉普拉斯平滑您将条件概率的分子加 1,但我相信 NLTK 将分子加 0.5。NLTK NB 模型使用布尔值并基于此计算其条件,因此使用 tf-idf 作为特征不会产生好的或甚至有意义的结果。

      如果您想留在 NLTK 中,那么您应该使用单词本身作为特征和二元组。查看 Jacob Perkins 撰写的关于在 NLTK 中使用 NB 进行文本处理的文章:http://streamhacker.com/tag/information-gain/。这篇文章很好地解释和演示了一些你可以做的事情来预处理你的数据;它使用来自 NLTK 的电影评论语料库进行情感分类。

      还有另一个 Python 模块用于文本处理,称为 scikit-learn,其中包含各种 NB 模型,例如 Multinomial NB,它使用每个单词的频率而不是每个单词的出现来计算其条件概率。

      以下是一些关于 NB 以及多项式和伯努利模型如何工作的文献: http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html;使用网页上的上一个/下一个按钮浏览文献。

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 2012-11-02
        • 2019-01-22
        • 2018-03-06
        • 2012-07-02
        • 2013-12-02
        • 2017-03-17
        • 2014-07-01
        • 2021-11-15
        相关资源
        最近更新 更多