Nette Idee und nette Umsetzung. :) Mich spricht das besonders an, weil
ich über eine ganz ähnliche Fragestellung im Prinzip das erste mal mit Linguistik
in Kontakt gekommen bin, als ich als Schüler versucht habe einen Generator für Fantasienamen
zu programmieren. Dabei habe ich einen ähnlichen Ansatz verfolgt wie du (aber ohne N-Gramme), und
zufällige Zeichenketten auf Basis von Buchstabenhäufigkeiten erzeugt.
Das Ergebnis war aber in meiner Erinnerung schlechter als deines.
Dann habe ich gelernt, dass es sowas wie Phonologie und Phonetik gibt ;)
Du sagst zwar, dass es keine Anwendungen dafür gibt, aber so ganz richtig
ist das nicht: Im Bereich von Computerspielen, die prozedurale Generierung
einsetzen (z.B. roguelikes) gibt es verschiedene Ansätze, Zufallsnamen
zu generieren, z.B. mittels Markov-Ketten. Weiterhin werden für
(psycho)linguistische Experimente manchmal Logatome/Pseudo-Wörter gebraucht
(Wörter, die strukturell Wörter einer bestimmten Sprache sein könnten,
es aber nicht sind.) Auch dazu gibt es Ansätze, diese automatisiert
zu generieren (z. B.:
http://crr.ugent.be/programs-data/wuggy)
Zu den Lauten/Buchstaben:
Das Problem ist, dass, wenn man mit Buchstaben operiert, man Dinge vermischt,
die man nicht vermischen sollte. Die orthographische Form eines Worts
und dessen Aussprache haben theoretisch gesehen im Prinzip erst einmal nicht
so viel miteinander zu tun (auch wenn das praktisch natürlich nicht ganz stimmt).
Wörter sind linguistisch gesehen keine mehr oder weniger zufälligen Ansammlungen
von Buchstaben verschiedener Häufigkeiten, sondern es gibt konkrete, sprachspezifische
Regelmäßigkeiten, nach denen die Laute
innerhalb eines Worts angeordnet sind. Wenn man das linguistisch angehen möchte,
ist es daher, wie Jan vorschlägt sinnvoll zumindest intern mit einer lautlichen Repräsentation zu arbeiten.
Andererseits sind die oben genannten statistischen Ansätze mit deutlich
weniger konzeptuellem Aufwand verbunden und die Ergebnisse im Zweifelsfall
nicht unbedingt schlechter. Daher könnte es für dich interessant sein, dich in der Richtung mal umzusehen.