中文短文本关键词抽取方案

2024-02-03 23:59

本文主要是介绍中文短文本关键词抽取方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 1. 前言
    • 2. 数据
    • 3. 方案
      • 3.1 SIFRank
      • 3.2 NegSamplingNER
    • 4. 代码

1. 前言

  本文提出一种中文短文本关键词抽取方案,适用于无监督语料场景。
  无监督关键词抽取算法虽然无需标注语料,但是效果一般。有监督学习方法效果好但是需要标注数据,很多业务场景下并没有标注好的数据。能否结合无监督学习方法和有监督学习方法的长处,用无监督方法标注语料,然后用于训练有监督方法?为此我们用实验证明了该方案是可行的,文末给出代码地址。

2. 数据

  我们选用联通问答数据集中的问题数据,从问题中提取联通业务关键词。下载地址

3. 方案

  首先使用SIFRank方法标注语料,然后训练NegSamplingNER命名实体识别模型。
在这里插入图片描述

3.1 SIFRank

  无监督关键词抽取算法选用SIFRank。原方法使用ELMO语言模型得到词向量和句向量,我们将其替换为RoBerta模型。原方法使用清华的分词工具thulac,我们对比了jieba、thulac、百度lac和哈工大LTP四种工具,发现LTP效果最好,于是我们选用LTP作为分词和词性标注工具。
  SIFRank将名词和形容词+名词的组合视为候选关键词,使用语言模型得到每个词的向量,关键词中各个词向量加权得到关键词向量,同理句子中各个词向量加权得到句向量。关键词向量和句向量的cos值作为关键词得分。
  SIFRank提取关键词的重要一点是词权重,可以使用他提供的词权重文件,也可以自行计算词权重。收集大规模问题语料,计算词频,再计算领域语料中的词频,可按照TFIDF方法计算词权重,也可以直接将词频倒数加上平滑项作为权重。
  SIFRank流程如下图。
(1)分词+标词性。
(2)获取候选关键词列表:利用正则表达式确定名词短语(例如:形容词+名词),将名词短语作为候选关键短语。
(3)通过预训练语言模型,得到关键词的embedding。
(4)同样地,得到句子或文档的embedding。
(5)计算(3)与(4)结果的余弦相似度,选取topN作为其最终提取的关键词。
在这里插入图片描述

3.2 NegSamplingNER

  用SIFRank去标注数据,为了让标注的词尽可能是正确的,每个句子我们只选取一个SIFRank输出的关键词。这样保证了标注的精确率,但是会导致很多漏标数据,这些漏标数据可视为噪声,用这样的数据去训练常规的命名实体识别模型显然是不可行的。
  为此我们选择适用于远程监督数据的NER模型NegSamplingNER,该论文来自ICLR 2021。远程监督生成的NER数据集有个特点,标注的实体基本正确,但是存在大量漏标实体,这和我们用SIFRank生成的数据非常类似。NegSamplingNER采用BERT+span classifier结构,负样本通过随机采样片段得到,因此有很大概率噪声不会被采样,这也就避免了噪声影响。
  NegSamplingNER结构如下图。编码器的输入输出和常规方法相同。采样过程就是随机挑选一个起始位置和一个结束位置,作为一个负样本,将起始位置和结束位置的向量拼接得到负样本表征。正样本的表征也是将起始位置和结束位置的向量拼接得到。将正负样本向量表征输入MLP分类,得到每个样本的类型,负样本的类型为‘O’。
在这里插入图片描述

4. 代码

  本文开源代码:https://github.com/wjx-git/KeyWordsExtraction,需要自行下载预训练语言模型RoBerta。

这篇关于中文短文本关键词抽取方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_27668313/article/details/121618401
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/675821

相关文章

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

利用Python实现可回滚方案的示例代码

《利用Python实现可回滚方案的示例代码》很多项目翻车不是因为不会做,而是走错了方向却没法回头,技术选型失败的风险我们都清楚,但真正能提前规划“回滚方案”的人不多,本文从实际项目出发,教你如何用Py... 目录描述题解答案(核心思路)题解代码分析第一步:抽象缓存接口第二步:实现两个版本第三步:根据 Fea

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索

Python解决雅努斯问题实例方案详解

《Python解决雅努斯问题实例方案详解》:本文主要介绍Python解决雅努斯问题实例方案,雅努斯问题是指AI生成的3D对象在不同视角下出现不一致性的问题,即从不同角度看物体时,物体的形状会出现不... 目录一、雅努斯简介二、雅努斯问题三、示例代码四、解决方案五、完整解决方案一、雅努斯简介雅努斯(Janu

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2