6

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

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

单词列表:

  1. 爪哇
  2. 编程
  3. 升c

类别列表。

  1. 爪哇
  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

现在我们从给定的短语中得到了一个短语“ The best java programming book ”,下面的单词与我们的“单词列表”匹配:

  1. 爪哇
  2. 编程

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

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

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

这就是我想到的,这个解决方案好不好,可以实施吗,你有什么建议,我遗漏的任何东西,缺陷等。

4

3 回答 3

4

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

于 2011-11-15T13:06:09.343 回答
1

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

于 2011-11-15T15:22:23.990 回答
0

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

于 2011-11-15T13:14:40.120 回答