Генерация текста на основе данных
Опирается на главы «Технические основы» и «Коллекции». Цепь Маркова является простейшей языковой моделью, и на ней видно, откуда у больших моделей берутся связность и склонность выдумывать.
Требуется реализовать на цепях Маркова генератор текста: программу, которая читает готовый корпус, запоминает, какое слово за каким встречалось, и выдаёт новый текст, похожий на исходный настолько, насколько позволяет память в одно-два слова.
Логика программы
- Файл с исходным текстом считывается и разбивается на слова.
- Все слова, стоящие рядом, соединяются в пары (или более длинные последовательности).
- На основе этих пар составляется словарь цепочек, содержащий первое слово и все слова, которые могут следовать за ним.
- Стартовое слово выбирается случайно, с единственным требованием: первая буква заглавная, иначе текст начнётся с середины фразы.
- Задаётся длина текста на выходе и формируется результат.
Требования к сдаче
- Программа, принимающая имя файла с исходным текстом и длину результата в словах.
- Сгенерированный текст на двух разных исходных корпусах. Заготовки в репозитории нет, тексты подбираются самостоятельно: подойдёт любая книга с «Проекта Гутенберг» или lib.ru при условии, что авторы различны, а объём составляет не менее сотни тысяч слов. На коротком тексте цепь вырождается в пересказ источника.
- Сравнение цепочек по два и по три слова: короткий ответ на вопрос, что меняется в связности текста и почему.
- Ответ на вопрос, что произойдёт, если слово встретилось в тексте всего один раз и оказалось последним.