Comments 6
Поздравляю, Вы открыли для себя генерацию текстов при помощи цепей Маркова!
Цепь Маркова — это последовательность событий, где каждое новое событие зависит только от предыдущего. Например, после одного слова может стоять другое слово.
Существуют алгоритмы, которые способны генерировать текст на основании цепей Маркова. Они изучают, какие связи могут быть между словами, и потом проходят по этим связям и составляют новый текст.
Для нашей работы алгоритму всегда нужен исходный текст (он же корпус) — глядя на этот текст, алгоритм поймёт, какие слова обычно идут друг за другом.
Чем больше размер исходного текста, тем больше связей между цепями и тем разнообразнее получается текст на выходе.
Получилась модель N-gram, где N - варируется динамически в процессе тренировки. Возможно, знающие люди подскажут, где тут недостаток. Я помню лишь, что существует проблема smoothing - определения вероятности цепочки, которая не встречалась во время тренировки. Правильно выбраный smoothing значительно влияет на качество модели.
Я делал что-то подобное, но мой алгоритм анализировал целые слова и читабельный текст получался гораздо быстрее. Л
Например, у нас есть текст ABCABD. Из этого текста можно выделить следующие последовательности из двух символов: AB, BC, CA, AB, BD. Здесь видно что последовательность AB встречается два раза, а за этой последовательностью в каждом случае следуют разные символы. Такая ситуация считается конфликтом который необходимо разрешить. Для этого создаются новые последовательности символов: ABC и ABD.
Это Byte pair encoding :)
Ассоциативная память без нейросетей + генерация текста