没想到吧,在深度学习大行其道的当今,我突然写了一篇上古时代的文章(其实也就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-无监督英文关键词提取算法相关推荐

  1. KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现

    关键词提取 (Keyphrase Extraction,KPE) 任务可以自动提取文档中能够概括核心内容的短语,有利于下游信息检索和 NLP 任务.当前,由于对文档进行标注需要耗费大量资源且缺乏大规模 ...

  2. 广告行业中那些趣事系列60:详解超好用的无监督关键词提取算法Keybert

    导读:本文是"数据拾光者"专栏的第六十篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践.本篇从理论到实践介绍了超好用的无监督关键词提取算法Keybert,对于希望使用无 ...

  3. 关键词提取算法之RAKE

    关键词提取算法之RAKE RAKE(Rapid Automatic Keyword Extraction)算法,作者Alyona Medelyan,她的GitHub上有很多关键字提取的项目. RAKE ...

  4. 关键词提取算法—TF/IDF算法

    关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...

  5. 达观OCR首创无锚点文字提取算法,攻克行业难点

    达观OCR平台基于自主研发的视觉技术,结合知识增强的跨模态语义理解关键技术,提供图像矫正.图像分割.版面标签分类.文字识别.信息扣取.文档比对.表格识别.文字过滤.信息审核.文字二次加工等一整套全流程 ...

  6. TextRank关键词提取算法

    参考:百度AI Studio课程_学习成就梦想,AI遇见未来_AI课程 - 百度AI Studio - 人工智能学习与实训社区 (baidu.com) 1.关键词提取算法分类 1.有监督 将关键词提取 ...

  7. 基于TextRank的关键词提取算法

    基于TextRank的关键词提取算法 前沿 TextRank是一种文本排序算法,是基于著名的网页排序算法PageRank改动而来.在介绍TextRank前,我们先简单介绍下什么是PageRank.另外 ...

  8. TextRank中文,英文关键词提取

    1.基于pytextrank英文关键词提取 # pip install pytextrank # python -m spacy download en_core_web_sm import spac ...

  9. 关键词提取算法TextRank

    很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank. ...

最新文章

  1. Android 混淆打包
  2. 【LeetCode】- Search Insert Position(查找插入的位置)
  3. Disjoint Set
  4. Redux源码分析(一)
  5. 用计算机写作文的好处,《用计算机写作文》教案
  6. fileinput 加 ftp 加 nginx 加 SpringBoot上传文件
  7. 关于Struts2中的值栈与OGNL表达式
  8. 事务超时时间无效_Java面试题:Spring事务面试考点的集合整理。建议收藏阅读...
  9. windows控件常用缩写
  10. 个人管理 - 如何阅读一本书
  11. LeetCode之验证二叉搜索树
  12. 如何在java对象里访问Spring中已加载的property内容
  13. ZJ-在线取色器的使用(RGB值转HSV值)
  14. php网站的index.php文件打开空白,其他html和php都能打开的问题所在
  15. 数据结构课程设计项目2:校园导游咨询-预习报告
  16. 10-3 德扑,股票演绎法,练习量是个要命的问题
  17. 20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结
  18. 操作系统 — 竞争条件
  19. HTML中body相关标签-03
  20. python人工智能课程对孩子的好处_人工智能课堂给中学生带来了什么好处

热门文章

  1. No.17 pre标签 与 code标签
  2. 2022年氧化工艺考试题库模拟考试平台操作
  3. LeetCode 673. 最长递增子序列的个数
  4. scala implicit - implicit parameters spark 应用
  5. stm32专题五:时钟树(三)自定义配置HSE时钟 超频
  6. 光照与渲染(九)- 光源类型
  7. Mock平台-07开发:项目管理(三)组件Modal和Form讲解,并利用其实现添加功能
  8. 软考高级 系统分析—论文理论知识
  9. 问题:Matlab安装时无法连接到MathWorks
  10. Vue与ElementUI的v-loading控件