文本分类成类别
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 编写的,但我希望这不会给您带来太大的麻烦。
【讨论】:
以上是关于文本分类成类别的主要内容,如果未能解决你的问题,请参考以下文章