跨度標註
一份完整的跨度標註指南,涵蓋文本區域的高亮標記、重疊跨度與巢狀跨度、標籤顏色、BIO/IOB 標註,以及如何在 Potato 中構建跨度任務。
跨度標註是指標記條目內部的某個區域,而不是給整個條目打標籤。標註者高亮一段文本(或一段音訊),併為其指定一個標籤。 它是命名實體識別、錯誤標記、抽取式問答和音訊事件檢測的基礎,這些都是跨度任務,區別只在於標籤集合不同。
一個跨度就是一段帶標籤的子序列:一個起始位置、一個結束位置和一個類別。在機器學習中,這通常被表述為序列標註,即給每個詞元(token)打上一個標籤。
一個基礎的跨度任務
定義好標籤,讓標註者去高亮即可。顏色和提示文字能讓介面操作更快、更一目瞭然:
yaml
annotation_schemes:
- annotation_type: span
name: entities
description: "Highlight each named entity and choose its type."
labels: [PERSON, ORGANIZATION, LOCATION, DATE, MISC]
sequential_key_binding: true
allow_discontinuous: false命名實體識別設計正是這個任務,可以直接執行。
重疊跨度與巢狀跨度
預設情況下,一個字元最多隻屬於一個跨度。但有些任務需要更多:
- 重疊跨度:兩個標註覆蓋了部分相同的文本,例如一個情感跨度覆蓋在一個實體跨度之上。
- 巢狀跨度:一個跨度位於另一個跨度內部,例如 "[University of [Michigan]]",其中地點巢狀在組織機構之內。
當你的標註指南有此需要時,設定 allow_overlapping: true。請儘早決定這一點,因為它會改變標註者對邊界的思考方式。
BIO/IOB 標註,你匯出的資料長什麼樣
跨度標註在用於訓練時,通常會以詞元標籤的形式匯出為 BIO 方案(也稱 IOB):B- 標記一個實體的首個詞元,I- 標記其內部的詞元,O 標記不屬於任何實體的詞元。
text
Barack B-PERSON
Obama I-PERSON
visited O
Paris B-LOCATION
Potato 可以將跨度匯出為 CoNLL 格式,它直接採用這種標註方式,spaCy 可以用 spacy convert 讀取。參見匯出標註用於機器學習。
把邊界確定準確
跨度工作中最難的部分,是就跨度從哪裡開始、到哪裡結束達成一致。幾條有用的規則:
- 決定是否包含周邊的標點、稱謂("Dr.")以及末尾的所有格,並把決定寫下來。
- 在跨度層級而不僅是文件層級上測量一致性,這樣邊界上的分歧才會顯現出來。參見標註者間一致性。
- 用提示文字把邊界規則始終擺在標註者眼前。
NER 之外的跨度任務
同一套機制還支撐著許多工:
- 錯誤跨度:標記譯文或模型輸出中的錯誤,採用 MQM 風格。參見檢測幻覺。
- 抽取式問答:在一段文章中高亮某個問題的答案。
- 音訊事件檢測:在波形上標記某個聲音出現的時刻。參見音訊標註。
- 關係與共指:把多個跨度連線起來。參見關係與事件抽取和共指消解。