Улучшение точности оценки настроения с помощью FinBERT и принятие принципов SOLID
Повышение точности оценки настроения с помощью FinBERT и применение принципов SOLID
В предыдущей лабораторной работе с названием «Создание приложения NLP для анализа настроений новостей и производительности акций с использованием Python» я кратко затронул концепцию алгоритмической торговли с использованием автоматизированного рыночного анализа настроений из новостей и его связь с производительностью цен на акции. Движения рынка, особенно в краткосрочной перспективе, часто влияют на настроения инвесторов. Одним из главных компонентов стратегий торговли настроениями является алгоритмическое вычисление оценки настроения из текста и включение этой оценки в стратегию торговли. Чем точнее оценка настроения, тем больше вероятность, что алгоритмическая торговля предсказывает потенциальные движения цен на акции.
В предыдущей лабораторной работе я использовал библиотеку vaderSentiment. На этот раз я решил изучить другой алгоритм NLP, FinBERT, и сравнить его с точностью оценки настроений Vader с целью улучшения доходности стратегии торговли.
Исходный источник данных остается неизменным. Используя API Yahoo Finance, доступный на RapidAPI Hub, я получил новостные данные для нашего упражнения по анализу настроений.
Я использовал Python Jupyter Notebook в качестве площадки разработки для этого эксперимента. В моем блокноте Jupyter я первым делом вызываю класс API, который извлекает рыночные данные с Yahoo и преобразует JSON-ответ в таблицу данных Pandas. Вы можете найти этот код в моей предыдущей лабораторной работе или в репозитории на GitHub. Затем я применяю алгоритмы машинного обучения Vader и FinBERT к столбцу “Заголовок” в таблице данных для вычисления соответствующих оценок настроений и добавления их в новый столбец с оценками настроений для каждого алгоритма NLP.
- Организуйте работу конвейеров машинного обучения с помощью AWS Step Functions
- Заметки о CLIP Связь текста и изображений
- Поднимая игры на новый уровень стартап Sports Vision AI для трансляции спортивных соревнований по всему миру
Ручное сравнение этих оценок показывает, что алгоритм машинного обучения FinBERT более точный.
Я также внес значительные изменения в код, включив следующие принципы SOLID:
- Принцип единственной ответственности: Логика обработки новостей была объединена в класс API
- Принцип открытости/закрытости: Логика, относящаяся как к Vader, так и к FinBERT, находится в подклассах SentimentAnalysisBase
Надеюсь, эту статью стоило потратить ваше время. Вы можете найти код в этом репозитории GitHub.
Счастливого кодирования!!!