В этой статье описывается наша заявка на совместное задание NTCIR-14 FinNum по детальному пониманию числовых значений в финансовых твитах.

Введение

Растущая популярность социальных сетей и пользовательского контента приводит к появлению огромного количества текстовой информации. Популярный сервис микроблогов Twitter является одним из наиболее плодотворных источников такого рода контента, созданного пользователями.1 Twitter играет все более важную роль, позволяя людям делиться собственным мнением по многим темам и услугам, связанным с финансами. Он предоставляет информационный канал в режиме реального времени, который включает не только основные новости, но и незначительные события, которые при правильном анализе могут предоставить ценную информацию о рынке. Это мотивировало серию исследований по внедрению различных технологий для лучшего понимания динамики финансового рынка [15], начиная от анализа настроений [12] и заканчивая оценкой кредитного риска [7] и прогнозированием движения фондового рынка [9, 14], где поведенческие финансы исследователи могут применять вычислительные методы к крупномасштабным данным Twitter, чтобы лучше анализировать, понимать и прогнозировать рынки.
Например, в прогнозировании фондового рынка цифры играют важную роль в прогнозировании движения цен активов на основе прошлых рыночных данных. . Чтобы предсказать ценовой тренд, инвесторы могут использовать технические индикаторы, рассчитанные на основе исторической цены, или анализировать ценовые графики и искать встроенные модели [1], [2].
Целью общей задачи FinNum является использование числовых мнений. сделано толпой в Твиттере, понимая значения цифр. Общее задание направлено на классификацию числительных по 7 основным категориям, а затем по 17 подкатегориям (см. Таблицу 1). Предоставляется набор данных финансовых твитов, содержащих числовые значения. Этот набор данных составлен из StockTwits, платформы микроблогов, посвященной исключительно фондовому рынку.2
В этой статье мы представляем наши материалы для этой общей задачи: мы участвуем как в Подзадаче 1, так и в Подзадаче 2 с расширенными моделями на основе CNN (E -СNN). Мы формулируем проблему как задачу маркировки последовательности и разрабатываем гибридный подход, в котором мы используем внешние лингвистические и нелингвистические функции для обогащения представления на уровне слов в нашей нейронной сети на основе CNN. Мы описываем наши модели, а также наши экспериментальные установки и сообщаем о результатах, полученных для обеих подзадач в наборах для разработки и тестирования. Наши модели занимают первое место в обеих подзадачах с микроусредненной оценкой F1, превышающей 93% для Подзадачи-1.

Определение задачи FinNum

Общая задача FinNum состоит в классификации чисел в финансовых твитах по набору предопределенных категорий и подкатегорий. Предлагаются две подзадачи классификации: (i) Подзадача-1, задача классификации по 7 параметрам, охватывающая 7 числовых категорий, и (ii) Подзадача-2, в которой классификация расширена за счет включения 17 числовых подкатегорий.3
Таблица 1 показывает Категории подзадачи-1 и связанные с ними подкатегории, а также распределение каждой категории и подкатегории в обучающем наборе данных.

Рис.1: Категории и подкатегории в подзадачах 1 и 2 вместе с их распределением в наборе данных FinNum.

Данные и предварительная обработка

Мы обучили и оценили наши системы для обеих подзадач, используя данные, предоставленные для общей задачи, набор из 5 282 твитов, где числа аннотированы их категориями и подкатегориями [1]. Этот набор разделен на 4072 твита для обучения, 457 для разработки и 753 для тестирования. Мы предварительно обработали весь набор данных, токенизировав каждый твит с помощью токенизатора слов keras [4], сохранив при этом целевые числа, как они появляются в исходном твите. Wenon-Asciiove все символы, отличные от Ascii, и замените URL-адреса специальным токеном ( URL ). В отличие от [15], мы сохраняем идентификаторы твитов, хэштеги и кэштеги в их исходном формате, поскольку они могут быть связаны с целевыми числами и содержать указания на их категории. Тем не менее, мы удаляем смайлики, потому что они могут отражать рыночные настроения инвесторов, но не могут отображать детальное мнение, определенное в таксономии, представленной в общей задаче. Наконец, все оставшиеся токены преобразуются в нижний регистр.

Маркировка последовательности для числовой классификации

Мы формулируем наши две подзадачи классификации как задачи маркировки последовательностей, где каждой лексеме в твите присваивается метка, включая целевые номера: O для обычных слов, C ∈ категории для каждого целевого номера в подзадаче-1 и c ∈ подкатегории для каждого целевое число в Подзадаче-2. Например, в твите, показанном на рис. 1, категория целевого числа xT = 10 — это временная, а ее подкатегория — время.
Для обеих подзадач мы разрабатываем и реализуем нейронную архитектуру для маркировки последовательностей. Обзор нашей модели показан на рисунке 2. Для обеих подзадач мы используем сверточную нейронную сеть (CNN) для встраивания слов, соединенных с дополнительным набором конкретных функций, чтобы определить правильную метку для каждого токена в данном твите.

Далее мы опишем каждый компонент нашей нейронной сети сверху вниз.
Вложения на уровне слов Первый компонент — это слой встраивания, который преобразует каждую входную последовательность в последовательности плотных векторов низкой размерности с помощью таблицы поиска.< br /> CNN для представления на уровне символов Предыдущие исследования показали, что использование CNN является эффективным методом извлечения морфологической информации (например, префикса или суффикса слова) из символов слов (включая слова OOV) и кодирования ее в нейронные представления. 3, 6]. Это дает богатое представление слов, не входящих в словарь (вместо того, чтобы связывать все OOV с общим токеном UNK
). В нашем наборе данных из-за неформального стиля написания твитов многие слова в наборах для разработки и тестирования не появляются в наборе для обучения и, таким образом, считаются OOV. Рисунок 3b иллюстрирует Char-CNN, который мы используем для извлечения представления заданного слова на уровне символов. Эта CNN аналогична той, что использовалась в [3], за исключением того, что мы используем только вложения на уровне символов в качестве входных данных для CNN.

Встраивания слов ELMo Чтобы еще больше обогатить наше представление слов, мы используем предварительно обученные контекстуализированные вложения ELMo4 [11] размерности 1024. Эти вложения слов отличаются от других вложений слов, таких как GloVe [10], тем, что каждый токен представлен вектором это функция всего предложения (таким образом, слово может иметь разные репрезентации в зависимости от предложения, из которого оно извлечено). Кроме того, представления ELMo основаны исключительно на символах, что позволяет сети использовать морфологические подсказки для формирования надежных представлений для токенов вне словаря, невидимых при обучении. Было показано, что вложения ELMo дают самые современные результаты в нескольких задачах НЛП [11]. Морфо-синтаксические вложения В общем, морфосинтаксическая информация, закодированная в тегах части речи (POS), может быть хороший показатель категории данного токена. Например, в нашем сценарии использование тега POS может помочь в прогнозировании правильной числовой категории и подкатегории, такой как количество, где за числом часто следует существительное. Чтобы построить этот слой, каждый твит в нашем наборе данных помечается с помощью тега части речи CMU ARK Twitter [8]. Этот инструментарий основан на модели маркировки последовательности CRF и использует набор из 25 тегов POS, охватывающих хэштеги, at-упоминания и URL-адреса в дополнение к знакам препинания, именам, глаголам и другим словам открытого и закрытого классов. Пример вывода этого тегера в твите из обучающего набора показан на рисунке 4. Как и в случае с традиционными вложениями слов, мы назначаем разные обучаемые векторы для каждого тега части речи.

Дополнительные функции, основанные на словах. Было показано, что при маркировке последовательностей обогащение представления слов элементами, созданными вручную, значительно повышает производительность моделей [13]. Вдохновленные этим, мы объединяем нашу нейронную модель с набором функций. Например, мы указываем, состоит ли слово (или его соседи) только из букв алфавита, содержит небуквенные символы, прописные или строчные буквы, цифры или знаки препинания. Кроме того, мы расширяем список ключевых слов из [1], где каждое ключевое слово связано со списком токенов, указывающих определенную категорию или подкатегорию, показанную на рисунке 5, путем добавления новых ключевых слов. Затем мы проверяем, появляется ли данное слово из твита в этом списке.

Сверточный слой После создания пяти компонентов, описанных выше, мы объединяем их выходные данные, чтобы получить расширенное представление слов, как показано на рисунке 3а. Затем мы используем три одномерных сверточных слоя, применяемых параллельно к последовательности представления слов, каждый из которых использует различный размер фильтра k и выполняет операцию свертки с активацией ReLU, чтобы захватить различные функции n-грамм из входной последовательности. Обратите внимание, что мы устанавливаем размер ядра k равным нечетному числу и дополнительно дополняем левую и правую позиции входной последовательности всеми нулями, чтобы каждый выход CNN был хорошо выровнен с исходной входной последовательностью x1,…,xn, как показано на рисунке 2. Наша интуиция, стоящая за использованием CNN вместо Bi-LSTM, заключается в том, что локального контекста может быть достаточно, чтобы дать представление о правильной метке токена. Кроме того, поскольку Bi-LSTM требуют больших вычислительных ресурсов по сравнению с CNN, их более практично использовать для решения таких задач классификации.

Объединение Когда все представления слов вычислены, мы применяем слой максимального объединения для создания векторного представления всего твита. Затем мы объединяем это представление на уровне твита с представлением каждого слова CNN. Таким образом, последние слои также учитывают полное представление твита (глобальный контекст) при прогнозировании каждой метки.
Взвешенная кросс-энтропия Распределение, приведенное в таблице 1, показывает, что количество примеров для некоторых категорий значительно больше, чем что из других (т.е. Денежный: 35,96% по сравнению с продуктом: 1,66%). Кроме того, то, как мы разработали нашу задачу маркировки последовательностей, увеличивает дисбаланс данных, так как большинство токенов в любом твите помечены специальным тегом O (в твите больше общих слов, чем цифр). Это может добавить некоторую нежелательную предвзятость к нашим прогнозам. Чтобы решить эту проблему, одним из самых простых способов является введение веса для каждого класса, чтобы уделять больше внимания менее представленным классам и найти приемлемый компромисс между различными категориями. Мы используем следующую взвешенную кросс-энтропию в качестве функции потерь:

Где M — количество классов, а y — двоичный индикатор, указывающий, верна ли присвоенная метка класса c для наблюдения k. p относится к прогнозируемой вероятности того, что наблюдение k будет помечено классом c. Определим веса по следующей формуле:

Веса сильно зависят от количества вхождений классов в обучающем наборе (классам с низким количеством вхождений присваиваются высокие веса). Наша окончательная модель, объединяющая все описанные выше компоненты, называется обогащенной сверточной нейронной сетью, далее E-CNN.

Модель Fusion

В наших экспериментах обе подзадачи 1 и 2 решаются с использованием одной и той же модели E-CNN. Однако, чтобы воспользоваться преимуществами модели, используемой для обучения и прогнозирования категорий для Подзадачи-1, и использовать ее для управления качеством прогнозирования подкатегорий в Подзадаче-2, поскольку обе подзадачи тесно связаны, мы предлагаем подход слияния. для поощрения обусловливания предсказания подкатегорий категориями, назначенными в Подзадаче-1.
Как только наша первая модель E-CNN (E-CNN-1) обучена прогнозировать числовые категории, мы сохраняем веса, полученные из всех слои (включая расширенные вложения и представление CNN). Затем мы обучаем вторую модель E-CNN, которая имеет доступ к (фиксированным) предварительно обученным весам первой модели ECNN-1.
Мы объединяем две модели, используя подход слияния, показанный на рисунке 6. Этот подход был изучен в других приложениях НЛП, включая генерацию текста [5].

Экспериментальная установка

В этом разделе мы представляем наши экспериментальные установки и описываем используемые инструменты. Мы реализуем две модели для обеих подзадач, используя Keras5 [4] с бэкендом tensorflow. Мы обучаем наши модели на обучающем наборе, предоставленном для каждой подзадачи, с мини-пакетами размером 32 и скоростью обучения по умолчанию 0,001. Мы используем размер встраивания слова 100, размер встраивания тега POS 150 и размеры ядра CNN 3, 5 и 7 и фильтры 60 CNN для word-CNN и 50 для char-CNN. Мы используем алгоритм поиска по сетке, чтобы найти набор оптимальных параметров.

Настройки обучения

Для обучения мы используем k-кратную перекрестную проверку (с k = 15). В этой процедуре k различных моделей E-CNN обучаются на k различных подмножествах обучающих данных. Каждая из k моделей используется как член ансамбля. Мы используем подход большинства голосов, чтобы предсказать правильный класс: мы сохраняем предсказание каждой модели для каждого целевого числа, класс, который получает наибольшее количество голосов от k моделей, сохраняется как последняя категория или подкатегория цели. . Мы обучаем каждую модель в общей сложности 30 эпох с терпением досрочной остановки 3. Как правило, обучение останавливается после 6-7 эпох для Подзадачи-1 и 11-12 эпох для Подзадачи-2. При использовании машины с графическим процессором (графический процессор Nvidia GeForce GTX 1050 Ti Max-Q 4 ГБ) для обучения требовалось всего около 1 минуты на каждую эпоху, что делало обучение нескольких моделей очень практичным.

Настройки вывода

На этапе вывода для Подзадачи-1 мы присваиваем данному числу лучшую категорию, предсказанную моделью (отличную от метки O):

Для Подзадачи-2 возможны две стратегии: либо выбираем наилучшую метку среди всего множества подкатегорий подкатегории (формула 1), либо используем предсказание Подзадачи-1 для выбора метки как подкатегории прогнозируемой оптимальной категории в подзадаче 1 (формула 2):

Оценка и результаты

Чтобы проанализировать вклад и важность каждого уровня в сети, мы экспериментировали со следующими конфигурациями, в которых объединяются различные компоненты:
— Базовая CNN: вариант без Elmo, без функций, без объединения. Слияние сохраняется для подзадачи-2. - Нет Elmo: вариант E-CNN без Elmo. — Без POS: вариант E-CNN без POS-тегов. — Без объединения: вариант E-CNN без объединения. — E-CNN (без слияния): полный E-CNN для Подзадачи-1 и Подзадачи-2 (без слияния) — E-CNN (Слияние 1): полный E-CNN для обеих подзадач с методом слияния и вывода 1 для Подзадача-2. — E-CNN (Fusion 2): полная E-CNN для обеих подзадач с методом слияния и логического вывода 2 для подзадачи 2.
Мы используем микро- и макроусредненные F-показатели (F1) для оценки производительности. наших двух моделей E-CNN для обеих подзадач. Результаты представлены в таблице 3.

Для Подзадачи-1 наша модель E-CNN превосходит все остальные модели как в наборах для разработки, так и в тестовых наборах, при этом F1 достигает 93,94% (микро) и 90,05% (макро) в тесте. Это дает улучшение +1% микро F1 и +3% макроса F1 по сравнению с моделью без объединения, и более чем +6% микро F1 и +11% макроса F1 по сравнению с базовой моделью CNN. Это ясно показывает взаимодополняемость между слоями, включенными в сеть, и полезность обогащения вложений внешней информацией. Кроме того, результаты показывают, что включение тегов POS и встраивания Elmo оказывают значительное влияние. Это можно объяснить важностью морфосинтаксической информации и общего контекста твита для определения правильных меток. Эти результаты поставили наши системы на первое и второе место в Подзадаче-1 конкурса FinNum. Мы отправили два запуска (Fortia1-1 и Fortia1-2), они достигли 93,94% микро и 90,05% макро, и 93,70% микро и 88,98% макро, соответственно. В обоих прогонах используется одна и та же модель (полная ECNN), а небольшая разница в ∼ 1% между двумя прогонами в макросе F1 связана только с настройкой параметров. Для Подзадачи-2 нашей лучшей моделью является E-CNN Fusion 2 со средними показателями F1 87,17% (микро) и 82,40% (макро). Что касается подзадачи 1, наши результаты показывают влияние использования расширенного представления слов и слоя объединения на улучшение представления контекста. Мы также изучили вклад модели слияния в эту подзадачу и можем ясно наблюдать значительное улучшение с использованием этого механизма (почти +7% как на микро-, так и на макроуровне F1). Кроме того, интересно отметить, что использование вывода 2 для прогнозирования подкатегорий улучшает оценки почти на +2%. В этой подзадаче наши системы (Fortia1-2: 87,17% микро и 82,40% макро) и (Fortia1-1: 86,53% микро и 80,49% макро) также занимают первое и второе места соответственно. Fortia1–2 использует модель E-CNN Fusion 2, а Fortia1–1 использует модель E-CNN Fusion 1.

Заключение
В этой статье мы описали архитектуру E-CNN для числового понимания и классификации в финансовых твитах. Наши модели занимают первое место в общей задаче FinNum как в подзадаче-1, так и в подзадаче-2. Мы моделируем проблему как задачу маркировки последовательности, где мы использовали некоторую базу знаний для обогащения представления слов, чтобы улучшить контекст каждого слова. Для Подзадачи-2 мы использовали подход слияния, заключающийся во включении информации из модели Подзадачи-1 в модель Подзадачи-2 для прогнозирования подкатегорий, что позволило добиться очень высокой производительности.

Благодарности

Мы хотели бы поблагодарить организаторов за предоставление набора данных Twitter и организацию общего задания FinNum. Мы также благодарим Youness Mansar и Guillaume Hubert за интересные обсуждения и их ценные комментарии и рекомендации.

Ссылки

Абдеррахим Айт Аззи и Худа Буамор

Обогащенная маркировка последовательностей для числовой классификации