有没有人知道好的开源文本分类模型?我知道Stanford Classifier,Weka,Mallet等,但所有这些都需要培训。
我需要将新闻文章分类为体育/政治/健康/游戏/等。那里有没有经过预先训练的模型?
Alchemy,OpenCalais等不是选项。我需要开源工具(最好是Java)。
答案 0 :(得分:5)
拥有预先训练的模型假设用于训练的语料库来自与您尝试分类的文档完全相同的域。通常,这不会给你想要的结果,因为你没有原始语料库。机器学习不是静态的,当您训练分类器时,您需要在新功能/信息可用时更新模型。
例如,在体育/政治/健康/游戏/等领域中对您想要的新闻文章进行分类。
首先是什么语言?我们只谈论英语吗?原始语料库是如何标记的?最大的未知数是等类别。
训练自己的分类器真的很容易。如果您正在分类文本,MALLET是最佳选择。您可以在不到10分钟的时间内启动并运行。您可以在1小时内将MALLET添加到您自己的应用程序中。
如果您想对新闻文章进行分类,可以使用许多开源语料库作为开始培训的基础。我会从Reuters-21578或RCV-1开始。
答案 1 :(得分:2)
根据您的需要,有很多分类器。首先,我想你可能想缩小你想用分类器做什么。
训练是分类步骤的一部分,我认为你不会在那里找到很多预先训练好的分类器。此外,培训几乎总是分类的一部分。
话虽如此,实际上你可以看到很多资源。我不能假装相信这一点,但这是其中一个例子:
Weka - 是一个机器的集合 用于数据挖掘的学习算法。它是最受欢迎的之一 文本分类框架。它包含广泛的实现 各种算法,包括朴素贝叶斯和支持向量 机器(SVM,在SMO下列出)[注:其他常用的非Java SVM实现是SVM-Light,LibSVM和SVMTorch]。一个相关的 项目是Kea(Keyphrase Extraction Algorithm)的一种算法 从文本文档中提取关键短语。
Apache Lucene Mahout - 一个创建高度可扩展的孵化器项目 普通机器学习算法的分布式实现 Hadoop map-reduce框架的顶部。
来源:http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html
答案 2 :(得分:2)
分类意味着什么非常重要。
分类是监督任务,需要预先标记预先标记的语料库。从已经标记的语料库移开,您必须使用多种方法和方法创建模型,最后您可以使用该模型对未标记的测试语料库进行分类。如果是这种情况,您可以使用多类分类器,它通常是二进制分类器的二叉树应用程序。这种任务的最先进方法是使用机器学习的一个分支, SVM 。两个最好的SVM分类器是 LibSVM 和 SVMlight 。这些是开源的,易于使用,包括多类分类工具。最后,您必须进行文献调查,以便了解除了获得良好结果外还要做什么,因为使用这些分类器本身是不够的。您必须操纵/预处理您的语料库,以便提取包含部分(例如,unigrams)的信息并排除嘈杂的部分。一般来说,你很可能还有很长的路要走,但是NLP是一个非常有趣的话题,值得一试。
但是,如果分类的意思是聚类,那么问题会更复杂。群集是一项未受监督的任务,这意味着您将不会向正在使用的程序中包含哪些示例属于哪个组/主题/类的信息。关于混合半监督方法也有学术研究,但它们与聚类问题的真正目的有点不同。在操作语料库时需要使用的预处理与分类问题中的操作具有相似的性质,因此我不会再提及它。要进行群集,您必须遵循几种方法。首先,您可以使用 LDA(Latent Dirichlet Allocation)方法来减少语料库的维度(特征空间的维数),这将有助于提高效率和从功能中获取信息。在LDA之后或之后,您可以使用分层聚类或类似的其他方法(例如 K-Means )来聚类未标记的语料库。您可以使用 Gensim 或 Scikit-Learn 作为群集的开源工具。两者都是功能强大,文档齐全且易于使用的工具。
在所有情况下,进行大量的学术阅读,并尝试理解这些任务和问题背后的理论。通过这种方式,您可以为您专门处理的内容提出创新且高效的解决方案,因为NLP中的问题通常依赖于语料库,而您在处理特定问题时通常会自行处理。找到通用和即用型解决方案非常困难,我也不建议依赖这样的选项。
我可能会过度回答你的问题,对不相关的部分感到抱歉。
祝你好运=)
答案 3 :(得分:0)
OpenNLP有很多预先训练的模型