6

有谁知道优秀的开源文本分类模型吗?我了解斯坦福分级机构,Weka,Mallet等,但他们都需要培训。文本分类分类器

我需要将新闻报道分为体育/政治/健康/游戏等。那里有没有预先训练过的模型?

炼金术,OpenCalais等都不是选项。我需要开源工具(最好用Java)。

回答

5

具有预先训练模型一个长长的清单假定这是用来训练语料库是从确切相同的域文件你正在尝试分类。通常这不会给你想要的结果,因为你没有原始的语料库。机器学习不是静态的,当您训练分类器时,您需要在新功能/信息可用时更新模型。举例来说,在体育/政治/健康/游戏/等领域,将你喜欢的新闻文章分类。

首先是什么语言?我们只谈论英语吗?原始语料库如何标记?而最大的未知数是类别。

训练你自己的分类器真的很简单。如果你正在分类文本,MALLET是最好的选择。您可以在10分钟内完成并运行。您可以在1小时内将MALLET添加到您自己的应用程序中。

如果您想对新闻文章进行分类,您可以使用许多开源语料库作为开始培训的基础。我会从路透社21578或RCV-1开始。

+0

非常感谢Shane的回答。我一定会研究你提到的数据集! 但是,我只在英文数据和新闻文章的一般领域(类似于Alchemy和OpenCalais分类的领域)工作。我会给马勒特一枪。 – MFARID 2013-03-14 16:58:13

+0

如果您有任何问题,请让我知道! – Shane 2013-03-15 22:57:39

0

还有就是预先训练模型OpenNLP

http://opennlp.sourceforge.net/models-1.5/

+1

非常感谢,但他们没有做文本分类 – MFARID 2013-03-07 16:56:36

+0

不知道这是否会适合您的需要 https://cwiki.apache.org/MAHOUT/bayesian.html 也引用一个与他们的来源一起出现的例子。 https://cwiki.apache.org/MAHOUT/wikipedia-bayes-example.html – 2013-03-26 04:02:43

2

根据您的需要,有很多分类器。首先,我想你可能想要缩小你想要对分类器做什么。

而培训是分类步骤的一部分,我不认为你会在那里找到许多预先训练的分类器。此外,培训几乎总是分类的一部分。

这就是说,实际上有很多资源你可以看看。我不能假装利用这个信用,但这是一个例子:

Weka中 - 是的机器 学习算法用于数据挖掘的集合。它是最流行的 文本分类框架之一。它包含各种算法(包括朴素贝叶斯和支持向量)在内的各种算法的实现。机器(SVM,在SMO下列出)[注:其他常用的非Java SVM实现为SVM-Light,LibSVM和SVMTorch]。相关的 项目是Kea(关键词提取算法),用于从文本文档中提取关键字句的 算法。

的Apache Lucene的亨利马乌 - 一个孵化项目,以共同的机器学习算法创建的,高度可扩展的分布式 的实现方案, 顶部的Hadoop的map-reduce框架。

来源:http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html

+0

谢谢,丰盛,为你解答。 – MFARID 2013-03-14 16:59:44

2

你是什么意思的分类是非常重要的。

分类是监督任务,这需要预先标记语料库。从已经标记的语料库开始,您必须使用多种方法和方法创建模型,最后您可以使用该模型对未标记的测试语料进行分类。如果是这种情况,您可以使用多分类器,它通常是二进制分类器的二叉树应用程序。针对这种类型的任务的最先进的方法是使用机器学习的分支,SVM。两个最好的SVM分类器是LibSVMSVMlight。这些是开源的,易于使用,并包括多类分类工具。最后,你必须进行文献调查,以便了解除了获得好的结果之外还应该做些什么,因为使用这些分类器本身是不够的。您必须操作/预处理您的语料库以提取承载部分(例如unigrams)的信息并排除嘈杂的部分。总的来说,你很可能还有很长的路要走,但NLP是一个非常有趣的话题,值得我们去努力。

但是,如果您的分类意思是聚类,那么问题会更加复杂。群集是一个未受监督的任务,这意味着您将不包含任何关于哪个示例属于哪个组/主题/类的程序的信息。也有关于混合半监督方法的学术研究,但它们与聚类问题的真正目的有些分歧。您在操作语料库时需要使用的预处理与您在分类问题中必须执行的操作具有类似的性质,因此我不会再提及它。要进行群集,您需要遵循几种方法。首先,您可以使用LDA(潜在狄利克雷分配)方法来降低语料库的维度(特征空间的维数),这将有助于从特征中获得效率和信息增益。在LDA旁边或之后,您可以使用分层聚类或类似的其他方法,例如K-Means,以便对未标记的语料库进行聚类。您可以使用GensimScikit-Learn作为用于群集的开源工具。两者都是功能强大,有据可查,易于使用的工具。

在任何情况下,都要进行大量的学术阅读并尝试理解这些任务和问题下的理论。通过这种方式,您可以针对您具体处理的问题提出创新且高效的解决方案,因为NLP中的问题通常取决于语料库,您在处理特定问题时一般都会自行处理。很难找到通用和即时可用的解决方案,我也不建议依靠这样的选择。

我可能会过度回答您的问题,对不相关的部分感到抱歉。

好运气=)

+0

很好的答案!非常感谢。 我很清楚分类。我正在寻找一个监督的方法,但与预先训练的模型 – MFARID 2013-04-12 23:04:40

+1

模型是您的分类工作的主要成果;所有其他的东西都是为了创造一个适合您需求的好模型。从这个意义上说,试图找到一个随时可用的模型是无关紧要的,而且很可能是不可能的。这主要是因为您尝试实现的任务,您正在处理的语料库,您需要的效率以及所有其他方面对您和您的案例而言都是独一无二的;因此,找到一个能够满足你的目标的模型是一个纯粹运气的问题。我的建议是尽快弄脏手,祝你好运=) – clancularius 2013-04-15 09:56:27