NLPer 如何做关键词抽取

2020 年 10 月 22 日 AINLP

关键词的提取,也可以称之为文本标签提取。

比如说,”今天这顿烧烤是真不错啊“,在这句话中,”烧烤“这个词就可以被认为是一个关键词,或者说这个句子的一个标签。

这个标签在一定程度上能够表现出这个句子的含义,比如这个”烧烤“,如果用在文本分类任务中,可以隐含带有”美食“这个类别的信息。

这些标签有些时候也可以用在推荐系统的召回,比如直接按照”烧烤“这个标签做一路召回。

对于关键词的提取一般来说分为抽取式和生成式。其实类比到摘要,其实也是分为抽取式和生成式。

生成式有一个缺点就是有些结果不可控,这其实还挺要命的

对于抽取式,就是从现有的数据中拿出来词组。最差的结果也就是拿出的单词并不重要,不是我们想要的。

我们的重点是在抽取式提取关键词。

关键词的提取可以分为两个步骤:召回+排序

1.召回

召回就是得到文本中的候选关键词,也就是得到这个句子中有可能是关键词的词汇。

这一步,可以做的方法有很多,比如

  1. 我们有积累的关键词词库,在这里直接匹配出来。

  2. 一些符合的词性的候选词,比如我挑选出名词作为候选词

  3. 还可以基于一些统计特征提出候选词,比如TF-IDF(有些时候统计特征也会用在排序中作为特征)

  4. 基于一些规则,比如一个句子出现了人名地名,书名号中词,这些很有可能就是关键词

召回其实是一个很重要的部分,在这一步骤,尽可能的召回有用的词汇。我自己的标准是宁可多不能少。如果多了,无非就是增加了资源消耗,但是少了,可能在排序阶段就是无米之炊了。

2.排序

排序阶段,我们可以将方法大致的分为有监督和无监督的方法

2.1无监督抽取关键词

对于无监督,我们分为基于统计和基于图。基于统计就是TF-IDF和各种变种。基于图最常见的就是TextRank。

关键词提取的一个baseline就是 TF-IDF 提取,这种方法效果已经很好。投入产出比很高,我们一般需要去掉常用的停用词,保留重要的词语。

TF-IDF基于统计,易于实现,但是缺点就是没有考虑词与词,词与文档之间的关系。是割裂的。

另一个baseline就是基于图的TextRank, TextRank 由 PageRank 演变而来。

相比于TF-IDF,TextRank考虑了词与词之间的关系(提取思想就是从窗口之间的词汇关系而来),但是缺点是它针对的是单个文本,而不是整个语料,在词汇量比较少的文本中,也就是短文中,效果会比较差。

随着数据量的积累,我们需要把模型更换到有监督模型加上。一般来说,有监督分为两种,一种是看做序列标注,一种是看做二分类的问题。

2.2有监督之二分类

先说二分类问题,比较简单,就是找到词汇的各种特征,去判断这个词汇是不是这个文本的关键词。

我大概罗列一些可能会用到的特征。

  1. 位置特征:

使用位置特征是我们基于文本关键词出现的位置是在大量数据的情况下是有规律可言的,比如微博文本中出现在##符号中部分词汇有很大概率就是文本的一个关键词。

是否出现在开头,是否出现在中间部分,是否出现在末尾,出现的位置(具体是第几个单词);相对于整个文本的位置;是否出现在##符号中...

  1. 统计特征:

共现矩阵信息;词频;逆词频;词性;词跨度;关键词所在句子的最大长度/最小长度/平均长度;

  1. 向量特征:

    关键词词向量和文档向量的相似性

2.3有监督之序列标注

关键词的提取,就是一个典型的序列标注的问题。判断句子中关键词的开头中间结尾的位置。

序列标注最基础的就是HMM和CRF方法,但是特征工程比较复杂。

为了解决特征工程复杂的问题,我们使用深度学习模型序列标注。

关于序列标注,大家可以参考我这个文章内容:

工业级命名体识别经验+代码总结

3.新词发现

还会出现一个问题,如果我们使用二分类判定关键词,上述的过程我们都是基于我们的分词器来做的。有可能会出现一些新词,由于分词错误,不能及时的出现在你的候选词库中,比如”爷青结“。

这个时候,我们需要一个新词发现系统,持续不断的补充到词库中,在召回阶段可以提升召回率。

对于新词发现来说,基操就是从文本的自由程度和凝固程度来判断是否是新词,这样的问题就是阈值不好调整从而导致召回和精准不好平衡。

我们还可以通过别的方法离线挖掘实体词补充道词库中,之前有借鉴美团ner的文章实现了一下,效果还不错,在这里,大家可以参考我这个文章:实体库构建:离线大规模新词实体挖掘

有兴趣的去github看更多相关文文章:

https://github.com/DA-southampton/NLP_ability



由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注NLP技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
2

相关内容

TF-IDF(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。tf-idf加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了tf-idf以外,互联网上的搜索引擎还会使用基于链接分析的评级方法,以确定文件在搜索结果中出现的顺序。
专知会员服务
191+阅读 · 2020年10月14日
专知会员服务
29+阅读 · 2020年9月13日
【文本分类大综述:从浅层到深度学习,35页pdf】
专知会员服务
184+阅读 · 2020年8月6日
【论文推荐】文本摘要简述
专知会员服务
68+阅读 · 2020年7月20日
专知会员服务
197+阅读 · 2020年3月6日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
干货 | 自然语言处理(1)之聊一聊分词原理
机器学习算法与Python学习
5+阅读 · 2017年12月7日
【NLP】十分钟快览自然语言处理学习总结
专知
17+阅读 · 2017年11月21日
如何用Python从海量文本抽取主题?
AI研习社
7+阅读 · 2017年7月6日
自然语言处理技术(NLP)在推荐系统中的应用
人工智能头条
7+阅读 · 2017年6月29日
Arxiv
0+阅读 · 2021年2月1日
Arxiv
0+阅读 · 2021年1月30日
Hierarchical Graph Capsule Network
Arxiv
20+阅读 · 2020年12月16日
Arxiv
13+阅读 · 2019年11月14日
VIP会员
相关VIP内容
专知会员服务
191+阅读 · 2020年10月14日
专知会员服务
29+阅读 · 2020年9月13日
【文本分类大综述:从浅层到深度学习,35页pdf】
专知会员服务
184+阅读 · 2020年8月6日
【论文推荐】文本摘要简述
专知会员服务
68+阅读 · 2020年7月20日
专知会员服务
197+阅读 · 2020年3月6日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
相关资讯
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
干货 | 自然语言处理(1)之聊一聊分词原理
机器学习算法与Python学习
5+阅读 · 2017年12月7日
【NLP】十分钟快览自然语言处理学习总结
专知
17+阅读 · 2017年11月21日
如何用Python从海量文本抽取主题?
AI研习社
7+阅读 · 2017年7月6日
自然语言处理技术(NLP)在推荐系统中的应用
人工智能头条
7+阅读 · 2017年6月29日
相关论文
Arxiv
0+阅读 · 2021年2月1日
Arxiv
0+阅读 · 2021年1月30日
Hierarchical Graph Capsule Network
Arxiv
20+阅读 · 2020年12月16日
Arxiv
13+阅读 · 2019年11月14日
Top
微信扫码咨询专知VIP会员