RAKE-无监督英文关键词提取算法
没想到吧,在深度学习大行其道的当今,我突然写了一篇上古时代的文章(其实也就2010年,奈何知识更新真快…)
话不多说,一起来看一下RAKE算法
RAKE
RAKE全称为Rapid Automatic Keyword Extraction,突出两个亮点:1. 快速,线上部署非常友好;2. 无监督,也即不需要大量有标签数据,0成本~
提取候选词
首先,使用停用词进行候选关键词的提取和切分,这里的停用词表非常关键,决定你候选词组切分的效果,候选词组切分不好,最终提取到的效果也会受影响。
候选词提取方法其实很简单:首先,构造停用词表,对一个句子中,两个停用词之间的短语进行切分(切分得到的,可能是短语,也可能是单词),从而得到多个候选词。
首先,构造停用词正则项:
stop_word_pattern = re.compile('|'.join(stop_word_regex_list), re.IGNORECASE)
其次,按停用词进行切分:
tmp = re.sub(stopword_pattern, '|', s.strip())
举个例子,原始句子如下:
text = "Compatibility of systems of linear constraints over the set of natural numbers. Criteria of compatibility of a system of linear Diophantine equations, strict inequations, and nonstrict inequations are considered. "
linear constraints前为停用词of, 后为停用词over,所以linear constraints会被切分成一个短语,上述句子切分后得到的候选关键词如下:
tmp_candidate_keywords = ["Compatibility", "systems", "linear constraints", "set", "natural numbers", "Criteria", "compatibility", "system", "linear Diophantine equations" "strict inequations", "nonstrict inequations", "considered".]
计算候选词得分
首先,分别计算(1)词频(freq(w)),即单词出现次数;(2)词组总长(deg(w)),即单词所在词组长度总和;(3)词组总长与词频的比例(deg(w)/freq(w))。
如上述例子tmp_candidate_keywords中,linear的词频freq(w)=2,词组总长deg(w)=2+3=5,因此该单词得分为deg(w)/freq(w)=5/2=2.5。
对每个单词都按上述方法计算得分后,可以得到每个单词的分数。
其次,计算短语得分:按每个单词的分数相加,得到短语得分。(由此可见,RAKE算法比较强调短语的结果,因为短语短语分数是由多个单词分词直接相加的,可以得到更高分数)
最后,按照得分进行排序,取前1/3的词组进行输出,作为最后的关键词结果。
实测效果
最后,来看一下效果。下图是在我们实际业务场景中提取到的关键词,总体效果还是很不错的:
参考:
Paper: Automatic keyword extraction from individual documents
Code: https://github.com/mpk001/RAKE-keywordsExtraction
RAKE-无监督英文关键词提取算法相关推荐
- KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现
关键词提取 (Keyphrase Extraction,KPE) 任务可以自动提取文档中能够概括核心内容的短语,有利于下游信息检索和 NLP 任务.当前,由于对文档进行标注需要耗费大量资源且缺乏大规模 ...
- 广告行业中那些趣事系列60:详解超好用的无监督关键词提取算法Keybert
导读:本文是"数据拾光者"专栏的第六十篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践.本篇从理论到实践介绍了超好用的无监督关键词提取算法Keybert,对于希望使用无 ...
- 关键词提取算法之RAKE
关键词提取算法之RAKE RAKE(Rapid Automatic Keyword Extraction)算法,作者Alyona Medelyan,她的GitHub上有很多关键字提取的项目. RAKE ...
- 关键词提取算法—TF/IDF算法
关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...
- 达观OCR首创无锚点文字提取算法,攻克行业难点
达观OCR平台基于自主研发的视觉技术,结合知识增强的跨模态语义理解关键技术,提供图像矫正.图像分割.版面标签分类.文字识别.信息扣取.文档比对.表格识别.文字过滤.信息审核.文字二次加工等一整套全流程 ...
- TextRank关键词提取算法
参考:百度AI Studio课程_学习成就梦想,AI遇见未来_AI课程 - 百度AI Studio - 人工智能学习与实训社区 (baidu.com) 1.关键词提取算法分类 1.有监督 将关键词提取 ...
- 基于TextRank的关键词提取算法
基于TextRank的关键词提取算法 前沿 TextRank是一种文本排序算法,是基于著名的网页排序算法PageRank改动而来.在介绍TextRank前,我们先简单介绍下什么是PageRank.另外 ...
- TextRank中文,英文关键词提取
1.基于pytextrank英文关键词提取 # pip install pytextrank # python -m spacy download en_core_web_sm import spac ...
- 关键词提取算法TextRank
很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank. ...
最新文章
- Android 混淆打包
- 【LeetCode】- Search Insert Position(查找插入的位置)
- Disjoint Set
- Redux源码分析(一)
- 用计算机写作文的好处,《用计算机写作文》教案
- fileinput 加 ftp 加 nginx 加 SpringBoot上传文件
- 关于Struts2中的值栈与OGNL表达式
- 事务超时时间无效_Java面试题:Spring事务面试考点的集合整理。建议收藏阅读...
- windows控件常用缩写
- 个人管理 - 如何阅读一本书
- LeetCode之验证二叉搜索树
- 如何在java对象里访问Spring中已加载的property内容
- ZJ-在线取色器的使用(RGB值转HSV值)
- php网站的index.php文件打开空白,其他html和php都能打开的问题所在
- 数据结构课程设计项目2:校园导游咨询-预习报告
- 10-3 德扑,股票演绎法,练习量是个要命的问题
- 20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结
- 操作系统 — 竞争条件
- HTML中body相关标签-03
- python人工智能课程对孩子的好处_人工智能课堂给中学生带来了什么好处