融合Log睱ikelihood与TextRank的关键词抽取研究
2018-03-26徐晓霖
徐晓霖
摘要:
为了解决TextRank算法的初始值赋权问题,提高关键词抽取准确率,引入LogLikelihood算法。通过与参考语料库词频进行对比,为词条的初始权重赋值,将不需要外部语料的TextRank和需要外部语料的LogLikelihood进行融合、计算。实验结果表明,融合后的TextRankLL算法优于TextRank算法。
关键词:
关键词抽取;TextRank算法;LogLikelihood算法;TextRankLL算法;图模型
DOIDOI:10.11907/rjdk.172527
中图分类号:TP312
文献标识码:A文章编号文章编号:16727800(2018)003008703
英文摘要Abstract:In order to solve the initial value of TextRank algorithm, we can improve the accuracy of keyword extraction. The LogLikelihood algorithm is introduced to compute the initial weight of the term by comparing with the observed word frequency of the corpus. The TextRank without external corpus and the LogLikelihood which requires external corpus are merged and calculated. Experimental results show that the fusion TextRankLL algorithm is superior to the TextRank algorithm.
英文关键词Key Words:keyword extraction;TextRank;LogLikelihood;TextRankLL;graph model
0引言
文本关键词抽取是指从文本中快速提取出使用者认为具有重要意义的短语或词组。文本关键词抽取是文本分析的前沿工作,对于后续文本相似度对比、文本语义理解等都具有十分重要的作用。所以,只有关键词的抽取更加快速、准确,才能提高文本分析等工作效率。文本关键词抽取之前已进行了大量研究,对不同的数学模型进行组合可提高抽取准确度[12]。目前对关键词的抽取主要有两类方法:有监督和无监督。
TFIDF算法是最经典的关键词抽取算法,简单、快速,且适用范围广。TFIDF即将TF与IDF相乘计算。TF词频指词条在该文档中出现的频率,IDF逆向文件频率指词条在其它文档中出现频率的倒数。但TFIDF算法只能根据频率划分重要性,而未考虑词条位置、词条长度、词条上下文等。针对TFIDF算法的改进,学者们进行了大量研究。如邓丹君[3]提出特殊符号后权值加强的改进,对于特殊符号如@后表示提到的重点人,权值加重。该方法对于微博等文本提取算法提升较显著,但不适用于所有文本。
TextRank[4]算法是无监督关键词抽取的经典算法,是基于PageRank的文本关键词抽取算法。PageRank将整个网络假想成一张有向图谱,各个网站A、B等是图中的点,如果存在A到B的链接,则在图谱上画一条A到B的有向线。而TextRank算法将PageRank中对网页的计算改为对词条的计算,但是TextRank算法有一个十分明显的不足:词语的初始权重设置为1,从而使每个词条的重要性相同,但在每个句子中,不同词条有着不同的重要程度。针对TextRank的不足,很多学者都提出改进算法。夏天[5]提出了根据词语位置不同、频率不同等构建影响率转移矩阵与TextranK进行融合;顾益军[6]提出将LDA模型和Textrank算法进行有效融合,当数据集呈现较强的主题分布时,可以显著改善关键词抽取效果。
因此,为了提高文本关键词抽取效果,本文将Loglikelihood算法与TextRank算法相结合,对TextRank算法加以改进。
1算法介绍
1.1LogLikelihood算法
对数似然比(LogLikelihood)是一种频率差异检测方法,是语料库语言学研究中比较常用的统计检测方法之一[78]。同一词条在不同文章中出现频率相同,也不能说明该词条对于两篇文章的重要程度相同。对数似然比是指某词条在文本总量为m1的文档中出现频率为k1,在文本总量为m2的文档中出现频率为k2,则两个文本的分布不同(相同)。计算公式为:
LL=logL(p1,k1,m1)L(p2,k2,m2)L(p1,k1,m1)L(p2,k2,m2)(1)
pi=kimi,p=(k1+k2)(m1+m2),L(p,k,n)=pk(1-p)m-k(2)
对数似然比在语言学中有着很多应用,设置观察语料库和参照语料库。在关键词抽取问题上具体如下:观察语料库为想要抽取的关键词文本,而参考语料库则是一个足够大的、与想要抽取的关键词文本同一类型的文本。只有参考语料库足够大,语料库里的词条频率在与观察语料文本进行对比时才会更加真实。当观察语料库中的词条频率大于同类型参考语料库中的该词条频率时,说明该词條在该篇文章中相对于同类文章更加重要。
由于LL算法需要与外部语料库进行对比,因此可以和TextRank不需要外部语料库的优势进行互补,从而更有效地提升现有算法的应用效果。
1.2TextRank算法
TextRank一般模型可以表示为一个有向有权图G=(V, E), 由点集合V和边集合E组成,E是V×V的子集。图中任两点Vi、Vj之间边的权重为wji,对于一个给定的点Vi,In(Vi)为指向该点的点集合,Out(Vi)为点Vi指向的点集合。点Vi的得分定义如下:
S(Vi)=(1-d)+d×∑j∈In(Vj)1|Out(Vj)|S(Vj)(3)
其中,d为阻尼系数,取值范围为0~1,代表从图中某一特定点指向其它任意点的概率,一般取值为0.85。上述公式表示当前节点Vi的值为:所有指向Vi的节点Vj给予的值的和。使用TextRank算法计算图中各点得分时,需要给图中的点指定任意初值,并递归计算直到收敛,即图中任意一点的误差率小于给定的极限值时即可达到收敛,一般该极限值取0.000 1。
2算法描述
Textrank的初始权值都为1,如图1所示。由节点A到达其它节点的转移概率相同,但是其它节点在文章中的重要性不同,所以转移概率也应该不同,所以对两点转移概率即两点间的有向实线进行权值设置。
其中w代表转移概率,两个词条之间的权重即代表跳转概率,在这里通过似然对数比对词条之间进行权重赋值。如果LL值很高,说明该词条在本文出现的频率远高于同类文本中该词条出现的频率,则该词条越重要。参考张莉婧[9]和夏天[10]的赋值方法,用Loglikelihood进行权值计算如下:
Wi=LLiLLmax(4)
将权值公式(4)带入公式(3)后,新的计算公式为:
S(Vi)=(1-d)*LLiLLmax+d*LLiLLmax∑Vi∈Out(Vj)
Wij∑Vi∈Out(Vj)WjkS(Vi)(5)
算法具体实现如下:
(1)设置参考语料库。参考语料库最好是能够与测试文本类型相同的大量语料,以计算出词频表。在这里使用两种语料库进行对比,一种为《现代汉语语料库分词类词频表》,另一种为自己爬虫的1 000篇相同类型的文献,进行词频表计算。
(2)文本处理。使用jieba分词工具对文本进行处理,去除停止词等不需要的词汇,将文本分为词条组,并统计每种词条的频率,以便于进行LogLikelihood计算[11]。
(3)获得参考语料库词频以及观察语料库词频后通过公式(1)、(4)进行计算,获得权重。
(4)构建加权的TextRank图模型,通过公式(5)计算至收敛后进行排序,获得关键词。
3实验分析
3.1实验数据来源
本实验选择的实验数据为:①以搜狐新闻为目标,爬取1 000篇社会栏目新闻,并且包含关键词,保存为xml格式。以此为参考语料库进行词频统计,生成词频表。以相同栏目的100篇文章为测试语料库;②参考语料库为《现代汉语语料库分词类词频表》。将两种不同语料库进行对比,更能体现出语料库的作用以及对TextRank算法的提升。
3.2实验环境
融合LogLikelihood和TextRank算法的关键词抽取算法使用Python2.7实现,分词以及频率的统计采用jieba分词工具,利用Python2.7实现。jieba分词工具准确率高、速度快。使用Macbook pro机器,内存16G,系统为OS。
3.3实验结果
实验主要是测试改进后的算法对于TextRank算法是否有所提升。将从搜狐新闻爬取的1 000篇社会类新闻进行语料库生成,计算出频率词条集,用时30min。所爬取的文本所带关键词大多为3个,即将关键词的个数设置为3,选择窗口大小为5。
目前关键词抽取算法效果评判标准有准确率P、召回率R以及F值,计算公式如下:
P=抽取结果中与文本自带关键词相同的个数文本自带关键词总数
R=抽取结果中与文本自带关键词相同的个数抽取关键词总数
Fmeasure=2PR(P+R)
通过对100篇测试语料文本进行抽取实验,算法对比如图3所示,对其进行深入分析并得出如下结论:
TextRankLL算法对于TextRank算法有一定程度的改进,关键词抽取准确率得到提升。
以现代汉语分词频率表为参考预料库的提升远小于以同类文本为基础生成的文本词频表的提升,所以参考语料库对于该改进算法有一定影响,越是与测试语料库同类的文本库生成的词频表,对于TextRank的提升越多。
融合了LogLikelihood和TextRank算法的关键词抽取即TextRankLL算法,便于Loglikelihood的参考语料库与测试语料库的词频對比,提升了抽取准确率,但也存在一些不足,因此本文提出如下改进:①使用大量训练文档进行训练,从而使参考语料库的词条频率表更加准确;②训练文档的选取能够和测试文档相关,最好为同类,词条频率才会更加稳定和准确;③通过Hadoop集群计算提高速度。
综上所述,融合了LogLikelihood算法和TextRank算法的文本关键词抽取算法的主要优势是结合了前者需要和外部文档进行比较以及后者的独立性,使其在准确率、召回率、Fmeasure值上都有一定程度提高,但是提高不是很明显,比较适合有大量同类型文本作参考语料库时的文本关键词抽取。同时,其对于时间的消耗也有所上升。本文的结果以及算法对关键词抽取技术的研究有一定借鉴意义,但仍有很大提升空间。
4结语
本文基于LogLikelihood算法进行参考文本与观察文本之间的词频关系计算,以改进TextRank算法的词条初始权重问题。实验结果表明,参考语料库文本的数量和类型对于准确率等有一定影响,在提高抽取准确率的同时也造成了时间消耗增加。所以,下一步的研究方向是如何确定更加合理的参考语料库以及如何缩短时间。
参考文献参考文献:
[1]MIHALCEA R, TARAU P. TextRank: bringing order into texts[C].Conference on Empirical Methods in Natural Language Processing, EMNLP, 2004:404411.
[2]FRANK E, PAYNTER G W, WITTEN I H, et al. Domainspecific keyphrase extraction[C]. ACM CIKM International Conference on Information and Knowledge Management, Bremen, Germany,1999:283284.
[3]邓丹君,姚莉.基于改进TFIDF的微博短文本特征词提取算法[J].软件导刊,2016,15(6):4850.
[4]MIHALCEA R, TARAU P. TextRank: bringing order into texts[J]. Unt Scholarly Works, 2004:404411.
[5]夏天.词语位置加权TextRank的关键词抽取研究[J].现代图书情报技术,2013,29(9):3034.
[6]顾益军.融合LDA与TextRank的关键词抽取研究[J].现代图书情报技术,2014,30(7):4147.
[7]姬弘飞.基于TextRank与LogLikelihood的Chrome浏览器中文词云插件的设计与开发[D].北京:北京外国语大学,2015.
[8]李国臣.文本分类中基于对数似然比测试的特征词选择方法[J].中文信息学报,1999,13(4):1722.
[9]张莉婧,李业丽,曾庆涛,等.基于改进TextRank的关键词抽取算法[J].北京印刷学院学报,2016,24(4):5155.
[10]夏天.词向量聚类加权TextRank的关键词抽取[J].数据分析与知识发现,2017(2):2834.
[11]MIKOLOV T, CHEN K, CORRADO G, et al. Efficient estimation of word representations in vector space[J]. Computer Science, 2013.
责任编辑(责任编辑:黄健)