指代消解 (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