Der kreative Algorithmus
Aber nicht nur für diesen Zweck, sondern auch für die dynamische
Erstellung von Namen während eines Spiels eignen sich Wortbildungs-Algorithmen.
Auf einen dieser Algorithmen, den der Paarbildung aus einer gegebenen
Wortsammlung, werde ich hier näher eingehen. Im Prinzip funktioniert
dieser so, dass ein String mit Worten vorgegeben wird und der
Algo anhand dieser Sammlung untersucht, welcher Buchstabe wie häufig
auf einen anderen folgen kann. Mit diesen gefundenen Paarbildungsregeln
werden anschließend neue Worte gebildet.
Am einfachsten funktioniert das, indem man für jedes der 255
ASCII-Zeichen einen eigenen String anlegt. Dann geht man die Wortsammlung
Buchstabe für Buchstabe durch und schreibt den jeweils folgenden
Buchstaben in den String des aktuellen ASCII-Codes.
Für die Wortsammlung "donaudampfschiffkapitän"
sieht die Paarbildung dann so aus:
Erster Buchstabe ist ein "d", der zweite ein "o".
In den "d"-String wird also als erstes ein "o" eingetragen.
Auf das "o" folgt ein "n": in den "o"-String
wird somit ein "n" eingetragen usw.
Hier ist die so entstandene vollständige Liste der möglichen
Paare aus "donaudampfschiffkapitän":
a --> ump
c --> h
d --> oa
f --> sfk
h --> i
i --> ft
k --> a
m --> p
n --> a
o --> n
p --> fi
s --> c
t --> ä
u --> d
ä --> n
Was nichts anderes bedeutet als: auf ein "a" kann ein "u",
ein "m" oder ein "p" folgen. Auf ein "c"
immer nur ein "h" usw.
Um nun ein Wort zu kreieren, wird bei einem zufällig gewählten
Buchstaben aus der Wortsammlung angefangen. Als Beispiel nehmen
wir den 5. Buchstaben aus "donaudampfschiffkapitän",
das ist ein u.
Anhand der Paarbildungs-Liste können wir sehen, dass nach
einem "u" nur ein "d" erlaubt ist. Also nehmen wir
dieses, unser Wort lautet nun "ud".
Nach dem "d" haben wir die Wahl zwischen "o" und
"a". Die zufällige Wahl fällt auf "a",
es entsteht "uda".
Nach dem "a" haben wir die Wahl zwischen 3 möglichen
Folgebuchstaben usw.
Mit dieser Wortsammlung sind noch keine allzu kreativen Namen zu gewinnen.
Je mehr Auswahl aber an möglichen Folgebuchstaben besteht, desto
kreativer erscheinen die Namen. Dabei sollte man jedoch folgende Dinge
beachten:
-
Es sollte eine Wortsammlung gewählt werden, in der viele
Buchstaben mehrfach mit wechselnden, aber auch gleichen Partnern
vorkommen.
-
Doppellaute sind zu vermeiden, da dann z.B. auf ein "f"
wieder ein "f" folgen kann, auf dieses wiederum eines
usw.
-
der letzte Buchstabe der Wortsammlung muss mindestens
noch einmal irgendwo früher im Wort vorkommen, damit dieser
mindestens einen Folgepartner besitzt und der Algo an dieser Stelle
nicht hängenbleibt.
-
Die Wortsammlung sollte (muss aber nicht zwingend) um Großbuchstaben,
Leerzeichen, Satzzeichen, Sonderzeichen und -laute usw. bereinigt
sein und nur aus Kleinbuchstaben bestehen.
-
Bei aufeinanderfolgenden Konsonanten, z.B. in "wortkreationen"
ist zu beachten, dass es für den Algo nicht verboten wäre,
ein Wort mit "rtkr" an den unmöglichsten Stellen
zu bilden, z.B. am Wortanfang. Abhilfe schaffen hier zusätzlich
eingefügte Vokale.
Eine typische einigermaßen bereinigte Wortsammlung, die aus einem
hier benutzen Absatz entstanden ist, kann z.B. so aussehen:
deralgorithmusadaptiertemehroderiwenigererkenbaradenostiludiesp
rachederavorgegebenenewortsamlungemanasolteinmalomitenglischenu
deutschenundandersprachigenostringsexperimentierenauchauschlies
lichefachbegrifederonamenakoeneninteresantesein
Schauen wir uns das entstehende Paarbildungsarray etwas näher
an:
a --> ldprdcvmnslncuucmkn
b --> aee
c --> hhhhhhhh
d --> eaeeieeaee
e --> rrmhrnrrnnsdrgbnnwminnunrnxrnrnsfgdrnnnrssi
f --> ae
g --> oeeeelesr
h --> mreeeialeb
i --> tewglentsgnmeecfnn
k --> eo
l --> guutoiii
m --> uelaaiee
n --> iboeegamguuddogtaaaeitt
o --> rdsrrlmsne
p --> trre
r --> aitoiekaaagtsaiieioe
s --> atpaoccpteclae
t --> hieiseesriee
u --> sdndtncs
v --> o
w --> eo
x --> p
Wie man sieht sind nun die meisten Buchstaben des Alphabets
vertreten, und die meisten haben auch mehrere mögliche Partner.
Dass hier und da ein Buchstabe mehrfach in einem String vorkommt, ist
nicht nur egal, sondern sogar erwünscht: dieser wird mit größerer
Wahrscheinlichkeit als seine Konkurrenten ausgewählt, und zwar
mit derselben Wahrscheinlichkeit, mit der das Paar in der Wortsammlung
aufgetreten ist. Auf ein "e" wird im Beispiel recht häufig
ein "n" oder "r" folgen, was typisch für die
deutsche Sprache ist. Auch die Bildung von typisch deutschen Folgen
wie "st", "ch" und "sch" ist vorprogrammiert,
wogegen es z.B. nie zu einem typisch englischen "sh" kommen
kann.
Der Algorithmus adaptiert also mehr oder weniger erkennbar den Stil
bzw. die Sprache der vorgegebenen Wortsammlung. Man sollte einmal
mit englischen, deutschen und anderssprachigen Strings experimentieren.
Auch ausschließlich Fachbegriffe oder Namen können interessant
sein.
Eine Beispielliste von zufällig gebildeten Worten mit einer
Länge von 4-12 Zeichen kann nun so aussehen:
Alimach
Nten
Apene
Tework
Engsapte
Osthmegeml
Udendedena
Ehap
Danod
Edergedapes
Prinin
Rigersc
Enakeh
Hmeheniw
Angosprende
Eresch
Stsewos
Gengert
Tenichme
Orinachine
Na, das sieht doch schon fast nach Figuren und Orten aus einem Fantasy-Roman
aus. Auch wenn das ein oder andere Ergebnis vielleicht eher lustig oder
gar unbrauchbar erscheint - immerhin kann man die meisten Worte fast
mühelos lesen und aussprechen.
Den Algorithmus in Aktion kann man hier sehen: WortCreator
(in HTML/JavaScript).
Für das kommentierte JavaScript-Listing einfach den Quelltext anzeigen
lassen.
Viel Spaß!
J. Diehl