Как я могу генерировать случайное английское «звучащее» слово в .Net? - PullRequest
4 голосов
/ 30 июля 2010

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

Примером типа слова может быть "ratanta" и т. Д.

Существуют ли алгоритмы, которые понимают совместимые слоги и, следовательно, генерируют произносимую строку вывода?Я знаю, что некоторые элементы управления стилями капчи генерируют эти типы слов, но я не уверен, используют ли они алгоритм или они также получены из большого набора.

Если есть какие-либо реализации .Net этого типао функциональности мне было бы очень интересно узнать.

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

Я бы использовал для этого алгоритм цепей Маркова .

В итоге:

  1. Создание словаря.Перебирайте буквы в примере фрагмента английского текста.Создайте структуру данных, которая отображает пары букв.Против каждой пары запишите вероятность того, что вторая буква появится сразу после первой.
  2. Создайте свой текст.Используя карту, которую вы построили (1), выберите последовательность случайных букв.Принимая решение о том, какое письмо писать следующим, посмотрите на письмо, которое вы написали совсем недавно, и используйте это письмо для определения вероятности следующего письма.
2 голосов
/ 30 июля 2010

Есть несколько вещей, которые вы можете сделать:

1) Изучите структуру английского слога и создайте слоги, следуя этим правилам

2) Использование цепей Маркова для получения статистической модели фонологии английского языка.

Существует множество ресурсов по цепям Маркова, но основная идея состоит в том, чтобы записать вероятность того, что какая-то конкретная буква будет иметь место после определенной последовательности. Например, после «q» очень вероятно «u»; после «k» «q» очень маловероятно (в нем используются цепи Маркова 1 длины); или, после "th", "e" очень вероятно (это использует цепи Маркова с 2 длинами).

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

UPDATE

3) Вы можете сделать это намного проще, не имитируя полный английский, но, скажем, японский или итальянский, где правила намного проще, и если это бессмысленное слово, его так же легко запомнить, как бессмысленное английское слово. Например, в японском есть только около 94 действительных слогов (47 коротких, 47 длинных), и вы можете легко перечислить их все и выбрать случайным образом.

...