Обновить

Где у новостного бота заканчивается дубль и начинается новая информация?

Хочу обсудить такую задачу: Python-бот собирает посты из 30 Telegram-каналов и делает дайджест. Повторов много, но пропустить уточнение хуже, чем оставить лишний абзац. Исходники и ссылки хранятся отдельно.

Синтетический пример:

  • А: «Сервис N выпустит версию 5.0 14 октября. Бесплатный лимит — 200 запросов».

  • Б: тот же анонс другими словами и без цифры про лимит.

  • В: «Выход версии 5.0 перенесли на 21 октября».

  • Г: автор поста А исправил 200 на 20, не создавая новую публикацию.

Б можно свернуть в ссылку на дополнительный источник. В нужно оставить как изменение события. Г требует пересмотреть уже сохранённый факт. При этом все четыре текста могут оказаться очень близкими по смыслу.

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

Для эксперимента задам ограничения: до 2000 постов в сутки, VPS с 2 vCPU и 4 ГБ RAM, не больше 20 обращений и 200 тысяч входных токенов внешней LLM в день. Можно обрабатывать пачками. В дайджесте у каждого факта должна остаться ссылка на конкретный пост и версия текста, из которой он взят.

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

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

Теги:
-1
Комментарии0

Публикации