中文文本中的关键字提取

    关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来。这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告、论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和论文中,我们依然可以看到关键词这一项。因此,关键词在文献检索、自动文摘、文本聚类/分类等方面有着重要的应用,它不仅是进行这些工作不可或缺的基础和前提,也是互联网上信息建库的一项重要工作。

     关键词抽取从方法来说主要有两种:

  • 第一种是关键词分配:就是给定一个已有的关键词库,对于新来的文档从该词库里面匹配几个词语作为这篇文档的关键词。
  • 第二种是关键词提取:针对新文档,通过算法分析,提取文档中一些词语作为该文档的关键词。

目前大多数应用领域的关键词抽取算法都是基于后者实现的,从逻辑上说,后者比前者在实际应用中更准确。

下面介绍一些关于关键词抽取的常用和经典的算法实现。

基于 TF-IDF 算法进行关键词提取

     在信息检索理论中,TF-IDF 是 Term Frequency - Inverse Document Frequency 的简写。TF-IDF 是一种数值统计,用于反映一个词对于语料中某篇文档的重要性。在信息检索和文本挖掘领域,它经常用于因子加权。

   

因此,TF-IDF 倾向于过滤掉常见的词语,保留重要的词语。例如,某一特定文件内的高频率词语,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的 TF-IDF。

好在 jieba 已经实现了基于 TF-IDF 算法的关键词抽取,通过命令 import jieba.analyse 引入,函数参数解释如下:

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

  • sentence:待提取的文本语料;
  • topK:返回 TF/IDF 权重最大的关键词个数,默认值为 20;
  • withWeight:是否需要返回关键词权重值,默认值为 False;
  • allowPOS:仅包括指定词性的词,默认值为空,即不筛选。

接下来看例子,我采用的语料来自于百度百科对自然语言处理的定义,获取 Top20 关键字,用空格隔开打印:

import jieba.analyse
sentence  = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。"
keywords = "  ".join(jieba.analyse.extract_tags(sentence , topK=20, withWeight=False, allowPOS=()))
print(keywords)

输出:

自然语言  计算机科学  语言学  研究  领域  处理  通信  有效  软件系统  人工智能  实现  计算机系统  重要  一体   一门  日常  计算机  密切  数学  研制

下面只获取 Top10 的关键字,并修改一下词性,只选择名词和动词,看看结果有何不同?

import jieba.analyse
sentence  = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。"
keywords =(jieba.analyse.extract_tags(sentence , topK=10, withWeight=True, allowPOS=(['n','v'])))
print(keywords)

输出:

[('计算机科学', 0.944278347636774), ('语言学', 0.5780022728625807), ('领域', 0.5237705363622581), ('处理', 0.5236311926477419), ('人工智能', 0.30509762566096776), ('实现', 0.30172453397354837), ('计算机系统', 0.293973739006129), ('一体', 0.23797146276870967), ('计算机', 0.2195091751896774), ('数学', 0.21317227341290323)]

基于 TextRank 算法进行关键词提取

TextRank 是由 PageRank 改进而来,核心思想将文本中的词看作图中的节点,通过边相互连接,不同的节点会有不同的权重,权重高的节点可以作为关键词。这里给出 TextRank 的公式:

节点 i 的权重取决于节点 i 的邻居节点中 i-j 这条边的权重 / j 的所有出度的边的权重 * 节点 j 的权重,将这些邻居节点计算的权重相加,再乘上一定的阻尼系数,就是节点 i 的权重,阻尼系数 d 一般取 0.85。

TextRank 用于关键词提取的算法如下:

(1)把给定的文本 T 按照完整句子进行分割,即:

         

(2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,其中 

ti,j 是保留后的候选关键词。

  

(3)构建候选关键词图 G = (V,E),其中 V 为节点集,由(2)生成的候选关键词组成,然后采用共现关系(Co-Occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为 K 的窗口中共现,K 表示窗口大小,即最多共现 K 个单词。

(4)根据 TextRank 的公式,迭代传播各节点的权重,直至收敛。

(5)对节点权重进行倒序排序,从而得到最重要的 T 个单词,作为候选关键词。

(6)由(5)得到最重要的 T 个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。

同样 jieba 已经实现了基于 TextRank 算法的关键词抽取,通过命令 import jieba.analyse 引用,函数参数解释如下:

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))

直接使用,接口参数同 TF-IDF 相同,注意默认过滤词性。

接下来,我们继续看例子,语料继续使用上例中的句子。

import jieba.analyse
sentence  = "自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。"
#tf-idf
keywords = "  ".join(jieba.analyse.extract_tags(sentence , topK=20, withWeight=False, allowPOS=()))
print(keywords)
#textrank
print("-------")
result = "  ".join(jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')))
print(result)

输出结果:

自然语言  计算机科学  语言学  研究  领域  处理  通信  有效  软件系统  人工智能  实现  计算机系统  重要  一体   一门  日常  计算机  密切  数学  研制
-------
研究  领域  计算机科学  实现  处理  语言学  数学  人们  计算机  涉及  有着  一体  方法  语言  研制  使用  人工 智能  在于  联系  科学

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51287.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关键词提取-TFIDF(一)

系列文章 ✓ 词向量 ✗Adam,sgd ✗ 梯度消失和梯度爆炸 ✗初始化的方法 ✗ 过拟合&欠拟合 ✗ 评价&损失函数的说明 ✗ 深度学习模型及常用任务说明 ✗ RNN的时间复杂度 ✗ neo4j图数据库 分词、词向量 TfidfVectorizer 基本介绍 TF-IDF是一种统计方法,用…

hanlp关键词提取算法TextRank

欢迎关注鄙人公众号,技术干货随时看! 技术交流qq群: 659201069 鄙人的新书《elasticsearch7完全开发指南》,欢迎订阅! https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7 《kibana权威指南…

Jieba进行词频统计与关键词提取

文章目录 1 词频统计1.1 简单词频统计1.2 加入停用词 2 关键词提取2.1 关键词提取原理2.2 关键词提取代码 1 词频统计 1.1 简单词频统计 导入jieba库并定义文本 import jieba text "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域…

关键词提取(keyword extraction)技术

目录 1 统计方法(Statistical Method)1.1 TF1.2 TFIDF1.3 YAKE 2 图方法(Graph Based Approaches)2.1 PageRank2.2 TextRank2.2 SingleRank2.3 TopicRank2.4 PositionRank 3 语义模型(Semantic Models) 1 统…

TextRank关键词提取算法

参考:百度AI Studio课程_学习成就梦想,AI遇见未来_AI课程 - 百度AI Studio - 人工智能学习与实训社区 (baidu.com) 1.关键词提取算法分类 1.有监督 将关键词提取问题转换成二分类问题,判断每个候选关键词是否为关键词该类算法,需…

全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门关键词提取应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门关键词提取应用场景 Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例 其它资料下载 ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字&a…

马斯克的Starship,除了“大”还有什么呢?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 种种迹象表明,由ChatGPT引发的算力军备竞赛已经悄然而至了。 终于,到了检验人类最大火箭发射的时候了。 2023年4月17日,SpaceX将其大型深空火箭Starship发射升空,发射地点为Sp…

细思极恐!GPT-4太强,发明者们也不懂!智能到底是怎么突然「涌现」的?

本文来源 新智元 编辑:LRS 【新智元导读】不可解释的智能,未来该如何发展? 2023年至今,ChatGPT和GPT-4始终霸占在热搜榜上,一方面外行人都在惊叹于AI怎么突然如此强大,会不会革了「打工人」的命&#xf…

ChatGPT真的像说的那么神,什么都能做吗?

神到不至于,但确实给我的工作生活带来不少便利! 我用的是LintCode刷题网里面自带的这个ChatGPT,不花钱就能直接用! 像用它来解决不会的LeetCode题,动动手指解析秒出,对于我这种经常刷题的人来说就比较方便…

textarea输入换行字符提交给后台后,前台获取数据没有换行

解决方案&#xff1a; 需要提交数据库之前把textarea中的换行字符转换为<br>存储到数据库。 当读取的时候在把<br> 替换成textarea的换行符\n就好了 注意&#xff1a;使用replace 方法的时候需要用正则表达式&#xff0c;否则只能替换第一个换行 例如&#xff…

input按回车换行

需求描述&#xff1a;页面是table里面嵌入input,用户要求按回车去下一个input 之前由于用到elementUI的,用于改变许多类型&#xff0c;之后就自己用原生的input去实现 具体代码&#xff1a; <inputtype"number":ref"ipt index":class"ipt index…

enter无法换行

第一种方法&#xff1a;按住window Insert第二种方法&#xff1a;按住Fn Insert

Notepad++显示所有字符:空格换行

因项目需要&#xff0c;写了一个脚本&#xff0c;在windows下&#xff0c;可以正常运行。Push到设备后&#xff0c;报错。 经过Debug, 发现将脚本中的CRLF&#xff0c;改为LF, OK notepad 显示全字符&#xff0c;设置方法&#xff1a; 英文版&#xff1a;View -> Show Sy…

天猫精灵,还缺点啥?

我也是99买的天猫精灵&#xff0c;马大侠在下一盘大棋。也用了京东的叮咚&#xff08;感觉应该是合作开发而已&#xff0c;纯是为了应景&#xff0c;你有我有全都有而已&#xff09;&#xff0c;体验感不行&#xff0c;而且居然这个青春版还不能语音控制了&#xff0c;只能手机…

天猫精灵打开电脑 语音控制电脑

“天猫精灵” “哎&#xff0c;我在&#xff01;” “打开电脑” 上了一天班&#xff0c;回到家就想静静的玩会游戏&#xff0c;吼一句天猫精灵&#xff0c;立马帮你开机&#xff0c;多么舒服装x的体验。然而现实是骨感的&#xff0c;精灵无此功能&#xff0c;网上有人让弄个智…

亲测超好用的一款流程图制作软件(内含制图技巧分享)

什么是流程图&#xff1f;流程图是思维导图的一种图形模式&#xff0c;通过固定的流程和图形组合而成&#xff0c;通常应用于IT业、建筑业、数字统计行业中。因为思维导图慢慢热门起来&#xff0c;所以其他领域也都开始慢慢学习这款思维工具&#xff0c;并通过思维导图工具整理…

7款流程图制作软件大盘点!轻松绘制流程图

流程图可能是我们使用最广泛的一种图形图表&#xff0c;几乎在各个领域都会用到&#xff0c;诸如系统流程图、产品流程图、数据流程图……借助流程图&#xff0c;我们可以将事物的结构、任务的进程、甚至是算法的思路都有效视觉化。 流程图的广泛应用&#xff0c;也直接催生出…

如何做流程图?这几个实用的制作流程图方法分享给你

说到流程图的制作&#xff0c;相信大家都并不陌生&#xff0c;在日常的工作和学习中&#xff0c;我们都会根据需求接触到各种各样的流程图&#xff0c;有时还要自己动手绘制流程图并使用&#xff0c;但你是否会因为不会绘制流程图而感到苦恼呢&#xff1f;没关系&#xff0c;今…

ChatGPT一分钟做流程图

ChatGPT一分钟做流程图它能不能帮我们制作流程图呢&#xff1f;必须是可以的&#xff0c;今天我们再来介绍一个如何用ChatGPT快速制作流程图的方法。 下面以PowerBI分析流程为例&#xff0c;先向ChatGPT进行提问&#xff1a; 你是一个高级数据分析师&#xff0c;熟悉数据分析…

chatgpt赋能python:用Python计算球的表面积

用Python计算球的表面积 简介 球是一个三维几何体&#xff0c;它的表面积是一个重要的物理量。计算球的表面积通常需要使用高等数学公式&#xff0c;而Python可以很方便地进行数学计算&#xff0c;因此在计算球的表面积时&#xff0c;Python也是一种十分有用的工具。 本文将…