命名實體識別
什麼是命名實體識別(NER)、常見的標籤集,以及如何在 Potato 中藉助帶顏色的跨度標籤和提示文本構建 NER 標註任務。
命名實體識別(NER)是從文本中找出並分類有名稱的事物的任務,包括人物、組織、地點、日期等。它是一種帶有實體類型標籤集的跨度標註任務。 NER 是搜尋、知識圖譜、脫敏和資訊抽取的基礎構件。
背景介紹參見命名實體識別。
選擇標籤集
從一個標準方案出發,再裁剪到你的領域:
- CoNLL-2003:
PER、ORG、LOC、MISC。一個不錯的最小預設集。 - OntoNotes:18 種類型,包含日期、貨幣和百分比,適合更豐富的需求。
- 領域專用:生物醫學(基因、疾病)、法律(法條、當事方)或金融。
類型越少、定義越清晰,一致性越高。只在真正有下游需求時才增加類型。
在 Potato 中構建任務
yaml
annotation_schemes:
- annotation_type: span
name: entities
description: "Highlight each named entity and select its type."
labels: [PERSON, ORGANIZATION, LOCATION, DATE, MISC]
allow_discontinuous: false
sequential_key_binding: true命名實體識別展示案例會用示例資料執行這份配置。
避免分歧的邊界規則
NER 的多數分歧都關乎實體從哪裡開始、到哪裡結束,而非它是什麼。請先決定並寫入文件:
- 頭銜算不算?("Dr. Jane Smith" 還是 "Dr. Jane Smith"。)
- 你是否把 "the" 包含進 "the United Nations"?
- 像 "Bank of England" 這樣的巢狀實體怎麼標?如果確實需要,請設定
allow_overlapping: true。
從標籤到模型
匯出為 CoNLL 格式,它用 BIO/IOB 標籤表示實體,spaCy 的 spacy convert 可以把它轉換成訓練資料。參見匯出標註用於機器學習。