Kennen Sie das Zur Feier des 70. Geburtstags Ihrer Mutter soll mit einigen Darbietungen aufgewartet werden, und Ihnen fällt das Los zu, ein würdigendes heiteres Gedicht zu verfassen. Ohne Reime darf dieses natürlich nicht auskommen, und so ringen Sie eines Tages mit Ihrer Kreativität und dem deutschen Wortbestand, um etwas Sinnvolles zu Papier zu bringen. Aber lassen Sie sich dabei doch einfach von Access und einer Reim-Hilfe-Datenbank unterstützen…
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1505_Reimer.accdb
Computer-Reimen
Nicht jeder ist ein Sprachgenie, und das Auffinden von gleichklingenden Ausdrücken in den neuronalen Untiefen des Sprachzentrums macht wohl Allen einige Mühe. Der Vorgang ist aber nicht so kompliziert, dass man ihn nicht auch an eine Software-Anwendung delegieren könnte.
Der Kern dieser wäre eine Liste aller deutschen Worte, deren Endungen dann nur noch verglichen werden müssten. Dafür eignet sich natürlich eine Datenbankanwendung am besten. Tatsächlich ist die Beispieldatenbank des Autors zu diesem Beitrag aus ähnlichen Motiven entstanden, wie im Intro erwähnt.
Wortliste
Auf der Suche nach Dateien, die alle deutschen Begriffe in allen Formen, wie Flexionen, et cetera, enthalten, stößt man im Netz auf verschiedene Quellen. Diese sind leider allesamt weder komplett, noch fehlerfrei.
Die einzige Tabelle tblWorte der Demo-Datenbank ist daher aus verschiedenen Dateien erstellt und nachbearbeitet worden.
Meist liegen diese Wortdateien in Textform vor und haben einen CSV-ähnlichen Aufbau. So war eine Quelle etwa der OpenThesaurus, welcher auch von Open-Office eingesetzt wird, oder die Ergebnisse des Sprachwunders Morphy, das auch der Syntaxanalyse der Begriffe mächtig ist. Diese Textdateien wurden in Tabellen importiert und über Anfügeabfragen zusammengeführt. Dann erfolgte noch eine Nachbearbeitung über VBA-Routinen, die die Begriffe eindeutig filterten und die Groß- und Kleinschreibung anpassten. Schließlich wurde die Tabelle auch noch für das Reimen vorbereitet und erweitert, indem eine automatische Silbentrennung aller Begriffe erfolgte.
Ergebnis ist eine Tabelle mit etwa 470.000 Begriffen, die aber dennoch keinen Anspruch auf Vollständigkeit erhebt. Viele umgangssprachliche Ausdrücke oder Modeworte fehlen, und die Groß- und Kleinschreibung lässt stellenweise zu wünschen übrig. Vor allem aber ist die Silbentrennung ganz und gar nicht perfekt, denn diese entstand aus Performancegründen über einen Algorithmus, der phonetische Gesichtspunkte außer Acht ließ und Konsonanten- und Vokalgruppen nur rudimentär untersuchte. Dennoch ist sie für den angepeilten Einsatz brauchbar. Damit die Tabelle schnell durchsucht werden kann, sind einige Felder indiziert, was dazu führt, dass die Datenbank mit 48 MB recht groß geraten ist.
Einen Ausschnitt der Wortliste der tblWorte finden Sie in Bild 1. Die Spalte Wort verzeichnet die Begriffe, welche in der gebräuchlichen Schreibweise gespeichert sind. Natürlich kann das Verb duschen auch im Nominativ daherkommen und schriebe sich dann korrekt Duschen. Im Feld Silben finden Sie dann jeweils den Begriff mit dem Trennzeichen – für die Silbentrennung. Für Abfragen, die etwa den Rhythmus eines Ausdrucks berücksichtigen wollen, ist zur schnelleren Bearbeitung noch das berechnete Feld Silbenzahl eingefügt, dessen Werte sich aus der Zahl der Trennstriche plus eins ergeben. Mit LetzteSilbe und Reim folgen nun die für uns besonders interessanten Werte. Sie wurden über eine VBA-Routine aus dem Wort gebildet, wobei die Endsilbe und voranstehende Vokale untersucht wurden. Dass dies nicht fehlerfrei funktionierte, sehen Sie etwa am Begriff Duschbad, der aus unerfindlichem Grund ohne Silben angegeben ist. Das letzte Feld lautet LenReim und gibt die String-Länge des Ausdrucks in Reim wieder. Auch dieses berechnete Feld soll zur beschleunigten Weiterverarbeitung bei der Reimsuche helfen.
Bild 1: Der Screenshot verdeutlicht den Feldaufbau der Tabelle tblWorte, die (fast) alle deutschen Begriffe enthält
Die VBA-Routinen, die zu dieser Tabelle führten, sind in der Beispieldatenbank nicht enthalten. Ihre Erläuterung hätte angesichts der Komplexität sicher den Rahmen des Beitrags gesprengt.
Formular zur Reimhilfe
Das einzige Formular frmReimer der Datenbank sieht zur Laufzeit aus, wie in Bild 2. Betrachten wir zunächst, welche Elemente es aufweist.
Bild 2: Dieses Formular frmReimer soll Sie beim Reimen unterstützen und verwendet dazu die Tabelle tblWorte
Im Textsteuerelement links kann der Text des Gedichts eingetragen werden. Sobald Sie eine Zeile mit der Return-Taste beendet haben, tritt der Reim-Algorithmus auf den Plan und sucht aus dem Wortschatz alle Begriffe, die sich auf das letzte Wort der Zeile reimen könnten. Sie werden dann in der Listbox rechts aufgeführt, und Sie können sich einen auswählen, der für die nächste Reimzeile infrage kommt. Der Suchvorgang dauert angesichts der fast halben Million von Begriffen je nach Rechnerausstattung einen Moment, was durch die dann laufende Sanduhr angezeigt wird.
Nun werden Sie nicht unbedingt nur Paarreime erfinden wollen, also solche, in denen sich aufeinanderfolgende Zeilen reimen (A-A-B-B). Vielleicht sollen es Kreuzreime sein (A-B-A-B), oder Blockreime (A-B-B-A). Deshalb aktualisiert die Listbox ihren Inhalt nicht nur nach Beenden einer Zeile, sondern auch dann, wenn Sie ein beliebiges Wort mit der Maus im Text doppelklicken. Folglich lässt sich zu jedem Zeitpunkt ein Reimwort auffinden.
Was hat es mit der Combobox rechts oben im Formular mit dem Label Anzahl Buchstaben auf sich Per Default steht sie auf dem Kürzel A, kann aber auf B oder 2 bis 8 umgestellt werden. Hier handelt es sich um den Typ des Algorithmus, der zum Einsatz kommt. Mit A durchsucht die Datenbank alle Begriffe, die im Feld Reim der Tabelle tblWorte die gleiche Endung aufweisen, wie das zum Reimen markierte Wort. Mit B wird stattdessen das Feld LetzteSilbe herangezogen. Wie die Praxis zeigte, sind beide Methoden jedoch unzureichend, wenn es etwa um kurze Begriffe geht. Deshalb wurde noch eine Methode hinzugefügt, die direkt die letzten Buchstaben der Begriffe (Feld Wort) mit der gleichen Anzahl im Suchbegriff vergleicht. Und hierbei ist wählbar, wie viele Buchstaben berücksichtigt werden. Sie können die Combobox jederzeit umstellen, um eine andere Liste von Reimbegriffen zu erhalten.
Die Reihenfolge der angebotenen Begriffe ist übrigens nicht alphabetisch, sondern aufsteigend nach deren Länge. Damit stehen oben die einfacheren Begriffe, von denen sich längere eventuell ableiten. In Bild 2 wurde der Begriffe allerhand im Text doppelgeklickt. An fünfter Stelle der vorgeschlagenen Reimworte findet sich land – zwar in Kleinschreibung, aber man weiß, was gemeint ist. Scrollte man die Liste weiter nach unten, fände man etwa auch Aufenthaltsland. Bei alphabetischer Sortierung stünde dieser Begriff weiter oben. Es spart jedoch Hirnschmalz und ist ergonomischer, wenn der Grundbegriff weiter oben steht: Das Wort Urlaubsland fällt Ihnen sicher schneller ein, wenn es von Land abgeleitet ist, als bei Aufenthaltsland.
Verankerung
Wenn Ihnen das Formular zu klein ist, so ziehen Sie es mit der Maus einfach größer. Die Steuerelemente sind alle mit dem Verankern-Feature von Access ausgestattet, wodurch sie sich in Größe und Position dem Formular anpassen.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: