从一组文档中分类标记句子的最佳方法

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

如果我使用类似nltk NaiveBayesClassifier的东西,它会给出糟糕的结果,我认为是因为它没有考虑到训练文档中的“未标记”句子,它将包含许多与标记句子相似的单词和短语。 这些文件是法律/财务性质的,并且充满法律/财务术语,其中大部分应该在分类模型中打折扣。

除了训练集中的标记数据之外,还有一些更好的Naive Bayes分类算法,还是有一些方法可以将未标记数据推入朴素贝叶斯?


下面是我想要稍微修改您现有的方法:针对每个句子对每个可能的标签进行单个分类器训练。 将所有不表示该标记的句子作为标记的反面示例(这将隐式计算未标记的示例)。 对于新的测试语句,运行所有n个分类器,并将保留超过某个阈值的分数作为新句子的标签。

我可能会使用朴素贝叶斯以外的东西。 如果你想要一些概率的话,Logistic回归(MaxEnt)是一个明显的选择:如果你不关心概率,那么支持向量机非常强大(我认为你目前不认为)。

这实际上是一个序列标签任务,理想情况下,您也可以从附近的句子中预测折叠......但据我所知,CRF / StructSVM没有原则性的扩展或其他序列标签方法,允许实例具有多个标签。


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

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

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

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

  • 隐马尔可夫模型(HMM)
  • 条件随机字段(CRF)
  • 一般来说 - 概率图形模型(PGM)
  • 链接地址: http://www.djcxy.com/p/74283.html

    上一篇: Best way to classify labeled sentences from a set of documents

    下一篇: Is libstdc++ support for std::unordered