业界动态
r语言提取列名_R语言自然语言处理:关键词提取(TF-IDF)
2024-10-31 21:19

本文希望诠释如何利用TF-IDF方法对文本中的关键词进行提取。关键词提取的输入是一大段文本材料,输出是少数的关键词。比如我们日常看的论文,会有关键词。但是这些一般都是作者自己根据文章内容,向杂志社提供的关键词。事实上,如果有了正文的文本,我们完全可以利用计算机自动提取关键词(在一些数据库中,这些关键词的名称叫做Index Keywords,即索引关键词,区别于作者关键词Author Keywords)。

r语言提取列名_R语言自然语言处理:关键词提取(TF-IDF)

从海量的文本文档中,提取少量表征其内容的关键词,这就是关键词提取的主要任务。掌握了这项技能,能够自动化地给文本贴标签,非常有用。根据大部分从业者和学界的实践证明,TF-IDF算法能够解决大部分的关键词抽取场景,简单有效,其实大部分能够做文章的地方不是在算法,而是在中文分词和词性标注的部分。所以,掌握这个简单有效的方法,并利用它来做关键词提取,是非常重要的。本文会首先对TF-IDF算法做简要介绍,然后提供这个算法在R语言中的实现代码。

TF-IDF的基本思想是:词语的重要性与它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比下降。也就是说,如果在一篇论文或一次演讲中,我们反复提到一些词,那么这些词可能会比其他的词更重要。但是如果这些词,别人也都在用,那么这些词就不能称之为我们文章或者演讲的特色(比如大量的常用词)。为了能够提取出文本中“最具特色”的表征性关键词,需要利用TF-IDF算法,也就是说:如果某个词或者短语在一个文档中出现多次,但是在其他文档中很少出现,就可以认为这个词或短语具有很好的区分性,适合用来对这个文档进行表征。

9fd148c037a09dacd1804411fc18fc09.png

由公式可知:一个词在文档中出现的次数越多,其TF值就越大,整个语料库中包含某个词的文档数越少,则IDF值越大,因此某个词的TF-IDF值越大,则这个词是关键词的概率越大。

TF-IDF关键词提取算法的一大缺点是:为了精确的提取一篇文档中的关键词,需要有一整个语料库来提供支持。这个问题的解决方法,通常是在一个通用的语料库上提前计算好所有词的IDF值,jieba就是这么做的。这样的解决方案对于普通文档关键词提取有一定的效果,但是对于专业性稍微强一点的文档,表现就会差很多。因此如果是一个垂直领域,需要自己先对模型进行训练,形成一个IDF的库(里面装的东西就是一个数据框,一列是词语,一列是这个词语的IDF)。jieba是用《人民日报》语料库进行训练的,对新闻类的特征提取有一定效果。但是随着时代的变迁,大家用语习惯的变化,无论是分词库还是IDF词库都需要定期更新,才能够有良好的效果。

首先安装必要的包。

然后,导入数据。数据在我的Github中可以下载,网址为:https://github.com/hope-data-science/chinese_NLP/blob/master/R%E8%AF%AD%E8%A8%80%E5%85%B3%E9%94%AE%E8%AF%8D%E6%8F%90%E5%8F%96/hire_text.rda. 我们导入到R环境中。

这里面包含了互联网公司的一些招聘信息,一共有4102条记录,只有一列,列名称为hire_text,包含了企业对岗位要求的描述。

下面,我们要对这些文本进行分词,然后提取能够表征这些文本的关键词。这样,我们就可以知道这些企业究竟想要什么样的人才。

首先,要进行高质量的分析,就需要用到外部词库。这里我会用搜狗词胞库,网址为https://pinyin.sogou.com/dict/。经过对数据的观察,我认为这些互联网公司主要招聘的对象还是IT,有的则是金融行业,因此我要使用两个词库:计算机词库(https://pinyin.sogou.com/dict/detail/index/75228/https://pinyin.sogou.com/dict/detail/index/15117)和财经词库(https://pinyin.sogou.com/dict/detail/index/15127?rf=dictindex)。下载到本地之后,我会把它们转化为文本格式,然后统一复制粘贴到用户词库中(详细方法见之前的文章R语言自然语言处理:中文分词)。 下面先对scel文件进行转格式。

然后把这些词典加载到用户词典中。进入所在目录,然后找到“user.dict.utf8”,把转格式之后的文本内容复制粘贴进去。

现在,我们的分词能力就已经得到了一定程度的提高。 现在我们要求每一个文本的关键词,首先给每个文档一个ID。

然后,我们用jiebaR的工具开始分词。

因为这一步不是很好理解,我先停一下解释一下。我先构建了一个名为wk的worker,默认会调用我放在自定义的分词库和原有的词库。然后,我用这个分词器,对表格中每一个文本,都做了分词。这里用了map函数,它会对hire_text的每一个元素,进行segment函数的处理,而且jieba参数都会设为wk,也就是我们用同一个分词器对所有的文本进行处理。最后得到一个新的列,我命名为words,它包含了每一个文本处理的分词结果,不过因为每个文本分词的长度都不一样,我们把它们都放在一个list里面,然后放在数据框中。

不过这个格式还是不能用的,我们最后要得到tidy的格式:也就是id是所属的文本编号,而另一列应该是这个文本分词的每一个词,再一列是这个词出现的词频(TF,然后我们再来计算IDF和TF-IDF。 听起来好像很复杂,不过让你看看它在R里面能有多简单。

现在这个f_table中,id是文档编号,words是分词结果得到的每一个词,n则是这个词在当前文档中出现的频次。

至此,根据原理,我们需要的数据其实全部都有了,因此无论是TF还是IDF都可以求,其乘积TF-IDF也就出来了。不过我们已经加载了tidytext这个包,因此,这个任务基本是马上就完成了。

我专门把形参都显示出来,大家能够知道应该怎么放进去。term接收的是分词的结果,document接收的是文档的编号,n接收的是在文档中出现的词频。一个bind_tf_idf函数,统统搞定。

既然关键词提取是基于TF-IDF,那么我们现在只要把每个文档中TF-IDF最高的n个词提出来,就是这个文档最重要的关键词。比如,我需要提出最重要的3个关键词,可以使用分组提取操作。

需要明确的是,top_n函数选择前三名的时候,如果有并列第三的,会全部纳入表格中。 最后,让我们做个词云来看看。

5fb7fed5d847f8b76a13d6b25bb1f8b4.png    以上就是本篇文章【r语言提取列名_R语言自然语言处理:关键词提取(TF-IDF)】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/3031.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多   
最新新闻
“撒旦”人血鞋?碰瓷新疆棉花的耐克,又开始喊冤了?
继主动碰瓷新疆棉花把自己搞得股价大跌之后耐克秉承着“no zuo no die”的精神又开始暗搓搓搞“阴间操作”限量发售含人血的“撒
tiktok怎么搭建外网 详细教程及步骤
TikTok怎么搭建外网(详细教程及步骤)TikTok是一款非常流行的短视频社交应用程序,它在全球范围内拥有数亿用户。在使用TikTok的
《以案释法》步数越多,收益越高?别被“走路也能赚钱”的理财广告忽悠了
  走路也能赚到钱的理财  “丑的人还在睡觉,美的人已经跑出一杯星巴克了。”2016年的一天,一个女孩晒出的朋友圈截图引起了
如何用生意参谋算出同行店铺真实销售额
怎么经过生意顾问算出同行店肆实在销售额?大多数在淘宝天猫工作过的人都知道,他们的背景显现了同行商铺的买卖数据,这被称为买
一款最近比较火的网站统计分析系统,易分析具有什么样的功能呢?
一、产品简介北京普艾斯科技有限公司成立于2009年,服务客户1000+,包括电商、金融、保险、政务服务等行业。私有化部署,全渠道
向佐快乐大本营2024年精彩回顾:四年时光共欢笑
张大大谢娜力捧下的综艺新星张大大一位在娱乐圈中颇具人气的主持人他的成名之路离不开谢娜的提携回顾张大大的成名之路可以说谢娜
PingTools app
《PingTools app》是一款非常好用的实用工具软件,软件内拥有丰富的功能,包含了包括浏览器扫描等。使用非常简单,直接下载安装
抖音能看到谁搜索过自己吗?
尊敬的用户,您好。针对抖音平台是否能够查看谁搜索过自己的问题,我们需要做一些详细说明。首先,根据我们了解到的情况,在抖音
什么是人工智能“语料库”?为什么每个人都在谈论它?
编者按:比尔盖茨(Bill Gates)、Reddit 首席执行官和其他科技领袖越来越多地谈论“语料库”,现在是时候了解它是“何方神圣”
LED行业词语中英对应
1、led 灯具构成英文led 球泡灯:led bulbLed 贴片灯珠:SMD LEDLed驱动电源:led driver隔离电源:isolated driver非隔离电源:
本企业新闻

点击拨打: