Skip to content

命名實體識別

什麼是命名實體識別(NER)、常見的標籤集,以及如何在 Potato 中藉助帶顏色的跨度標籤和提示文本構建 NER 標註任務。

命名實體識別(NER)是從文本中找出並分類有名稱的事物的任務,包括人物、組織、地點、日期等。它是一種帶有實體類型標籤集的跨度標註任務。 NER 是搜尋、知識圖譜、脫敏和資訊抽取的基礎構件。

背景介紹參見命名實體識別

選擇標籤集

從一個標準方案出發,再裁剪到你的領域:

  • CoNLL-2003PERORGLOCMISC。一個不錯的最小預設集。
  • 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 可以把它轉換成訓練資料。參見匯出標註用於機器學習

延伸閱讀