Ответ 1
Рассмотрим этот алгоритм, который на самом деле является просто вырожденным случаем Марковская цепь.
Как вы создаете слова, которые не являются частью английского языка, но звучат по-английски? Например: janertice, bellagom
Рассмотрим этот алгоритм, который на самом деле является просто вырожденным случаем Марковская цепь.
Возьмите начало одного английского слова, а конец другого - и конкатенируйте.
например.
Фортуна + тотальность = фортальность
Возможно, вы захотите добавить еще несколько правил, например, только вырезать свои слова на границах согласных-гласных и т.д.
Здесь пример того, кто делает это. Они говорят о цепи Маркова и диссоциированный пресс.
Вот некоторые код, который я нашел. Вы можете запустить его в Интернете в кодексе.
import random
vowels = ["a", "e", "i", "o", "u"]
consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q',
'r', 's', 't', 'v', 'w', 'x', 'y', 'z']
def _vowel():
return random.choice(vowels)
def _consonant():
return random.choice(consonants)
def _cv():
return _consonant() + _vowel()
def _cvc():
return _cv() + _consonant()
def _syllable():
return random.choice([_vowel, _cv, _cvc])()
def create_fake_word():
""" This function generates a fake word by creating between two and three
random syllables and then joining them together.
"""
syllables = []
for x in range(random.randint(2,3)):
syllables.append(_syllable())
return "".join(syllables)
if __name__ == "__main__":
print create_fake_word()
Использование цепей Маркова - это простой способ, как уже указывалось. Просто будьте осторожны, чтобы вы не закончили с помощью Автоматический генератор проклятий.
Я думаю, эта история ответит на ваш вопрос довольно хорошо.
Он описывает разработку алгоритма цепи Маркова довольно хорошо, включая подводные камни, которые возникают.
Вас может заинтересовать Как определить, звучит ли случайная строка как английский?
Одним из подходов, относительно легко и эффективно, является запуск генератора цепочки Markov для каждого символа вместо одного слова с использованием большого корпуса английских слов в качестве исходного материала.
Примечание: Лингвистика - это хобби, но я никоим образом не эксперт в этом.
Сначала вам нужно получить "словарь", так сказать, о английских фонемах.
Затем вы просто соедините их вместе.
Хотя это не самое сложное и точное решение, оно должно привести к обычно приемлемому результату.
Намного проще реализовать, если вы не понимаете сложности других упомянутых решений.
Используйте n-граммы, основанные на английских корпусах с n > 3, что приближает вас.
Я не могу придумать каких-либо сложных способов сделать это.
Общей практикой является создание Марковская цепочка на основе буквенных переходов в "обучающем наборе", состоящем из нескольких слов (noums? ) из английского лексикона, а затем пусть эта цепочка произведет для вас "случайные" слова.
Марковская цепь - это путь, как уже отмечали другие. Ниже представлен обзор алгоритма:
Чтобы сделать ваш алгоритм более точным, вместо того, чтобы отображать одну букву на следующие буквы, вы можете сопоставить две буквы следующей букве.
Если вы решите пойти с простым подходом, например, как предложил Энди Уэст, вы можете получить еще лучшие результаты, взвешивая частоты гласных и согласных, чтобы соответствовать тем, которые обычно встречаются на английском языке: Википедия: Частота писем
Вы даже можете взглянуть на частоты парных букв или последовательностей из трех букв, но в этот момент вы на самом деле реализуете ту же идею, что и другие марковские цепи. Важнее ли, чтобы "поддельные слова" выглядели потенциально аутентичными для людей или были статистическими свойствами слов более важными, например, в криптографических приложениях?