Name Disambiguation in AMiner: Clustering, Maintenance, and Human in the Loop
paper:
http://keg.cs.tsinghua.edu.cn/jietang/publications/kdd18_yutao-AMiner-Name-Disambiguation.pdf
本文通過結合全局和局部信息提出了一個全面的框架來解決名字消歧問題,並提出比傳統基於 BIC 方法更好的端到端的簇大小估計方法。為提高准確性,加入反饋機制,與 GHOST 等目前集中最先進的方法相比,該方案有明顯的性能提升。
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分別是第一、二層的參數
解碼器 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進行替換
- Dt 可能包含重復文檔且 Dt 的順序是任意的
- 通過此方式可從 C 中構建無數的訓練集
- 使用一個神經網絡框架使得 h(Dt)-->r
使用雙向 LSTM 作為編碼器,和一維全連接層作為解碼器
輸入:每篇文章的行特征嵌入
優化均方差 Lh
5.3. 連續集成
持續集成--如何處理不斷增長的數據
本文以流媒體方式集成新文章
時間成本:主要來自本地鏈接的學習,聚類,及從數據庫中抽取相關文檔的 io
實時更新(使用最簡單的KNN):
- 將新文檔以下列方式貪婪的分配給現有的配置文件:
- 根據作者姓名和關聯在系統中到排序搜索一組配置文件,每個配置文件對應一篇文章
- 如果有多個匹配,檢索文檔列表 Di 的全局嵌入 yi,並構建一個本地 KNN 分類器用於查找每個 Ck 的最佳分配
- 每一個 Ck 是一個類別, {(yi,}是一組帶有標簽的數據點
此策略能夠實時更新文檔,盡管可能為次優賦值,但可通過下次聚類重新計算的迭代進行校正
數據一致性
如何保證每次迭代更新之間的一致性
重新計算聚類后,可能結果與上次不一致
獲取新的聚類后,搜索其與先前版本的最佳匹配

使用 Kuhn-Munkres 算法尋找最佳的映射
5.4. 利用人工注釋
允許用戶和注釋根據聚類結果進行反饋,支持:
- 刪除
- 刪除文檔
- 插入
- 將文檔Di 添加到 Ck
- 拆分
- 注釋為過度合並並請求聚類
- 合並
- 將 Ck 與 Ck‘ 合並
- 創建
- 確認
為在算法中利用反饋,根據等式1 將個體約束 Si 轉換為成對約束 Sp,用到兩個學習嵌入階段
在全局嵌入中
從 Sp 中選取的訓練集步驟如下
- 從Sp基於采樣約束(Di,Dj,yij)
- 如果 yij = 0 則基於約束(Di,Dl,1)從 Sp 中采樣,並生成三元組(Di,Dl,Dj)
- 否則,從整個文檔空間中隨機采樣並生成三元組
本地鏈路學習中
基於 Sp 改善本地鏈路,添加邊(Di,Dj)如果滿足:

6. 效果


