Skip to content

Цепочки кореференции

Размечайте цепочки кореференции в Potato, объединяя фрагменты текста, которые указывают на одну сущность. Поддержка вложенных упоминаний, межпредложенческих цепочек и их визуализации.

Разметка кореференции позволяет объединять фрагменты текста, указывающие на одну и ту же сущность. Это основа для разрешения сущностей, разрешения местоимений и анализа дискурса.

Обзор

Цепочка кореференции — это набор упоминаний (фрагментов текста), каждое из которых указывает на одну и ту же сущность реального мира. Например:

«Мария Кюри была физиком. Она получила Нобелевскую премию. Эта учёная навсегда изменила свою область».

Фрагменты «Мария Кюри», «Она», «Эта учёная» и «свою» указывают на одного человека и образуют одну цепочку кореференции.

Быстрый старт

Для разметки кореференции нужны два компонента схемы:

  1. Схема спанов для создания упоминаний
  2. Схема кореференции для объединения упоминаний в цепочки
yaml
annotation_schemes:
  - annotation_type: span
    name: mentions
    description: Highlight all entity mentions
    labels:
      - name: MENTION
        tooltip: "Any reference to an entity"
    sequential_key_binding: true
 
  - annotation_type: coreference
    name: coref_chains
    description: Group mentions that refer to the same entity
    span_schema: mentions
    allow_singletons: true

Параметры конфигурации

ПолеТипПо умолчаниюОписание
annotation_typeстрокаОбязательноДолжно быть "coreference"
nameстрокаОбязательноУникальный идентификатор этой схемы
descriptionстрокаОбязательноИнструкция, которую видит разметчик
span_schemaстрокаОбязательноИмя схемы спанов, поставляющей упоминания
entity_typesсписок[]Список категорий типов сущностей
allow_singletonsбулевоtrueРазрешить цепочки из одного упоминания
visual_display.highlight_modeстрока"background"Стиль отображения: "background", "bracket" или "underline"

Примеры

С типами сущностей

Классифицируйте цепочки по типу сущности:

yaml
annotation_schemes:
  - annotation_type: span
    name: ner
    description: Mark named entities
    labels:
      - name: ENTITY
        tooltip: "Any named entity mention"
 
  - annotation_type: coreference
    name: coref
    description: Create coreference chains
    span_schema: ner
    entity_types:
      - name: PERSON
        color: "#6E56CF"
      - name: ORGANIZATION
        color: "#22C55E"
      - name: LOCATION
        color: "#3B82F6"
      - name: OTHER
        color: "#F59E0B"

Без одиночных упоминаний

Для задач, где каждое упоминание обязано связаться хотя бы с одним другим:

yaml
annotation_schemes:
  - annotation_type: span
    name: mentions
    description: Highlight co-referring mentions
    labels:
      - name: MENTION
 
  - annotation_type: coreference
    name: strict_coref
    description: All mentions must be part of a chain with at least 2 mentions
    span_schema: mentions
    allow_singletons: false

Своё визуальное оформление

yaml
annotation_schemes:
  - annotation_type: coreference
    name: coref
    description: Link coreference chains
    span_schema: mentions
    visual_display:
      highlight_mode: "underline"  # Options: background, bracket, underline

Интерфейс

Создание цепочек

  1. Создайте упоминания: инструментом разметки спанов выделите все упоминания сущностей
  2. Выберите упоминания: кликните по выделенным фрагментам, которые хотите объединить
  3. Создайте цепочку: нажмите «New Chain», чтобы объединить выбранные упоминания

Работа с цепочками

  • Добавить в цепочку: выберите дополнительные упоминания и нажмите «Add to Chain»
  • Объединить цепочки: выберите несколько цепочек и нажмите «Merge Chains»
  • Убрать упоминание: выберите упоминание и нажмите «Remove Mention», чтобы исключить его из цепочки

Цветовая маркировка

Каждой цепочке автоматически назначается свой цвет. Упоминания из одной цепочки окрашены одинаково, так что принадлежность к цепочке видна сразу.

Формат вывода

Разметка кореференции сохраняется как связи между спанами:

json
{
  "span_links": [
    {
      "schema": "coref_chains",
      "link_type": "coreference",
      "span_ids": ["mentions_0_5_MENTION", "mentions_34_37_MENTION", "mentions_72_85_MENTION"],
      "entity_type": "PERSON"
    },
    {
      "schema": "coref_chains",
      "link_type": "coreference",
      "span_ids": ["mentions_15_23_MENTION", "mentions_95_97_MENTION"],
      "entity_type": "ORGANIZATION"
    }
  ]
}

Рекомендуемый порядок работы

  1. Первый проход — прочитайте текст и выделите все упоминания сущностей
  2. Второй проход — объедините упоминания в цепочки кореференции
  3. Проверка — убедитесь, что все упоминания распределены верно и ни одна цепочка не потеряна

Рекомендации

  1. Задайте чёткие границы упоминаний — сформулируйте, что вообще считается упоминанием
  2. Продумайте вложенные упоминания — решите, как поступать со случаями вроде «генеральный директор Microsoft»
  3. Определитесь с обобщёнными отсылками — решите, включать ли их
  4. Обучите разметчиков — кореференция сложна, дайте примеры и тренировочные раунды
  5. Не увлекайтесь типами сущностей — их избыток замедляет разметку, не улучшая данные

Что почитать дальше

Детали реализации — в исходной документации.