Наука

Создание нейросети, способной общаться на дореформенном русском языке

Краткое резюме

Автор статьи обучил небольшую языковую модель общаться на дореформенном русском языке. Модель может быть использована для демонстрации работы OCR, объяснения распознанных текстов и создания чат-бота, который общается «голосом» XIX века.

В последнее время наша команда активно работает над проектом Manuscript OCR — это открытая библиотека, которая обучает нейросети распознавать рукописные документы XIX века. Работа с такими материалами представляет сложность из-за дореформенной орфографии, нестабильного почерка и архивных артефактов. Для тех, кто интересуется техническими деталями, на Хабре уже опубликована отдельная статья о Manuscript OCR. В процессе работы над этим проектом я всё глубже погружался в изучение дореформенного языка: тестировал модели, обрабатывал страницы, сравнивал орфографические варианты. И тогда у меня возникла мысль: если мы учим нейросеть распознавать тексты той эпохи, почему бы не создать модель, которая умеет отвечать в том же стиле? Это могло бы быть полезно не только для развлечения, но и как практический инструмент: * для демонстрации работы OCR; * для объяснения распознанных текстов; * для создания чат-бота, который общается «голосом» XIX века. При этом хотелось, чтобы решение можно было: * обучить локально; * не платить за API; * запускать на обычном GPU; * интегрировать в пайплайн проекта. Так появилась идея обучить небольшую языковую модель, которая общается на дореформенном русском языке — спокойным, размеренным тоном образованного человека середины XIX века. Это и есть герой этой статьи — условный «господин говорунъ», мини-LLM, дообученная под специфическую, но интересную задачу. **Где найти диалоги XIX века?** Когда возникает идея обучить модель разговаривать как человек XIX века, быстро становится ясно, что готовых датасетов «вопрос-ответ в дореформенном стиле» попросту нет. Исторические тексты, архивные письма, рукописи — всё это есть, но всё это монологи, а не диалоги. Да и стилизовать ответы вручную на десятки тысяч примеров — задача трудоёмкая. Поэтому я пошёл другим путём. **Базовый корпус: alpaca-cleaned-ru** В качестве основы я взял открытый датасет d0rj/alpaca-cleaned-ru (~50 000 примеров). Это обычный набор пар «instruction — response» на современном русском языке — короткие вопросы и простые ответы. Формат идеальный: понятные короткие пары, которые легко превращаются в обучающие примеры. Не хватало только одного: перевести всё это в XIX век. **Синтетика вместо архивов** Чтобы модель понимала задачу и отвечала в нужном стиле, я сделал следующее: взял крупную LLM и попросил её переформулировать вопрос так, чтобы он звучал естественно для человека середины XIX века, а также сгенерировать ответ, соблюдая дореформенную орфографию и манеру речи. То есть на вход подаётся современная пара, а на выходе получается новая — уже стилизованная. Результат — примерно 50 000 пар, которые выглядят так: Вопрос: Пошагово объясните процесс приготовления сырной кесадильи. Ответ: Что ж, кесадилья… дивно звучитъ. Не слышалъ о сем блюдѣ, но, полагаю, суть въ том, дабы сыръ въ лепешку завернуть.

Фильтры и сортировка