面向共指與事件連結的跨文件標註
ECB+ 如何在新聞報道之間連結事件和實體,哪些工具支援跨文件共指標註,以及用於事件連結的 Potato 配置。
跨文件標註把一篇文件中的指稱、事件或主張,與其他文件中的同一實體、同一事件或同一證據連結起來。構建 ECB+ 語料庫時採用的方法,是讓標註者把指稱掛到每個真實世界事件或實體的一條共享記錄上,而不是逐對比較所有文件。CROMER、CoRefi 和 Potato 的 multi_document_event 方案都維護這類共享記錄,INCEpTION 和 brat 則通過每個指稱上的知識庫識別符號把文件聯絡起來。
當兩個表示式指向同一物件時,二者之間就存在共指關係。跨文件共指把這種關係延伸到不同文本之間。一個早期的測試集收集了 197 篇《紐約時報》文章,文中提到 35 個同名為 John Smith 的不同人物(Bagga and Baldwin, 1998)。事件共指把同樣的思路用於行為。EventCorefBank(ECB)把 482 篇新聞文件分為 43 個主題,每個主題圍繞一個核心事件,標註者在各篇報道之間連結每個事件的指稱(Bejan and Harabagiu, 2010)。
主張與證據的連結把一條主張與支援或反駁它的句子配對,自動事實核查就是這樣做的。在 FEVER 資料集中,12.15% 的主張需要來自不止一個 Wikipedia 頁面的證據(Thorne et al., 2018)。多文件事件抽取把資訊抽取用於同一事件的多篇報道,並填寫一個事件模板(誰、什麼、何地、何時)。
本指南討論文件之間的連結。共指消解討論單篇文本內部的指稱鏈,關係與事件抽取討論單篇文本內部的關係和事件論元,實體連結討論把指稱解析到知識庫條目。跨度標註討論如何標出指稱本身,文本標註工具對比則在各項任務上比較文本標註工具。Potato 是免費開源軟體(GPL-3.0-or-later),執行在你自己的伺服器上。
跨文件標註的難點
文件對的數量隨文件數量的平方增長。一個含 n 篇文件的語料庫有 n(n − 1)/2 個文件對。25 篇報道構成 300 個文件對,ECB+ 的 982 篇文本則構成 481,671 個。ECB 和 ECB+ 只在同一主題內部連結文件,語料庫構建者事先圍繞同一類事件組織好了每個主題。有了共享記錄,標註者只需把每篇新報道與目前已記錄的事件逐一核對,而這份列表的長度取決於語料庫中真實世界事件的數量。
標註者必須同時記住多篇文件中的細節。ECB+ 新增了 502 篇文章,報道每個主題事件類型的另一個實例(Cybulska and Vossen, 2014)。例如,第一個主題把 Tara Reid 2008 年入住戒癮中心的報道與 Lindsay Lohan 2013 年入住戒癮中心的報道放在一起。按照 ECB+ 的標註規範,兩個行為指稱只有在時間、地點和參與者都相同時才構成共指。因此,標註者在連結兩篇報道之前要核對時間、地點和參與者。
簇的一致性比標籤的一致性更難度量。兩位標註者可能把同樣十篇文件分成只差一篇文件的簇,得分高低取決於指標統計的是連結、指稱還是整個簇。Pradhan et al. (2014) 的參考評分器計算五種共指指標(MUC、B3、CEAFe、CEAFm 和 BLANC)。B3 出自 John Smith 那項研究。
ECB+ 的標註流程
ECB+ 在 ECB 的 43 個主題上新增了 502 篇新聞文章,總計 982 篇文本(ECB+ 倉庫)。標註者用 30 個標籤標出事件的行為、時間、地點,以及人類與非人類參與者。標註者是兩名有報酬的學生助理,母語都是英語。兩名助理分三輪工作:
- 在 CAT 工具中,助理們標出 502 篇新文章中的事件成分,並在每篇文章內部連結共指的指稱。
- 助理們修訂了原有文章已有的 ECB 0.1 標註。
- 在 CROMER 中,助理們在每個主題的所有文章之間連結共指的指稱。
在 CROMER 中,標註者先建立一個命名實例,例如"barack obama",再把每個與之共指的指稱掛到這個實例上。同一任務的所有標註者共享這些實例。兩名標註者都標註了前四個主題的 55 篇文章,在 30 個標籤上的 Cohen's kappa 為 0.74,在五個主要成分標籤上為 0.79。大多數分歧涉及指稱的範圍,原因是標註規範規定標中心詞,而標註者有時標出了整個短語。重新培訓後,兩名標註者分攤了其餘 447 篇文章,每篇文章只標註一次。
在跨文件這一層,第二名標註者沿用第一名標註者建立的實例,但看不到第一名標註者的連結。在共享實例的情況下,實例 ID 起到類別標籤的作用,490 個跨文件共指 ID 上的 Cohen's kappa 為 0.76。ECB+ 團隊做出的三個選擇適用於任何跨文件項目。第一,在標註之前先把文件按主題分組。第二,標註者把指稱連結到共享的命名記錄。第三,團隊先在一個雙人標註的子集上測量一致性,再分攤其餘工作。
支援跨文件連結的工具
標註工具處理跨文件連結的方式有兩種。第一種是維護一份共享記錄列表,任何文件中的指稱都可以指向其中的記錄。第二種是一次只標註一篇文件,通過知識庫識別符號把文件聯絡起來。下表每一行都依據該工具自己的論文或文件,截至 2026 年 11 月 2 日:
| 工具 | 設計用途 | 文件如何被連結 |
|---|---|---|
| CROMER | 在文件簇之間人工標註事件和實體共指,多名標註者處理同一批簇 | 指稱掛到共享實例上,實例可以連結到 DBpedia 和 Wikipedia。ECB+ 的跨文件層就是用 CROMER 標註的。 |
| CoRefi | 眾包共指標註,帶標註者入門培訓和稽核階段,可嵌入任意網頁(Bornstein et al., 2020) | 其倉庫把 CoRefi 描述為一個端到端跨文件共指標註工具。配置和結果都是 JSON,許可證為 MIT。 |
| INCEpTION | 多層文本標註,支援知識庫連結和推薦器,採用 Apache License 2.0 | 概念特徵把指稱連結到項目知識庫或 Wikidata 中的概念。一份 2023 年的編碼手冊用 INCEpTION 通過 Wikidata 在新聞文章之間連結實體。 |
| brat | 在瀏覽器中做跨度和關係標註 | 每篇文件對應一個 .ann 檔案。Equiv 關係在檔案內部把指稱歸為一組,規範化(normalization)則把一個跨度掛到外部 ID 上,例如某個 Wikipedia 條目。 |
| Label Studio | 多種資料類型的標註 | Relations 標籤連結兩個已標註區域,共指模板在一段文本內部連結實體。 |
| Potato | 在你自己的伺服器上開展標註研究 | multi_document_event 方案維護一個共享的事件登記表,每個事件帶有成員文件和被引用的文本跨度。 |
按你要連結的單位來選擇。指稱級的跨文件共指需要能在文件之間連結單個指稱的工具,例如 CoRefi 或 CROMER。INCEpTION 適合把指稱解析到 Wikidata 或領域本體、並希望在每篇文件內使用鏈層和推薦器的項目。Potato 把整篇文件連結到共享事件,並記錄填入每個事件槽位的文本。這種設計適合事件級共指、多文件事件抽取以及主張與證據的連結。
Potato 中的跨文件事件
Potato 把一個跨文件事件建模為共享登記表中的一條記錄,與 CROMER 對實例的建模方式大致相同。每篇文章是一個條目。標註者閱讀一篇文章時,把它掛到一個已有事件上或新建一個事件,再通過選中文章中的文本來填寫事件的槽位。下面的配置在新聞文章上搭建 ECB+ 風格的事件共指任務,每個事件成分對應一個槽位:
annotation_task_name: "Cross-document event coreference"
task_dir: "."
data_files:
- "data/articles.jsonl"
item_properties:
id_key: id
text_key: text
output_annotation_dir: "annotation_output/"
export_annotation_format: jsonl
user_config:
allow_all_users: true
instance_display:
fields:
- key: text
type: text
span_target: true
event_template:
enabled: true
name: news_event
allow_annotator_create: true
slots: &event_slots
- {name: action, description: "What happened", type: text}
- {name: time, description: "When the action happened", type: text}
- {name: location, description: "Where the action happened", type: text}
- {name: participants, description: "Who took part or was affected", type: text}
annotation_schemes:
- annotation_type: multi_document_event
name: events
description: "Attach this article to the real-world event the article reports, or create a new event, and cite text for each slot."
slots: *event_slots
allow_annotator_create: trueevent_template 塊負責建立登記表。如果配置中有 multi_document_event 方案,卻沒有帶 enabled: true 的 event_template 塊,Potato 會在啟動時報驗證錯誤並停止。YAML 錨點 &event_slots 讓方案的槽位與模板的槽位保持一致。文本欄位上的 span_target: true 讓標註者可以通過選中文本來引用證據。articles.jsonl 的每一行都有一個 id 和一個 text。執行 potato start config.yaml 啟動伺服器。
Potato 把登記表寫入 annotation_output/event_registry.json。每條事件記錄包含標題、各槽位的值、成員文件的 ID,以及一份證據引用列表,其中每條引用記有槽位名、文件 ID、字元偏移量和引用的原文。從一篇文章中引用證據,會把這篇文章加入該事件。seed_events 檔案可以預先載入事件。例如,種子檔案可以為每個主題中的每個核心事件各放一個事件。
登記表在標註者之間共享。第二名標註者開啟一篇文章時,會看到之前的標註者已經掛到這篇文章上的事件。當兩名標註者同時編輯同一事件時,Potato 會拒絕後一次儲存,並重新載入該事件的當前版本。
語料庫地圖縮短了標註者需要比對的文件列表。啟用 corpus_map 後,Potato 用 sentence-transformer 模型為每篇文件生成嵌入,對嵌入做聚類,把這些簇投影到 /corpus/map 上的一張二維地圖,並預先計算每篇文件的最近鄰。這樣標註者只需檢視一個簇或某篇文件的近鄰,而不必面對整個語料庫。在上面的配置中加入這個塊:
corpus_map:
enabled: true
embedding_model: all-MiniLM-L6-v2
clustering: {num_clusters: auto, items_per_cluster: 6}
knn: {k: 5}語料庫地圖需要另行安裝 sentence-transformers。pip install potato-annotation[viz] 會加裝用於二維佈局的 umap-learn。沒有 umap-learn 時,Potato 退回到 PCA 投影。在地圖上點選某篇文件對應的點,會把這篇文件按需分配給該標註者,不經過常規的分配佇列。
coreference 和 span_link 方案只在一個條目內部連結跨度。要標註單篇文章內部的指稱鏈,按共指鏈中的說明新增一個 span 方案和一個 coreference 方案。ECB+ 展示設計把事件登記表用在了示例文章上。
Potato 中的一致性與匯出
Potato 2.13.1 只對指稱跨度計算一致性。對於 span 方案,Potato 的一致性報告包含詞元級 Cohen's kappa、完全匹配和部分匹配下的跨度 F1、基於字元位置的 Krippendorff's alpha,以及一個簡化版 gamma。跨度一致性逐一解釋了這些度量。Potato 不對共指鏈、跨度連結或 multi_document_event 的成員關係評分。簇的一致性需要在 Potato 之外根據匯出結果計算。
設定 export_annotation_format: jsonl 後,Potato 為每一對標註者與文章寫一條記錄到 annotation_output/exports/jsonl/,其中包含這一對的標籤、跨度和連結。events 標籤列出的是標註者最後一次修改該文章的成員關係時文章所屬的事件,事件本身則儲存在 event_registry.json 中。要做 ECB+ 那樣的一致性研究,可以為每位標註者各執行一個 Potato 伺服器,所用配置副本的 output_annotation_dir 各不相同。這樣每個伺服器各自維護一份登記表,你再用 B3 或 CEAF 這類簇指標比較兩種聚類結果。裁定與分歧處理介紹了之後如何解決這些差異。
常見問題
哪些工具支援跨文件標註與連結?
CROMER、CoRefi 和 Potato 為每個事件或實體維護一條共享記錄,任何文件中的指稱都可以指向它;INCEpTION 和 brat 則通過每個指稱上的知識庫識別符號把文件聯絡起來。ECB+ 的跨文件層是用 CROMER 標註的,CoRefi 是一個採用 MIT 許可證、用於眾包跨文件共指標註的工具。Potato 的 multi_document_event 方案把整篇文件連結到共享事件,併為每個事件槽位儲存被引用的文本。
ECB+ 語料庫是如何標註的?
兩名有報酬的學生標註者先在 CAT 工具中用 30 個標籤標出事件成分,並在每篇文章內部連結共指的指稱,然後在 CROMER 中把每個主題各篇文章中的指稱連結到共享的命名實例上。在 55 篇文章的雙人標註子集上,30 個標籤的 Cohen's kappa 為 0.74,跨文件共指為 0.76。重新培訓後,兩名標註者分攤了其餘 447 篇文章,每篇文章只標註一次。
延伸閱讀
參考文獻
- Bagga, A., and Baldwin, B. (1998). Entity-Based Cross-Document Coreferencing Using the Vector Space Model. ACL-COLING 1998, 79–85. https://aclanthology.org/P98-1012/
- Bejan, C., and Harabagiu, S. (2010). Unsupervised Event Coreference Resolution with Rich Linguistic Features. ACL 2010, 1412–1422. https://aclanthology.org/P10-1143/
- Bornstein, A., Cattan, A., and Dagan, I. (2020). CoRefi: A Crowd Sourcing Suite for Coreference Annotation. EMNLP 2020 System Demonstrations, 205–215. https://aclanthology.org/2020.emnlp-demos.27/
- Cybulska, A., and Vossen, P. (2014). Using a Sledgehammer to Crack a Nut? Lexical Diversity and Event Coreference Resolution. LREC 2014, 4545–4552. https://aclanthology.org/L14-1646/
- Girardi, C., Speranza, M., Sprugnoli, R., and Tonelli, S. (2014). CROMER: a Tool for Cross-Document Event and Entity Coreference. LREC 2014, 3204–3208. https://aclanthology.org/L14-1568/
- Pradhan, S., Luo, X., Recasens, M., Hovy, E., Ng, V., and Strube, M. (2014). Scoring Coreference Partitions of Predicted Mentions: A Reference Implementation. ACL 2014, 30–35. https://aclanthology.org/P14-2006/
- Thorne, J., Vlachos, A., Christodoulopoulos, C., and Mittal, A. (2018). FEVER: a Large-scale Dataset for Fact Extraction and VERification. NAACL 2018, 809–819. https://aclanthology.org/N18-1074/
- Vogel, J. (2023). Code Book for the Annotation of Diverse Cross-Document Coreference of Entities in News Articles. arXiv:2310.12064. https://arxiv.org/abs/2310.12064