我有一个分类问题,我需要找到最好的方法来解决它。我有一套培训文档,文档中的一些句子和/或段落都有标记。并不是所有的句子/段落都有标签。一个句子或段落可能有多个标签/标签。我想做的是做一些模型,如果给出一个新的文件,它将为文件中的每一个句子/段落提供建议的标签。理想情况下,它只会给我高概率的建议。
如果我使用像nltk NaiveBayesClassifier这样的词,结果会很差,我认为这是因为它没有考虑到培训文档中的“未标注”句子,它将包含许多类似于标记句的单词和短语。这些文件是法律/金融性质的,其中充满了法律/金融术语,其中大部分应在分类模式中贴现。
是否有比朴素贝叶斯更好的分类算法,或者除了训练集的标记数据之外,还有什么方法将未标注的数据推入朴素贝叶斯?
发布于 2013-09-23 10:54:48
下面是我要做的,稍微修改一下您现有的方法:为每个可能的标记和每个句子训练一个分类器。将不表示该标记的所有句子作为标记的否定句(这将隐式计算未标记的示例)。对于一个新的测试句子,运行所有的n个分类器,并保留超过某个阈值的类作为新句子的标签。
我可能会用些别的东西,而不是天真的贝斯。如果你想要概率性的东西,逻辑回归(MaxEnt)是显而易见的选择:如果你不关心概率(我认为你现在不这么做),那么SVM是非常强大的。
这确实是一项序列标注任务,理想情况下,你也可以从附近的句子中加入预测.但据我所知,CRFs/StructSVM或其他允许实例具有多个标签的序列标记方法没有原则扩展。
发布于 2013-09-19 21:02:07
有没有办法将未标注的数据转化为朴素的贝叶斯?
在“标记”和“未标记”数据之间没有区别,朴素贝叶斯构建简单的条件概率,特别是P(label|attributes)
和P(no label|attributes)
,因此它在很大程度上基于已使用的处理管道,但我非常怀疑它实际上忽略了未标记的部分。如果出于某种原因,并且您不想修改代码,那么您也可以在所有剩余的文本段中引入一些人为的标签"no label“。
有没有比朴素贝叶斯更好的分类算法?
是的,NB实际上是最基本的模式,有几十种更好(更强、更一般)的模式,它们在文本标记方面取得了更好的效果,包括:
https://stackoverflow.com/questions/18904498
复制相似问题