7

我有一个分类问题,我需要找出解决它的最佳方法。我有一组培训文档,其中文档中的一些句子和/或段落标有一些标签。并非所有句子/段落都被标记。一个句子或段落可能有多个标签/标签。我想做的是制作一些模型,在给定新文档的情况下,它将为文档中的每个句子/段落提供建议的标签。理想情况下,它只会给我高概率的建议。

如果我使用 nltk NaiveBayesClassifier 之类的东西,它会给出很差的结果,我认为是因为它没有考虑训练文档中的“未标记”句子,其中包含许多与标记句子相似的单词和短语。这些文件本质上是法律/金融的,并且充满了法律/金融术语,其中大部分应该在分类模型中忽略。

除了训练集中的标记数据之外,是否有一些比朴素贝叶斯更好的分类算法,或者有没有办法将未标记的数据推入朴素贝叶斯?

4

2 回答 2

3

这是我要稍微修改现有方法的方法:为每个可能的标签、每个句子训练一个分类器。包括所有未表达该标签的句子作为该标签的否定示例(这将隐式计算未标记的示例)。对于一个新的测试句子,运行所有 n 个分类器,并保留得分高于某个阈值的类作为新句子的标签。

我可能会使用朴素贝叶斯以外的东西。如果您想要概率性的东西,逻辑回归 (MaxEnt) 是显而易见的选择:如果您不关心概率(我认为您目前不关心),SVM 非常强大。

这确实是一项序列标记任务,理想情况下,您也可以将附近句子的预测折叠起来……但据我所知,CRF/StructSVM 或其他序列标记方法没有原则性扩展,可以让实例具有多个标签。

于 2013-09-23T10:54:48.110 回答
1

有没有办法将未标记的数据推入朴素贝叶斯

“标记”和“未标记”数据之间没有区别,朴素贝叶斯构建了简单的条件概率,特别是P(label|attributes)P(no label|attributes)在很大程度上基于使用的处理管道,但我高度怀疑它实际上忽略了未标记的部分。如果它出于某种原因这样做,并且您不想修改代码,您还可以在所有剩余的文本段中引入一些人工标签“无标签”。

有没有比朴素贝叶斯更好的分类算法

是的,NB其实是最基本的模型,还有几十个更好(更强,更通用)的模型,在文本标注上取得了更好的效果,包括:

  • 隐马尔可夫模型 (HMM)
  • 条件随机场 (CRF)
  • 一般 - 概率图形模型(PGM)
于 2013-09-19T21:02:07.157 回答