业界动态
【Python】用 Python 从单个文本中提取关键字的四种超棒的方法
2024-11-04 10:39
自然语言处理分析的最基本和初始步骤是关键词提取,在NLP中,我们有许多算法可以帮助我们提取文本数据的关键字。本文中,云朵君将和大家一起学习四种即简单又有效的方法,它们分别是 ​​。并将简单概述下每个方法的使用场景,然后使用附加示例将其应用于提取关键字。

【Python】用 Python 从单个文本中提取关键字的四种超棒的方法

本文关键字:关键字提取、关键短语提取、Python、NLP、TextRank、Rake、BERT

在我之前的文章中,我介绍了使用 Python 和 TFIDF 从文本中提取关键词,TFIDF 方法依赖于语料库统计来对提取的关键字进行加权,因此它的缺点之一是不能应用于单个文本。

为了说明每种关键字提取方法(Rake、Yake、Keybert 和 Textrank)的实现原理,将使用已发表的文章[1]的摘要以及主题指定的关键字,并通过检查哪些方法的提取的关键词与作者设置的关键词更接近,来检验每种方法。在关键词提取任务中,有显式关键词,即显式地出现在文本中;也有隐式关键词,即作者提到的关键词没有显式地出现在文本中,而是与文章的领域相关。

在上图展示的示例中,有文本标题和文章摘要,标准关键字(由作者在原始文章中定义)被标记为黄色。注意​​这个词并不明确,也没有在摘要中找到。虽然可以在文章的全文中提取,但这里为了简单起见,语料数据仅限于摘要。

标题通常与提供的文本相结合,因为标题包含有价值的信息,并且高度概括了文章的内容。因此,我们将文本和标题两个变量之间通过加上一个加号而简单地拼接。

现在开始使用今天的四个主角来提取关键字!

它是一种轻量级、无监督的自动关键词提取方法,它依赖于从单个文档中提取的统计文本特征来识别文本中最相关的关键词。该方法不需要针对特定的文档集进行训练,也不依赖于字典、文本大小、领域或语言。Yake 定义了一组五个特征来捕捉关键词特征,这些特征被启发式地组合起来,为每个关键词分配一个分数。分数越低,关键字越重要。你可以阅读原始论文[2],以及yake 的Python 包[3]关于它的信息。

特征提取主要考虑五个因素(去除停用词后)

(Casing)
大写字母的term(除了每句话的开头单词)的重要程度比那些小写字母的term重要程度要大。

其中,  表示该词的大写次数, 表示该词的缩写次数。

(Word Position)
文本越开头的部分句子的重要程度比后面的句子重要程度要大。

其中 表示包含该词的所有句子在文档中的位置中位数。

(Term Frequency)
一个词在文本中出现的频率越大,相对来说越重要,同时为了避免长文本词频越高的问题,会进行归一化操作。

其中,MeanTF是整个词的词频均值, 是标准差。

(Term Related to Context)
一个词与越多不相同的词共现,该词的重要程度越低。

其中 表示窗口size为 从左边滑动, 表示从右边滑动。 表示出现在固定窗口大小为 下,出现不同的词的个数。 表示所有词频的最大值。

(Term Different Sentence)
一个词在越多句子中出现,相对更重要

其中 SF(t) 是包含词t tt的句子频率, 表示所有句子数量。
最后计算每个term的分值公式如下:

表示的是单词 的分值情况,其中 分值越小,表示的单词 越重要。

首先从 Yake 实例中调用 ​​​ 构造函数,它接受多个参数,其中重要的是:要检索的单词数​​​,此处设置为 10。参数​​​:此处使用默认值​​​。可以传递停用词列表给参数 ​​。然后将文本传递给 ​​ 函数,该函数将返回一个元组列表​​。关键字的长度范围为 1 到 3。

从结果看有三个关键词与作者提供的词相同,分别是​​​, ​​​ 和 ​​。注意到Yake会区分大写字母,并对以大写字母开头的单词赋予更大的权重。

Rake 是 Rapid Automatic Keyword Extraction 的缩写,它是一种从单个文档中提取关键字的方法。实际上提取的是关键的短语(phrase),并且倾向于较长的短语,在英文中,关键词通常包括多个单词,但很少包含标点符号和停用词,例如and,the,of等,以及其他不包含语义信息的单词。

Rake算法首先使用标点符号(如半角的句号、问号、感叹号、逗号等)将一篇文档分成若干分句,然后对于每一个分句,使用停用词作为分隔符将分句分为若干短语,这些短语作为最终提取出的关键词的候选词。

每个短语可以再通过空格分为若干个单词,可以通过给每个单词赋予一个得分,通过累加得到每个短语的得分。Rake 通过分析单词的出现及其与文本中其他单词的兼容性(共现)来识别文本中的关键短语。最终定义的公式是:

即单词 的得分是该单词的度(是一个网络中的概念,每与一个单词共现在一个短语中,度就加1,考虑该单词本身)除以该单词的词频(该单词在该文档中出现的总次数)。

然后对于每个候选的关键短语,将其中每个单词的得分累加,并进行排序,RAKE将候选短语总数的前三分之一的认为是抽取出的关键词。

如上所述,我们知道RAKE通过使用停用词和短语分隔符解析文档,将包含主要内容的单词分类为候选关键字。这基本上是通过以下一些步骤来完成的,首先,文档文本被特定的单词分隔符分割成一个单词数组,其次,该数组再次被分割成一个在短语分隔符和停用单词位置的连续单词序列。最后,位于相同序列中的单词被分配到文本中的相同位置,并一起被视为候选关键字。

从文本数据中识别出所有候选关键字后,将生成单词共现图,该图计算每个候选关键字的分数,并定义为成员单词分数。借助该图,我们根据图中顶点的程度和频率评估了计算单词分数的几个指标。

计算候选关键字得分后,将从文档中选择前T个候选关键字。T值是图中字数的三分之一。

TextRank 是一种用于提取关键字和句子的无监督方法。它一个基于图的排序算法。其中每个节点都是一个单词,边表示单词之间的关系,这些关系是通过定义单词在预定大小的移动窗口内的共现而形成的。

该算法的灵感来自于 Google 用来对网站进行排名的 PageRank。它首先使用词性 (PoS) 对文本进行标记和注释。它只考虑单个单词。没有使用 n-gram,多词是后期重构的。

TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。其主要步骤如下:

  1. 把给定的文本T按照完整句子进行分割,即
  2. 对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即 ,其中是保留后的候选关键词。
  3. 构建候选关键词图 ,其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系​​构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
  4. 根据上面公式,迭代传播各节点的权重,直至收敛。
  5. 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
  6. 由(5)得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“Matlab code for plotting ambiguity function”,如果“Matlab”和“code”均属于候选关键词,则组合成“Matlab code”加入关键词序列。

要使用Textrank生成关键字,必须首先安装 summa 包,然后必须导入模块 ​​。

之后,只需调用 ​​ 函数并将要处理的文本传递给它。我们还将 ​​ 设置为 ​​ 以打印出每个结果关键字的相关性。

KeyBERT[4]是一种简单易用的关键字提取算法,它利用 SBERT 嵌入从文档中生成与文档更相似的关键字和关键短语。首先,使用 ​​ 模型生成文档embedding。然后为 N-gram 短语提取词的embedding。然后使用余弦相似度测量每个关键短语与文档的相似度。最后将最相似的词识别为最能描述整个文档并被视为关键字的词。

要使用 keybert 生成关键字,必须先安装 keybert 包,然后才能导入模块 keyBERT。

然后创建一个接受一个参数的 keyBERT 实例,即 Sentences-Bert 模型。可以从以下来源[5]中选择想要的任何embedding模型。根据作者的说法,all-mpnet-base-v2模型是最好的。

下载 BERT 预训练模型

考虑到大多数关键短语的长度在 1 到 2 之间,可以将 ​​​ 更改为 (1,2)。这次我们将 ​​ 设置为 true。

到这里我们已经一起学习了在提取关键字/关键短语领域使用的四种最棒的技术,并提供了简单代码实现。这四种方法各有千秋。并且每个都成功地提取了与作者指定的关键字相同或接近并与该领域相关的关键字。

若你有学到一点什么,记得 点赞 收藏 加关注 哦!

[1]

文章: ​​https://www.researchgate.net/publication/353592446_TEXT_VECTORIZATION_USING_DATA_MINING_METHODS​​

[2]

论文: ​​https://www.sciencedirect.com/science/article/abs/pii/S0020025519308588​​

[3]

yake包: ​​https://github.com/LIAAD/yake​​

[4]

KeyBERT: ​​https://github.com/MaartenGr/KeyBERT​​

[5]

pretrained_models: ​​https://www.sbert.net/docs/pretrained_models.html​​

[6]

​​https://links.jianshu.com/go?to=https%3A%2F%2Fmedium.datadriveninvestor.com%2Frake-rapid-automatic-keyword-extraction-algorithm-f4ec17b2886c​​

[7]


    以上就是本篇文章【【Python】用 Python 从单个文本中提取关键字的四种超棒的方法】的全部内容了,欢迎阅览 ! 文章地址:http://lianchengexpo.xrbh.cn/news/13731.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://lianchengexpo.xrbh.cn/mobile/ , 查看更多   
最新新闻
刘畊宏直播2小时收入120万,打赏的榜一大哥都是什么人?
说起最近这段时间直播界最火的网红明星,非“健身达人”刘畊宏莫属,从今年4月初开始,全国各地都有人因疫情被封控,而刘畊宏的
国家要普涨工资,地方正狂卷就业,让大家挣钱最重要
最近,有一个重要的文件和每个人的“钱袋子”息息相关。那就是《中共中央、国务院关于实施就业优先战略促进高质量充分就业的意见
实探债务危机中的柔宇科技:生产基地半小时只看到3个人,手机业务已停摆
2023年是折叠屏手机爆发年,诸多柔性屏供应商、手机厂商吃到红利。然而面对这样的好光景,柔宇科技却只剩一片残局。曾经凭借柔性
今日头条iphone最新版特色
今日头条ios2021最新版是专为苹果手机用户打造的头条新闻资讯应用,打开今日头条,即可知道今天发生了哪些大事,还有最新的娱乐
一张床垫用N年,弹簧早就疲软了,撑不住儿童发育的脊梁,赶紧换!
你家孩子睡的弹簧床垫陪伴TA多少年了?尤其是弹簧床垫,通常睡上3~5年的儿童床垫,金属弹簧就会呈现不同程度的疲软,这将严重影
增长黑客,创业公司用户增长的秘籍
增长黑客读了范冰的《增长黑客》,启发太多。正如作者在前言中所说,确实是处处均是干货,书里脉络清晰,是本难得的好书。增长黑
实用的高考化学考试答题思路与技巧
高考的化学考试答题要联系所学习的知识,找到知识与问题之间的结合点,确定解题的方案,这才是解题的关键。下面是小编为大家整理
小红书情人节营销指南
│前言│小红书作为女生的口袋百科指南,提供了各种各样的节日攻略内容,同时引导着用户去享受更好的生活,而在即将到来的214情
云南SEO优化如何让描述中出现地址呢?
在搜索引擎优化(SEO)的世界中,整合关键信息,如地址,到网页描述中是提升网站在搜索引擎结果页面上的可见性和点击率的关键策
实用贴!海关统计数据查询攻略
海关统计数据查询攻略为便于社会公众查询和使用海关进出口货物贸易统计数据(以下简称海关统计数据),特编制本查询攻略。一定期
本企业新闻
推荐企业新闻

点击拨打: