Генерация текста с использованием цепей Маркова
./MarkovChain [-s] [-l] [-n NUM] FILE
Генератор осмысленного текста с использованием цепей Маркова на основе пользовательского текста.
FILE
- файл .txt
, с текстом на английском языке, на основе которого будет работать генератор. Рекомендуемый размер текста: не более 25.000 символов.
-s
- после генерации текста сохраняет полученный граф состояний для последующего использования.
-l
- загружает ранее сохраненный граф.
-n NUM
- указывает количество предложений для генерации. Значение по умолчанию: 1.
Цепь Маркова - автомат без предусловия: последовательность случайных событий, в которой вероятность каждого зависит только от состояния, в котором процесс находится в текущий момент и не зависит от более ранних состояний.
Алгоритм генерации текста условно можно разбить на 2 этапа:
- Создание конечного автомата (в виде графа состояний).
- Генерация текста, используя полученный автомат.
Автомат представлен в виде графа, в котором вершины (состояния) - это слова в тексте, а ребра - вероятность перехода из текущего состояния в другое.
Для создания автомата текст разбивается на токены по пробелам и далее рассматривается каждая пара слов. Если слова из пары уже присутствуют в автомате, то увеличивается вероятность перехода из состояния первого слова в паре в состояние второго. Если в автомате нет хотя бы одного слова, то сначала создаются недостающие вершины графа, а потом добавляется отношение между ними.
Генерация текста начинается со слова, которое раньше стояло в начале предложения (после точки). После генерации начального слова ищется следующее на основании комбинации вероятности и случайности. Этот цикл продолжается до тех пор, пока не встретится конец предложения.