Skip to main content

AI-анализатор финансовых новостей

Зачем он нужен

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

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

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


Место в новостном процессе

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

Для пользователя это означает простую цепочку:

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

Первичная очистка статьи

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

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

Что может остановить обработку сразу

Статья может быть отброшена ещё до глубокого анализа, если она явно не годится для новостного события:

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

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


    Проверка финансовой значимости

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

    К глубокому разбору проходят материалы, где одновременно видно:

      статья действительно относится к финансовой тематике TokenBel; в ней есть достаточно конкретики для релевантныхотдельного статей собирает готовое событие — заголовок, краткое описание, тип, влияние, теги и упомянутые организации и инструменты;события; сохраняеттема результат и служебный аудит качества.

      В основе смыслового разбора лежит языковая модель Mistral AI. Но модель подключается не сразу: сначала работают быстрые и дешёвые проверки, чтобы не тратить ресурсы на заведомо неподходящие тексты.


      Где он находится в новостном процессе

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


      Как система принимает решение

      Решение проходит через несколько уровней — от самого дешёвого к самому дорогому:

        Дешёвые детерминированные проверки (без модели): очистить текст и быстро отсеять явный мусор. Смысловой фильтр (модель): достаточно ли статья релевантна финансам, чтобы тратить время на глубокий разбор. Глубокий анализ (модель, два прохода): сначала собрать факты и числовые значения, затем превратить их в готовое событие.

        Каждый уровень может остановить обработку. Благодаря этому полный анализ достаётся только тем статьям, которые действительно его заслуживают.


        Этапы обработки статьи

        1. Получение и проверка статьи

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

        2. Очистка текста

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

        3. Быстрый фильтр шума

        Перед обращением к модели система делает дешёвую проверку. Сразу отбрасываются:

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

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

          4. Оценка релевантности

          Модель выступает в роли редактора-фильтра и отвечает на вопрос: «Стоит ли вообще разбирать эту статью?». Решение принимается по совокупности критериев. Если статья не проходит — она спокойно пропускается, без записи об ошибке.

          5. Извлечение фактов

          Для прошедшей статью модель отдельным проходом собирает «черновик»: факты, числовые значения, упомянутые объекты, возможные типы события и теги, а также замечания о неуверенности. Эти данные не показываются пользователю напрямую — они служат контекстом для финального шага.

          6. Построение события

          Финальный проход превращает собранные факты в готовое событие: короткий заголовок, суть в 1–2 предложениях, тип события, характер влияния, оценки важности и уверенности, теги, упомянутые сущности, ключевые факты и предупреждения.

          7. Сохранение результата

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


          Что считается релевантной финансовой новостью

          Чтобы статья пошла в глубокий анализ, оценка релевантности должна одновременно:

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

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

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


            Что сохраняется в результате

            Для релевантной статьи в бэкенд записывается готовое событие новости:

              заголовок события — короткая формулировка; краткое описание — суть новости в 1–2 предложениях; тип события — одна из финансовых категорий (выплата, эмиссия, корпоративное действие и т. д.); характер влияния — позитивное, негативное, нейтральное или смешанное; оценка важности и оценка уверенности модели; теги — нормализованные и без дублей; упомянутые сущности — эмитенты, облигации, акции, токены, платформы, регуляторы с подсказкой типа и оценкой уверенности; ключевые факты и предупреждения модели; служебный аудит — как модель работала: версии промптов, ответы по этапам и флаги починки ответа. Аудит не виден пользователю, но нужен для проверки качества и отладки.

              Что происходит с нерелевантными или проблемными статьями

              Поведение зависит от причины:

                Бытовая тема или слишком короткий текст — статья сразу отбрасывается на быстром фильтре и не уходит к модели. Не прошла оценку релевантности — статьяона спокойно пропускается. Это нормальный исход, не сбой: запись об ошибкеа не создаётся.ошибка.

                Какие темы считаются подходящими

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

                  эмиссии, размещения, изменения условий выпусков и документов; Временноновости недоступенэмитентов бэкенди важные корпоративные события; купоны, дивиденды, погашения и другие выплаты; дефолтные риски, реструктуризации и ухудшение обязательств; налоги и регулирование, если они затрагивают инструменты или модельучастников (сбой сети, таймаут, перегрузка, внутренняя ошибка сервера) — система попробует обработать статью позже, автоматически.рынка; Статьяторговую пустая,инфраструктуру, битаяплощадки, правила торгов и расчётов; банковские вклады, ставки, сроки и доходность; драгоценные металлы как сберегательные или явноинвестиционные неактивы; подлежитвалютный обработкерынок (например,Беларуси, бэкендкурсы, вернулдинамику ошибкуBYN «неи найдено»рыночные или конфликт) — повторять бессмысленно, статья снимаетсяобзоры с обработки,конкретными а проблема записывается в историю обработки для разбора. Модель вернула некорректный ответ — делается одна попытка исправить ответ; если и она не помогает, проблема фиксируется и статья снимается с обработки.фактами.

                  ОсновнаяВажное логикаправило: простая:слово временным«токен» сбоямв системабелорусском даётинвестиционном второй шанс, а постоянные проблемы фиксирует, чтобы ониконтексте не застревалисчитается вкриптовалютой бесконечныхавтоматически. повторах.Если речь идёт о токенизированном инструменте, размещении, декларации или White paper, такая новость может быть релевантной для TokenBel.


                  Почему

                  Извлечение анализфактов

                  разделён

                  Для релевантной статьи система выделяет фактическую основу события. На этом этапе собираются:

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

                    Эти материалы не показываются пользователю как отдельная черновая карточка. Они помогают собрать более точное и осторожное итоговое событие.


                    Создание события

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

                    В событие входят:

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

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


                      Проверка на несколько шаговдубликаты

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

                      Проверка учитывает не только заголовок. Сравниваются смысл новости, тип события, участники, даты, факты, значения и близость по времени.

                      Если совпадение уверенное и не содержит противоречий, новая статья не создаёт дубль. Она связывается с уже существующим событием как дополнительный источник. Если совпадение слабое, спорное или конфликтное, система не объединяет новости автоматически и создаёт отдельное событие.


                      Редакторская вычитка

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

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


                      Что видит пользователь

                      Пользователь видит не весь внутренний путь статьи, а итоговую новостную запись. Она помогает быстро понять:

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

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


                        Что происходит с неподходящими и проблемными статьями

                        Не каждая статья становится событием. Возможны разные исходы:

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

                          Главная идея: временным проблемам даётся повторная попытка, а нерелевантные или неисправимые случаи аккуратно завершаются.


                          Как связаны этапы

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

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


                          Техническая схема слоёв

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

                          Слой не должен делать всё сразу. У каждого слоя есть свои «права»: что он может менять, где может остановить обработку и какие решения ему запрещено принимать.

                          Слой Основная задача Что разрешено Что запрещено Вход очереди Получить сообщение о сохранённой сырой статье и загрузить её из backend. Проверить версию сообщения, токены доступа и наличие статьи. Повторить обработку при временной ошибке. Самостоятельно искать новости или менять смысл статьи. Layer 0: Cleaner Очистить заголовок и текст от технического шума. Нормализовать символы, пробелы, кавычки, тире, убрать emoji, пустые и служебные строки, зафиксировать диагностику очистки. Решать, финансовая статья или нет; создавать событие; обращаться к AI. Layer 0.5: Prefilter Быстро остановить очевидно неподходящие материалы до расходов на AI. Остановить слишком короткий текст или заголовки про явно бытовые темы. Найти финансовые ключевые слова как подсказку. Отбрасывать статью только потому, что финансовые слова не найдены: спорные случаи должны идти в Layer 1. Layer 1: Screening Оценить релевантность TokenBel через Mistral. Вернуть решение: пропустить статью или отправить в глубокий разбор. Учитывать категории, уверенность и правило, что белорусский инвестиционный «токен» не равен криптовалюте автоматически. Формировать итоговое событие, сохранять данные или объединять дубликаты. Layer 2.1: Fact Distillation Вытащить фактическую основу статьи. Собрать главный факт, дополнительные факты, суммы, проценты, даты, ставки, идентификаторы, организации, инструменты, площадки и неясности. Писать финальный заголовок события или выбирать окончательные структурные поля. Layer 2.2: Event Builder Собрать каноническое новостное событие. Определить заголовок, описание, тип события, характер влияния, важность, уверенность, теги, сущности, ключевые факты и предупреждения. Проверять дубликаты, сохранять запись или позже позволять редакторскому слою менять структурные поля. Embedding Подготовить смысловой вектор события для поиска дублей. Построить стабильное представление события из фактов, сущностей, тегов и дат; отправить его в модель будетэмбеддингов. тратитьИспользовать сырой HTML, рекламу и служебный шум; принимать редакторские решения. Dedupe Lookup Проверить, не описывает ли статья уже известное событие. Спросить backend о похожих событиях, учитывать семантическую близость, заголовок, сущности, время и ресурсыконфликты. При уверенном совпадении присоединить статью как источник и остановиться. Автоматически объединять спорные или конфликтные новости; при неудачном присоединении тихо создать дубль. Layer 2.3: Humanizer Улучшить читаемость события перед сохранением. Полировать только текст: заголовок, описание, ключевые факты и предупреждения. Менять тип события, влияние, важность, уверенность, теги и список сущностей. Эти поля всегда остаются из Layer 2.2. Mapping + Save Преобразовать результат и сохранить. Нормализовать теги, объединить сущности из разных слоёв, приложить эмбеддинг, сведения о дублях и служебный аудит, затем сохранить анализ. Заново интерпретировать статью или менять бизнес-смысл события.

                          На практике это даёт несколько защитных правил:

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

                            Поэтомук ранниеуже проверкисуществующему максимальнособытию;

                            дешёвыесохранение происходит только в конце, когда событие прошло очистку, релевантность, факты, сборку, проверку дублей и быстрые,вычитку. а дорогие вызовы модели подключаются только там, где нужен смысловой разбор. Модель тоже используется по ролям: сначала как редактор-фильтр («стоит ли разбирать?»), затем как исследователь («какие факты здесь есть?»), и только потом как автор финального события.

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


                            Краткий глоссарий

                            • Сырая статья — исходный текстновостной новости,текст, сохранённыйкоторый извлекателемещё доне какой-либопрошёл обработки.очистку и смысловой разбор.
                            • СобытиеНовостное новостисобытиеструктурированнаяготовая запись о финансовом событии:факте: заголовок,что описание,произошло, тип,с влияние,кем тегисвязано и упомянутыепочему сущности.
                            Быстрый фильтр шума — детерминированная проверка до модели: отбрасывает слишком короткие тексты и явные бытовые темы. Оценка релевантности — решение модели о том, достаточно ли статьяэто относится к финансам TokenBel для глубокого разбора.TokenBel. Тематическая категорияРелевантностьобласть,соответствие кстатьи которойтематике относится статья (акции, облигации, токены, выплаты, регулированиеинвестиционных и т.сберегательных д.).инструментов TokenBel. Тип событияТегхарактеркороткая финальноготематическая событияметка, (выплата,которая эмиссия,помогает корпоративноесгруппировать действие,похожие дефолт-риск и т. д.).новости. Упомянутая сущностьконкретныйорганизация, объектинструмент, изплощадка, текстарегулятор, (эмитент,валюта облигация,или акция,другой токен,объект, платформа,который регулятор)важен сдля подсказкойпонимания типа и оценкой уверенности.события. Служебный аудитДубликатсохраняемаястатья, вместекоторая сописывает результатомуже записьизвестное событие и может быть присоединена к нему как дополнительный источник. Предупреждение — короткая пометка о работетом, модели:что версиичасть промптов,данных ответынеполная, понеоднозначная этапамили итребует флагиосторожного починки ответа. Нужен для проверки качества и отладки.чтения.

                            Техническая справка

                            Модель

                            Смысловой разбор ведёт языковая модель Mistral AI (mistral-small-latest). Запросы идут с temperature: 0 и жёстким форматом ответа json_object, чтобы ответы были стабильными и предсказуемыми. Если модель вернула невалидный JSON, делается одна повторная попытка с явным запросом «верни строгий JSON»; дальнейший брак уже не чинится.

                            Слои конвейера

                            Layer 0 — очистка (детерминированная, без модели). Сырой текст приводится в порядок: убирается технический мусор и пустые фрагменты, слишком длинные тексты укорачиваются до допустимого предела.

                            Layer 0.5 — быстрый фильтр (детерминированный, без модели). Жёстко отбрасывает заведомо нерелевантное:

                              слишком короткие тексты; статьи с бытовыми заголовками — погода, гороскоп, рецепт, спорт, кино, анекдот, анонсы мероприятий, авторынок.

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

                              Layer 1 — оценка релевантности (модель). Решает, стоит ли разбирать статью. Чтобы пройти дальше, должны одновременно выполниться условия:

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

                                Layer 2.1 — извлечение фактов (модель, только аудит). Собирает факты, числовые значения, упомянутые объекты и замечания о неуверенности. Не задаёт финальные поля события — служит контекстом для следующего слоя.

                                Layer 2.2 — построение события (модель). Превращает факты в готовое событие: заголовок, описание, тип, характер влияния, оценки важности и уверенности, теги, упомянутые сущности, ключевые факты и предупреждения.