Создание более реалистичного генератора случайных слов? - PullRequest
6 голосов
/ 16 мая 2011

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

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

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

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

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

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

1 Ответ

3 голосов
/ 16 мая 2011

Часть о неуважении общих начал и окончаний на самом деле неверна, если вы рассматриваете «пространство между словами» как символ - общие начала будут иметь высокие частоты после «пробела между словами», а общие окончания будут иметь высокие частоты предшествующий "пробел между словами". Правильная длина слова также определяется более или менее естественным образом - среднее количество букв, которые вы выводите перед переходом к символу «пробел между словами», должно равняться среднему числу букв на слово в обучающих данных, хотя задняя часть моего ума говорит мне, что распределение может быть отключено.

...