赞
踩
增加序号列
本实验的数据源是以单个新闻为单元,需要增加ID列来作为每篇新闻的唯一标识,方便下面算法的计算。
分词及词频统计
这两步都是文本挖掘领域最常规的做法。
首先使用分词组件对content字段(新闻内容)进行分词。去除过滤词之后(过滤词一般是标点符号及助语),再对词频进行统计。
停用词过滤
停用词过滤组件用于过滤输入的停用词词库,一般过滤标点符号以及对文章影响较小的助语等。
文本主题挖掘
使用PLDA文本挖掘组件需要先将文本转换成三元形式(文本转数字)
append_id 是每篇新闻的唯一标识。
key_value 字段中冒号前面的数字表示的是单词抽象成的数字标识,冒号后面是对应的单词出现的频率。数据进入PLDA算法。PLDA算法又叫主题模型,算法可以定位代表每篇文章的主题的词语。本次试验设置了50个主题,PLDA有六个输出桩,第五个输出桩输出结果展示的是每篇文章对应的每个主题的概率,
结果分析和评估
上面的步骤将文章从主题的维度表示成了一个向量。下面就可以通过向量的距离实现聚类,从而实现文章分类。
cluster_index 表示的是每一类的名称。
找到第0类,一共有 docid 为115,292,248,166四篇文章。
实验效果并不十分理想,主要原因如下:
没有进行细节的调优。
没有对数据进行特征工程处理。
数据量太小。
流程说明:
(1)要分类,首先要有一个分好类的训练语料库来作为我们分类参考的标准。语料库的构建可以通过爬虫自己爬取但是测试发现爬取太过于费时而且爬下来的新闻还是未分好类的,还需后期自己手动分类因此为了缩短项目开发周期,
(2)拿到语料库后,针对这些原始语料,需要提取它们的特征,这样才能知道具备哪些特征的文本属于哪种类别。文本的特征主要是由一系列词性的词构成,所以要对文本进行分词,通过后期提取相关词性的词来达到获取文本特征的目的。
(3)分词之后,我们可以从整个原始语料库中提取出一定数量的代表性词汇(名词),提取到的名词可能包含停用词,还需要在提取的名词词库基础上去除停用词,获得最终的名词词库;
(4)统计词频,至于为什么要统计词频,就不用说了吧,一个词在某类文本里出现的次数越多,越能代表这一类文本。当然如果某个词在这一类文本里出现次数很多而在其他类文本里根本不出现,就更能代表这一类文本了。
(5)计算特征值,其实词的频率只是文本最重要的特征之一,如果只靠词的频率去判断文本的类别的话,显然正确率是很低的。本项目使用TF-IDF(是一种用于资讯检索与资讯探勘的常用加权技术)来对文本进行更深层度的特征提取。TF-IDF综合表征了该词在文档中的重要程度和文档区分度。但在文本分类中单纯使用TF-IDF来判断一个特征是否有区分度是不够的。它没有考虑特征词在分类间的分布。如果一个特征词,在各个类间分布比较均匀,这样的词对分类基本没有贡献;但是如果一个特征词比较集中的分布在某个类中,而在其它类中几乎不出现,这样的词却能够很好代表这个类的特征,而TF-IDF不能区分这两种情况。没有考虑特征词在类内部文档中的分布情况。在类内部的文档中,如果特征词均匀分布在其中,则这个特征词能够很好的代表这个类的特征,如果只在几篇文档中出现,而在此类的其它文档中不出现,显然这样的特征词不能够代表这个类的特征。这时就要通过卡方检验(Chi-square)的计算方法得到数据字典。(卡方校验如下图)
(6)借助机器学习算法库(Scikit-learn)中的函数对上面进行过数据挖掘的语料库进行自动拆分,拆分为训练集(train)和测试集(test)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。