Java文本分类问题

You*_*sef 11 java text-processing nlp classification machine-learning

我有一组Books对象,类Book定义如下:

Class Book{

String title;
ArrayList<tags> taglist;

}
Run Code Online (Sandbox Code Playgroud)

标题是本书的标题,例如:使用Javascript傻瓜.

taglist是我们示例的标签列表:Javascript,jquery,"web dev",..

正如我所说,有一套书谈论不同的东西:IT,生物,历史......每本书都有一个标题和一组描述它的标签.

我必须按主题自动将这些书分类为分开的集合,例如:

IT书籍:

  • Java for dummies
  • Javascript for dummies
  • 在30天内学习闪光灯
  • C++编程

历史书:

  • 世界大战
  • 美国在1960年
  • 马丁路德金的一生

生物学书籍:

  • ....

你们知道一种分类算法/方法来申请这类问题吗?

解决方案是使用外部API来定义文本的类别,但问题在于书籍使用不同的语言:法语,西班牙语,英语.

dmc*_*cer 29

这看起来像是一个相当简单的基于关键字的分类任务.既然你正在使用Java,那么考虑好的包就是Classifier4J,WekaLucene Mahout.

Classifier4J

Classifier4J支持使用朴素贝叶斯向量空间模型进行分类.

正如在使用其朴素贝叶斯分类器进行训练和评分的源代码片段中所见,该软件包相当容易使用.它也是在自由派Apache软件许可发布的.

WEKA

Weka是一种非常流行的数据挖掘工具.使用它的一个优点是,您可以轻松地尝试使用多种不同的机器学习模型将书籍分类为主题,包括朴素贝叶斯,决策树,支持向量机,k近邻,逻辑回归,甚至是基于规则集的学习者.

您将在此处找到有关使用Weka进行文本分类的教程.

然而,Weka是根据GPL分发的.您将无法将其用于要分发的闭源软件.但是,您仍然可以使用它来支持Web服务.

Lucene Mahout

Mahout专为在非常大的数据集上进行机器学习而设计.它建立在Apache Hadoop之上,支持使用朴素贝叶斯进行监督分类.

您将在此处找到有关如何使用Mahout进行文本分类的教程.

与Classifier4J一样,Mahout在自由派Apache软件许可发布.