基於聚類的指代消解算法

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


分享到:


相關文章: