本文介紹自然語言處理中的經典任務之一:語義角色標註,並分享開源專案「事件三元組抽取」如何利用語義角色標注的結果,以及復現心得、改良想法。
本文大綱
要解決的問題
- 有類似觀點或句子出現在多篇文章,我們不想要花時間過濾重複資訊
- 有某事件有多項影響、情緒有正有負,我們想要更快更全面更客觀的蒐集起來
因此,我們想透過語義構句的結構化,從多篇文章中萃取&合併資訊。
有可能直接從文章取出事件嗎?
自然語言處理中有一個領域名為「事件抽取」,我們先看看其定義「事件」的組成有哪些:
事件組成表
其中事件類型,在 ACE2005 事件抽取資料集中也定義了 33 種:
由此可知,假設要訓練事件抽取模型,我們需要有以下標註的資料集:
- 事件文字邊界範圍
- 事件要素(屬性)鍵值對:事件要素的類型,會決定這份資料集訓練出的模型可以適用於哪些領域
- 事件類型或標籤結果
在這個領域中,資料集的標注成本非常高,最經典的則是 ACE 2005 事件抽取資料集。
ACE 2005 Multilingual Training Corpus
- ACE Projects 由 Linguistic Data Consortium (LDC) 語言數據協會主持,累積發表了數十種不同語言的文本、語音、辭典數據集
- LDC 協會由大學,公司和政府研究實驗室組成
- ACE 2005 提供了中文、英文、阿拉伯文的信息抽取資料集,包含實體抽取、關係抽取、事件抽取
但倘若沒有辦法成為訂閱會員 (每年 USD$2400~24000) 取得該資料,還有其他開源中文資料集可用嗎?中文的非常少,比較有名的是 Doc2EDAG 利用遠端監督標記的資料集,包含 2008-2018 年大陸上市公司公告。
- 資料集概覽:
非監督式的事件標注?
有鑒於資料集的取得困難,商業場景下的應用,是否有可能利用其他 fine-tuned NLP 模型來抽取上述事件組成表中提到的項目?
後來追蹤了「老刘说NLP」公眾號,他發布了相當多知識圖譜相關模型和商業場域應用,其中 2021 年發布的一項開源專案:「主謂賓事件三元组抽取」,跟本文章要探討的目標有點類似:將文本用結構化、圖譜的方式表示。
因此本文會先呈現這項開源專案的效果,接著說明可以小改良的地方,最後解釋這項開源專案用到的重點 NLP 任務:語義角色標註、句法依存分析。
主謂賓事件三元组抽取
首先我拿一篇新聞將他的專案重現:
經過事件三元組抽取後會得到:
其結果包含:
- 事件觸發詞
- 事件要素中的 *施事 (Agent)、*受事/客事 (Patient)
- 「施事」:即「主詞」,有意識的、主動的動作實施者
- 「受事/客事」:即「受詞」,承受動作並被改變狀態者
這樣的好處是,如果有多篇文章都提到 “華爾街投銀預估,台積電今年稅後EPS至少30元”,或用類似語意,就可以達到我們的目標:將多篇文章的重複資訊整合。
而缺點有:
- 較短的三元組語義不完整
- 三元組間有部分重複
- 長度較長的主詞和受詞標點缺失,影響原本語意
細部改良的結果
我針對原作進行一些小優化,使得三元組的輸出真的可用於建構知識圖譜、搜尋引擎、其他模型等。
針對語義不完整的三元組
- 先對進行篇章級命名實體識別,利用抓出的實體辭典過濾事件三元組:「如果主詞或受詞皆不包含任何實體,則不輸出」。目的是以重要詞彙來當作篩選依據,跟某個實體相關的事件才有關注的必要
- 修改遞迴添加詞彙的條件,篩選至少包含主詞受詞及時間、地點其中一種語義角色才輸出
針對重複的三元組
- 若某個三元組已經在其他事件中被重複提及,僅保留事件的嵌套關係,印出事件三元組文字時,跳過重複的三元組
針對標點缺失
- 修改原始代碼中的子節點加入條件(原本將詞性屬於標點的字元排除,現在將它改成全部加入)
接下來介紹原版三元組事件抽取使用到的 NLP 任務:語意角色標注、依存句法分析。
語義角色標註 Semantic Role Labeling (SRL)
定義
是一種淺層語義分析。給定一段文本,先找出文本中「謂詞」後,以謂詞為中心,研究文本中各個詞彙與謂詞間的關係,並用語義角色來描述之。
例如:
其中語義角色包含:
- 核心語義角色:施事者(主詞)、受事者(受詞)
- 附屬語義角色:地點、時間、方式、原因等
SRL 是屬於 NLP 分析技術的語義分析範疇:
SRL 的標註結果也大量被應用在資訊檢索、知識抽取、文本摘要等模型訓練中,對效果提升有幫助。
SRL 模型如何被訓練的?
從傳統 rule-based 分析方式,到目前較為流行的基於深度學習。這邊以 哈爾濱工業大學的 LTP 語言雲 為例,介紹基於深度學習的語義角色標註模型。
其中 LTP 使用自家推出的預訓練模型 ELECTRA-Chinese 作為 shared encoder 捕捉 fine-tune 下游任務時模型學習到的知識,並共享到其他下游任務。
LTP (Language Technology Platform) 語言技術平台
- 開發單位:哈爾濱工業大學社會計算與信息檢索研究中心(HIT-SCIR)
- 整合詞法分析(分詞、詞性標註、命名實體識別)、句法分析(依存句法分析)和語義分析(語義角色標註、語義依存分析)等多項自然語言處理技術
- 句法分析、語義分析等多項關鍵技術多次在CoNLL國際評測中獲得第1名
- 基於多任務學習框架進行統一學習,使得全部六項任務可以共享語義資訊,達到知識遷移的效果
- 基於預訓練模型進行統一的表示 ,有效提升了各項任務的準確率
- 基於教師退火模型蒸餾出單一的多任務模型,進一步提高系統的準確率
- 基於 PyTorch 框架開發、基於預訓練模型 ELECTRA-Chinese 在 1/10 參數量下可達到與 BERT-base 相同效果,對套件調用提高效率減少記憶體佔用
最新版本成效:
如何利用 SRL 抽取事件三元組?
- 觀察 srl 輸出
其中,tuple的第一項會將文本中的謂詞抓出,第二項則是與這個謂詞相關的詞彙及他們的角色標籤。
參考資料
- https://www.cs.princeton.edu/courses/archive/spring20/cos598C/lectures/lec6-srl.pdf
- https://zhuanlan.zhihu.com/p/35789254
- http://ir.hit.edu.cn/~car/papers/emnlp21demo-wxche.pdf
- https://zhuanlan.zhihu.com/p/148530648
- https://github.com/ymcui/Chinese-ELECTRA
- https://ltp.readthedocs.io/zh_CN/v3.4.0/theory.html
- https://ltp.ai/docs/appendix.html