# 利用Python实现中文文本关键词抽取的三种方法
>文本关键词抽取,是对文本信息进行高度凝练的一种有效手段,通过3-5个词语准确概括文本的主题,帮助读者快速理解文本信息。目前,用于文本关键词提取的主要方法有四种:基于TF-IDF的关键词抽取、基于TextRank的关键词抽取、基于Word2Vec词聚类的关键词抽取,以及多种算法相融合的关键词抽取。笔者在使用前三种算法进行关键词抽取的学习过程中,发现采用TF-IDF和TextRank方法进行关键词抽取在网上有很多的例子,代码和步骤也比较简单,但是采用Word2Vec词聚类方法时网上的资料并未把过程和步骤表达的很清晰。因此,本文分别采用TF-IDF方法、TextRank方法和Word2Vec词聚类方法实现对专利文本(同样适用于其它类型文本)的关键词抽取,通过理论与实践相结合的方式,一步步了解、学习、实现中文文本关键词抽取。
# 1 概述
一篇文档的关键词等同于最能表达文档主旨的N个词语,即对于文档来说最重要的词,因此,可以将文本关键词抽取问题转化为词语重要性排序问题,选取排名前TopN个词语作为文本关键词。目前,主流的文本关键词抽取方法主要有以下两大类:
#### (1)基于统计的关键词提取方法
该方法根据统计信息,如词频,来计算得到文档中词语的权重,按权重值排序提取关键词。TF-IDF和TextRank均属于此类方法,其中TF-IDF方法通过计算单文本词频(Term Frequency, TF)和逆文本频率指数(Inverse Document Frequency, IDF)得到词语权重;TextRank方法基于PageRank的思想,通过词语共现窗口构建共现网络,计算词语得分。此类方法简单易行,适用性较强,然而未考虑词序问题。
#### (2)基于机器学习的关键词提取方法
该方法包括了SVM、朴素贝叶斯等有监督学习方法,以及K-means、层次聚类等无监督学习方法。在此类方法中,模型的好坏取决于特征提取,而深度学习正是特征提取的一种有效方式。由Google推出的Word2Vec词向量模型,是自然语言领域中具有代表性的学习工具。它在训练语言模型的过程中将词典映射到一个更抽象的向量空间中,每一个词语通过高维向量表示,该向量空间中两点之间的距离就对应两个词语的相似程度。
基于以上研究,本文分别采用**TF-IDF方法、TextRank方法和Word2Vec词聚类方法**,利用Python语言进行开发,实现文本关键词的抽取。
# 2 开发环境准备
## 2.1 Python环境
在python官网https://www.python.org/downloads/下载计算机对应的python版本,笔者使用的是Python2.7.13的版本。
## 2.2 第三方模块
本实验Python代码的实现使用到了多个著名的第三方模块,主要模块如下所示:
##### (1)Jieba
目前使用最为广泛的中文分词组件。下载地址:https://pypi.python.org/pypi/jieba/
##### (2)Gensim
用于主题模型、文档索引和大型语料相似度索引的python库,主要用于自然语言处理(NLP)和信息检索(IR)。下载地址:[https://pypi.python.org/pypi/gensim](https://pypi.python.org/pypi/gensim)
本实例中的维基中文语料处理和中文词向量模型构建需要用到该模块。
##### (3)Pandas
用于高效处理大型数据集、执行数据分析任务的python库,是基于Numpy的工具包。
下载地址:https://pypi.python.org/pypi/pandas/0.20.1
##### (4)Numpy
用于存储和处理大型矩阵的工具包。
下载地址:https://pypi.python.org/pypi/numpy
##### (5)Scikit-learn
用于机器学习的python工具包,python模块引用名字为sklearn,安装前还需要Numpy和Scipy两个Python库。
官网地址:http://scikit-learn.org/stable/
本实例中主要用到了该模块中的feature_extraction、KMeans(k-means聚类算法)和PCA(pac降维算法)。
##### (6)Matplotlib
Matplotlib是一个python的图形框架,用于绘制二维图形。
下载地址:https://pypi.python.org/pypi/matplotlib
# 3 数据准备
## 3.1 样本语料
文本将汽车行业的10篇专利作为样本数据集,见文件“data/sample_data.csv”。文件中依顺序包含编号(id)、标题(title)和摘要(abstract)三个字段,其中标题和摘要都要参与到关键词的抽取。各位可根据自己的样本数据进行数据读取相关代码的调整。
## 3.2 停用词词典
本文使用中科院计算所中文自然语言处理开放平台发布的中文停用词表,包含了1208个停用词。下载地址:[http://www.hicode.cc/download/view-software-13784.html](http://www.hicode.cc/download/view-software-13784.html)
另外,由于本实例的样本是专利文本,词汇专业性较高,需要人工新增停用词,可直接在上述停用词表中添加,一行为一个停用词,见文件“data/stopWord.txt”。在本例中,笔者在文件最前面人工新增了“包括、相对、免受、用于、本发明、结合”这六个停用词,用于示范,各位可根据实际情况自行删减或新增停用词。
# 4 基于TF-IDF的文本关键词抽取方法
## 4.1 TF-IDF算法思想
词频(Term Frequency,TF)指某一给定词语在当前文件中出现的频率。由于同一个词语在长文件中可能比短文件有更高的词频,因此根据文件的长度,需要对给定词语进行归一化,即用给定词语的次数除以当前文件的总词数。
逆向文件频率(Inverse Document Frequency,IDF)是一个词语普遍重要性的度量。即如果一个词语只在很少的文件中出现,表示更能代表文件的主旨,它的权重也就越大;如果一个词在大量文件中都出现,表示不清楚代表什么内容,它的权重就应该小。
TF-IDF的主要思想是,如果某个词语在一篇文章中出现的频率高,并且在其他文章中较少出现,则认为该词语能较好的代表当前文章的含义。即一个词语的重要性与它在文档中出现的次数成正比,与它在语料库中文档出现的频率成反比。
计算公式如下:
![TF-IDF计算公式](http://upload-images.jianshu.io/upload_images/5189322-7d11ccded914ed34.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 4.2 TF-IDF文本关键词抽取方法流程
由以上可知,TF-IDF是对文本所有候选关键词进行加权处理,根据权值对关键词进行排序。假设D<sub>n</sub>为测试语料的大小,该算法的关键词抽取步骤如下所示:
(1) 对于给定的文本D进行分词、词性标注和去除停用词等数据预处理操作。本分采用结巴分词,保留'n','nz','v','vd','vn','l','a','d'这几个词性的词语,最终得到n个候选关键词,即D=[t1,t2,…,tn] ;
(2) 计算词语t<sub>i</sub> 在文本D中的词频;
(3) 计算词语t<sub>i</sub> 在整个语料的IDF=log (D<sub>n</sub> /(D<sub>t</sub> +1)),D<sub>t</sub> 为语料库中词语t<sub>i</sub> 出现的文档个数;
(4) 计算得到词语t<sub>i</sub> 的TF-IDF=TF*IDF,并重复(2)—(4)得到所有候选关键词的TF-IDF数值;
(5) 对候选关键词计算结果进行倒序排列,得到排名前TopN个词汇作为文本关键词。
## 4.3 代码实现
Python第三方工具包Scikit-learn提供了TFIDF算法的相关函数,本文主要用到了sklearn.feature_extraction.text下的TfidfTransformer和CountVectorizer函数。其中,CountVectorizer函数用来构建语料库的中的词频矩阵,TfidfTransformer函数用来计算词语的tfidf权值。
注:TfidfTransformer()函数有一个参数smooth_idf,默认值是True,若设置为False,则IDF的计算公式为idf=log(D<sub>n</sub> /D<sub>t</sub> ) + 1。
�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。 Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部
资源推荐
资源详情
资源评论
收起资源包目录
Python实现中文文本关键词抽取,分别采用TF-IDF、TextRank、Word2Vec词聚类三种方法.zip (21个子文件)
keyword_extraction-master
data
stopWord.txt 9KB
sample_data.csv 7KB
keyextract_tfidf.py 4KB
keyextract_word2vec_2.py 4KB
keyextract_word2vec_1.py 3KB
keyextract_textrank.py 2KB
词性标注参考.txt 2KB
README.md 22KB
result
keys_TFIDF.csv 1KB
keys_word2vec.csv 1KB
keys_TextRank.csv 1KB
vecs
wordvecs_7.csv 133KB
wordvecs_8.csv 181KB
wordvecs_3.csv 150KB
wordvecs_4.csv 151KB
wordvecs_1.csv 367KB
wordvecs_10.csv 139KB
wordvecs_2.csv 180KB
wordvecs_9.csv 192KB
wordvecs_6.csv 156KB
wordvecs_5.csv 257KB
共 21 条
- 1
资源评论
王二空间
- 粉丝: 6367
- 资源: 1700
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功