我們先來看看任務的定義,舉一個相對比較簡單的例子:
#例如上海封控期間,某自媒體就聲稱「李立群偷下樓買肉被抓」。光是這份聲明(Claim)本身,我們其實沒辦法判斷他有沒有偷偷下樓買肉然後被抓。為了驗證這個聲明的真實性,最直觀的思路就是要尋找證據(Evidence),證據就是你能夠蒐集得到的,同時能夠幫助我們驗證一個聲明真實性的信息。例如下圖,本人直接下場手撕就可以當作證據了。
上面舉的這個聲明是比較簡單的,只需要簡單的證據,也不需要基於證據進行推理。下面我們來看一個相對複雜一點的例子。例如有聲明:2019 年,共有 12.08 萬人參加成都中考,但招生計畫只有 4.3 萬。要驗證這個聲明相對就困難一些了,假如我們找到報告2019 年成都中考的相關文件:
......今年共有12.08 萬人參加中考,這個是成都全市, 包括了20 個區,高新區和天府新區的總參考人數。月前,教育局公佈了 2019 年的普高招生計畫。招生計畫數進一步增加,上普高的機會更大了。 ……
2019 年,中心城區(13 個區)招生計畫為 43015 人。
這個文檔中包含了非常多和聲明相關的信息,但是直接相關的,能夠幫助我們驗證聲明的,就是上述的第二段話的後半部分,還有隔了很多段話之後的第一句話。根據這幾個證據,我們可以知道成都全市 20 個區的確有 12.08 萬人參加中考,而中心城區(只包含了 13 個區)的招生計劃確實也是只有 4.3 萬。雖然數字都對,但是這裡偷換了概念,在討論參加中考人數時使用了 20 個區的人數,而在討論招生計劃時卻將 20 個區的範圍縮小成為 13 個區,從而誤導讀者。驗證這種聲明很多時候我們需要從一個或多個文件當中抽取直接相關的證據,同時基於抽取的證據進行推理。為了促進中文的事實查核機器學習系統,於是我們提出了這樣一個基於證據的中文資料集。
根據事實查核的綜述[1],目前事實查核的資料集大致可以分為兩類:人工的( Artificial)和天然的(Natural)。
人工的(Artificial):就是請標註者按照維基百科上的句子進行改寫作為聲明,文檔裡面相關的段落可以作為證據驗證這個聲明。如果是同義轉換,那麼這個聲明就是被證據所支持(Supported),如果替換了句子裡面的實體,或者加了否定等一系列修改,那麼這個聲明就是被證據所反對(Refuted)。
這種標註範式最開始就是 FEVER[2],後面很多有名的資料集例如:TabFact[3]也是沿用了這個範式。這類型的人工資料集的好處就是可以規模化,請標註者標註上 10 萬的聲明,非常適合訓練神經網路。另一方面,相關的證據也容易取得。缺點就是,這些聲明並不是日常生活中我們會遇到的,廣大人民群眾喜聞樂見的聲明,比如你不會基於李立群的維基百科改寫出 “他偷偷下樓買肉被抓” 的聲明。另一方面,這類型的資料集假設維基百科包含了驗證聲明所有的知識,這是一個比較強的假設。在現實場景裡面往往不滿足這個假設。最簡單的一個問題就是維基百科會存在時間上的滯後性。
天然的(Natural):就是從事實核查的平台上面直接爬取下來的聲明,外國比較有名的機構就是PolitiFact,常常查川普講的話。這類型的資料集的好處就是,他是廣大群眾日常會碰到的,想要知道真相的聲明。也是人類事實查核者需要去進行甄別的聲明。
假如我們最終是要建立一個能夠一定程度上取代人類核查者的系統,這個系統的輸入就需要是這類型的宣告。這類資料集的缺點也很明顯,就是人類核查過的聲明數量是非常有限的。如表格所示,大部分的資料集其實都要比人工構造的小一個數量級。
另一方面就是,尋找證據是一個非常困難的問題。現有的資料集一般就是直接使用事實查核的文章[4] 作為證據,要麼就是用聲明輸入給谷歌搜尋進行查詢[5][6],然後用返回的搜尋摘要(如紅框所示)作為證據。
這些尋找證據的方法有兩個問題:
針對以上提到的問題,我們建構了CHEF,CHEF 有以下幾個特點:
資料集的建構包含4 個部分:資料收集,聲明標註,證據檢索與資料驗證。
#原始聲明主要從四個中文的事實查核網站上面爬取(根據杜克新聞平台),其中簡體中文有兩個:中國闢謠中心和騰訊較真。繁體中文是來自於台灣的兩個平台:MyGoPen 和台灣事實查核中心。由於從事實查核網站中爬取的聲明絕大部分(90% )都是不實的,其實很直觀,大部分流行的謠言 / 聲明都是不實的,才會被核查平台闢謠 / 驗證。參考前人的方法(PublicHealth[7]),我們爬取中國新聞網的標題作為真實的聲明,建構一個標籤相對平衡的資料集。
##和國外相對成熟的事實查核機構相比,中國的核查平台發布的文章相對沒有那麼規範。例如 PolitiFact 會明確告訴你聲明是什麼,核查摘要是什麼,證據和推理細節是什麼(如上圖)。但中文的文章一般不會明確指出,所以我們請標註者閱讀文章之後抽取出文章驗證的聲明。同時也對聲明進行清洗,降低其含有的偏差(bias)。
之前有工作顯示[8],事實查核資料集裡面的宣告含有較強的bias(例如不實的宣告一般帶有否定字),BERT 等PLM 可以透過直接捕捉這些bias,不需要證據就可以驗證聲明。清洗的方法包括將反問句改為陳述句,去掉一些可能帶有 bias 的詞語,例如:重磅,震驚等等。抽取聲明之後,我們也要求標註根據事實查核的文章給聲明打標籤。我們採取和 FEVER 等一系列工作類似的分類,使用 Supported,Refuted 和 Not enough information(NEI)的三分類。其中 Refuted 是最多的,NEI 的數量是最少的。
我們使用聲明作為查詢語句去查詢谷歌搜索,然後過濾掉部分文檔,一部分是聲明發表時間之後的文檔,另一部分是來自於不實消息傳播平台的文檔,最後保留Top 5 的文檔。然後要求標註者針對每個聲明,選擇最多 5 個句子作為證據。
資料集中的聲明和證據的統計數據如下所示:每個聲明返回文件的平均長度為3691 個字,其中標註者抽取出最後細粒度證據的句子包含126 個字,假如使用Google基於規則的摘要則平均包含68 個字。簡單地從數字上面進行比較,使用返回的文檔和標註的句子,要比直接使用摘要提供了更多的上下文資訊。
為了保證標註一致性,我們增加了一輪資料驗證,隨機抽取了3% 已標註的聲明,總共310 個分給5 個標註者標籤再標註。 Fleiss K score 達到了 0.74,比 FEVER 的 0.68 和 Snopes[5]的 0.70 略高一些,說明了數據標註的質量不遜色於前人構建的數據集。 CHEF 中聲明主要分為 5 個主題:社會,公衛,政治,科學和文化。和歐美的事實查核平台關注政治領域不同,中文平台更重視公共衛生議題,例如:新冠病毒,養生,醫療等。另一個主要議題是社會,例如:詐騙,升學,社會事件等。
驗證聲明主要有四個面向的挑戰:
#和先前經典的事實查核資料集(如FEVER)類似,機器學習系統需要先在給定的文件裡面選擇相關的句子作為證據(證據檢索) ,然後再根據證據對聲明進行驗證(聲明驗證)。
本文根據千人的工作,提出了兩大類的基準系統:管線(pipeline)與聯合(joint) 系統。管線(pipeline):即證據檢索和聲明驗證是兩個分開的模組,先使用證據檢索器抽取證據,再聯合聲明一起交給聲明驗證模組進行分類。
聯合(joint):證據檢索和宣告驗證模組聯合進行最佳化。使用了三種不同的模型,第一種是 FEVER 上面 SOTA 的聯合模型[10],使用了多任務學習的框架,同時學習為證據和聲明打標籤。第二種是把證據抽取當作隱變數來處理[11],給回傳的文件的每個句子打0 或1 的標籤,打了1 標籤的句子將會留下來作為證據和聲明進行分類,使用REINFORCE 進行訓練。第三種方法和第二種類似,只不過使用 HardKuma 和重參數的方法進行聯合訓練[12],而不是使用策略梯度。
實驗主要結果如下圖所示:
##細粒度證據的數量並不是越多越好,如下圖所示,當我們選擇5 個句子作為細粒度證據的時候,流水線系統裡面的證據抽取器取得了最好的效果,當抽取10 個和15 個句子作為證據的時候,效果越來越差,我們猜測是抽取的句子裡面引入了比較多的噪聲,影響了聲明驗證的模型進行判斷。
5.3 宣告長度的影響絕大部分的宣告都大於10 個詞,其中長度越長模型效果越好,我們猜想主要原因是聲明比較詳細,比較容易蒐集到的詳盡的證據幫助模型進行判斷。在聲明長度比較短的時候,集中基線模型的差距不是很大,當長度比較長的時候,拿到的證據越好,聲明驗證的效果越好,也說明了證據檢索這一環節的重要性。
來自科學領域的宣告最難被驗證,模型效果基本上都不超過55。一方面是比較難蒐集到相關的證據,一方面是關於科學議題的聲明相對比較複雜,往往需要隱性的推理才能得到結果。
#如圖所示,即使我們引入了部分Supported 的聲明,但整個資料集仍然存在類別不平衡的問題。模型在 NEI 這個類別上的效果要遠遠弱於 Supported 和 Refuted 這兩個類別。未來的工作可以研究如果針對類別不平衡的事實核查資料集,調整聲明驗證的模型,或使用資料增強的方法,在訓練過程中隨機增加NEI 的數量,例如FEVEROUS[13]在訓練過程中隨機針對一些聲明丟掉對應的證據,然後將這些聲明的類別改為NEI。
以上是清華、劍橋、UIC聯合推出首個中文事實查核資料集:基於證據、涵蓋醫療社會等多個領域的詳細內容。更多資訊請關注PHP中文網其他相關文章!