TextRank关键词提取算法
参考:百度AI Studio课程_学习成就梦想,AI遇见未来_AI课程 - 百度AI Studio - 人工智能学习与实训社区 (baidu.com)
1.关键词提取算法分类
1.有监督
- 将关键词提取问题转换成二分类问题,判断每个候选关键词是否为关键词
- 该类算法,需要一个标注好关键词的文档集合来训练分类模型
2.半监督
- 需要少量的训练数据,利用这些训练数据来构建关键词提取模型
- 基于模型对 待处理文本 进行关键词提取
- 提取后,把这些关键词进行人工过滤,将过滤得到的关键词加入到训练集中,重新训练模型
3.无监督
- 不需要人工标注的训练集
- 利用某些方法来发现文本中比较重要的词作为关键词,从而进行关键词提取
- 基于词图模型的关键词提取
- PageRank、TextRank
- 基于统计特征的关键词提取
- TF、TF-IDF
- 基于主题模型的关键词提取
- LDA、LSA、LSI
- 基于词图模型的关键词提取
2.PageRank算法
1. 来源
Google 创始人拉里·佩奇和谢尔盖·布林于 1997 年构建早期的搜索系统原型时提出的链接分析算法,通过计算网页链接的数量和质量来粗略估计网页的重要性。
2.核心思想
- 链接数量:如果一个网页被很多其他网页链接到,说明这个网页比较重要。也就是PageRank的值会相对较高
- 链接质量:如果一个PageRank值很高的网页链接到其它网页,那么这个网页的PageRank值会响应地提高。
3.基本原理
1.先将整个万维网看作是一张有向图,网页构成了图中的节点.每个节点额权重作为其重要性的度量。
2.如果一个节点由很多其它节点指向它,那么它就很重要。同样的如果这个很重要的节点,它的外链数很少,那么这个被链接的点显然也很重要。
4.算法流程
1.给每个网页一个PageRank值
2.通过算法不断更新迭代,直到达到平稳分布为止。
3.TextRank算法
1.特点
TextRank算法构造的网络是无向有权图。
除了考虑链接句的重要性之外,还考虑两个句子之间的相似性。
计算每个句子给它链接句的贡献时,是通过计算权重占总权重的比例来分配的。
这里的权重即指句子之间的相似度,可通过编辑距离、余弦相似度等来进行计算。
2.总体思想
1.构建一张关系图来表示文本、词语以及其他实体。
2. 词语、词语集合、整个句子等都可以作为图中的顶点
3.在这些顶点之间建立联系(比如词序关系、语义关系、内容相似度等),就能够构建一张合适的关系图。
3.算法流程
1.将原文本分割成句子。
2.对每个句子进行分词,并做词性标记,然后去除停用词,只保留指定词性的词(如名词、动词、形容词)
3.构建词图。
1.节点集合由以上步骤生成的词组成。
2.然后根据共现关系,构造任意两个节点之间的边。
仅当两个节点对应的词在长度为K的窗口中共现时,它们之间存在边
其中,K表示窗口大 小 ,即最多共现K个单词,一般K取2
补充共现关系:共同出现的关系。
4.迭代计算各个节点的权重,直至收敛,得到各节点重要性的分值
5.对各个节点的权重进行倒序排序,得到最重要的N个单词,作为top-N关键词进行输出。
6.在原文本中标记top-N关键词,若它们形成了相邻词组,则作为关键词词组提取出来。
4.TextRank关键词提取案例
1.使用jieba分词
用法:jieba.analyse.extract_tags(sentence,topK=5,withWeight=True,allowPOS=())
- sentence:待提取关键词的原文本
- topK:返回关键词的数量,重要性从高到低排序
- withWeight:是否同时返回每个关键词的权重
- allowPOS:词性过滤,为空表示不过滤,若提供则返回符合词性要求的关键字。
举个例子:
def jieba_test(sentence):result=jieba.analyse.extract_tags(sentence,5,withWeight=True,allowPOS=())print("jieba分词得到的关键词和权重")for i in result:print(i)
if __name__=='__main__':sentence="分词就是将连续的字序列按照一定的规范重新组合成语义独立词序列的过程。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。"jieba_test(sentence)TextRank4zh_test(sentence)
结果截图:
2.使用TextRank4zh
1.先导入包 pip install textrank4zh
2.调用函数
1.analyze函数:对文本进行分析
2.get_keywords函数:获取最重要的关键词
举个例子:
def TextRank4zh_test(sentence):tr4w=TextRank4Keyword()tr4w.analyze(sentence,True,5)print("TextRank4zh_test方法得到的关键词")for item in tr4w.get_keywords(5,word_min_len=1):print(item)
if __name__=='__main__':sentence="分词就是将连续的字序列按照一定的规范重新组合成语义独立词序列的过程。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。"jieba_test(sentence)TextRank4zh_test(sentence)
结果截图:
TextRank关键词提取算法相关推荐
- 基于TextRank的关键词提取算法
基于TextRank的关键词提取算法 前沿 TextRank是一种文本排序算法,是基于著名的网页排序算法PageRank改动而来.在介绍TextRank前,我们先简单介绍下什么是PageRank.另外 ...
- KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现
关键词提取 (Keyphrase Extraction,KPE) 任务可以自动提取文档中能够概括核心内容的短语,有利于下游信息检索和 NLP 任务.当前,由于对文档进行标注需要耗费大量资源且缺乏大规模 ...
- 关键词提取算法TextRank
很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank. ...
- 自然语言处理TF-IDF关键词提取算法
1.关键词提取简介 关键词是指能反映文本主题或者主要内容的词语.关键词提取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来,是NLP领域的一个重要的子任务.在信息检索中,准确的关键词提取可以大幅提 ...
- 关键词提取算法—TF/IDF算法
关键词提取算法一般可分为有监督学习和无监督学习两类. 有监督的关键词提取方法可以通过分类的方式进行,通过构建一个较为完善的词表,然后判断每个文档与词表中的每个词的匹配程度,以类似打标签的方式,达到关键 ...
- python关键词提取源码,python实现textrank关键词提取
python实现textrank关键词提取 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: python实现textrank关键词提取.txt ] (友情提示:右键 ...
- 广告行业中那些趣事系列60:详解超好用的无监督关键词提取算法Keybert
导读:本文是"数据拾光者"专栏的第六十篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践.本篇从理论到实践介绍了超好用的无监督关键词提取算法Keybert,对于希望使用无 ...
- 关键词提取算法之RAKE
关键词提取算法之RAKE RAKE(Rapid Automatic Keyword Extraction)算法,作者Alyona Medelyan,她的GitHub上有很多关键字提取的项目. RAKE ...
- java 文本分析 关键词提取_文本关键词提取算法总结
1.TF-IDF 昨天给大家演示简单的文本聚类,但要给每个聚类再提取一两个关键词用于表示该聚类.我们还是用TFIDF算法来做,因为这是比较简单的提取特征算法,不过这里的TF是指某词在本聚类内所有文章的 ...
最新文章
- 面试感悟—-一名3年工作经验的程序员应该具备的技能
- 小程序中ajax返回数据,请问在小程序中如何从请求success中将数据返回给对象data?...
- qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建
- Python---通配符的使用
- ionic android 本地存储,ionic2/3本地数据存储storage
- 通过rsync搭建一个远程备份系统(二)
- 【codevs2912】反素数,好好学习天天向上
- 苹果A13打得过麒麟990吗?看完秒懂
- virtualbox报错:Failed, trying without DKMS的解决方案
- 2009年4月21日 博客更新公告,敬请关注!
- matlab如何看算法时间,【Matlab实现】动态时间规划调整算法(DTW算法)——计算两个序...
- 唐宇迪学习笔记7:梯度下降策略
- sqlserver行列转换,动态行转换
- 关键路径算法——AOE网
- 开启nexus出现If you insist running as root, then set the environment variable RUN_AS_USER=root
- 上海居住证转户口证攻略
- 激荡的2020过后,物流江湖下个十年谁主沉浮?
- Python学习三: 爬虫高级技巧 与 模拟实战练习
- mysql必知必会第5版pdf_sql必知必会
- 一个业务型算法工程师的技能清单