如何利用机器实现对新闻进行自动分类

废话不多说,直接上干货。

要想利用你的机器实现对新闻自动识别分类,首先你需要准备以下几个东东:

1.语料库(人之所以能够对某些事物进行判断识别,是因为大脑之前有过记忆存储。机器也是!不过它学的比人类快,只要你把相关的语料下载到硬盘就等于你的机器已完成了对相关内容的学习。)

注:相关语料库的获取可以参考:http://www.jianshu.com/p/206caa232ded;我使用的是搜狗语料库。

2.在你机器上搭建好Python编译环境。(我安装的是Python3.4.2版本)

3.机器学习算法库(scikit-learn)的安装,可以参考:http://www.jianshu.com/p/21b758541825

4.搭建分词系统。(我使用的是jieba分词系统,具体如何搭建可以参考:http://www.th7.cn/Program/Python/201603/783911.shtml

5.停用词库。(可以到:http://download.csdn.net/detail/qq_28155529/9890386进行下载,对应stopword.txt文件)

上面如果都准备好了,下面我们就开始进入搬砖模块了!



机器自动分类的总体流程图:


流程说明:

(1)要分类,首先要有一个分好类的训练语料库来作为我们分类参考的标准。语料库的构建可以通过爬虫自己爬取但是测试发现爬取太过于费时而且爬下来的新闻还是未分好类的,还需后期自己手动分类因此为了缩短项目开发周期,直接下载使用已分好类的搜狗语料库(http://www.sogou.com/labs/resources.html);

(2)拿到语料库后,针对这些原始语料,需要提取它们的特征,这样才能知道具备哪些特征的文本属于哪种类别。文本的特征主要是由一系列词性的词构成,所以要对文本进行分词,通过后期提取相关词性的词来达到获取文本特征的目的。(本项目使用的是jieba分词系统);

(3)分词之后,我们可以从整个原始语料库中提取出一定数量的代表性词汇(名词),提取到的名词可能包含停用词,还需要在提取的名词词库基础上去除停用词,获得最终的名词词库;

(4)统计词频,至于为什么要统计词频,就不用说了吧,一个词在某类文本里出现的次数越多,越能代表这一类文本。当然如果某个词在这一类文本里出现次数很多而在其他类文本里根本不出现,就更能代表这一类文本了。

(5)计算特征值,其实词的频率只是文本最重要的特征之一,如果只靠词的频率去判断文本的类别的话,显然正确率是很低的。本项目使用TF-IDF(是一种用于资讯检索与资讯探勘的常用加权技术)来对文本进行更深层度的特征提取。

TF-IDF综合表征了该词在文档中的重要程度和文档区分度。但在文本分类中单纯使用TF-IDF来判断一个特征是否有区分度是不够的。它没有考虑特征词在分类间的分布。如果一个特征词,在各个类间分布比较均匀,这样的词对分类基本没有贡献;但是如果一个特征词比较集中的分布在某个类中,而在其它类中几乎不出现,这样的词却能够很好代表这个类的特征,而TF-IDF不能区分这两种情况。没有考虑特征词在类内部文档中的分布情况。在类内部的文档中,如果特征词均匀分布在其中,则这个特征词能够很好的代表这个类的特征,如果只在几篇文档中出现,而在此类的其它文档中不出现,显然这样的特征词不能够代表这个类的特征。这时就要通过卡方检验(Chi-square)的计算方法得到数据字典。(卡方校验如下图)

(6)借助机器学习算法库(Scikit-learn)中的函数对上面进行过数据挖掘的语料库进行自动拆分,拆分为训练集(train)和测试集(test)。(本项目采用的是朴素贝叶斯算法进行分类训练)得到测试结果,测试结果显示对新闻分类的准确率维持在70%到80%之间。



代码部分说明:(太长了这里就不贴了,下载地址:http://download.csdn.net/detail/qq_28155529/9890386)

第一步:通过PHP连接MySQL数据库,把数据库新闻表中的每条新闻记录读取到指定文件夹下的txt文件中,每条记录对应一个txt文件,并以每条新闻记录的id作为txt文件的名;(目的:方便后面使用Python语言编写的脚本对新闻进行分类去重操作)------此步操作代码对应operation.php文件

第二步:把第一步从数据库读取到硬盘上的每条新闻,进行分词,去停用词,计算词频等一系列操作,得到每条新闻的最终特征;------此步操作代码对应Most_powerful.py文件

提示:之前下载的搜狗语料库也是经过了上面两步进行特征提取后才投入使用的。比对的时候不是直接拿数据库中的新闻和原始语料库(搜狗语料库)中的新闻直接进行比对,而是拿对数据库中每条新闻进行提取后的特征与经过特征提取后的特征搜狗语料库进行比对的哦

第三步:分别从待分类的文件夹和已分好类作为标准的搜狗语料库加载数据,进行分类判断。------此步操作代码对应collect.py文件。

第四步:最后把分好类的信息,传递给PHP文件,利用PHP把分好类的信息写入到MySQL数据库,完成机器自动分类操作。-----此步操作代码对应operation.php文件。


好了搬砖完成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容