目录
一、任务描述
1.项目背景
2.项目内容
3.项目意义
二、数据来源
三、模型实现
1.TFIDF实现关键词提取
2.TextRank 实现关键词提取
3.NMF实现关键词提取
4.NMF文档聚类实现
5.LDA实现关键词提取
6.LDA文档聚类实现
四、结果分析及可视化展示
1.时间对比
2.结果对比
3.聚类结果可视化展示
a)LDA
b)NMF
五、总结
1.基于统计的方法
2.基于主题的方法
a)NMF
b)LDA
c)基于网络图的方法
一、任务描述
1.项目背景
自媒体时代,大数据、云计算让信息正在以一个爆炸式的增长进入人们的视线。用户在信息检索时多用文本标题进行检索,由于信息过载、垃圾信息过多导致无法快速找到精准信息等问题。面对繁杂的信息,可利用关键词提取技术快速且精准地提炼文本信息。
2.项目内容
1.有监督方法及语料库技术,2.半监督方法和无监督方法,不需要训练语料,不需要人工参与,利用抽取系统完成关键词抽取。本次项目重点研究第二种方法,半监督与无监督方法研究。采用基于统计的tfidf方法、基于主题的nmf模型方法、LDA模型方法、基于网络图的textRank方法
二是基于主题模型的文档聚类,选取nmf模型方法、LDA模型方法。
3.项目意义
对于关键词,本质是对语段关键、主要、核心信息的集中,被提取的关键词必须具备3个条件:可读性、相关性及涵盖性。而提取关键词的本质是压缩的压缩,精炼的精炼,关键的关键,淘汰掉次要的,支撑的解说,本质上是对语段的精炼压缩概括以达到较好的表明语段的主题,随着机器学习的深入研究,落点于关键词提取,就有监督、半监督、无监督算法作用于文本关键词提取
二、数据来源
数据来源于中国知网铁路期刊模块。通过技术分区爬取到中国知网铁路期刊模块的标题、摘要、关键词,分别为车辆工程、电气化铁路、机车工程、特种铁路、铁路通信信号、铁路线路工程、铁路运输管理工程、铁路运输经济八个xlsx文件,对文件进行处理后,每份文件取前200行合并为1600条目集的data文件作为数据传入运行程序。
三、模型实现
1.TFIDF实现关键词提取
使用sklearn中的tfidf模型,导包
进行文本预处理,采用结巴分词
文本预处理完成结果
文本预处理完成后进行tfidf模型构建,由于一篇文档的摘要过短,尝试调参后效果不佳,因此选取默认参数
结果
2.TextRank 实现关键词提取
文本预处理与tfidf一致,调用jieba包实现
结果展示
3.NMF实现关键词提取
步骤:
- 导入数据:首先将数据通过pandas读取成数据框;
- 分词处理:载入停用词列表和用户词典,利用jieba的精确模式对每一篇摘要进行分词处理;
- 通过训练tfidf,得到tf-idf矩阵,作为NMF模型的输入;
- 利用sklearn包里的NMF模型,设定输出6个主题,每个主题输出一个代表该主题的主题词,最终的到6个关键词来表示该摘要。
代码:
4.NMF文档聚类实现
进行NMF模型学习
将得到的文档主题矩阵传入KMeans聚类模型中
利用T-SNE降维后进行可视化
5.LDA实现关键词提取
步骤:
- 导入数据:首先将数据通过pandas读取成数据框;
- 分词处理:载入停用词列表和用户词典,利用jieba的精确模式对每一篇摘要进行分词处理;
- 通过训练tfidf,得到tf-idf矩阵,作为LDA模型的输入;
- 利用sklearn包里的LDA模型,设定求解算法为online,输出6个主题,每个主题输出一个代表该主题的主题词,最终的到6个关键词来表示该摘要。
代码:
6.LDA文档聚类实现
进行LDA模型学习(聚类时需要将online参数更改,原因是因为online参数是作用于文本关键词提取相较于默认参数效果更好,但在聚类时,oneline参数效果不好,所以更改为默认参数。
将得到的文档主题矩阵传入KMeans聚类模型中
利用T-SNE降维后进行可视化
四、结果分析及可视化展示
1.时间对比
可以看到tfidf耗时最短,而LDA耗时最长。
2.结果对比
3.聚类结果可视化展示
a)LDA
LDA聚类结果,类与类之间相距较分散,且相同的一类有的并不是在一块集中如图上嫩绿色的类别,呈现三个区域分布。
b)NMF
NMF聚类结果较集中,较明显。类与类之间较集中分布,且相同的一类都集中在同一区域。
五、总结
1.基于统计的方法
主流的简单统计方法是TFIDF及其改进方法。TFIDF是衡量一个词对一篇文档的区分程度。利用文档中词语的统计信息抽取文档的关键词。
优点:简单,易于实现,不需要训练数据,也不需要构建外部知识库,泛化性强。考虑词的位置、词性和关联信息特征。比如在文本中名词作为一种定义现实实体的词,带有更多的关键信息。再比如在某些场景中文本的起始段落和结尾段落比其他部分更重要。
缺陷:单纯以词频衡量一个词的重要性不够全面,有时重要的词可能出现的次数不多。而且这种算法无法体现词的位置、词性和关联信息等特征,更无法反映词汇的语义信息。IDF本质上是一种试图抑制噪音的加权。单纯的认为文档频率小的词越重要,文档频率大的单词就越无用。这样导致的问题是一些不能代表文本的低频次IDF值很高;有些能够很好代表文本的高频词IDF值却很高。主要原因是TFIDF没有考虑特征项在文档集合类间和类内的分布情况。没有考虑语义。
a)NMF
将文档-词维度提升到文档-主题-词的维度主要思想是:文档是若干主题的分布;每个主题又是词语的概率分布。主题表示为一个方面,一个概念,表现为相关词的集合。主题模型是语义挖掘的核心。NMF的基本思想可以简单描述为:对于任意给定的一个非负矩阵V,NMF算法能够寻找到一个非负矩阵W和一个非负矩阵H,使得满足 ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。如下图所示,其中要求分解后的矩阵H和W都必须是非负矩阵。其与LDA的区别在于将文档-词语矩阵分解成两个矩阵。
b)LDA
将文档-词维度提升到文档-主题-词的维度主要思想是:文档是若干主题的分布;每个主题又是词语的概率分布。主题表示为一个方面,一个概念,表现为相关词的集合。主题模型是语义挖掘的核心。LSA/LSI/LDA算法最主要的主题模型是LDA(隐含狄利克雷分布),已知词和文档的对应关系,我们的目的是找出 主题的词分布,文档的主题分布。
主题模型的优点是:
(1) 可以获得文本语义相似性的关系。根据主题模型可以得到主题的概率分布,可以通过概率分布计算文本之间的相似度。
(2) 可以解决多义词的问题。
(3) 可以去除文档中噪音的影响。
(4) 无监督、完全自动化。无需人工标注,可以直接通过模型得到概率分布。
(5) 语言无关。
c)基于网络图的方法
主流的基于网络图的算法的是TextRank算法,基于网络图的算法和上述算法不同的一点是,统计分析和基于主题的方法都需要基于一个现成的语料库,且基于主题的模型需要通过大规模文档的学习,来发现文档的隐含主题。TextRank算法可以脱离语料库的背景,仅对单篇文档进行分析就可以提取文档的关键词。TextRank算法的基本思想来源于Google的PageRank算法。