Создание более реалистичного генератора случайных слов?

Я видел много примеров использования цепей Маркова для генерации случайных слов на основе исходных данных, но они часто кажутся мне слишком механическими и абстрактными. Я пытаюсь разработать лучшее.

Я считаю, что отчасти проблема в том, что они полностью полагаются на общую статистическую встречаемость пар и игнорируют тенденцию слов начинаться и заканчиваться определенным образом. Например, если вы используете 1000 самых популярных детских имен в качестве исходных данных, буква J в целом встречается относительно редко, но это вторая наиболее распространенная буква для имен, с которой начинается . Или, если вы используете латинские исходные данные, окончания слов, такие как -um и -us, будут обычными окончаниями , но не такими частыми, если вы считаете, что все пары одинаковы.

Итак, я в основном пытаюсь собрать генератор слов на основе цепи Маркова. это учитывает то, как слова начинаются и заканчиваются в исходных данных.

Концептуально это имеет смысл для меня, но я не могу понять, как реализовать это с точки зрения программного обеспечения. Я пытаюсь собрать небольшой PHP-инструмент, который позволяет вам добавлять исходные данные (например, список из 1000 слов), из которых он затем генерирует множество случайных слов с реалистичными началом, серединами и окончаниями. (В отличие от большинства генераторов слов на основе Маркова, которые основаны только на статистической встречаемости пар в целом.)

Я бы также хотел сделать это с длиной слова, определяемой исходными данными, если это возможно; т.е. разбивка по длине случайно сгенерированных слов должна быть примерно такой же, как разбивка по длине исходных данных.

Любые идеи будут высоко оценены! Спасибо.

6
задан James Archer 16 May 2011 в 03:09
поделиться