代码之家  ›  专栏  ›  技术社区  ›  Youssef

Java文本分类问题〔关闭〕

  •  11
  • Youssef  · 技术社区  · 15 年前

    我有一套书,物品,班级 定义如下:

    Class Book{
    
    String title;
    ArrayList<tags> taglist;
    
    }
    

    在哪里? 标题 是本书的标题,例如: 用于假人的javascript .

    标签表 是我们示例中的标记列表: javascript,jquery,“Web开发”,..

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

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

    IT书籍:

    • 傻瓜书的爪哇
    • 用于假人的javascript
    • 30天后学习flash
    • C++程序设计

    历史书籍:

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

    生物学书籍:

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

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

    4 回复  |  直到 7 年前
        1
  •  29
  •   dmcer    15 年前

    这看起来是一个相当简单的基于关键字的分类任务。因为您使用Java,因此需要考虑好的包。 Classifier4J , Weka Lucene Mahout .

    分类4J

    Classifier4J支持使用 naive Bayes 和A vector space 模型。

    如此所见 source code snippet 在使用朴素的贝叶斯分类器进行训练和评分时,包是相当容易使用的。它也在自由党的领导下发行 Apache Software License .

    韦卡

    WEKA是一种非常流行的数据挖掘工具。使用它的一个优点是你可以很容易地尝试使用许多 different machine learning models 将书籍分类为主题,包括 朴素贝叶斯 , decision trees , support vector machines , k-nearest neighbor , logistic regression 甚至是 rule set based learner .

    您将找到一个关于使用WEKA进行文本分类的教程。 here .

    但是,WEKA分布在 GPL . 您将无法将其用于要分发的封闭源代码软件。但是,您仍然可以使用它来支持Web服务。

    卢西恩马哈特

    Mahout是为在非常大的数据集上进行机器学习而设计的。它建在 Apache Hadoop 并支持使用NaiveBayes进行监督分类。

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

    像Classifier4J一样,Mahout也是在自由主义者的领导下发行的。 Apache软件许可证 .

        2
  •  0
  •   Claudiu    15 年前

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

    Map<Tag, ArrayList<Book>> m = {};
    for (Book b : books) {
        for (tag t : b.taglist) {
            m.get(t).add(b);
        }
    }
    

    现在 m.get("IT") 将归还所有IT书籍等…

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

        3
  •  0
  •   tylermac    15 年前

    所以你想制作一张包含一系列书籍的标签的地图?

    编辑:

    听起来你可能想看看 Vector Space Model 应用类别分类。

    要么 Lucene Classifier4j 为此提供一个框架。

        4
  •  -1
  •   JRL    15 年前

    你可能想看看 fuzzy matching algorithms 比如Soundex和Levenshtein。