本周任务如下,接续上周的关键字抽取任务,前面一两周主要学习了RAKE、TF-IDF、TextRank算法,详细见https://blog.csdn.net/qq_45041871/article/details/126658189。本周发现还有一个无监督的关键字抽取算法比较经典,所以在扩展一下。这个算法就是YAKE!,在2018年提出,论文A Text Feature Based Automatic Keyword Extraction Method for Single Documents,该论文获得2018年ECIR的最佳短论文奖。
YAKE
RAKE遵循由启发式方法支持的无监督方法,该方法可以在短时间内轻松扩展到不同的集合、域和语言。该文章的主要有两个贡献:(1)作者提出了一种无监督关键字抽取方法叫做YAKE!,YAKE是基于文本统计的特征的方法,从单个文档中抽取关键词(单词和多词短语),并且不需要依赖文档集合;(2)YAKE可能适用于没有现成方法的领域和语言,因为它既不需要训练语料库,也不依赖任何外部来源(如WordNet)或语言工具(如NER或PoS标记器)。
YAKE的四个主要流程:文本预处理——>特征提取——>单个词权重计算——>候选关键字的生成,其中最为关键的莫过于特征提取过程。
文本预处理
其实就是对文档进行分词,按照一些标点符号和特殊字符进行分词。
特征提取
作者选用了5种常见的特征,Casing、Word Position、Word Frequency、Word Relatedness to Context、 Word DifSentence。
Casing:特别关注以大写字母开头的任何单词(不包括句子开头的字母)或任何首字母缩略词(即,该单词的所有字母都是大写),前提是这些单词往往更相关。我们不计算它们两次,只考虑它们中的最大值。
TF(U(w))是候选词w 以大写字母开头的次数,TF(A(w))是候选词w 被标记为首字母缩略词的次数,而TF(w)是w 的频率。
Word Position:考虑单词出现的句子位置可能是关键词提取过程的一个重要特征,因为文档(尤其是科学和新闻出版物)的早期部分往往包含大量相关关键词。
Senw 表示单词w 出现在句子集的位置,Midian是中值函数。结果是一个递增函数,当单词位于文档末尾时,值趋于平稳增加,这意味着单词出现在文档开头的频率越高,其W p o s i t i o n 值越小。相反,更经常位于文档末尾的单词(可能不太相关)将被赋予更高的W p o s i t i o n 值。注意,等式中考虑值2,以保证W p o s i t i o n > 0 。
Word Frequency: 该特征指示文档中单词w的频率。它反映了一种理念,即频率越高,单词越重要。为了防止长文档中出现偏向高频的情况,单词w 的TF值除以频率均值MeanTF。我们的目的是对所有高于平均值的单词进行评分(由标准偏差给出的分散度平衡)。
Word Relatedness to Context:W r e l 量化了一个词与停止词特征相似的程度。为了计算这个度量,我们借助于出现在候选词左侧(和右侧)大小为n的窗口中的不同项的数量。与候选词(两侧)同时出现的不同词的数量越多,候选词可能就越无意义。
更准确地说,WL[WR]测量与候选词(在左[右]侧)共同出现的不同词的数量与它共同出现的词的数量之间的比率。TF(w)是单词相对于所有单词中的最大频率(MaxTF)的频率,PL[PR]测量与候选单词(在左[右]侧)共同出现的不同单词的数量与MaxTF之间的比率。实际上,候选词越不重要,该特征的得分就越高。因此,类似的停止词很容易获得更高的分数。
Word DifSentence:量化候选词在不同句子中出现的频率。一个词在越多句子中出现,相对显得更加重要。
其中,SF(w)单词w 出现的句子频率,也就是单词w 出现的句子数。# S e n t e n c e s是文档中句子的总数。
计算每个单词的权重
结合上面五个评估指标,作者提出了一种联合计算指标,用来代表每个单词的重要性程度,该值越小,则表现的越重要。
候选词列表生成
因为候选关键词可以是单词也可以词组,所以作者设置了滑动窗口大小为1、2、3来设定关键词序列。另外,作者不考虑以停用词开头和结尾的连续序列。同样重要的是,对于候选关键词没有要求必须具有最小频率或句子频率。,这意味着,我们可以将一个关键字视为重要或不重要的依次出现或者多次出现。然后,每个候选关键字将为分配一个最终形式的S(kw),这样分数越小,关键词就越有意义。
S(kw)是最大尺度为3的候选词的得分。
评估
评估数据集:SemEval2010 、500N-KPCrowd-v1.1、 WICC、Schutz2008。
实验参数设置:最大滑动窗口设置为3、使用停用词预料、Levenshtein阈值设置为0.8。
对比模型:TextRank、RAKE、SingleRank、TF-IDF。
评价指标:precision、recall、F1。
实验结果如下表所是:
实验
可以参考作者的开源代码:YAKE!实现
Reference
[1] 面向特定问题的开源算法管理和推荐(十二)_郭德纲闭门弟子的博客-CSDN博客
[2] Campos R , Mangaravite V , Pasquali A , et al. YAKE! Keyword Extraction from Single Documents using Multiple Local Features[J]. Information Sciences, 2020, 509:257-289.
[3] Pasi G , Piwowarski B , Azzopardi L , et al. [Lecture Notes in Computer Science] Advances in Information Retrieval Volume 10772 || A Text Feature Based Automatic Keyword Extraction Method for Single Documents[J]. 2018
[4] http://bit.ly/YakeDemoECIR2018
[5] http://www.hlt.utdallas.edu/~saidul/code.html
[6] https://github.com/zelandiya/RAKE-tutorial
[7] https://pypi.python.org/pypi/yake
[8] Yet Another Keyword Extractor (Yake)代码解读 - 知乎 (zhihu.com)