Перейти к содержимому

Глава 252: Извлечение отношений в финансах

Введение

Извлечение отношений (Relation Extraction, RE) — это задача обработки естественного языка, которая заключается в идентификации и классификации семантических связей между именованными сущностями в тексте. В финансовом контексте это означает автоматическое обнаружение таких связей, как «Компания A приобрела Компанию B», «Генеральный директор X возглавляет Организацию Y» или «Продукт Z производится Компанией W» из неструктурированных текстовых источников — новостных статей, отчётов SEC, транскриптов звонков по результатам квартала и аналитических отчётов.

Традиционный финансовый анализ в значительной степени опирается на структурированные базы данных (например, Bloomberg, Refinitiv) для отслеживания корпоративных связей. Однако эти базы данных дороги, часто отстают от реальных событий и упускают множество неявных или зарождающихся отношений. Извлечение отношений устраняет этот разрыв, обрабатывая неструктурированный текст в масштабе, что позволяет трейдерам и аналитикам строить динамические графы знаний, охватывающие полную сеть корпоративных взаимосвязей практически в реальном времени.

В этой главе представлена полная система извлечения финансовых отношений. Мы рассмотрим ключевые типы отношений, актуальные для трейдинга, модели NLP для их извлечения и рабочую реализацию на Rust, обрабатывающую финансовый текст и подключённую к криптовалютной бирже Bybit для практического применения в торговле.

Ключевые концепции

Типы финансовых отношений

Финансовые тексты содержат несколько категорий отношений, ценных для трейдинга и инвестиций:

Отношения собственности и инвестиций:

  • OWNS: Компания A владеет акциями Компании B
  • INVESTED_IN: Фонд A инвестировал в Компанию B
  • SUBSIDIARY_OF: Компания A является дочерней компанией Компании B
  • STAKE_IN: Субъект владеет долей в компании

Отношения корпоративных действий:

  • ACQUIRED: Компания A приобрела Компанию B
  • MERGED_WITH: Компания A объединилась с Компанией B
  • PARTNERED_WITH: Компания A заключила партнёрство с Компанией B
  • SPUN_OFF: Компания A выделила подразделение как Компанию B

Кадровые отношения:

  • CEO_OF: Персона X является генеральным директором Компании Y
  • FOUNDED_BY: Компания основана Персоной
  • BOARD_MEMBER_OF: Персона входит в совет директоров Компании

Отношения продуктов и рынков:

  • PRODUCES: Компания производит Продукт
  • COMPETES_WITH: Компания A конкурирует с Компанией B
  • SUPPLIES_TO: Компания A поставляет Компании B
  • LISTED_ON: Токен/Акция котируется на Бирже

Дальний надзор (Distant Supervision)

Дальний надзор — это техника генерации обучающих данных без ручной разметки. Основная идея заключается в сопоставлении базы знаний (например, Wikidata, SEC EDGAR) с текстовым корпусом: если две сущности встречаются в одном предложении и между ними существует известное отношение в базе знаний, это предложение размечается как выражающее данное отношение.

Формально, при наличии базы знаний $\mathcal{K} = {(e_1, r, e_2)}$, содержащей тройки сущность-отношение, и корпуса $\mathcal{C}$, предположение дальнего надзора гласит:

$$\text{Если } (e_1, r, e_2) \in \mathcal{K} \text{ и } e_1, e_2 \text{ встречаются в предложении } s, \text{ то } s \text{ выражает } r$$

Это предположение содержит шум — не каждое совместное появление выражает отношение — но при достаточном количестве данных можно обучить эффективные модели. Техники обучения на множественных экземплярах (multi-instance learning) помогают, позволяя модели учиться на группах предложений, а не на отдельных примерах, снижая влияние ложноположительных результатов.

Признаки на основе путей зависимостей

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

Например, в предложении «Tesla acquired SolarCity for $2.6 billion» путь зависимостей между «Tesla» и «SolarCity» будет:

Tesla → nsubj → acquired → dobj → SolarCity

Элементы пути — лемматизированные слова, метки зависимостей и POS-теги — формируют компактное представление, которое обобщается на различные поверхностные формы одного и того же отношения. Вектор признаков для пути зависимостей обычно включает:

  • Метки рёбер: Последовательность отношений зависимости (nsubj, dobj, prep и т.д.)
  • Слова пути: Лемматизированные слова вдоль пути
  • Длина пути: Количество рёбер в пути
  • Направление: Вверх или вниз проходится каждое ребро в дереве

Извлечение отношений на основе внимания

Современные нейронные подходы используют механизмы внимания для определения наиболее релевантных частей предложения при определении отношения между двумя сущностями. Для предложения с токенами ${w_1, w_2, \ldots, w_n}$ и позициями сущностей $(p_1, p_2)$ модель на основе внимания вычисляет:

$$\alpha_i = \frac{\exp(f(\mathbf{h}i, \mathbf{h}{p_1}, \mathbf{h}{p_2}))}{\sum{j=1}^{n} \exp(f(\mathbf{h}j, \mathbf{h}{p_1}, \mathbf{h}_{p_2}))}$$

$$\mathbf{s} = \sum_{i=1}^{n} \alpha_i \mathbf{h}_i$$

где $\mathbf{h}_i$ — скрытое представление токена $i$, $f$ — функция оценки (обычно билинейное или аддитивное внимание), а $\mathbf{s}$ — взвешенное вниманием представление предложения, передаваемое классификатору.

Внимание с учётом сущностей расширяет этот подход, включая эмбеддинги типов сущностей и позиционные эмбеддинги относительно обеих сущностей, позволяя модели фокусироваться на контекстных словах, специфически релевантных для предсказываемого типа отношения.

Подходы машинного обучения

Извлечение на основе шаблонов

Простейший подход использует вручную созданные шаблоны на основе деревьев зависимостей или поверхностного текста:

  1. Шаблоны Хёрста: Шаблоны вида «X acquired Y» или «X, a subsidiary of Y», сопоставляемые с токенизированным текстом
  2. Бутстрэппинг: Начиная с начальных шаблонов, итеративно обнаруживать новые шаблоны из найденных экземпляров и новые экземпляры из обнаруженных шаблонов
  3. Регулярные выражения над деревьями разбора: Шаблоны, определённые над структурами зависимостей, а не поверхностными строками

Методы на основе шаблонов обеспечивают высокую точность, но низкую полноту. Они полезны как базовые линии и для генерации обучающих данных.

Свёрточные нейронные сети

CNN для извлечения отношений обрабатывают предложение следующим образом:

  1. Входное представление: Каждый токен представляется как конкатенация его эмбеддинга слова и позиционных эмбеддингов относительно обеих сущностей: $$\mathbf{x}i = [\mathbf{e}{w_i}; \mathbf{e}{p_i^1}; \mathbf{e}{p_i^2}]$$

  2. Свёртка: Фильтр $\mathbf{W} \in \mathbb{R}^{k \times d}$ скользит по окнам из $k$ токенов: $$c_i = \text{ReLU}(\mathbf{W} \cdot \mathbf{x}_{i:i+k-1} + b)$$

  3. Максимальный пулинг: Извлечение наиболее значимого признака из каждого фильтра: $$\hat{c} = \max(c_1, c_2, \ldots, c_{n-k+1})$$

  4. Классификация: Объединённые признаки подаются через полносвязный слой с softmax: $$P(r | s, e_1, e_2) = \text{softmax}(\mathbf{W}_o \hat{\mathbf{c}} + \mathbf{b}_o)$$

Кусочные CNN (PCNN) улучшают стандартные CNN, разделяя предложение на три сегмента вокруг двух сущностей и применяя максимальный пулинг отдельно к каждому сегменту, сохраняя больше структурной информации.

Модели на основе трансформеров

Предобученные языковые модели, такие как BERT и FinBERT, стали стандартом де-факто для извлечения финансовых отношений. Подход работает следующим образом:

  1. Форматирование входа: Вставка специальных маркеров вокруг сущностей:

    [CLS] [E1] Tesla [/E1] announced the acquisition of [E2] SolarCity [/E2] . [SEP]
  2. Кодирование: Проход через предобученный трансформер для получения контекстных представлений.

  3. Представление сущностей: Извлечение представлений на позициях маркеров сущностей: $$\mathbf{h}{e_1} = \text{Transformer}(\text{[E1]}), \quad \mathbf{h}{e_2} = \text{Transformer}(\text{[E2]})$$

  4. Классификация: Конкатенация представлений сущностей и классификация: $$P(r | s, e_1, e_2) = \text{softmax}(\mathbf{W}r [\mathbf{h}{e_1}; \mathbf{h}_{e_2}] + \mathbf{b}_r)$$

Дообучение FinBERT на задачах извлечения финансовых отношений обычно даёт F1-меру 0.75–0.85 на стандартных бенчмарках, значительно превосходя подходы на основе CNN.

Конструирование признаков

Признаки типов сущностей

Типы двух сущностей сильно ограничивают, какие отношения возможны:

Тип сущности 1Тип сущности 2Возможные отношения
КОМПАНИЯКОМПАНИЯACQUIRED, MERGED_WITH, COMPETES_WITH, PARTNERED_WITH
ПЕРСОНАКОМПАНИЯCEO_OF, FOUNDED_BY, BOARD_MEMBER_OF
КОМПАНИЯПРОДУКТPRODUCES, LAUNCHED
ФОНДКОМПАНИЯINVESTED_IN, STAKE_IN

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

Признаки контекстного окна

Слова, непосредственно окружающие каждую сущность, дают сильные сигналы:

  • Левый контекст сущности 1: Часто содержит роль или описание субъекта
  • Контекст между сущностями: Слова между двумя сущностями часто непосредственно выражают отношение
  • Правый контекст сущности 2: Может содержать дополнительные детали об отношении (например, денежные суммы, даты)

Типичный вектор признаков включает:

  • Мешок слов для каждого контекстного окна (левый, между, правый)
  • Длина контекста между сущностями (короткие расстояния коррелируют с явными отношениями)
  • Наличие специфических триггерных слов (например, «acquired», «partnered», «invested»)

Индикаторы уровня предложения

Дополнительные признаки уровня предложения улучшают качество извлечения:

  • Время глагола: Прошедшее время часто указывает на завершённые события; будущее/условное время указывает на планируемые или гипотетические отношения
  • Отрицание: Обнаружение маркеров отрицания предотвращает извлечение ложных отношений (например, «did not acquire»)
  • Модальность: Слова «may», «could», «rumored» указывают на неопределённые отношения, которые следует отметить с более низкой уверенностью
  • Атрибуция источника: Определение, является ли отношение утверждением факта или приписывается источнику (например, «according to sources»)

Применения

Построение графов знаний

Извлечение отношений является основой автоматического построения финансовых графов знаний. Обрабатывая миллионы документов, системы RE могут строить и поддерживать граф, где:

  • Узлы представляют сущности (компании, людей, продукты, биржи)
  • Рёбра представляют отношения с временными метками и оценками уверенности
  • Временные слои отслеживают, как отношения эволюционируют со временем

Такие графы знаний позволяют:

  1. Картирование цепочек поставок: Отслеживание связей поставщик-клиент для прогнозирования влияния на выручку
  2. Анализ заражения: Определение того, как финансовый стресс у одной сущности распространяется через отношения собственности и кредита
  3. Конкурентная разведка: Отслеживание партнёрств, приобретений и перемещений руководителей по отрасли

Торговые сигналы на основе событий

Вновь извлечённые отношения могут генерировать торговые сигналы:

  • Объявления о приобретениях: Обнаружение отношений «ACQUIRED» до их появления в структурированных базах данных вызывает сигналы как по акциям приобретателя, так и по акциям цели
  • Формирование партнёрств: Новые отношения «PARTNERED_WITH» между компаниями в дополняющих секторах могут сигнализировать о потенциале роста выручки
  • Смена руководства: Изменения в отношении «CEO_OF» могут предсказывать стратегические сдвиги
  • Обнаружение листинга криптовалют: Выявление отношений «LISTED_ON» для токенов, которые листингуются на крупных биржах, таких как Bybit, генерирует сигналы роста цены вокруг событий листинга

Сила сигнала зависит от:

  • Новизна: Является ли это действительно новым отношением или уже известным?
  • Достоверность источника: Извлечено ли это из надёжного источника?
  • Оценка уверенности: Насколько уверена модель извлечения?

Мониторинг рисков

Непрерывное извлечение отношений поддерживает управление рисками:

  • Обнаружение скрытых экспозиций: Выявление косвенных связей между активами портфеля через общих поставщиков, клиентов или членов совета директоров
  • Регуляторный мониторинг: Отслеживание отношений собственности для обеспечения соблюдения лимитов концентрации
  • Риск контрагента: Мониторинг состояния сущностей, связанных с торговыми контрагентами

Реализация на Rust

Наша реализация на Rust предоставляет полный инструментарий для извлечения отношений из финансового текста со следующими компонентами:

RelationType

Перечисление RelationType определяет набор финансовых отношений, которые система может извлекать, включая Acquired, PartneredWith, CompetesWith, InvestedIn, CeoOf, ListedOn и SuppliesTo. Каждый вариант соответствует конкретному семантическому отношению, часто встречающемуся в финансовом тексте.

Entity

Структура Entity представляет именованную сущность с именем, типом сущности (Company, Person, Product, Exchange) и начальным/конечным смещениями символов в исходном тексте. Типы сущностей ограничивают, какие отношения допустимы для данной пары сущностей.

Relation

Структура Relation фиксирует извлечённое отношение, состоящее из двух сущностей, типа отношения, оценки уверенности и исходного предложения. Оценка уверенности (от 0.0 до 1.0) отражает степень уверенности модели в извлечении.

PatternExtractor

PatternExtractor реализует извлечение отношений на основе правил с использованием шаблонов ключевых слов. Он поддерживает набор триггерных слов для каждого типа отношения (например, «acquired», «bought», «purchased» для отношения Acquired) и сканирует предложения на предмет совместного появления пар сущностей и триггерных слов.

RelationScorer

RelationScorer реализует простую модель логистической регрессии, которая оценивает кандидатные отношения на основе таких признаков, как расстояние между сущностями, наличие триггерных слов, совместимость типов сущностей и контекстные слова.

BybitClient

BybitClient обеспечивает асинхронный HTTP-доступ к API Bybit V5, получая данные о свечах и снимки книги ордеров. Это позволяет системе комбинировать сигналы извлечения отношений (например, объявления о новых партнёрствах или листингах) с рыночными данными в реальном времени для принятия торговых решений.

Интеграция с API Bybit

Реализация подключается к REST API Bybit V5 для получения рыночных данных:

  • Эндпоинт свечей (/v5/market/kline): Предоставляет данные свечей OHLCV с настраиваемыми интервалами. Используется для измерения ценового воздействия после торговых сигналов на основе отношений.
  • Эндпоинт книги ордеров (/v5/market/orderbook): Предоставляет снимки книги лимитных ордеров. Используется для оценки условий ликвидности перед исполнением сделок, вызванных сигналами извлечения отношений.

Торговые приложения комбинируют извлечение отношений с данными Bybit:

  1. Извлечение отношений из новостей и объявлений в реальном времени
  2. Сопоставление извлечённых сущностей с торговыми парами Bybit (например, обнаружение «Bybit listed TOKEN» сопоставляется с TOKENUSDT)
  3. Получение текущих рыночных данных для оценки условий входа
  4. Генерация торговых сигналов с размером позиции, взвешенным по уверенности

Ссылки

  1. Zeng, D., Liu, K., Lai, S., Zhou, G., & Zhao, J. (2014). Relation classification via convolutional deep neural network. COLING 2014, 2335-2344.
  2. Lin, Y., Shen, S., Liu, Z., Luan, H., & Sun, M. (2016). Neural relation extraction with selective attention over instances. ACL 2016, 2124-2133.
  3. Wu, S., & He, Y. (2019). Enriching pre-trained language model with entity information for relation classification. CIKM 2019, 2361-2364.
  4. Alt, C., Hubner, M., & Hennig, L. (2019). Fine-tuning pre-trained transformer language models to distantly supervised relation extraction. ACL 2019, 1388-1398.
  5. Mintz, M., Bills, S., Snow, R., & Jurafsky, D. (2009). Distant supervision for relation extraction without labeled data. ACL 2009, 1003-1011.
  6. Araci, D. (2019). FinBERT: Financial sentiment analysis with pre-trained language models. arXiv preprint arXiv:1908.10063.