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

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

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

单词列表:

  1. java
  2. 编程
  3. 语言
  4. 升c

类别列表。

  1. java
  2. 升c

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

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

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

  1. java
  2. 编程

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

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

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

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

【问题讨论】:

  • 没什么,这是个问题,这行得通吗,我应该花时间尝试实现它吗?

标签: machine-learning classification bayesian


【解决方案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 编写的,但我希望这不会给您带来太大的麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 2016-06-14
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多