文本分类成类别

Posted

技术标签:

【中文标题】文本分类成类别【英文标题】:Text Classification into Categories 【发布时间】:2011-12-29 12:24:21 【问题描述】:

我正在研究一个文本分类问题,我正在尝试将一组单词分类,是的,有很多库可用于分类,所以如果您建议使用它们,请不要回答。

让我解释一下我想要实现的内容。 (举个例子)

单词列表:

    java 编程 语言 升c

类别列表。

    java 升c

这里我们将训练这个集合,如下:

    java 映射到类别 1.java 编程映射到类别 1.java 编程映射到类别 2.c-sharp 语言映射到类别 1.java 语言映射到类别 2.c-sharp c-sharp 映射到类别 2.c-sharp

现在我们有了一个短语“最好的 Java 编程书” 从给定的短语中,以下单词与我们的“单词列表”匹配。

    java 编程

“programming”有两个映射类别“java”和“c-sharp”,所以它是一个常用词。

“java”仅映射到类别“java”。

所以我们的短语匹配类别是“java”

这就是我想到的,这个解决方案好不好,可以实施吗,你有什么建议,我错过了什么,缺陷等等。

【问题讨论】:

没什么,这是个问题,这行得通吗,我应该花时间尝试实现它吗? 【参考方案1】:

这当然可以实现。如果你在正确的数据集上训练朴素贝叶斯分类器或线性 SVM(我猜是 Java 和 C# 编程书籍的标题),它应该学会将术语“Java”与 Java、“C#”和“.NET”与 C# 相关联,以及两者的“编程”。即,如果数据集被平均划分,朴素贝叶斯分类器可能会学习 Java 或 C# 的通用术语(如“编程”)大致均匀的概率。

【讨论】:

+1 如果我想对 1000 个不同类别的文本进行分类怎么办...仍然朴素贝叶斯分类器将是一个不错的选择...这种情况会发生吗,测试时的文本会产生 100 个不同的结果...请建议...【参考方案2】:

实现这一点的一种简单的方法是使用直接的 Lucene(或任何文本索引引擎)。创建一个包含所有“java”示例的单个 Lucene 文档,以及另一个包含“c#”示例的文档,并将两者都添加到索引中。对一个新文档进行分类,对文档中的所有术语进行 OR 运算并对索引执行查询,并获取得分最高的类别。

【讨论】:

【参考方案3】:

如果可能,请阅读名为“Programming Collective Intelligence”一书的“Document Filtering”一章中名为“A Naive Classifier”的部分。虽然示例是用 Python 编写的,但我希望这不会给您带来太大的麻烦。

【讨论】:

以上是关于文本分类成类别的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯文本分类在一个类别中失败。为啥? [关闭]

机器学习文本分类,其中文本属于 1 到 N 个类别

技术 文本聚类与分类

多于一级类别的文本分类问题

文本分类/分类算法[关闭]

使用机器学习对大文本进行分类