您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

基于聚类的指代消解算法

时间:2020-09-15 09:16:13  来源:  作者:

指代消解 (Coreference Resolution) 任务主要是识别文本中代表同一对象的实体 (Mention),例如 "小明告诉我他的想法" 里面的 "小明" 和 "他" 均指代小明。指代消解方法通常包括两个步骤:1. 识别 Mention;2.判断 Mention 之间是否指代相同对象。比较常见的判断方法是把两个 Mention 的特征传入神经网络,然后计算得分。本文介绍一种基于聚类的指代消解方法,每一个簇包含多个指代相同的 Mention,并利用簇的特征判断两个簇是否能融合。

1.前言

在之前的文章《端到端指代消解 Coreference Resolution》 介绍了一种指代消解方法,其主要思想是把先判断文本的所有区间是否属于 Mention,然后再计算区间指代一致的得分。对于指代消解概念不熟悉的童鞋可以参考一下该文章。

本文主要介绍一种利用聚类的方法,通常指代消解任务包含两个部分:

第一部分是找出文本中的 Mention,即一些指代的实体,例如下图中红色框的内容。

基于聚类的指代消解算法

找出 Mention

第二部分是利用 Mention 的特征向量,判断两个 Mention 是否指代相同的对象,如下图所示 "姐姐" 和 "她" 指代相同。

基于聚类的指代消解算法

判断 Mention 是否指示相同对象

传统的方法采用了单个 Mention 的特征,而没有用到整个 Mention 簇的特征。但是这些簇特征包含更加丰富的语义信息,可以弥补单个 Mention 缺失的信息。 例如两个簇 {Bill Clinton} 和 {Clinton,She},可以更加容易区分第二个簇代表希拉里。

因此《Improving Coreference Resolution by Learning Entity-Level Distributed Representations》中提出了一种生成 Cluster-Pair 向量的方法,并利用聚类的方式进行指代消解。

2.基于聚类的模型

基于聚类的指代消解算法

模型整体结构

模型主要包括四个部分,如上面的图片所示,每部分的作用:

  • Mention-Pair Encoder,生成一对 Mention 的表征向量。
  • Cluster-Pair Encoder,生成一对簇 Cluster 的表征向量。
  • Cluster-Ranking Model,为传入的一对簇打分,表示这两个簇属于同一对象的得分,得分高则将两个簇融合在一起。
  • Mention-Ranking Model,为一对 Mention 打分,表示这两个 Mention 属于同一对象的得分。训练得到的 Mention-Ranking 主要有两个功能:1. 对 Cluster-Ranking 的权值初始化。2. 对 Cluster-Ranking 的搜索空间进行剪枝。

2.1 Mention-Pair Encoder

基于聚类的指代消解算法

Mention-Pair Encoder

Mention-Pair Encoder 的结构如上图所示,给定一个 Mention m 和一个可能的先行词 a,可以利用,可以利用 Mention-Pair Encoder 获得 m 和 a 的联合表征向量。其输入的特征包括:

  • Embedding Features:获取与 Mention 有关联的词的词向量,例如 head word (Mention 中最重要的词),dependency parent (句法分析后的依赖词),first word (Mention 第一个词),preceding words 和 following words (Mention 前面和后面的词)。
  • Additional Mention Features:Mention 的类型 (名词,代词,人名等),Mention 的位置 (Mention 的索引除以文本 Mention 总数),Mention 单词数。
  • Document Genre:文本的特征 (文本的体裁)。
  • Distance Features:句子中 Mention 之间的距离。
  • Speaker Features:这两个 Mention 是否由同一个人说出。
  • String Matching Features:字符串匹配相关的特征。

Mention-Pair 的特征经过三层全连接网络生成 Mention-Pair 的特征向量,用 rm(a, m) 表示。

基于聚类的指代消解算法

生成 Mention-Pair 特征向量

2.2 Cluster-Pair Encoder

基于聚类的指代消解算法

Cluster-Pair Encoder

Cluster-Pair Encoder 的结构如上图所示,给定两个簇 ci 和 cj,可以利用 Cluster-Pair Encoder 获得 ci 和 cj 的联合表征向量。每个簇包含多个 Mention,如下所示。

基于聚类的指代消解算法

生成 Cluster-Pair 的特征需要用到 Mention-Pair Encoder。从簇 ci 和 cj 中分别找出一个 Mention,可以形成多种不同的 Mention-Pair。然后利用 Mention-Pair Encoder 生成 Mention-Pair 特征,所有 Mention-Pair 特征的集合如下。

基于聚类的指代消解算法

Mention-Pair 特征的集合

Cluster-Pair Encoder 对上述特征集合进行 pooling 操作,生成 Cluster-Pair 的特征向量 rc(ci, cj)。

基于聚类的指代消解算法

生成 Cluster-Pair 特征向量

2.3 Mention-Ranking Model

作者首先训练和一个 Mention-Ranking Model,用于对 Mention-Pair 打分。主要原因有两个:

  • 预训练 Mention-Ranking Model 模型可以初始化 Cluster-Ranking Model。
  • 通过 Mention-Ranking Model 预测 Mention-Pair 的得分,可以对 Cluster-Ranking Model 的搜索空间进行剪枝,直接去掉一些不可能的 Mention-Pair。

Mention-Ranking Model 只包含一层全连接层,得分 sm(a, m) 的计算公式如下,其中 rm(a, m) 是 Mention-Pair Encoder 生成的向量:

基于聚类的指代消解算法

Mention-Pair 得分

用 A(m) 表示 Mention m 所有可能的先行词集合,用 T(m) 表示 m 真实的先行词集合。通过计算一个 Mention 和所有 T(m) 的得分,可以找出一个得分最高的真实先行词,如下所示。

基于聚类的指代消解算法

得分最高的真实先行词

作者用了下面的损失函数训练模型,损失函数针对不同的预测错误采用不同的学习权重,NA 表示 Mention 没有先行词。

基于聚类的指代消解算法

Mention-Ranking 损失函数

2.4 Cluster-Ranking Model

用一个状态 x=(C, m) 表示当前的状态,其中 C={c1, c2, ...} 表示当前所有的簇,m 表示当前考虑的 Mention,cm 表示包含 Mention m 的簇。初始的时候每一个 Mention 单独成为一个簇。对于当前状态 x(c, m),可以采用的行动 U(x) 包括:

  • MERGE[cm, c],把包含 m 的簇 cm 和当前簇 c 融合成一个簇。
  • PASS,不改变簇。

Cluster-Ranking Model 需要计算两个簇指代相同的得分,也需要计算当前 m 所在簇不进行融合的得分。

基于聚类的指代消解算法

计算 Cluster 得分

最终模型根据策略 π 采取下一步的行动。

基于聚类的指代消解算法

Cluster 执行策略 π

Cluster-Ranking Model 的训练过程和传统的机器学习不同,因为其状态依赖于过去的行动,因此作者使用了一种 Learning to Search 的方法训练模型,如下所示。

基于聚类的指代消解算法

Learning to Search

3.参考文献

Improving Coreference Resolution by Learning Entity-Level Distributed Representations



Tags:指代消解算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
指代消解 (Coreference Resolution) 任务主要是识别文本中代表同一对象的实体 (Mention),例如 "小明告诉我他的想法" 里面的 "小明" 和 "他" 均指代小明。指代消解方法通常包...【详细内容】
2020-09-15  Tags: 指代消解算法  点击:(154)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条