Name Disambiguation in AMiner: Clustering, Maintenance, and Human in the Loop
本文经过结合全局和局部信息提出了一个全面的框架来解决名字消歧问题,并提出比传统基于 BIC 方法更好的端到端的簇大小估计方法。为提升准确性,加入反馈机制,与 GHOST 等目前集中最早进的方法相比,该方案有明显的性能提高。
- 整合了特征和本地链路信息(和 CANE 类似)
- 自生成簇数,不须要预先设定
- 考虑了新数据的输入
- 结合了人的参与反馈
1. 挑战
- 如何量化不一样数据源中实体的类似性
- 如何肯定同名人数
- 如何整合连续的数据
- 为确保做者经历,须要最小化做者职业生涯中的时间和文章间的间隔,保证其连续性
- 如何实现一个循环的系统
- 没有任何人为交互的消歧系统不够充实,利用人的反馈实现高的消歧准确性
2. 总体框架介绍

- 量化类似性
- 提出了一种结合全局度量和局部连接的学习算法,将每一个实体投影到低维的公共空间,可直接计算其类似性
- 肯定簇数
- 提出一种端到端的模型,使用递归神经网络直接估算簇数
- 结合人的参与
- 定义了来自用户/注释的6个潜在特征,将其结合到框架的不一样组件中以改善消歧准确性
3. 相关研究
- 基于特征的方法
- 利用监督学习方法,基于文档特征向量学习每对文档间的距离函数
- Huang:首先使用块技术将具备类似名称的候选文档组合,而后经过 SVM 学习文档间距离,使用 DBSCAN 聚类文档
- Yoshida:提出两阶段聚类方法,在初次聚类后学习更好的特征
- Han:提出基于 SVM 和 Naive Bayes 的监督消歧方法
- Louppe:使用分类器学习每对的类似度并使用半监督层次聚类
- 基于连接的方法
- 利用来自邻居的拓扑和信息
- GHOST 仅经过共同做者构建文档图
- Tang 使用隐马尔科夫随机场模拟统一律率框架中的节点和边缘特征
- Zhang 经过基于文档类似度和共同做者关系从三个图中学习图嵌入
本文结合上述两种方法优势,结合监督学习全局嵌入和局部连接结构
- 估计簇大小
- 以前为预设值
- 使用 DBSCAN 之类方法避免指定k
- 使用 X-means 变体基于贝叶斯信息准测测量聚类质量迭代估计最优 K
本模型输入为一组文档嵌入,输出簇数量
4. 参数设置
设 a 为给定名字,关于 a 的文档集为
其中每篇文档的特征(包含 title,abstract,co-authors,venue.. )为
使用 I 表示 identity,若是
则两篇文章属于同一我的
姓名消歧问题
任务:寻早一个函数将一组文档 D 分到不一样的集合
( 同一个集合仅包含同一人的文章 )
Ca 为 Da 名字a 的消歧结果
要解决消歧问题,须要更多的约束,此处主要考虑两种:
自己约束 Si 和成对约束 Sp
(y 表示是否数据集合 Ck)
成对约束
由个体约束推导成对约束
5. 框架
5.1. 表示学习
为有效量化不一样文档间的类似性,将文档转换到同一嵌入空间,若是Di 与 Dj 类似,表示为:
5.1.1. 全局度量学习
每一个文档 Di 被表示为一组不一样长度的特征向量 Di = { x1,x2,...}---title,abstract,coauthors,venue..
每一个特征为一个 one-hot 向量,首先将向量映射到一个连续的低维空间
每一个文档的特征表示为
(每一个特征嵌入的加权总和,an 是特征xn 的反转文档频率,xi 捕捉每一个文档中共现统计量捕获特征之间的相关性)
但 xi 用于区分文档能力有限,须要其余协助
Contrastive Loss
给定一组约束
目的:强制正相关在嵌入空间内距离较近,反之,较远
设yi 为 Di 新的嵌入函数,目标为优化如下对比损失函数
(m 为margin)
因为将全部文档投影到同一空间的单个点上较困难(每一个做者的不一样文章可能为与不一样社区协做的不一样主题),所以采用排名学习,并优化三组损失函数
Triplet Loss
相对于投影到单个点,三元损失使得同一个体的文章能够在多个点,并同时得到与其余文档的距离
由于不一样集合的文档被嵌入统一空间,所以称 {yi} 为全局嵌入
可是因为聚类是为每一个名字单独进行的,还须要利用每一个集合的局部信息提升性能
5.1.2. 本地连接学习
利用本地链路中的细粒度信息完善全局嵌入
为每一个名称构建局部链路图(两个文档有较多类似特征则更有可能属于同一做者)
边为文档间的类似度,连接权重 W(Di, Dj) 为文档间共同特征的交集(共同特征的加权和)
若是 W 高于一个阈值,则创建边
使用无监督的自编码器从本地链路学习
自编码器
node encoder model
( Y 为D的嵌入矩阵,A 为图G 的邻接矩阵)
edge decoder model
(Z=[z1,z2...] 为节点嵌入矩阵,A 为预测的邻接矩阵
目标是最小化 A 和 A~ 之间的重构偏差
使用图卷积网络(GCN)
( A 为对称的邻接矩阵,W0 W1分别是第1、二层的参数
解码器 g2
Di 和 Dj 间存在边的几率为
目标函数:最小化交叉熵
咱们采用 Z=[z1,z2,...] 做为文档新的嵌入表示,包含来自全局和本地的信息
5.2. 簇估计
聚类大小估计
X-means缺点:
1. 基于预约义的测量方式(如贝叶斯信息准则)评分聚类质量--不可以处理复杂信息的融合,聚类数量较大时容易过拟合
2. 基于对潜在信息的拆分(数据集较大时不够高效)
所以提出 end-to-end 模型:
输入:文档集
输出:直接估计实体数量
方法
使用分层凝聚聚类(HAC) 做为主要聚类方法
本方法采用 RNN 做为编码器,尝试将一组嵌入向量映射到集合的真正簇数
递归神经网络在离散序列和数据集建模中的应用:
将 RNN 做为编码器,尝试将一组嵌入向量映射到分类簇中
挑战:
1. 输入集合变化范围是 1~nw
虽然 RNN 可经过填充或截断处理可变大小的输入,但也会引入误差
2. 难构建一套训练集
手动标记不可行
解决-伪训练数据生成策略:
使用一种抽样策略构建伪训练集
设 C={C1, C2...} 是一组干净的簇(每一个集群中仅包含单个做者的文档)
- 对每一个第t步的训练,首先在[Kmin, Kmax] 间选取簇数 kt
- 从 C 中选取 Kt个集群构建伪候选集 Ct
- DCt:表示 C 中全部文档
- z: 表示固定样本大小
- 从DCt 中采样 z 个文档 Dt进行替换
- 经过此方式可从 C 中构建无数的训练集
- 使用一个神经网络框架使得 h(Dt)-->r
使用双向 LSTM 做为编码器,和一维全链接层做为解码器
输入:每篇文章的行特征嵌入
优化均方差 Lh
5.3. 连续集成
持续集成--如何处理不断增加的数据
本文以流媒体方式集成新文章
时间成本:主要来自本地连接的学习,聚类,及从数据库中抽取相关文档的 io
实时更新(使用最简单的KNN):
- 将新文档如下列方式贪婪的分配给现有的配置文件:
- 根据做者姓名和关联在系统中到排序搜索一组配置文件,每一个配置文件对应一篇文章
- 若是有多个匹配,检索文档列表 Di 的全局嵌入 yi,并构建一个本地 KNN 分类器用于查找每一个 Ck 的最佳分配
- 每个 Ck 是一个类别, {(yi,}是一组带有标签的数据点
此策略可以实时更新文档,尽管可能为次优赋值,但可经过下次聚类从新计算的迭代进行校订
数据一致性
如何保证每次迭代更新之间的一致性
从新计算聚类后,可能结果与上次不一致
获取新的聚类后,搜索其与先前版本的最佳匹配
使用 Kuhn-Munkres 算法寻找最佳的映射
5.4. 利用人工注释
容许用户和注释根据聚类结果进行反馈,支持:
为在算法中利用反馈,根据等式1 将个体约束 Si 转换为成对约束 Sp,用到两个学习嵌入阶段
在全局嵌入中
从 Sp 中选取的训练集步骤以下
- 从Sp基于采样约束(Di,Dj,yij)
- 若是 yij = 0 则基于约束(Di,Dl,1)从 Sp 中采样,并生成三元组(Di,Dl,Dj)
- 不然,从整个文档空间中随机采样并生成三元组
本地链路学习中
基于 Sp 改善本地链路,添加边(Di,Dj)若是知足:
6. 效果