Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#906

Что такое RE (Relation Extraction)? Приведите пример: как извлечь пары «(сущность_1, отношение, сущность_2)» из предложения?

Краткий тезис

RE (Relation Extraction) — это задача извлечения семантических отношений между сущностями из текста. Она превращает неструктурированный текст в структурированные триплеты вида (сущность_1, отношение, сущность_2), которые ложатся в основу графов знаний, вопросно-ответных систем и RAG-пайплайнов. Современные подходы делятся на pipeline-методы (последовательный NER + классификация отношений) и joint-модели (одновременное распознавание сущностей и отношений).

2. Pipeline: NER → кандидаты → классификатор

Классический pipeline-подход разбивает задачу на три последовательных этапа:

Этап 1: NER (Named Entity Recognition)

Модель находит все именованные сущности в тексте. Для русского языка часто используются BERT-модели (например, RuBERT, Slavic BERT) или spaCy с обученными пайплайнами.

Пример выхода NER:

[Стив_Джобс]PER основал компанию [Apple]ORG в [1976]DATE в [Калифорния]LOC

Этап 2: Генерация кандидатов

Все пары сущностей в предложении становятся кандидатами на отношение. Для предложения с N сущностями получаем N*(N-1)/2 пар.

Кандидаты для примера:

  • (Стив_Джобс, Apple)
  • (Стив_Джобс, 1976)
  • (Стив_Джобс, Калифорния)
  • (Apple, 1976)
  • (Apple, Калифорния)
  • (1976, Калифорния)

Этап 3: Классификатор отношений

Каждая пара подаётся в классификатор (обычно трансформер с head-слоем), который предсказывает тип отношения или no_relation.

Архитектура классификатора:

[CLS] сущность_1 [SEP] контекст [SEP] сущность_2 [SEP]
         ↓
      BERT-encoder
         ↓
      [CLS]-вектор
         ↓
      Linear + Softmax → {relation_type, no_relation}

Проблемы pipeline:

  • Ошибка на этапе NER распространяется на RE (каскад ошибок)
  • Вычислительная сложность: O(N²) для каждого предложения
  • Потеря контекста между сущностями при раздельной обработке

3. Joint models: CasRel, SpERT

Современные подходы решают RE как единую задачу, избегая каскадных ошибок.

CasRel (Cascade Relation Extraction)

Метод, предложенный Wei et al. (2020), использует каскадную архитектуру:

  1. Head-encoder находит все возможные субъекты (сущность_1)
  2. Для каждого субъекта tail-encoder предсказывает объекты (сущность_2) и отношения

Принцип работы:

Текст → BERT → [субъекты]
                  ↓
         Для каждого субъекта:
         BERT + субъект-вектор → [объекты и отношения]

Преимущества: O(N) сложность, высокая точность на перекрывающихся отношениях.

SpERT (Span-based Entity and Relation Transformer)

Модель от Eberts и Ulges (2020) работает с span-представлениями:

  1. Все возможные span-ы (непрерывные подпоследовательности токенов) кодируются
  2. Классификатор сущностей определяет тип span-а
  3. Классификатор отношений работает с парами span-ов

Архитектура:

Токены → BERT → span-представления
                    ↓
         Entity classifier → {PER, ORG, LOC, ...}
                    ↓
         Relation classifier → {founder, located_in, ...}

Преимущества: одновременное обучение, поддержка вложенных сущностей.


4. Оценка: точное совпадение сущностей + отношения

Метрики для RE строже, чем для NER, так как требуется точное совпадение всех трёх компонентов триплета.

Основные метрики

МетрикаФормулаОписание
PrecisionTP / (TP + FP)Доля правильных триплетов среди всех предсказанных
RecallTP / (TP + FN)Доля найденных триплетов среди всех истинных
F1-score2 * P * R / (P + R)Гармоническое среднее

Критерии совпадения

Триплет считается True Positive, если:

  1. Сущность_1 совпадает по тексту и типу (строгое совпадение границ)
  2. Отношение совпадает по классу
  3. Сущность_2 совпадает по тексту и типу

Пример оценки:

Истинный: (Илон_Маск, основатель, Tesla)
Предсказанный: (Илон_Маск, основатель, Tesla_Motors)
→ False Positive (сущность_2 не совпадает)

Дополнительные метрики

  • Strict F1: полное совпадение границ всех сущностей
  • Relaxed F1: допускается частичное перекрытие сущностей
  • Micro/Macro F1: усреднение по всем типам отношений

5. Пет-проект для закрепления

Задача: Реализовать простой RE-пайплайн для извлечения отношений из новостей на русском языке.

Инструменты:

  • Python 3.10+
  • transformers (RuBERT)
  • spaCy с моделью ru_core_news_sm
  • PyTorch для классификатора
  • Датасет: ReLOD (русский) или RuREBus

Шаги:

  1. Загрузите предобученный NER (spaCy или RuBERT)
  2. Реализуйте генератор пар сущностей для каждого предложения
  3. Обучите классификатор отношений на основе [CLS]-вектора BERT
  4. Протестируйте на 10 случайных предложениях из новостей
  5. Посчитайте Precision/Recall/F1 для каждого типа отношения

Ожидаемый результат:

  • Рабочий скрипт, который из предложения «Газпром поставил газ в Германию в 2023 году» извлекает:
    • (Газпром, поставщик, Германия)
    • (Газпром, год_поставки, 2023)
  • Отчёт с метриками на тестовой выборке (целевой F1 > 0.7)

Связь с другими вопросами

ВопросТема
903. Named Entity Recognition (NER)NER как базовый этап для RE

Навигация

  • Предыдущий: 905
  • Следующий: 907
  • Индекс: 00. Индекс разборов