Прогнозирование настроений в заголовках финансовых новостей с помощью нескольких строк кода

Анализ тональности – это приложение для обработки естественного языка (NLP), которое включает определение эмоционального тона или тональности текста. Используя анализ настроений, предприятия и организации могут получить ценную информацию о том, как их аудитория относится к их продуктам или услугам, а также к их конкурентам.

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

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

На предварительном этапе трансферного обучения большая языковая модель (такая как BERT или GPT) обучается распознавать шаблоны и извлекать значимые функции из большого количества текстовых данных. На этапе тонкой настройки предварительно обученная языковая модель адаптируется к конкретной задаче, такой как выполнение анализа тональности финансовых новостей, с использованием меньшего набора данных, а затем оценивается.

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

Сбор данных

Используемый набор данных был собран с Kaggle, и к нему можно получить доступ по этой ссылке.

Набор данных содержит 4846 строк без нулевых значений и два столбца: один для заголовков финансовых новостей из различных источников, а другой для настроений, связанных с каждым элементом новостей.

Гистограмма показывает, что настроения были помечены как нейтральные, положительные и отрицательные, причем нейтральное настроение было наиболее распространенным.

Моделирование

В нашем первом подходе мы будем использовать предварительно обученную модель из библиотеки Transformers и настраивать ее с помощью нашего набора данных.

Библиотека Transformers, разработанная Hugging Face, предоставляет предварительно обученные модели для задач НЛП. BERT (представления двунаправленного кодировщика от трансформеров) – это предварительно обученная модель, разработанная Google в 2018 году, которую можно настроить для выполнения широкого спектра приложений НЛП, таких как анализ настроений. Основное преимущество BERT заключается в том, что он может учитывать контекст как предыдущего, так и следующего слова в предложении, чтобы лучше понять значение каждого слова.

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

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

Наконец, мы можем создать модель BERT и настроить ее, используя наш предварительно обработанный набор данных. В этом примере мы обучали модель в течение 2 эпох, что заняло примерно 1 час 30 минут.

Несмотря на длительное время обучения, мы смогли оценить модель и обнаружили, что она работает хорошо, достигнув общей точности 86%.

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

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

Этот процесс занял всего несколько минут и достиг точности 90%. В матрице путаницы мы видим, что модель не ошибочно классифицировала негативные новости как позитивные, и только 5 позитивных новостей были ошибочно классифицированы как негативные.

Заключение

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

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