Java文本分类问题

Java文本分类问题,java,machine-learning,nlp,text-processing,classification,Java,Machine Learning,Nlp,Text Processing,Classification,我有一组Books对象,classsBook定义如下: Class Book{ String title; ArrayList<tags> taglist; } 教材{ 字符串标题; ArrayList标记列表; } 其中title是本书的标题,例如:用于傻瓜的Javascript 标签列表是我们示例中的标签列表:Javascript、jquery、“web开发” 正如我所说,我有一套关于不同事物的书:IT、生物学、历史。。。 每本书都有一个标题和一组描述它的标签 我必须根据

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

Class Book{

String title;
ArrayList<tags> taglist;

}
教材{
字符串标题;
ArrayList标记列表;
}
其中title是本书的标题,例如:用于傻瓜的Javascript

标签列表是我们示例中的标签列表:Javascript、jquery、“web开发”

正如我所说,我有一套关于不同事物的书:IT、生物学、历史。。。 每本书都有一个标题和一组描述它的标签

我必须根据主题自动将这些书分类,例如:

IT书籍:

  • 虚拟人的Java
  • 傻瓜的Javascript
  • 在30天内学习flash
  • C++编程
历史书:

  • 世界大战
  • 1960年的美国
  • 马丁·路德·金的一生
生物学书籍:

你们知道适用于这类问题的分类算法/方法吗


一种解决方案是使用外部API来定义文本的类别,但这里的问题是,书籍使用不同的语言:法语、西班牙语、英语。

您可能需要查找Soundex和Levenshtein等语言。

因此,您希望创建一个包含书籍集合的标签地图

编辑:

听起来您可能想看看应用类别分类的方法


或者为此提供一个框架。

这看起来像是一个相当简单的基于关键字的分类任务。因为您使用java,所以要考虑的好包是,或者。p> 分类器4j

Classifier4J支持使用和模型进行分类

正如在这篇关于使用朴素贝叶斯分类器进行训练和评分的文章中所看到的,该软件包相当容易使用。它也在自由党的领导下发行

Weka

Weka是一种非常流行的数据挖掘工具。使用它的一个优点是,您可以很容易地尝试使用多种方法将书籍分类为主题,包括、、甚至是一个主题

您将找到一个关于使用Weka进行文本分类的教程

然而,Weka是按照以下方式分发的。您将无法将其用于要分发的封闭源代码软件。但是,您仍然可以使用它来支持web服务

Lucene Mahout

Mahout是为在非常大的数据集上进行机器学习而设计的。它建立在朴素贝叶斯的基础上,支持监督分类

您将找到一个教程,介绍如何使用Mahout进行文本分类


与Classifier4J一样,Mahout也是在自由派的领导下分发的

你不想要这么简单的东西吗

Map<Tag, ArrayList<Book>> m = {};
for (Book b : books) {
    for (tag t : b.taglist) {
        m.get(t).add(b);
    }
}
Map m={};
(b册:书籍){
用于(标记t:b.标记列表){
m、 获取(t)。添加(b);
}
}
现在
m.get(“IT”)
将返回所有IT书籍等


当然,有些书会出现在多个类别中,但现实生活中也会出现这种情况

我想制作图书对象的地图,其中键是类别名称。@yox:制作地图。这就是你的答案。我不想要贴标签的书。。我想要书的主题(地图键),这是不存在这里,它将是一个人工生成的string@yox:对不起,我误解了。是的,但两本书之间有一些共同的标签:(相关问题:叹气..这个问题的答案似乎到处都是,其中一些错误(?)把它当作一个简单的关于基本数据结构的家庭作业问题。Yox,你能确认这是一个文本分类任务吗?你想把带有关键词标记的书分类,然后使用某种分类算法将这些书映射到适当的主题?你是否已经为每本书指定了类别(我不是指标记)?@dmcer:这正是我想要做的,数据存储在关系数据库中,我正在从中创建图书对象。@adi92:不,我没有catogory标题,我必须自动猜测/生成它。很酷,这是计算两个字符串之间距离的一种很好的方法,谢谢你能详细说明如何使用Soundex和Levenshtein进行映射吗主题的关键字列表?不,如果你想在书中列出有意义的单词,则使用标记。。这将有助于对书籍进行分组。@yox:啊,那么你想根据书籍的标记集或书籍文本对主题进行分类?标记/书籍文本可以使用不同的语言?例如,我只想使用标记和标记a进行分类我们使用不同的语言。使用Classifier4J,VectorClassifier对我来说效果最好