今天介紹一個(gè)小眾的 Task, 實(shí)體集合拓展(Entity set expansion).
Empower Entity Set Expansion via Language Model Probing. ACL 2020.
Yunyi Zhang, Jiaming Shen, Jingbo Shang, Jiawei Han
任務(wù)的目標(biāo)是拓展原有的實(shí)體集合,向其中添加相同類別的實(shí)體,注意這里的實(shí)體類別一般不是傳統(tǒng)的 7 大 NER 類別,更偏向 Fine-grained 的。
舉個(gè)例子,原有集合{德州,杭州,青島},可以拓展為{林芝,六盤水}之類的。
簡單的話,我們用聚類 Contextual Embedding(類似于 Word Sense Induction 中的做法), 或者用 pair-wise loss 增強(qiáng) Similarity 的計(jì)算可以給到一個(gè)結(jié)果。
但這樣操作會(huì)有兩個(gè)缺點(diǎn):
- 單純的相似度計(jì)算,容易拓展不準(zhǔn)確的實(shí)體(非同級(jí),反義詞,High level 相似,但細(xì)粒度不同).
- 隨著集合的拓展,容易出現(xiàn)語義偏移等誤差累計(jì)問題.
如果能獲得實(shí)體集合的類別名稱,能減少歧義,促進(jìn)對(duì)實(shí)體集合的理解。
本文從這個(gè)角度出發(fā),通過兩個(gè) query 分別預(yù)測(cè)實(shí)體類別和實(shí)體, 試圖更好的利用預(yù)訓(xùn)練模型中的語言知識(shí)。
初看可能思路比較簡單,只是做一個(gè) MLM 的預(yù)測(cè)。
但如果只是這樣,最多只是讓生成的實(shí)體更符合生成的 class name,但很容易產(chǎn)生誤差傳遞的問題, 并沒解決語義偏移的問題。
文中使用了一些 tricks, 來試圖解決以上問題,(體現(xiàn)在閱讀觀感上,就會(huì)覺得這個(gè)模型有點(diǎn)繁瑣)。
Class-guided Entity Expansion
具體來說,這是一個(gè)三階段的 pipeline 模型。
- 集合類名生成(class name generation).
- 集合名稱排序(class name ranking).
- 集合指導(dǎo)下的實(shí)體選擇(class-guided entity selection).
Class Name Generation
這一部分是三個(gè)階段中最簡單的一個(gè),主體架構(gòu)就是 MLM。
這個(gè)過程類似于一個(gè)已知特定的下位詞,尋找通用的上位詞這個(gè)過程。
使用 Hearst(1992)年提出的,六個(gè) pattern 構(gòu)建 query。
每次隨機(jī)抽取三個(gè)實(shí)體組成一個(gè) query。
這些 query 簡短,主要起到的構(gòu)建層次化語義,強(qiáng)化歸納類別信息的作用,例如Country such as China, Japan, South Korea.
- NPy such as NPa
- such NPy as NPa
- NPa or other NPy
- NPa and other NPy
- NPy, including NPa
- NPy, especially NPa
通過 Mask pattern 中 class name 部分,預(yù)測(cè)出最符合當(dāng)前三個(gè)實(shí)體的 class name。
但這樣操作也只能預(yù)測(cè)出 single token 的 class name, 適用性較差。
這邊就采用一個(gè)迭代+beam search 的策略。依次向前填詞。例如先預(yù)測(cè)出來country, 然后再去預(yù)測(cè)Asia country.
每輪選取 top-k 的候選集依次向前。
最大長度限制在 3,然后利用 pos tag 工具(nltk)來篩除非名詞短語。
和很多 pipeline 模型一樣,這個(gè)階段的目標(biāo)只是高 recall,通過多次 sample entity subset 來盡可能提高 recall。
Class Name Ranking
單純的做上面的 MLM 任務(wù),使用的只是 LM 學(xué)到的分布,不一定符合當(dāng)前 Corpus.
在這個(gè)階段,目標(biāo)是篩選出來最佳 class name() 和一些負(fù)樣本(
, 用于后面輔助選擇 entity).
一個(gè)簡單的想法,統(tǒng)計(jì)前面一個(gè)階段每個(gè) class name 出現(xiàn)的次數(shù),作為排序的指標(biāo),但是容易更偏向短 token。
這邊定義一個(gè)實(shí)體-類別相似度 M,其通過兩個(gè) Max 獲取到最相關(guān)的共現(xiàn)關(guān)系。
表示語料集中所有 entity 的 representation,
表示 Hearst pattern 用 MASK 遮掉實(shí)體詞的 representation.
內(nèi)層 Max 是尋找每一個(gè) entity representation 最吻合的 query pattern,外層本質(zhì)上是一個(gè)篩選 Top-k 的 contextual.
對(duì)于原始實(shí)體集合 E 中的每一個(gè)實(shí)體 都獲得一個(gè) class ranking list
.
最后的 class score 用各個(gè) ranking list 的排名倒數(shù)和,.
通過這樣操作放大不同排名 class name 之間的差距。
取 S(c)最大的作為正例, 選取各個(gè) ranking list 中排名都比
低的作為負(fù)樣本
.
Class-guided Entity Selection
先用 AutoParse 從 raw text 的 Corpus 中抽取 entity 候選集。
然后定義 class-entity 匹配程度,從兩個(gè)角度出發(fā)。
- Local score,
- Global score,
第一個(gè)式子,使用 Class Name Ranking 中定義的 M,來獲取 Corpus 中和 class name 中最吻合的 k 個(gè)位置作為其表示。
這邊稱之為 local,感覺想表達(dá)這種 score 只蘊(yùn)含相似度頭部部分,是一種局部的評(píng)價(jià)。
第二個(gè)式子,先 mean pooling Corpus 中所有該實(shí)體的 contextual representation,然后與 origin 實(shí)體集合中的實(shí)體做 cos 相似度。
注意,我們計(jì)算時(shí)用的是從 E 中隨機(jī)抽取出來的子集,以期降低 noise 的作用,有一點(diǎn) boosting 的感覺。
這種算是追求 contextual-free 的操作。
最后的 score 值,由兩者的乘積方根表示。
到這里我們實(shí)際上是可以做一個(gè) Entity Ranking List(R)輸出, 但是好像還沒用到 negative class name.
回想一下,我們前面分析的會(huì)出現(xiàn)的問題,第一個(gè)是 ambiguous 這個(gè)試圖用 class name,還有后面的一些 score 計(jì)算方式來解決;第二個(gè)語義偏移,我們好像還沒辦法解決。
這邊就用一個(gè)回溯的思想,把 entity 加到 E 中再做一次 Class Name Ranking.
講道理如果沒有發(fā)生語義偏移的話,那應(yīng)該還是第一,
應(yīng)該還是要比所有 negative sample 排名要高。
在這邊就用一個(gè)指示函數(shù)來做這件事,當(dāng)然用指示函數(shù)就相對(duì)于去截?cái)?,是一個(gè) filter 兜底的過程。
然后,重復(fù)抽取子集T 次,構(gòu)建出 T 個(gè) Entity Ranking List.
這邊用兩種模式,匯集這 T 次的結(jié)果。
- 排名的倒數(shù).
- 相對(duì) score.
實(shí)驗(yàn)解決顯示,方案 1 效果會(huì)更好點(diǎn)。
值的注意的是這種模式還提供了刪除前期 expanded entity 的可能。
重復(fù)上述 pipeline 直到 set 達(dá)到預(yù)定大小(50) 或者連續(xù)三次 set 不變.
Experiments
在 Wiki 和 APR 這兩個(gè)數(shù)據(jù)集上進(jìn)行測(cè)試。
Wiki 是 Wikipedia Corpus 的子集,APR 則是 15 年的一個(gè)新聞數(shù)據(jù)集。
因?yàn)?BERT 在 Wikipedia 上 trained 過,在 Wiki 上測(cè)試能夠反映出來這個(gè)方法能不能把 pre-trained 學(xué)到的知識(shí)展示出來。
實(shí)驗(yàn)結(jié)果相較于之前的 baselines 有顯著提升,尤其是在 MAP@50 中。
Ablation experiments 中,NoCN 是去掉 Class name 模塊直接計(jì)算 score,相對(duì)于一個(gè)只用 BERT representation 的方案。
通過對(duì)比這個(gè)強(qiáng) baseline,可以發(fā)現(xiàn)加上 class name 對(duì)于整體語義理解很有幫助。
NoFilter 在 Wiki 上差異不大,在 APR 上就比較大了,可能是 BERT 已經(jīng)能很好控制 Wikipedia 語料中語義的情況。
這張表可能要結(jié)合 case study 才能分析,對(duì) 55 個(gè) entity set 進(jìn)行分析,MAP@10 比較穩(wěn)定,到還好解釋,對(duì)于 SetExpan 應(yīng)該屬于全面優(yōu)于的佐證,對(duì)于其他 ablation 模式,更偏向于對(duì)于 Top 靠前差異不大。
但對(duì)于 MAP@20 比較穩(wěn)定就有些迷惑,大概率是微笑的偏差造成百分比的放大。
這個(gè)結(jié)果也和前面的 result 比較吻合,對(duì)于 NoFilter 提升的有限(當(dāng)然感覺主要還是 Wiki 的原因,Wiki 占了 40/55)。
當(dāng)提供 ground truth class name 時(shí)可以發(fā)現(xiàn)在 APR 上提升明顯,在 Wiki 上差異不大,反而是 CGExpan 學(xué)出來的 class name 效果更好(可能更少的噪聲)
調(diào)節(jié) M 中的 k(top-k co-occurrence), 當(dāng) k>5 的時(shí)候提升不明顯了,所以實(shí)驗(yàn)中設(shè)定 k=5.
Case study 中可以看見 negative class name 很高質(zhì)量,能夠分離特別相近的語義。
Discuss
- CGExpan 是一種從預(yù)訓(xùn)練 LMs 中提取信息的一種模式。
- 不需要 train,也使得 pipeline 的誤差傳遞會(huì)比較少。
- class name, filter 策略效果還是比較明顯的。
- 但目前 entity set 只有 55 個(gè),樣本量整體偏小,另外 wiki 被 BERT 訓(xùn)過,泛化性需要進(jìn)一步考證。
- 不過這套模式,擴(kuò)展性比較強(qiáng),可以用于主題擴(kuò)展,商品擴(kuò)展等。作者也寫了一下 future work,比如說擴(kuò)展抽象概念,構(gòu)建語義族。
- 如果有 pair-wise 的對(duì)比實(shí)驗(yàn)就更好了
水平有限, 歡迎討論.