Междокументная разметка для кореференции и связывания событий
Как в ECB+ связывали события и сущности между новостными статьями, какие инструменты поддерживают междокументную кореференцию и как настроить Potato для связывания событий.
Междокументная разметка связывает упоминание, событие или утверждение в одном документе с той же сущностью, тем же событием или теми же доказательствами в других документах. По методу, которым строили корпус ECB+, разметчики прикрепляют упоминания к общей записи для каждого реального события или каждой сущности, а не сравнивают все пары документов. CROMER, CoRefi и схема multi_document_event в Potato хранят такие общие записи, а INCEpTION и brat связывают документы через идентификаторы базы знаний у каждого упоминания.
Два выражения находятся в отношении кореференции, когда оба выражения указывают на один и тот же объект. Междокументная кореференция распространяет это отношение на несколько текстов. Один из ранних тестовых наборов собрал 197 статей New York Times, в которых упоминаются 35 разных людей по имени John Smith (Bagga and Baldwin, 1998). Кореференция событий применяет ту же идею к действиям. В EventCorefBank (ECB) 482 новостных документа разбиты на 43 темы с одним ключевым событием в каждой теме, и разметчики связывали упоминания каждого события между сообщениями (Bejan and Harabagiu, 2010).
Связывание утверждений с доказательствами сопоставляет утверждение с предложениями, которые подтверждают или опровергают это утверждение, как в автоматической проверке фактов. В датасете FEVER 12,15% утверждений требовали доказательств более чем с одной страницы Википедии (Thorne et al., 2018). Многодокументное извлечение событий применяет извлечение информации ко многим сообщениям об одном событии и заполняет один шаблон события (кто, что, где и когда).
Это руководство посвящено связям между документами. Руководство Разрешение кореференции описывает цепочки упоминаний внутри одного текста, Извлечение отношений и событий описывает отношения и аргументы событий внутри одного текста, а Связывание сущностей описывает сопоставление упоминания с записью в базе знаний. Руководство Разметка спанов описывает выделение самих упоминаний, а Сравнение инструментов разметки текста сравнивает текстовые инструменты по всем задачам. Potato бесплатен и распространяется с открытым исходным кодом (GPL-3.0-or-later) и работает на вашем собственном сервере.
Откуда берутся трудности междокументной разметки
Число пар документов растёт как квадрат числа документов. В корпусе из n документов n(n − 1)/2 пар. Двадцать пять сообщений дают 300 пар, а 982 текста ECB+ дают 481 671 пару. В ECB и ECB+ документы связывали только внутри одной темы, и составители корпуса заранее собирали каждую тему вокруг одного типа события. При общей записи разметчик сверяет каждое новое сообщение с уже записанными событиями, и длина этого списка зависит от числа реальных событий в корпусе.
Разметчикам приходится держать в голове подробности из нескольких документов сразу. ECB+ добавил 502 статьи о втором случае события того же типа для каждой темы (Cybulska and Vossen, 2014). Например, первая тема объединяет сообщения о том, как Тара Рид легла в реабилитационную клинику в 2008 году, с сообщениями о том, как туда же легла Линдси Лохан в 2013 году. По правилам разметки ECB+ два упоминания действий кореферентны, только когда у действий совпадают время, место и участники. Поэтому перед тем как связать два сообщения, разметчик проверяет время, место и участников.
Согласованность по кластерам измерить труднее, чем согласованность по меткам. Два разметчика могут разбить одни и те же десять документов на кластеры, которые различаются одним документом, и оценка зависит от того, что считает метрика: связи, упоминания или целые кластеры. Эталонная программа оценки из работы Pradhan et al. (2014) вычисляет пять метрик кореференции (MUC, B3, CEAFe, CEAFm и BLANC). Метрика B3 появилась в исследовании John Smith.
Как размечали ECB+
ECB+ добавил 502 новостные статьи к 43 темам ECB, всего получилось 982 текста (репозиторий ECB+). Разметчики отмечали действия событий, время, места, а также участников-людей и прочих участников с помощью 30 тегов. Разметку выполняли два оплачиваемых студента-ассистента, оба носители английского языка. Ассистенты работали в три этапа:
- В инструменте CAT ассистенты отметили компоненты событий в 502 новых статьях и связали кореферентные упоминания внутри каждой статьи.
- Ассистенты исправили существующую разметку ECB 0.1 в исходных статьях.
- В CROMER ассистенты связали кореферентные упоминания между всеми статьями каждой темы.
В CROMER разметчик сначала создаёт именованный экземпляр, например "barack obama", а затем прикрепляет к экземпляру каждое кореферентное упоминание. Все, кто работает над задачей, пользуются общими экземплярами. Оба разметчика разметили 55 статей первых четырёх тем и получили каппу Коэна 0,74 по 30 тегам и 0,79 по пяти основным тегам компонентов. Большинство расхождений касалось границ упоминания, потому что правила требовали отмечать главное слово, а разметчики иногда отмечали всю группу. После повторного обучения два разметчика поделили оставшиеся 447 статей и разметили каждую статью один раз.
Для междокументного слоя второй разметчик использовал экземпляры первого разметчика, не видя связей первого разметчика. При общих экземплярах идентификатор экземпляра работал как метка категории, и каппа Коэна по 490 идентификаторам междокументной кореференции составила 0,76. Команда ECB+ приняла три решения, которые применимы к любому междокументному проекту. Во-первых, документы сгруппировали по темам до разметки. Во-вторых, разметчики связывали упоминания с общими именованными записями. В-третьих, команда измерила согласованность на подмножестве с двойной разметкой, прежде чем делить остальную работу.
Инструменты для междокументного связывания
Инструменты разметки обрабатывают междокументные связи двумя способами. Во-первых, некоторые инструменты хранят общий список записей, на которые может указывать упоминание из любого документа. Во-вторых, другие инструменты размечают по одному документу за раз и связывают документы через идентификаторы базы знаний. Каждая строка таблицы ниже взята из статьи или документации самого инструмента по состоянию на 2 ноября 2026 года:
| Инструмент | Для чего создан | Как связываются документы |
|---|---|---|
| CROMER | Ручная разметка кореференции событий и сущностей по кластерам документов, с несколькими разметчиками на одних и тех же кластерах | Упоминания прикрепляются к общим экземплярам, а экземпляры можно связать с DBpedia и Википедией. В CROMER был создан междокументный слой ECB+. |
| CoRefi | Краудсорсинговая разметка кореференции с вводным обучением разметчиков и этапом проверки, встраивается в любую веб-страницу (Bornstein et al., 2020) | Репозиторий описывает CoRefi как инструмент для сквозной междокументной кореференции. Конфигурация и результаты хранятся в JSON, лицензия MIT. |
| INCEpTION | Многослойная разметка текста со связыванием с базами знаний и рекомендателями, под лицензией Apache License 2.0 | Признак-концепт связывает упоминание с концептом в базе знаний проекта или в Wikidata. В кодовой книге 2023 года INCEpTION использовали, чтобы связывать сущности между новостными статьями через Wikidata. |
| brat | Разметка спанов и отношений в браузере | У каждого документа один файл .ann. Отношения Equiv группируют упоминания внутри файла, а нормализация прикрепляет к спану внешний идентификатор, например статью Википедии. |
| Label Studio | Разметка самых разных типов данных | Тег Relations связывает две размеченные области, а шаблон кореференции связывает сущности внутри одного фрагмента текста. |
| Potato | Исследования с разметкой на вашем собственном сервере | Схема multi_document_event хранит общий реестр событий, у каждого из которых есть документы-участники и процитированные спаны текста. |
Выбирайте по единице, которую связываете. Для междокументной кореференции на уровне упоминаний нужен инструмент, который связывает отдельные упоминания между документами, например CoRefi или CROMER. INCEpTION подходит проектам, которые сопоставляют упоминания с Wikidata или предметной онтологией и хотят иметь слои цепочек и рекомендатели внутри каждого документа. Potato связывает целые документы с общими событиями и записывает текст, который заполняет каждый слот события. Такое устройство подходит для кореференции на уровне событий, многодокументного извлечения событий и связывания утверждений с доказательствами.
Междокументные события в Potato
Potato представляет междокументное событие как запись в общем реестре, примерно так же, как CROMER представляет экземпляр. Каждая статья является одним элементом. Разметчик, читая статью, прикрепляет статью к существующему событию или создаёт новое событие, а затем заполняет слоты события, выделяя текст в статье. Конфигурация ниже настраивает кореференцию событий в стиле ECB+ для новостных статей, с одним слотом на каждый компонент события:
annotation_task_name: "Cross-document event coreference"
task_dir: "."
data_files:
- "data/articles.jsonl"
item_properties:
id_key: id
text_key: text
output_annotation_dir: "annotation_output/"
export_annotation_format: jsonl
user_config:
allow_all_users: true
instance_display:
fields:
- key: text
type: text
span_target: true
event_template:
enabled: true
name: news_event
allow_annotator_create: true
slots: &event_slots
- {name: action, description: "What happened", type: text}
- {name: time, description: "When the action happened", type: text}
- {name: location, description: "Where the action happened", type: text}
- {name: participants, description: "Who took part or was affected", type: text}
annotation_schemes:
- annotation_type: multi_document_event
name: events
description: "Attach this article to the real-world event the article reports, or create a new event, and cite text for each slot."
slots: *event_slots
allow_annotator_create: trueБлок event_template создаёт реестр. Potato останавливается при запуске с ошибкой валидации, если в конфигурации есть схема multi_document_event, но нет блока event_template с enabled: true. YAML-якорь &event_slots делает слоты схемы идентичными слотам шаблона. span_target: true у текстового поля позволяет разметчику цитировать доказательства, выделяя текст. Каждая строка articles.jsonl содержит id и text. Чтобы запустить сервер, выполните potato start config.yaml.
Potato записывает реестр в annotation_output/event_registry.json. Каждая запись события содержит название, значения слотов, идентификаторы документов-участников и список цитат-доказательств с именем слота, идентификатором документа, символьными смещениями и цитируемым текстом. Если процитировать доказательство из статьи, статья добавляется к событию. Файл seed_events позволяет заранее загрузить события. Например, такой файл может содержать по одному событию на каждое ключевое событие каждой темы.
Реестр общий для всех разметчиков. Второй разметчик, открыв статью, видит события, которые предыдущие разметчики прикрепили к этой статье. Когда два разметчика одновременно редактируют одно событие, Potato отклоняет второе сохранение и загружает текущую версию события заново.
Карта корпуса сокращает список документов, которые сравнивает разметчик. При включённом corpus_map Potato строит эмбеддинг каждого документа моделью sentence-transformer, кластеризует эмбеддинги, проецирует кластеры на двумерную карту по адресу /corpus/map и заранее вычисляет ближайших соседей каждого документа. После этого разметчик просматривает один кластер или соседей одного документа, а не весь корпус. Добавьте этот блок в конфигурацию выше:
corpus_map:
enabled: true
embedding_model: all-MiniLM-L6-v2
clustering: {num_clusters: auto, items_per_cluster: 6}
knn: {k: 5}Для карты корпуса отдельно установите sentence-transformers. Команда pip install potato-annotation[viz] добавляет umap-learn для двумерной раскладки. Без umap-learn Potato переходит на проекцию PCA. Щелчок по точке документа на карте назначает документ разметчику по запросу, в обход обычной очереди назначения.
Схемы coreference и span_link связывают спаны внутри одного элемента. Для цепочек упоминаний внутри одной статьи добавьте схему span и схему coreference, как описано на странице Цепочки кореференции. Демонстрационный дизайн ECB+ применяет реестр событий к примерам статей.
Согласованность и экспорт в Potato
Potato 2.13.1 вычисляет согласованность только по спанам упоминаний. Для схемы span отчёт Potato о согласованности содержит каппу Коэна на уровне токенов, F1 по спанам при точном и частичном совпадении, альфу Криппендорфа по позициям символов и упрощённую гамму. Каждую меру объясняет руководство Согласованность для спанов. Potato не оценивает цепочки кореференции, связи спанов и принадлежность к событиям в multi_document_event. Согласованность по кластерам вычисляется вне Potato по экспорту.
При export_annotation_format: jsonl Potato записывает в annotation_output/exports/jsonl/ одну запись на каждую пару разметчика и статьи, с метками, спанами и связями этой пары. Метка events перечисляет события, к которым статья относилась, когда разметчик в последний раз менял принадлежность статьи, а event_registry.json содержит сами события. Для исследования согласованности, подобного исследованию ECB+, запустите по одному серверу Potato на каждого разметчика из копий конфигурации с разными значениями output_annotation_dir. Тогда каждый сервер ведёт отдельный реестр, и вы сравниваете две кластеризации кластерной метрикой, например B3 или CEAF. Как потом разрешить расхождения, описано в руководстве Адъюдикация и расхождения.
Частые вопросы
Какие инструменты поддерживают междокументную разметку и связывание?
CROMER, CoRefi и Potato хранят общую запись для каждого события или каждой сущности, на которую могут указывать упоминания из любого документа, а INCEpTION и brat связывают документы через идентификаторы базы знаний у каждого упоминания. В CROMER был создан междокументный слой ECB+, а CoRefi является инструментом под лицензией MIT для краудсорсинговой междокументной кореференции. Схема multi_document_event в Potato связывает целые документы с общими событиями и хранит процитированный текст для каждого слота события.
Как размечали корпус ECB+?
Два оплачиваемых студента-разметчика отметили компоненты событий 30 тегами и связали кореферентные упоминания внутри каждой статьи в инструменте CAT, а затем в CROMER связали упоминания между статьями каждой темы с общими именованными экземплярами. На подмножестве из 55 статей с двойной разметкой каппа Коэна составила 0,74 по 30 тегам и 0,76 по междокументной кореференции. После повторного обучения два разметчика поделили оставшиеся 447 статей и разметили каждую статью один раз.
Что почитать дальше
- Разрешение кореференции
- Извлечение отношений и событий
- Связывание сущностей
- Разметка спанов
- Согласованность для спанов
- Сравнение инструментов разметки текста
- Potato для разметки текста
- Potato для цифровых гуманитарных наук
- Исходная документация по разметке многодокументных событий
Источники
- Bagga, A., and Baldwin, B. (1998). Entity-Based Cross-Document Coreferencing Using the Vector Space Model. ACL-COLING 1998, 79–85. https://aclanthology.org/P98-1012/
- Bejan, C., and Harabagiu, S. (2010). Unsupervised Event Coreference Resolution with Rich Linguistic Features. ACL 2010, 1412–1422. https://aclanthology.org/P10-1143/
- Bornstein, A., Cattan, A., and Dagan, I. (2020). CoRefi: A Crowd Sourcing Suite for Coreference Annotation. EMNLP 2020 System Demonstrations, 205–215. https://aclanthology.org/2020.emnlp-demos.27/
- Cybulska, A., and Vossen, P. (2014). Using a Sledgehammer to Crack a Nut? Lexical Diversity and Event Coreference Resolution. LREC 2014, 4545–4552. https://aclanthology.org/L14-1646/
- Girardi, C., Speranza, M., Sprugnoli, R., and Tonelli, S. (2014). CROMER: a Tool for Cross-Document Event and Entity Coreference. LREC 2014, 3204–3208. https://aclanthology.org/L14-1568/
- Pradhan, S., Luo, X., Recasens, M., Hovy, E., Ng, V., and Strube, M. (2014). Scoring Coreference Partitions of Predicted Mentions: A Reference Implementation. ACL 2014, 30–35. https://aclanthology.org/P14-2006/
- Thorne, J., Vlachos, A., Christodoulopoulos, C., and Mittal, A. (2018). FEVER: a Large-scale Dataset for Fact Extraction and VERification. NAACL 2018, 809–819. https://aclanthology.org/N18-1074/
- Vogel, J. (2023). Code Book for the Annotation of Diverse Cross-Document Coreference of Entities in News Articles. arXiv:2310.12064. https://arxiv.org/abs/2310.12064