关键词:
TF-IDF实现、TextRank、jieba、关键词提取
数据来源:
语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据
数据处理参考前一篇文章
介绍:
介绍了文本关键词提取的原理,tfidf算法和TextRank算法
利用sklearn实现tfidf算法
手动python实现tfidf算法
使用jieba分词的tfidf算法和TextRank提取关键词
关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看到关键词这一项。
除了这些,关键词还可以在文本聚类、分类、自动摘要等领域中有着重要的作用。比如在聚类时将关键词相似的几篇文档看成一个团簇,可以大大提高聚类算法的收敛速度;从某天所有的新闻中提取出这些新闻的关键词,就可以大致了解那天发生了什么事情;或者将某段时间内几个人的微博拼成一篇长文本,然后抽取关键词就可以知道他们主要在讨论什么话题。
目前大多数领域无关的关键词抽取算法(领域无关算法的意思就是无论什么主题或者领域的文本都可以抽取关键词的算法)和它对应的库都是基于后者的。从逻辑上说,后者比前着在实际使用中更有意义。
从算法的角度来看,关键词抽取算法主要有两类:
TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TF-IDF计算:
(1)计算词频
(2)计算逆文档频率
(3)计算TF-IDF
此种算法的一个重要特点是可以脱离语料库的背景,仅对单篇文档进行分析就可以提取该文档的关键词。基本思想来源于Google的PageRank算法。这种算法是1997年,Google创始人拉里.佩奇和谢尔盖.布林在构建早期的搜索系统原型时提出的一种链接分析算法,基本思想有两条:
1)链接数量。一个网页被越多的其他网页链接,说明这个网页越重要.
2)链接质量。一个网页被一个越高权值的网页链接,也能表明这个网页越重要.
TextRank 用于关键词提取的算法如下:
(1)把给定的文本 T 按照完整句子进行分割,即:T=[S1,S2,…,Sm]
(2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,其中 ti,j 是保留后的候选关键词。Si=[ti,1,ti,2,...,ti,n]
(3)构建候选关键词图 G = (V,E),其中 V 为节点集,由(2)生成的候选关键词组成,然后采用共现关系(Co-Occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K 的窗口中共现,K表示窗口大小,即最多共现 K 个单词。
(4)根据 TextRank 的公式,迭代传播各节点的权重,直至收敛。
(5)对节点权重进行倒序排序,从而得到最重要的 T 个单词,作为候选关键词。
(6)由(5)得到最重要的 T 个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。
TextRank & PageRank
如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高
与TF-IDF需要在语料库上计算IDF(逆文档频率)不同,TextRank利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词。
控制台输出:
问题:词频矩阵非常稀疏矩阵,矩阵太大(文档数量×词汇数量),实际计算中文档有59万余条,出现内存错误memoryerror,可以将语料分成多片分别进行计算,但这样效率并不高,下面手动进行词频统计
手动计算词频,计算tfidf值
输出前5篇文档的关键词:
jieba分词中已经对tfidf进行了实现,并预先统计出了汉语中每个词的逆文档频率(idf),存储目录为C:Python37Libsite-packagesjiebaanalyseidf.txt
jieba默认使用以上路径的idf词典,并计算输入文档的tf(文本词频)值,进而求出tfidf提取关键词
jieba允许用户使用set_idf_path方法自定义idf词典
本文首先使用默认的idf词典提取测试文档的关键词,然后使用set_idf_path将idf词典设置为上一节中训练的idf-1.txt再提取关键字,并进行前后对比
TextRank算法提取关键字采用了PageRank算法的思想,仅文章本身便可以提取关键词
算法原理: http://www.cnblogs.com/rubinorth/p/5799848.html
TextRank算法源码解析:https://www.cnblogs.com/zhbzz2007/p/6177832.html
输出:
本文地址:http://lianchengexpo.xrbh.cn/quote/10419.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多