热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关键词提取——有监督方法

在上一篇博客中,介绍了关键词提取的无监督方法:点击这里查看文章。本篇主要是介绍关键词提取的有监督方法。可以从如下角度去做有监督学习:二

在上一篇博客中,介绍了关键词提取的无监督方法:点击这里查看文章。本篇主要是介绍关键词提取的有监督方法。

可以从如下角度去做有监督学习:


  • 二分类模型:短语是否为关键短语。
  • LTR(learn to rank):学习排序模型,选取top K 的作为关键短语。
  • encoder-decoder:类似翻译的思想,将文本作为源语言,关键短语作为目标语言。
  • 序列标注:类似于实体识别的思路,实体识别提取实体词,这里提取关键短语。

对于上述的每种方法,都用1~2个模型去说明。


特征

在这里插入图片描述
二分类模型可以利用上述特征,构建二分类模型,判断短语是否为关键短语。与之相关的,可以看一下KEA: Practical Automatic Keyphrase Extraction这篇论文,它使用tf-idf值与位置信息作为特征,以朴素贝叶斯作为二分类模型,从而判断某个短语是否为关键短语。


LTR

RankingSVM
A Ranking Approach to Keyphrase Extraction使用RankingSVM来建模该问题。

使用的特征:


The features include TF-IDF score, phrase length, position of phrase’s first occurrence, phrase’s appearance in document title, uniformity of phrase’s distribution within document (measured by entropy), frequency of most and least frequent word of phrase, etc.


rankingsvm简介:


rankingsvm是一种pointwise的排序算法。给定文档ddd,关键词k1>k2>k3k_1>k_2>k_3k1>k2>k3,意味着关键词k1k_1k1k2,k3k_2,k_3k2,k3都更相关。令x1,x2,x3x_1,x_2,x_3x1,x2,x3k1,k2,k3k_1,k_2,k_3k1k2k3的特征,则,x1−x2,x1−x3,x2−x3x_1-x_2,x_1-x_3,x_2-x_3x1x2,x1x3,x2x3为正样本;x2−x1,x3−x1,x3−x2x_2-x_1,x_3-x_1,x_3-x_2x2x1,x3x1,x3x2为负样本。那么问题就重新转变为分类问题。可用SVM进行分类。


Bert-KPE
Capturing Global Informativeness in Open Domain Keyphrase Extraction,中使用了Pairwise ranking loss作为其rank损失。具体的论文分析,详见我的博客。


Encoder-Decoder

论文Deep Keyphrase Generation中使用encoder-decoder完成关键词的抽取。


Deep Keyphrase Generation的源码地址。


Deep Keyphrase Generation:

问题定义:

假设语料库中包含N条语料,对于其中的第iii条语料,定义为(x(i),p(i))(x^{(i)},p^{(i)})(x(i),p(i)),其中x(i)x^{(i)}x(i)是源文本,而p(i)p^{(i)}p(i)是长度为MiM_iMi的向量(MiM_iMi表示目标关键短语的数目),那么p(i)=(p(i,1),⋯,p(i,Mi))p^{(i)}=(p^{(i,1)},\cdots,p^{(i,M_i)})p(i)=(p(i,1),,p(i,Mi))。对于源文本和关键短语,都可以将其拆分为word level的表示,因此,有:
在这里插入图片描述
(x(i),p(i))(x^{(i)},p^{(i)})(x(i),p(i))可以转变为MiM_iMi个对:((xi,p(i,1)),⋯,(xip(i,Mi)))((x^{i},p^{(i,1)}),\cdots,(x^{i}p^{(i,M_i)}))((xi,p(i,1)),,(xip(i,Mi))),为了方便起见,将这些pair用(x,y)(x,y)(x,y)表示。

encoder-decoder model:
encoder部分,目标是获得源文本的表征cccccc的计算方式如下:
在这里插入图片描述
在这里插入图片描述
其中,f,qf,qf,q都是非线性函数。得到文本的表征后,利用ccc对其进行解码。于是有:

decoder部分:将ccc解码成变长y=(y1,y2,⋯,yT′)y=(y_1,y_2,\cdots,y_{T'})y=(y1,y2,,yT)
在这里插入图片描述
sts_tst是decoder RNN在时刻t的隐状态。g是一个softmax函数。

encoder 和 decoder 的细节:
值得一提的是,在实际工作中,将encoder部分转变为双向GRU得到HHH,decoder使用前向GRU得到SSS。除此之外,生成表征时可以使用attention机制:
在这里插入图片描述
Copying Mechanism:
为了保证学到的表征的质量以及减少词库的大小,一般来说,RNN只会包含30000个常用的词,有大量的长尾词被忽略了(英文情况),这会使得decoder没法生成包含未登陆词的短语。而重要的短语其实与其所在的位置以及语法信息有关,Copying Mechanism通过从原文中获取word,从而能够输出OOV,但包含在源文本中的词。

那么,新的概率分布定义如下:
在这里插入图片描述
pgp_gpg表示生成词的概率,pcp_cpc表示复制词的概率:
在这里插入图片描述
这样的话,从某种程度来说解决了OOV问题,也会让模型优先考虑已经出现的词(因为大多数的关键词往往出现在源文本中)。


序列标注

BiLSTM-CRF:
这里将问题转变为序列标注问题。比如,可以将关键词或者关键词短语标注出来,其余的词标注为other。这样就与命名实体识别任务相同了。具体的关键词抽取实践请看这里。

关于序列标注的更多细节,可以看我的下一篇博客: 命名实体识别。


参考

https://zhuanlan.zhihu.com/p/163426574
https://www.cnblogs.com/kemaswill/p/3241963.html
https://cloud.tencent.com/developer/article/1528457


推荐阅读
  • OpenCV中的霍夫圆检测技术解析
    本文详细介绍了如何使用OpenCV库中的HoughCircles函数实现霍夫圆检测,并提供了具体的代码示例及参数解释。 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • 3.[15]Writeaprogramtolistallofthekeysandvaluesin%ENV.PrinttheresultsintwocolumnsinASCIIbet ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
author-avatar
aatwo19668035
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有