自然语言处理之——关键词提取(一)

article/2025/9/21 20:25:09

一. 摘要

本次的分享中,我们将了解目前较常用的关键词提取技术。关键词是代表文章重要内容的一组词。在文本的分类聚类、自动摘要等方面有着重要的作用。还可以让人们更直观便捷的浏览文本信息。在现实的常用文本中是不包含关键词的,所以自动提取关键词技术有着很重要的意义。

二. 关键字提取技术概述

在巨量的信息面前,很多信息是我们无法全面接收,因此我们需要从中筛选出一些我们感兴趣的或者有代表性的信息进行接收。那么这一个过程就是关键词提取技术。如果我们可以准确的将所有的文档都用几个简单的关键词描述,那么我们便可以通过关键词了解一篇文章的内容,这将会提高信息获取到效率。

关键词提取算法一般可以分为有监督和无监督两类。有监督的关键词提取方法主要是通过分类的方式进行,首先通过创建一个比较丰富完善的词表,然后通过计算相似度判断每个文档与词表中每个词的匹配程度,类似打标签的方式,以此达到关键词提取的效果。有监督的方法虽然可以获取到较高的提取精度,但是需要大批量的标注数据,人工成本非常高。另外,现代信息量爆炸式增长,会新增出大量的新信息,一个固定的词表代表范围有限,很难将这类信息内容表述出来,但要人工维护这个受控的词表需要很大的人力成本,这就成为了有监督方法在使用上的一个很大短板。

对比有监督的关键词提取方法,无监督的方法对数据的要求就低了很多。不需要人工创建、维护词表,也不需要人工标准语料辅助进行训练。因此,这类的关键词提取技术应用更普遍。本次分享我们的主要介绍的关键词提取技术是TF-IDF算法和TextRank算法。

三. TF-IDF算法

TF-IDF算法(Term Frequency-Inverse Document Frequency,词频-逆文档频次算法)是一种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。这种思想是符合关键词抽取的需求,一个词语对文档越重要,那么是关键词的概率就越大,所以通常将TF-IDF算法应用在关键词提取中。

首先从算法的名称分析,TF-IDF算法是由两部分组成:TF算法和IDF算法。TF算法是统计一个词在一篇文档中出现的频次,基本思想理解为:一个词在一篇文档中出现的次数越多,那么这个词对文档的表达能力就越强。而IDF算法是统计一个词在文档集中的多少个文档中出现,基本思想理解为:如果一个词在越少数的文档中出现,则对文档的区分能力就越强。

TF算法和IDF算法也可以单独使用,但是两种算法单独使用过程中都有其不足的地方。TF算法仅仅能够衡量词在一篇文档的出现频次,没有考虑到词对文档的区分能力。而IDF算法则是相反,强调的是词的区分能力,但是一个词既然能够在一篇文档中频繁出现,也表示这个词可以很好的表征这篇文档的特征,如果忽视这点显然也是很不合理的。于是,经过实际考虑将这两种算法综合使用,组合成TF-IDF算法,从词频、逆文档频次两个方面对词的代表能力进行衡量。

图1:TF表达式

在实际的使用中,TF的计算表达式如图所示。其中nij表示词i在文档j中的出现次数。但是仅用频次来表示,长文本中的词出现频次高的概率会更大,这一点会影响到不同文档之间关键词权值的比较。所以在计算过程中一般会对词频进行归一化。分母的部分就是统计文档中每一个词出现次数的总和,也就是文档中词的总数量。

图2:IDF表达式

IDF算法的计算表达式如图所示。|D|表示文档集中总文档数,|Di|表示文档集中出现词i的文档数量。分母中+1是采用了拉普拉斯平滑思想,避免有部分新词没有在语料库中出现过而导致分母为零的情况出现,有增强算法健壮性的作用。

图3:TF-IDF表达式

TF-IDF算法表达式如上图中所示,TF-IDF算法就是TF算法与IDF算法的综合使用,对于这两种算法的组合,通过大量的理论推导和实验研究后,发现以取IDF算法值的对数,然后相乘是较为有效的计算方式。

除了上述提到的传统TF-IDF算法之外,TF-IDF算法还有很多变种的加权方法。传统的TF-IDF算法中,仅仅考虑到了词的两个统计信息。因此,其对文本的信息利用程度显然是比较少的。所以除了上述的信息外,一个文本中还有很多的信息能够对关键词的提取起到很好的辅助作用,例如每个词的词性、出现的位置等等。算法本身的定义是死的,但是结合我们的应用场景,对算法进行合理的改造和补充,使之能够更适应应用环境,这样可以更好的得到想要的结果。

四. TextRank算法

在上述的TF-IDF算法中,都需要基于一个现成的语料库,主题模型的关键词提取算法则是需要通过对大规模文档学习,发现文档的隐含主题。而TextRank算法则是可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本思想源于Google的PageRank算法。因此这里需要先了解下PageRank算法。

图4:PageRank算法示意图

PageRank算法是一种网页排名算法,其基本思想有两个:(1)链接数量。一个网页被越多的其他网页链接,表示这个网页越重要;(2)链接质量。一个网页被一个越高权值的网页链接,也表示这个网页越重要。

图5:PageRank算法表达式

In(Vi)为Vi的入链集合,Out(Vj)为Vj的出链集合,|Out(Vj)|则是出链的数量。因为每一个网页要将它自身的分数平均地贡献给每个链接,那么S(Vj)/|Out(Vj)|即为Vj贡献给Vi的分数。将Vi的所以入链贡献给它的分数相加,就是Vi自身的数值。以这种方式来计算每个网页的分数就会有一个问题,每个网页的得分都与其链接的网页的分数有关,那么其链接网页的数值该如何确定?为解决这个问题,算法开始时会将所以网页的得分初始化为1,然后通过多次迭代来对每个网页的分数进行收敛。收敛得到的数值为最终得分。

图6:PageRank算法改造表达式

在图5表达式中计算会导致一些孤立网页得分为零。为避免这种情况出现,对图5中公式进行改造,加入了阻尼系数d,改造后表达式如图6中所示,这样即使是孤立的网页,也可得出数值。

上述便是PageRank算法的理论,也是TextRank算法的理论基础。不同的是PageRank是又向无权图,而TextRank进行自动摘要则属于有权图,因为在计分时除了考虑链接句子的重要性外,还要考虑两个句子的相似性。因此TextRank的完整表达式为

图7:TextRank算法改造表达式

在计算每个句子给他链接句的贡献时,就不采用平均分配的方式,而是通过计算权重占总权重的比例进行分配,这里的权重就是两个句子的相似度值。相似度计算的方法可以采用距离相似度、余弦相似度等。在对一篇文档进行自动摘要的时候,默认每个语句和其他语句都有链接关系,也就是又向完全图了。

当TextRank应用到关键字抽取的时候,与应用在自动摘要中有两个不同的地方:(1)词与词之间的关联没有权重;(2)每个词不是与其余所以词都有链接。

由于第一点的不同,那么TextRank重点分数计算将会退化,将得分平均贡献给每个链接的词。

图8:TextRank算法改造词表达式

对于第二点的不同,既然每个词与其余所有词并不是都相连,那么他们中间的链接关系该如何设定呢。这里的TextRank应用在关键字提取中时,加入了一个窗口的概念,在窗口中的词都是互相链接的。下面我们用示例展示一下窗口的概念应用。

原文档:詹姆斯夺得了职业生涯第4座总冠军。

分词后:[詹姆斯, 夺得, 了, 职业, 生涯, 第, 4, 座, 总冠军]。将窗口大小设置为4,可以得到以下几个窗口:

1. [詹姆斯, 夺得, 了, 职业]

2. [夺得, 了, 职业, 生涯]

3. [了, 职业, 生涯, 第]

4. [职业, 生涯, 第, 4]

5. [生涯, 第, 4, 座]

6. [第, 4, 座, 总冠军]

每个窗口内的所有词都有链接关系,比如[詹姆斯]和[夺得, 了, 职业]之间有链接关系。此时便可以套用TextRank的公式,对每个词进行得分的计算。最后便可以选择出得分最高的n个词作为文档的关键词。

五. 总结

本次分享的内容是自然语言处理中关键词提取技术的用处和效果介绍,主体内容主要解释了基于文档库的TF-IDF(词频-逆文档频次算法)的基础原理,以及可脱离文档库存在的TextRank算法思的想和表达式。关键词提取技术的方法多样且不共性,所以下篇的分享内容是LSA/LSI关键词提取算法的介绍,敬请期待!


http://chatgpt.dhexx.cn/article/kq17GD3p.shtml

相关文章

记一次 watchbog 挖矿病毒的清理

突然发现服务器上的mysql数据库连接不上遂使用xshell连接服务器查看进程发现被一个叫watchbog的进程沾满了cpu 通过查阅资料发现该病毒通过定时器 不断下载挖矿程序脚本 先清除 crontab中不属于自己的内容 kill掉所有的watchbog进程 bog 不是dog 查找到服务器上所有的…

手工清除Windows服务器上的Steam挖矿病毒:HackTool/CoinMiner.a及Trojan/Miner.ac

手工清除Windows服务器上的Steam挖矿病毒:HackTool/CoinMiner.a及Trojan/Miner.ac 起因: 最近服务器群里的两台Windows虚拟服务器上的CPU占用率超级高(已经达到了91%),严重影响公司程序的正常运行,但是又不能安装杀毒软…

2019上半年恶意挖矿趋势报告

上一期,深信服安全团队对勒索病毒进行2019半年度总结,主要盘点了高发勒索家族、受灾区域分布、勒索病毒发展走向等。本期深信服安全团队对另一流行病毒类型——挖矿木马进行深入分析,给大家揭秘2019上半年挖矿木马的所作所为。 一、2019上半…

服务器被加了挖矿代码

2019独角兽企业重金招聘Python工程师标准>>> 平时很少使用的一台服务器,24G内存,在上面搭建了Hadoop环境。 突然发现负载好高,top看了一下,一个java进程占用了很多cpu 疑似国内来源的“8220挖矿团伙”追踪溯源分析 挖矿…

威胁快报|Nexus Repository Manager 3新漏洞已被用于挖矿木马传播,建议用户尽快修复...

2019独角兽企业重金招聘Python工程师标准>>> 背景 近日,阿里云安全监测到watchbog挖矿木马使用新曝光的Nexus Repository Manager 3远程代码执行漏洞(CVE-2019-7238)进行攻击并挖矿的事件。 值得注意的是,这一攻击开始的时间(2月2…

威胁快报|ProtonMiner挖矿蠕虫扩大攻击面,加速传播

2019独角兽企业重金招聘Python工程师标准>>> 背景 近日,阿里云安全监测到一种挖矿蠕虫,正在互联网上加速传播。阿里云安全根据它使用ProtonMail邮箱地址作为矿池用户名的行为,将其命名为ProtonMiner。据分析,这种蠕虫与…

记一次mykings暗云挖矿木马的排查与解决

微信公众号:运维开发故事,作者:wanger 起因 之前有一台做测试的Windows server2012阿里云服务器的防火墙关掉之后开机总是启动,想了很多办法也没找到原因就提了工单问了售后,结果售后也没发现问题,并提示我…

应急响应流程以及入侵排查

归纳转载于: 应急响应的整体思路和基本流程 - FreeBuf网络安全行业门户不管是普通的企业,还是专业的安全厂商,都不可避免的需要掌握和运用好信息安全的知识、技能,以便在需要的时候,能够御敌千里。https://www.freebu…

阿里云服务器被挖矿程序minerd入侵的终极解决办法

突然发现阿里云服务器CPU很高,几乎达到100%,执行 top c 一看,吓一跳,结果如下: 3798 root 20 0 386m 7852 1272 S 300.0 0.1 4355:11 /tmp/AnXqV -B -a cryptonight -o stratumtcp://xmr.crypto-pool.fr:44…

如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招

2019独角兽企业重金招聘Python工程师标准>>> 漏洞概述 近日,互联网出现watchdogs挖矿病毒,攻击者可以利用Redis未授权访问漏洞入侵服务器,通过内外网扫描感染更多机器。被感染的主机出现 crontab 任务异常、系统文件被删除、CPU 异…

2t3ik与ddgs挖矿病毒处理

为什么80%的码农都做不了架构师?>>> http://ju.outofmemory.cn/entry/351669 转载于:https://my.oschina.net/lgfei/blog/1809898

Linux 服务器上有挖矿病毒 kdevtmpfsi 如何处理?

本文转载自:https://my.oschina.net/u/4437985/blog/3168526 侵删 症状表现 服务器CPU资源使用一直处于100%的状态,通过 top 命令查看,发现可疑进程 kdevtmpfsi。通过 google搜索,发现这是挖矿病毒。 排查方法 首先&#xf…

[问题已处理]-阿里云与本地机房中挖矿病毒处理,又又又中毒了

导语:被挖矿的现象是cpu异常的高。正常服务被系统杀掉。 先是发现线上业务挂了。紧接着发现本地机房也挂了。判断病毒应该是由本地机房的跳板机或者开放的端口,或dubbo框架漏洞进来的 基本判断是confluence最新的漏洞导致的 http://www.hackdig.com/0…

IDEA连接阿里云ECS运行的docker,及处理挖矿病毒kdevtmpfsi的经历

文章目录 前置条件docker版本:1.13.1相关参考文章 1.修改docker相关配置1.1 修改docker配置文件1.2 重新加载配置文件1.3 重启docker 2.配置阿里云ECS开放端口23753.配置IDEA的原生插件连接Docker4.配置IDEA的AlibabaCloudToolkit插件连接Docker5.因为开放了远程连接…

【安全攻防系列】教你如何 ssh暴力破解、捕捉短连接、清理挖矿病毒、盖茨木马和DDOS病毒

文章目录 ssh暴力破解0x00 前言0x01 应急场景0x02 日志分析系统账号情况/var/log/secure/var/log/auth.log0x03 处理措施0x04 我的实战记录捕捉短连接0x00 前言0x01 应急场景0x02 分析0x03 小结挖矿病毒0x00 前言0x01 应急场景0x02 事件分析A、排查过程B、溯源分析C、清除病毒D…

某云服务器挖矿病毒查杀日记

接手的某项目部署于某云平台centos服务器上,由tomcat作为中间件提供应用,且购买了该平台的域名服务,从2019年底上线运营,一直运行比较平稳,可能还没正式用起来,用的人也不是很多吧。但凡事总有个但是&#…

记一次感染挖矿病毒的经历

2019独角兽企业重金招聘Python工程师标准>>> 下午五点十分、手机开始狂收阿里云ECS实例告警,所有告警都提示机器CPU满载。 迅速登录阿里云查看监控大盘,发现全部38台机器CPU飙升满载。第三方客户也开始在群聊里反馈接口响应慢,失败…

记录一次云服务器被劫持下载了挖矿病毒的处理过程

etc被篡改导致系统中病毒 起因: 一年前买的阿里云服务器 , 买了没多久 , 因为没做什么安全措施 , 然后就莫名奇妙服务器被劫持 , 在上面下载了挖矿的一些脚本 ,当时做的处理方式 简单粗暴 直接重置了我的阿里云服务器 , 并且改了密码 , 同时在阿里云的服务器控制台 -> 安全…

中了挖矿病毒

最近一台服务器运行超级慢,任务管理器查看CPU占用100% ,使用autoruns.exe工具查看到异常任务和进程。 打开文件路径还发现以下文件,config.json , c3a.bat , wina.exe config.json 代码如下: {"api": {"id"…

Powershell 挖矿病毒处理与防范

最近,一种利用Powershell的挖矿病毒在企业网络中频繁爆发,该病毒其利用了WMIPowershell方式进行无文件攻击,并长驻内存进行挖矿。 Powershell的挖矿病毒具备无文件攻击的高级威胁外,还具有两种横向传染机制,分别为WMIE…