Skip to content

SSD-new/ai_book_simplifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

📚 War-and-Peace-10GB: Как я заставил нейросеть читать Толстого (и выжить)

ML-Project Hardware Python

Этот проект — результат борьбы обычного школьника с четырьмя томами «Войны и мира» и лимитами видеопамяти моей RTX 3080.

Проблема: Читать 2000+ страниц — долго, а найти внятное краткое содержание по главам (без воды и пропусков) — задача со звездочкой. Решение: Скормить текст Льва Николаевича нейросети. Нюанс: 10 ГБ VRAM превращают обычную задачу в увлекательный квест по квантованию и промпт-инжинирингу.


🛠 Технологический стек

  • Модель: IlyaGusev/saiga_llama3_8b (лучшее решение для русского языка на данный момент).
  • Оптимизация: 4-битное квантование через bitsandbytes (NF4) — без этого модель просто не влезала в память вместе с контекстом.
  • Архитектура: Парсинг текста по главам с «умной» обрезкой по словам (лимит ~7500 символов на проход).
  • Контроль качества: Gemini 1.5 Flash (в роли строгого рецензента).

🧠 Особенности реализации

1. Борьба с «цифровым детоубийством»

Нейросеть упорно пыталась «убить» Николая Ростова при Шенграбене. Почему? Потому что Толстой пишет о ранении на 3000 токенов, а о том, что герой выжил — в паре слов. Модель просто выбирала наиболее вероятный (по её мнению) финал. Решение: Внедрение «Базы данных персонажей» прямо в системный промпт с жестким запретом на изменение их жизненного статуса.

2. Рождение Графа Бездаровского

В процессе тестов на свет появился новый герой — Пьер Бездаровский.

  • Как это вышло? Пьер в тексте называет себя «бездарным». Модель при генерации фамилии [Без...] подхватила токен [дар] и добавила типичное окончание [-овский].
  • Это наглядный пример того, как особенности токенизации и контекст могут порождать уникальные галлюцинации.

3. Максимальная энтропия

При настройке логических фильтров я столкнулся с ситуацией, когда вероятность ответов «Умер» и «Выжил» распределилась ровно 50/50. Промпт настолько сильно сместил веса модели, что она буквально замерла в неопределенности.


🚀 Как запустить

1. Требования

  • GPU с 10 ГБ VRAM (минимум).
  • Python 3.10+
  • Установленные библиотеки:
    pip install torch transformers bitsandbytes accelerate

2. Использование

  1. Положите текстовый файл с книгой (tolstoy_voyna-i-mir.txt) в корень проекта.
  2. Запустите основной скрипт:
    python main.py
  3. Результат будет записываться в war_and_peace_summarized.md в реальном времени.

Скрипт поддерживает автоматическое возобновление: если генерация прервется, он найдет последнюю обработанную главу и продолжит с неё.


📊 Результаты работы

  • Исходный текст: ~230 000 слов.
  • Выжимка: ~18 000 слов (чистые факты и сюжет).
  • Точность: ~95% по оценке внешних LLM.
  • Главные ошибки: Редкие путаницы в фамилиях (Андрей Безухов вместо Болконского) и «галлюцинаторные» фамилии.

⚠️ Disclaimer

Если ваш учитель литературы спросит, почему в вашем кратком содержании Наташа Ростова чуть не вышла замуж за Пьера Бездаровского — автор ответственности не несет. ИИ — это инструмент, а Толстого лучше всё-таки почитать в оригинале (когда-нибудь).


Сделано школьником для школьников. 2026.

About

Инструмент для генерации кратких содержаний книг

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors