Как Вы создаете английский как слово?

Как Вы создаете слова, которые не являются частью английского языка, но звучат английскими? Например: janertice, bellagom

20
задан Bart 10 May 2013 в 11:38
поделиться

13 ответов

Рассмотрим этот алгоритм , что на самом деле является просто вырожденным случаем цепи Маркова .

14
ответ дан 29 November 2019 в 23:30
поделиться

Возьмите начало одного английского слова и конец другого и объедините.

Например,

Удача + Тотальность = Удача

Возможно, вы захотите добавить еще несколько правил, например только сокращение ваших слов на границах согласных и гласных и т. д.

14
ответ дан 29 November 2019 в 23:30
поделиться

Я думаю, эта история довольно хорошо ответит на ваш вопрос.

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

3
ответ дан 29 November 2019 в 23:30
поделиться

Вот пример того, как кто-то это делает . Они говорят о цепях Маркова и диссоциированной прессе .

Вот некоторый код, который я нашел . Вы можете запустить его онлайн с помощью кодовой панели.

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()
3
ответ дан 29 November 2019 в 23:30
поделиться
2
ответ дан 29 November 2019 в 23:30
поделиться

Примечание: лингвистика - это хобби, но я никоим образом не специалист в этом.

Сначала вам нужно получить «словарь», так сказать английских фонем.

Затем вы просто соединяете их вместе.

Хотя это не самое сложное и точное решение, оно должно привести вас к общеприемлемому результату.

Гораздо проще реализовать, если вы не понимаете сложности других упомянутых решений.

2
ответ дан 29 November 2019 в 23:30
поделиться

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

2
ответ дан 29 November 2019 в 23:30
поделиться

Как уже указывалось, использование цепей Маркова - простой способ. Только будьте осторожны, чтобы не получить Автоматический генератор проклятий .

2
ответ дан 29 November 2019 в 23:30
поделиться

Используйте n-граммы на основе английских корпусов с n> 3, чтобы получить приблизительное значение.

2
ответ дан 29 November 2019 в 23:30
поделиться

Распространенной практикой является построение цепи Маркова на основе переходов букв в «обучающем наборе», состоящем из нескольких слов (нумов?) из лексикона английского языка, и затем позволить этой цепочке производить для вас «случайные» слова.

0
ответ дан 29 November 2019 в 23:30
поделиться

Цепь Маркова - это то, что нужно, как уже писали другие. Вот обзор алгоритма:

  • Пусть H - словарь, отображающий буквы в другой словарь, отображающий буквы в соответствии с частотой, с которой они встречаются.
  • Инициализируйте H, просматривая весь корпус текста (например, Библию или публичные данные Stack Overflow). Это простой подсчет частоты. Пример записи может быть H ['t'] = {'t': 23, 'h': 300, 'a': 50}. Также создайте специальный символ «начало», обозначающий начало слова, и символ «конец» для конца.
  • Сгенерируйте слово, начав с символа «начало», а затем случайным образом выбрав следующую букву на основе частота подсчитывает. Создайте каждую дополнительную букву на основе последней буквы. Например, если последняя буква - «т», тогда вы выберете «h» с вероятностью 300/373, «t» с вероятностью 23/373 и «a» с вероятностью 50/373. Остановитесь, когда вы нажмете на символ «конец».

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

0
ответ дан 29 November 2019 в 23:30
поделиться

Я не могу придумать каких-либо сложных способов сделать это.

2
ответ дан 29 November 2019 в 23:30
поделиться

Если вы решили использовать простой подход, как предлагал Энди Уэст, Вы можете получить еще лучшие результаты, взвешивая частоты гласных и согласных, чтобы они соответствовали тем, которые обычно встречаются на английском языке: Википедия: Частота букв

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

.
0
ответ дан 29 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: