Skip to content

实体链接

将片段标注链接到外部知识库,如Wikidata、UMLS或自定义API。

实体链接

实体链接使标注者能够将片段标注连接到外部知识库(KB),如 Wikidata 或 UMLS。这在文本提及和规范实体之间创建语义链接,对命名实体识别、概念规范化和知识图谱构建非常有价值。

工作原理

当为片段标注方案启用实体链接时:

  1. 标注者高亮文本并分配标签(例如 "PERSON"、"ORGANIZATION")
  2. 片段控制栏上出现链接图标
  3. 点击图标打开搜索模态框以查找匹配的知识库实体
  4. 所选实体 ID 与片段标注一起存储
  5. 已链接的片段显示填充图标,并在悬停时显示实体详情

快速入门

通过向片段方案添加 entity_linking 配置来启用实体链接:

yaml
annotation_schemes:
  - annotation_type: span
    name: ner
    description: Named Entity Recognition with KB linking
    labels:
      - name: PERSON
        tooltip: "People's names"
      - name: ORGANIZATION
        tooltip: "Companies, agencies, institutions"
      - name: LOCATION
        tooltip: "Places, cities, countries"
    entity_linking:
      enabled: true
      knowledge_bases:
        - name: wikidata
          type: wikidata
          language: en

配置选项

选项类型默认值描述
enabledbooleanfalse为此方案启用实体链接
knowledge_baseslist[]知识库配置列表
auto_searchbooleantrue打开模态框时自动搜索
requiredbooleanfalse保存片段前要求实体链接
multi_selectbooleanfalse允许链接到多个实体

知识库配置

选项类型默认值描述
namestring必填此知识库的唯一标识符
typestring必填知识库类型:wikidataumlsrest
api_keystringnull需要认证的服务的 API 密钥
base_urlstringnullREST API 的基础 URL
languagestring"en"搜索结果的语言代码
timeoutinteger10请求超时时间(秒)

支持的知识库

Wikidata

免费、开放的知识库,拥有超过 1 亿个实体。无需 API 密钥。

yaml
entity_linking:
  enabled: true
  knowledge_bases:
    - name: wikidata
      type: wikidata
      language: en

支持多语言标签、实体别名(例如 "NYC" 可找到 "New York City")以及 Wikipedia 文章链接。

UMLS

全面的医学和生物医学术语库。需要从 UTS 获取免费的 API 密钥。

yaml
entity_linking:
  enabled: true
  knowledge_bases:
    - name: umls
      type: umls
      api_key: ${UMLS_API_KEY}

包含医学概念、药物、疾病、手术,以及对 200 多个源词汇表(SNOMED CT、ICD-10、MeSH、RxNorm)的交叉引用。

自定义 REST API

连接到任何具有 REST API 的知识库:

yaml
entity_linking:
  enabled: true
  knowledge_bases:
    - name: internal_kb
      type: rest
      base_url: https://api.example.com
      api_key: optional_api_key
      extra_params:
        search_endpoint: /search
        entity_endpoint: /entity/{entity_id}
        search_query_param: q
        results_path: data.results
        entity_id_field: id
        label_field: name
        description_field: description

多知识库

配置多个知识库,让标注者选择最合适的来源:

yaml
entity_linking:
  enabled: true
  knowledge_bases:
    - name: wikidata
      type: wikidata
      language: en
    - name: umls
      type: umls
      api_key: ${UMLS_API_KEY}
    - name: company_entities
      type: rest
      base_url: https://internal.company.com/api/entities

搜索模态框中的下拉菜单允许标注者在配置的知识库之间切换。

多选模式

启用多选以允许将片段链接到多个实体,对歧义提及很有用:

yaml
entity_linking:
  enabled: true
  multi_select: true
  knowledge_bases:
    - name: wikidata
      type: wikidata
      language: en

数据格式

实体链接的片段在输出中包含额外字段:

json
{
  "id": "instance_001",
  "text": "Albert Einstein was born in Ulm, Germany in 1879.",
  "annotations": {
    "ner": {
      "spans": [
        {
          "text": "Albert Einstein",
          "start": 0,
          "end": 15,
          "label": "PERSON",
          "kb_id": "Q937",
          "kb_source": "wikidata",
          "kb_label": "Albert Einstein"
        },
        {
          "text": "Ulm",
          "start": 28,
          "end": 31,
          "label": "LOCATION",
          "kb_id": "Q3012",
          "kb_source": "wikidata",
          "kb_label": "Ulm"
        }
      ]
    }
  }
}

最佳实践

  1. 启用自动搜索以提高效率 - 用片段文本预填充搜索
  2. 除非必要,不要求求链接 - 找不到实体时不要阻止标注
  3. 为慢速网络设置适当的超时时间
  4. 将知识库与实体类型匹配 - 通用实体使用 Wikidata,生物医学术语使用 UMLS,领域特定实体使用自定义 API
  5. 为歧义提及使用多选 - 缩写、常见名称、多义词

延伸阅读

有关实现细节,请参阅源文档