Come si creano parole che non fanno parte della lingua inglese, ma suono l'inglese? Ad esempio: janertice, bellagomCome si crea una parola simile alla lingua inglese?
risposta
consideri this algorithm, che in realtà è solo un caso degenere di un Markov chain.
Potreste essere interessati a How do I determine if a random string sounds like English?
Una pratica comune è quella di creare un Markov Chain basato sulle transizioni di lettere in un "set di allenamento" composto da più parole (noum?) Da un lessico inglese, e quindi lasciare che questa catena produca parole "casuali" per te.
Un approccio relativamente semplice ed efficace consiste nell'eseguire un numero di caratteri per Markov chain generator anziché per parola, utilizzando un grande corpus di parole inglesi come materiale di origine.
Ecco uno example of somebody doing it. Parlano di Markov chains e dissociated press.
Ecco alcuni code I found. È possibile run it online al codepad.
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()
Nota: Linguistica è un hobby, ma sono in alcun modo un esperto in esso.
Per prima cosa è necessario ottenere un "dizionario" per così dire dei fonemi inglesi.
Quindi li stringa semplicemente insieme.
Pur non essendo la soluzione più complessa e accurata, dovrebbe portare a un risultato generalmente accettabile.
Molto più semplice da implementare se non si capisce la complessità delle altre soluzioni citate.
L'utilizzo delle catene Markov è un modo semplice, come già sottolineato. Basta fare attenzione che non si finisce con uno Automated Curse Generator.
Penso che this story risponda alla tua domanda abbastanza bene.
Descrive lo sviluppo di un algoritmo di catena di Markov abbastanza bene, comprese le insidie che si presentano.
Prendere l'inizio di una parola inglese e la fine di un'altra e concatenare.
E.g.
Fortune + totalità = fortality
Si potrebbe voler aggiungere più regole come solo tagliare le parole sui confini consonante-vocale e così via.
Invisito per semplicità. – esac
Sono d'accordo. Le persone riorganizzano prefissi/infissi/suffissi in ogni momento inconsciamente per creare nuove parole inglesi. È un algoritmo eccezionalmente semplice (euristico?) Nella mente, quindi non sarebbe difficile da implementare nel codice. Sono felice di contribuire a upvotedness di questo post =) –
E quindi controllare il dizionario per assicurarsi che non sia reale. – Tatarize
La catena di Markov è la strada da percorrere, come altri hanno già pubblicato. Ecco una panoramica dell'algoritmo:
- Sia H un dizionario che mappa le lettere in un altro dizionario che mappa le lettere con la frequenza con cui si verificano.
- Inizializza H mediante la scansione di un corpus di testo (ad esempio, la Bibbia o i dati pubblici Overflow dello stack). Questo è un semplice conteggio delle frequenze. Una voce di esempio potrebbe essere H ['t'] = {'t': 23, 'h': 300, 'a': 50}. Crea anche uno speciale simbolo "start" che indica l'inizio di una parola e un simbolo di "fine" per la fine.
- Generare una parola iniziando con il simbolo "start" e quindi selezionando a caso una lettera successiva in base ai conteggi di frequenza. Genera ogni lettera aggiuntiva in base all'ultima lettera. Ad esempio, se l'ultima lettera è "t", allora scegli "h" con probabilità 300/373, "t" con probabilità 23/373 e "a" con probabilità 50/373. Fermati quando colpisci il simbolo "fine".
Per rendere l'algoritmo più accurato, anziché mappare una lettera alle lettere successive, è possibile mappare due lettere alla lettera successiva.
Utilizzare n-gram basati sui corpora inglesi con n> 3, per ottenere un'approssimazione.
Non riesco a pensare a modi cromatici per farlo.
;-) Questo tipo di umorismo è molto gradito in SO. (Ci aiuta a rimanere con materiale altrimenti essenziale e ci impedisce anche di prenderci troppo sul serio. Questo ha detto che questo tipo di linee dovrebbero essere poste come commento alla domanda, non come risposta! Grazie. – mjv
Se si decide di andare con un approccio semplice come il codice Andy West suggerito, si potrebbe ottenere risultati ancora migliori ponderando le frequenze di vocali e consonanti a corrispondere con quelli che si verificano normalmente in lingua inglese: Wikipedia: Letter Frequency
Potresti persino spingermi a guardare le frequenze di lettere accoppiate o sequenze di tre lettere, ma a quel punto stai implementando la stessa idea della catena di Markov che altri hanno suggerito. È più importante che le "false parole" sembrino potenzialmente autentiche per gli esseri umani, o le proprietà statistiche delle parole più importanti, come nelle applicazioni crittografiche?
- 1. Come si crea una lingua vincolante?
- 2. Lingua inglese cambia lingua delle etichette?
- 3. Come scegliere una parola inglese casuale da una lista
- 4. Esiste una grammatica formale per la lingua inglese?
- 5. Lingua predefinita non inglese per l'app iOS?
- 6. Come verificare se una parola è una parola inglese con Python?
- 7. Come cambiare la lingua di visualizzazione di javac in inglese?
- 8. Come determinare una stringa inglese o persiana?
- 9. Ottieni messaggio di eccezione inglese anziché lingua locale
- 10. Crea istanza parola esclusiva
- 11. Lua lingua: come usare qualcosa di simile alla lista python comprensioni
- 12. Localizzazione .NET - come impostare una lingua?
- 13. Converti Caratteri speciali (altra lingua) in inglese in PHP
- 14. Quando si analizza il datetime in un giorno del mese con la lingua inglese, viene ancora analizzato in lingua turca
- 15. Perché il nome della lingua inglese (caraibico) "en-029"?
- 16. Come dare una funzionalità simile alla dichiarazione con la classe?
- 17. Come impostare la lingua/lingua della console eclipse
- 18. Come si crea una finestra popup quando si esegue oauth?
- 19. Come si crea un'applicazione web usando LISP?
- 20. Come si crea una riga aggiunta da QueryAddRow() alla prima riga del risultato di una query?
- 21. Parolel Word Corpus russo-inglese?
- 22. Come si crea una risorsa PNG?
- 23. Come si crea una trama verticale numpy?
- 24. Come si crea una diff manuale?
- 25. Come si crea una pagina 404?
- 26. Come si crea una classe in Wollok?
- 27. Come si crea una canalizzazione chiusa?
- 28. Bash come aggiungere la parola alla fine di una riga?
- 29. searchDisplayController non visualizza i risultati se la lingua iphone non è inglese
- 30. PyBrain: quando si crea una rete da zero come e dove si crea un pregiudizio?
Perché dovresti farlo? – dacracot
Una catena di Markov costruita da un database di sillabe inglesi sembra un approccio ragionevole. Cosa hai provato fino ad ora? –
Non lo so, ma ho visto alcuni altri utenti qui che sembrano aver imparato quest'arte. –