记一个文本分类系统的实现

基于信息检索课程,完成实现了一个文本分类系统,现记录一下整个实现过程。

文本分类以文本数据为分类对象,本质上是机器学习方法在信息检索领域的一种应用,可以继承机器学习领域的很多概念和方法,但同时也需要结合信息检索领域的特点进行处理。主要研究的方向是:文本分词方法、文本特征提取方法、分类算法。

本人主要使用了5种常用的分类算法,分别是kNN、Rocchio、NBC、SVM和ANN,对每种算法的结果进行了比较,使用了十折交叉验证绘制了各自的准确率曲线。由于本系统基于的搜狗语料库,是中文文本,因此使用的分词工具是Python实现的中文分词工具jieba。使用的特征提取方法是信息增益。

1、语料

选择搜狗语料库的Reduced版本,一共有9个类别每个类别1990篇文章。考虑到实现规模,从每个类别中选择了600篇文档一共5400篇文档作为训练样本。共有9个类别,标号对应如下:(搜狗语料类别– 分类标号 – 类别名称)

  • C000008—— 1 —— 财经
  • C000010—— 2 —— IT
  • C000013—— 3 —— 健康
  • C000014—— 5 —— 体育
  • C000016—— 4 —— 旅游
  • C000020—— 6 —— 教育
  • C000022—— 7 —— 招聘
  • C000023—— 8 —— 文化
  • C000024—— 9 —— 军事

2、分词

本系统使用python语言实现,同时是针对中文文章进行分词,因此选取了jieba(项目见Github)这个专门用于中文分词的python工具。

针对上述5400篇训练样本,首先使用jieba进行分词,共得到157269个词项。然后编写python程序,计算每个类别下的每篇文章的tf,得到所有文档集的倒排记录表。同时统计每个词项的df并计算idf保存到文件中供后续使用。

3、特征提取

对分词后得到的157269个词项,首先使用jieba工具的标签抽取函数,输入idf和停用词,得到初步的6445个候选特征。

接着使用信息增益(IG)这种特征提取方法,在候选特征中计算每个词项对9个类别的信息增益。信息增益计算如下:

同时结合文档频率(DF)进行过滤,将小于DF小于5的词项过滤掉,然后设置IG的不同阈值得到不同阈值下特征,最终得出阈值为0.016,特征数目为967时分类效果最好。

4、向量化表示

根据上述得到的特征,对5400篇文档进行向量化表示,每篇文章都是一个967维的向量。第一种是使用tf(词项频率),分别计算出不同维数下的向量。第二种是使用tf-idf方式,对每篇文档的每个特征进行向量化,得到每个特征的tf-idf值。

5、分类器训练

所选择的五种分类算法中,kNN、Rocchio、NBC和ANN是使用python自行实现,SVM是使用python调用了libsvm程序实现。这写算法的具体实现在此不予赘述,具体可参考各类机器学习方法的书籍。

6、系统实现

最终基于python CGI实现了一个web应用系统,支持输入一个新闻url后,系统输入对应的分类结果,同时支持url文件上传进行批量分类。界面如下:

上传url文件后,分类结果显示如下:

说明:分类url目前仅支持搜狐、腾讯、网易、新浪四个网站的新闻类页面的文章。

参考:

[1] Joachims, T. . Textcategorization with Support Vector Machines: Learning with many relevantfeatures. In Machine Learning[C]. ECML-98, Tenth European Conference on MachineLearning, 1998: 137--142.

[2] Wikipedia. Documentclassification [DB/OL].

http://en.wikipedia.org/wiki/Document_classification.2014

[3] Fandywang. 斯坦福大学自然语言处理第六课“文本分类(Text Classification)”[DB/OL].http://52opencourse.com/222/斯坦福大学自然语言处理第六课“文本分类(Text Classification). 2012.

[4] Li F., Yang Y. A LossFunction Analysis for Classification Methods in Text Categorization[C].International Conference on Machine Learning (ICML), 2003: 472-479.

[5] 申红,吕宝粮,内山将夫,井佐原均. 文本分类的特征提取方法比较与改进[J]. 计算机仿真, 2006, 23(3): 222-225

时间: 2024-10-12 17:48:39

记一个文本分类系统的实现的相关文章

其实决策树的定义用一个邮件分类系统去诠释

其实决策树的定义用一个邮件分类系统去诠释一下.if 我们收到一个来自邮件域为funny.com的邮件 :    我们将这份邮件甩到无聊的时候才会去读的栏目中elif 收到的邮件中包含字眼“爱人” :    赶紧放到非常重要并且非常迅速回复邮件else:    什么玩意儿,拒绝浏览 哈哈,这就是决策树的一个比较好理解的例子啦,有点类似于 程序流程图哈(不过这是树结构) 优点 计算复杂度不高,输出的结果便于理解,而且对中间值的缺失不敏感,可以处理不相关特征数据 缺点 会产生过度匹配的问题,这个时候我

文本分类,数据挖掘和机器学习

转自:http://blog.chinaunix.net/uid-446337-id-94440.html 分类: 机器学习的有概率分类器(probabilistic) ,贝叶斯推理网络(bayesian inference networks) , 决策树分类器(decision tree) ,决策规则分类器(decision rule) ,基于回归的线性最小二乘llsf(regression based on linearleast squares fit ) , 符号规则归纳法( symbo

统计学习方法文本分类

一个文本分类问题就是将一篇文档归入预先定义的几个类别中的一个或几个,而文本的自动分类则是使用计算机程序来实现这样的分类.通俗点说,就好比你拿一篇文章,问计算机这文章要说的究竟是体育,经济还是教育,计算机答不上,说明计算机弱爆了就打它的屁屁. 注意这个定义当中着重强调的两个事实. 第一,用于分类所需要的类别体系是预先确定的.例如新浪新闻的分类体系,Yahoo!网页导航的分类层次.这种分类层次一旦确定,在相当长的时间内都是不可变的,或者即使要变更,也要付出相当大的代价(基本不亚于推倒并重建一个分类系

朴树贝叶斯新闻分类系统

基于搜狗语料库,建立的一个新闻分类系统:类别包括: classifierMap.put(0, "IT"); classifierMap.put(1, "体育"); classifierMap.put(2, "健康"); classifierMap.put(3, "军事"); classifierMap.put(4, "招聘"); classifierMap.put(5, "教育"); c

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

转自https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路.做法和部分实践的经验. 业务问题描述: 淘宝商品的一个典型的例子见下图,图中商品的标题是"夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏".淘宝网后台是通过树形的多层的类目体系管理商品的,覆盖叶子类目数量达上万个,商品量也

文本分类入门-特征选择方法之信息增益

http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html 前文提到过,除了开方检验(CHI)以外,信息增益(IG,Information Gain)也是很有效的特征选择方法.但凡是特征选择,总是在将特征的重要程度量化之后再进行选择,而如何量化特征的重要性,就成了各种方法间最大的不同.开方检验中使用特征与类别间的关联性来进行这个量化,关联性越强,特征得分越高,该特征越应该被保留. 在信息增益中,重要性的衡量标准就是看特征能够

tensorflow实现基于LSTM的文本分类方法

tensorflow实现基于LSTM的文本分类方法 作者:u010223750 引言 学习一段时间的tensor flow之后,想找个项目试试手,然后想起了之前在看Theano教程中的一个文本分类的实例,这个星期就用tensorflow实现了一下,感觉和之前使用的theano还是有很大的区别,有必要总结mark一下 模型说明 这个分类的模型其实也是很简单,主要就是一个单层的LSTM模型,当然也可以实现多层的模型,多层的模型使用Tensorflow尤其简单,下面是这个模型的图  简单解释一下这个图

PaddleHub提供的ERNIE进行文本分类

可直接在百度的aistudio中进行实验: 地址:https://aistudio.baidu.com/aistudio/projectdetail/305830 ERNIE 通过建模海量数据中的词.实体及实体关系,学习真实世界的语义知识.相较于 BERT 学习原始语言信号,ERNIE 直接对先验语义知识单元进行建模,增强了模型语义表示能力,以 Transformer 为网络基本组件,以Masked Bi-Language Model和 Next Sentence Prediction 为训练目

谷歌做了45万次不同类型的文本分类后,总结出一个通用的“模型选择算法”...

谷歌做了45万次不同类型的文本分类后,总结出一个通用的"模型选择算法"... 2018年07月25日 17:43:55 阅读数:6 新智元报道 来源:developers.google.com 编译:肖琴.大明 [导读]谷歌官方推出"文本分类"指南教程.为了最大限度地简化选择文本分类模型的过程,谷歌在进行大约450K的文本分类实验后,总结出一个通用的"模型选择算法",并附上一个完整的流程图,非常实用. 文本分类(Text classificati