我有训练集,我想根据我的训练集使用分类方法对其他文档进行分类。我的文档类型是新闻,类别是体育,政治,经济等。
我完全理解天真的贝叶斯和KNN,但是SVM和决策树是模糊的,我不知道我是否可以自己实现这个方法?或者有使用这种方法的应用程序?
我可以用这种方式对文档进行分类的最佳方法是什么?
谢谢!
答案 0 :(得分:12)
虽然这是最简单的算法,并且一切都被认为是独立的,但在实际文本分类的情况下,这种方法效果很好。我会首先尝试这个算法。
KNN用于聚类而不是分类。我认为你误解了聚类和分类的概念。
SVM具有SVC(分类)和SVR(回归)算法来进行类分类和预测。它有时运行良好,但从我的经验来看,它在文本分类方面表现不佳,因为它对好的标记器(过滤器)有很高的要求。但是数据集的字典总是有脏标记。准确性非常差。
我从未尝试过这种方法进行文本分类。因为我认为决策树需要几个关键节点,而文本分类很难找到“几个关键令牌”,随机森林对于高稀疏维度也不好。
FYI
这些都来自我的经验,但对于您的情况,您没有更好的方法来决定使用哪种方法,而是尝试每种算法以适合您的模型。
Apache的Mahout是机器学习算法的绝佳工具。它集成了三个方面的算法:推荐,聚类和分类。你可以尝试这个库。但是你必须学习一些关于Hadoop的基本知识。
对于机器学习,weka是一个集成了许多算法的体验软件工具包。
答案 1 :(得分:6)
线性SVM是文本分类问题的顶级算法之一(以及Logistic回归)。决策树在如此高维度的特征空间中受到严重影响。
Pegasos algorithm是最简单的线性SVM算法之一,非常有效。
编辑:多项式朴素贝叶斯也适用于文本数据,但通常不如线性SVM。 kNN可以正常工作,但它是一个已经很慢的算法,并且永远不会超过文本问题的准确性图表。答案 2 :(得分:2)
如果您熟悉Python,可以考虑NLTK和scikit-learn。前者专用于NLP,而后者是一个更全面的机器学习包(但它有大量的文本处理模块)。两者都是开源的,并且在SO上有很好的社区支持。