我正在寻找一个包含大约 150 个类别(可能在 Java 中)的分类器,主要用于推文(非常小的文档)。一些类具有非常相似的域,例如。“公司”、“竞争”、“消费者”、“国际法”、“国际组织”、“国际政治与政府”。当需要如此高分辨率时,哪种算法/方法最好?我已经尝试过朴素贝叶斯(obv),但到目前为止它的表现并不是很好(尽管这可能只是由于训练数据的质量)。社区的想法将非常受欢迎!
谢谢,
标记
我正在寻找一个包含大约 150 个类别(可能在 Java 中)的分类器,主要用于推文(非常小的文档)。一些类具有非常相似的域,例如。“公司”、“竞争”、“消费者”、“国际法”、“国际组织”、“国际政治与政府”。当需要如此高分辨率时,哪种算法/方法最好?我已经尝试过朴素贝叶斯(obv),但到目前为止它的表现并不是很好(尽管这可能只是由于训练数据的质量)。社区的想法将非常受欢迎!
谢谢,
标记
提出一个从(可能很多)级别的子分类器构建的分层分类器可能是值得的(即,为您的文档标签提出分类法)。
单个分类器可以输出许多可能的类标签中的任何一个。
分层分类器将相关的类标签组合在一起,并执行额外的分类层,直到达到叶节点(或直到置信度下降到某个阈值以下)。
直觉是,当类别数量较少时,分类器将更容易学习判别特征。
例如,分层分类器可能更容易学习,这是一个很好的运动特征,而如果只看到一个类别(篮球)而不是另一个类别(曲棍球)player
,则单个分类器的学习时间会更困难。player
您应该尝试不同的算法,因为已知没有模型能胜过其他算法。Weka(正如@Sanz 所建议的)或 RapidMiner 是尝试多个分类器而没有太多麻烦的好选择。
您的问题是推文携带的信息量非常有限,问题不在于应用哪种方法,而在于如何表示信息。您应该尝试一些使用推文数据(例如作者或主题标签)来增加知识的技术。您可以访问这些信息吗?
考虑多标签方法也是一个不错的选择。但是,我会首先关注数据表示和增强。
问候,