Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Оценка восприятия акций на основе новостей из профильных telegram-каналов

Задача: найти упоминания компаний из определенного списка в тексте и для каждой компании предсказать тональность её упоминания.

Запуск решения

pip install -r requirements.txt
python download_model.py
python run_me.py

run_me.py читает json c текстами из папки data и складывает скоры сообщений в results/output_scores.json

Решение запускается на gpu при его наличии и на cpu в противном случае

Решение

Решение состоит из двух частей:

  1. Поиск упоминаний компаний

  2. Определение тональности упоминания компании

Часть 1: Поиск упоминаний компаний (Named entity recognition)

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

Чтобы применять строковые алгоритмы мы генерируем список синонимов и форм слова для каждого названия компании. Для этого используем pymorhy и gpt. Расширенный список синонимов хранится в final_solution/ner/new_names_and_synonyms.csv .

Далее с помощью алгоритма Ахо-Корасик находим все упоминания синонимов в тексте сообщений.

alt text

Часть 2: Определение тональности упоминания компании (Aspect based entity recognition)

Идея этой части заключается в fine-tuning'e предобученной большой языковой модели.

alt text

В качестве предобученной модели используется основная модель LLM - она используется получения эмбеддингов, а кастомный classification head выдаёт вероятности для каждого класса тональности.

Model ~Inference Time (sec) Num FC Layers Accuracy
RuBERT-base 9.2 2 68.1%
RuBERT-base 9.2 1 68.1%
RuBERT-tiny2 3.9 2 66.5%
RuBERT-tiny2 3.0 1 64.7%

Исходя из данных экспериментов было принято решение использовать rubert-tiny2 с classifcation head состял из двух линейных слоёв + softmax.

Для реализации использовалась бибилотека transofrmers . Веса модели можно найти на huggingface: ссылка

Результаты

  • F1-Score для выделения компаний на валидации: 0.71

  • Accuracy для определения тональности упоминания компании на валидации: 0.66

  • Обе части решения крайне легковесные - извлечение компаний на датасете из тысячи текстов занимает порядка 2 секунд, работа модели на инференсе занимает порядка 3 секунд.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages