我正在寻找实现一个大约150个类别(可能是Java)的分类器,主要用于推文(所以非常小的文档)。有些类具有非常相似的域,例如。 '公司','竞争','消费者','国际法','国际组织','国际政治和政府'。当需要如此高的分辨率时,哪种算法/方法最好?我尝试过Naive Bayes(obv),到目前为止它的表现并不是很好(尽管这可能仅仅归因于训练数据的质量)。社区的想法非常受欢迎!
谢谢,
标记
答案 0 :(得分:5)
可能值得提出一个从(可能很多)级别的子分类器构建的分层分类器(即,为您的文档标签提供分类法)。
单个分类器可以输出任何可能的类标签。
分层分类器将相关的类标签组合在一起,并执行其他分类层,直到到达叶节点(或直到置信度降至某个阈值以下)。
直觉是当分类数量较少时,分类器将更容易学习判别性特征。
例如,分层分类器可以更容易地学习player
是指示运动的好特征,而单个分类器如果player
只能看到一个,则会有更困难的时间类别(篮球),而不是另一个(曲棍球)。
答案 1 :(得分:2)
Weka是一种不同的机器学习模型(Naive Bayes,C4.5,OneR,SVM,K-NN ......)的实验工具,是最常用于数据挖掘的模型之一。也许你想尝试不同的模型,看看哪个最适合你的问题。
您可以从Java代码中调用算法,或使用其可执行文件直接在数据集上运行它们。
由于您的类别相似,或许您想要检查一些Multi-label classification方法
答案 2 :(得分:2)
你应该尝试不同的算法,因为没有任何模型可以胜过其他模型。 Weka(由@Sanz建议)或RapidMiner是尝试多个分类器而不会有太多麻烦的好选择。
您的案例中的问题是推文传递的信息量非常有限,问题不在于应用哪种方法,而在于如何表示信息。您应该尝试一些使用推特数据(如作者或主题标签)进行知识增强的技术。你有权访问这些信息吗?
考虑多标签方法也是一个不错的选择。但是,我会首先关注数据表示和扩充。
此致