Assoziationen
Dieser Text beschäftigt sich mit der Frage, wie man als
Programmierer auf dem Computer das menschliche
Assoziationsvermögen simulieren kann.
Vorgeschichte
Ich habe im Internet gestöbert. Suchmaschinen sind ja was tolles...
Irgendwie bin ich dann auf den
Hugh-Loebner-Wettbewerb
gestoßen. Dort geht es um den
Turing-Test. Jährlich nehmen Chatbots an diesem Wettbewerb teil,
um zu zeigen, wie "menschlich" sie kommunizieren können.
Leider hapert es mit der Kommunikation noch ein wenig.
Ich habe mir einige der Logs näher angeschaut und dabei entdeckt,
dass es einer der Gründe, warum Computer einen menschlichen
Kommunikationspartner nicht besonders gut simulieren können, in
ihrem mangelnden Assoziationsvermögen zu suchen ist. Die meisten
Programme können den Kontext eines Gespräches schlicht und
ergreifend nicht fein genug einordnen.
Nun ist die Programmierung eines intelligenten Chatbots eine zu
hochtrabende Aufgabe, um sie "mal eben" zu lösen. Wenn man sich
"nur mal so" und "interessehalber" mit einem Thema befassen will, dann
ist es besser, sich ein Teilgebiet herauszupicken. Also habe ich mir
zunächst einmal die Frage gestellt, was eine Assoziation
überhaupt ist und wie man das Konzept der Assoziation einem
Programm zugänglich machen kann.
Mit dem Kopf durch die Wand...
Nur kurzem Überlegen war mir klar, dass ich für meine Zwecke
eine Assoziation als
Verknüpfung zweier (oder mehrerer) Begriffe definieren kann.
Angewendet auf niedergeschriebene Sätze bedeutet das: Substantive,
die innerhalb eines Satzes auftauchen, sind miteinander assoziiert.
Wenn man dem Computer also ein Konzept von Assoziationen beibringen
will, kann man dies tun, indem man ihn mit Assoziationen füttert!
Da die meisten HTML-Seiten (noch) aus natürlichsprachigen
Texten bestehen, bieten diese eine ausreichende Menge an Input.
Man braucht nur genügend viele Texte einzufüttern, diese in
Sätze zu zerlegen und die Verknüpfungshäufigkeiten der
Substantiv-Kombinationen in einer Datenbank zu speichern...
Na und?
Klar! -- Das gibt es alles schon. Wie bereits oben erwähnt:
Suchmaschinen sind eine tolle Sache -- und sie basieren ja letztlich
auf diesem Prinzip. -- Aber Suchmaschinen haben eine andere
Zielsetzung. Wenn man sie als Benutzer mit Suchbegriffen füttert,
dann liefern sie -- quasi als assoziative Zugriffsfunktionen -- die
zutreffenden Seiten, die die gesuchten Begriffe enthalten. Dem Benutzer
der Suchmaschine obliegt es nun, die dort verfügbaren
Informationen auszuwerten, d.h. die Texte zu konsumieren.
Der von mir verfolgte Ansatz ist ein anderer! Es geht nicht um den
Inhalt einer konkreten Seite. Es geht auch nicht um die dort vorhandene
Information. Tatsächlich sind die konkreten, einzelnen
Informationen irrelevant.
Oder anders ausgedrückt: Man sollte bestrebt sein, sie irrelevant
werden zu lassen. Denn wenn ein einzelner Text mit seinen
Wortkombinationen die einzige Quelle für eine Assoziation bildet,
dann ist diese viel zu konkret und kontextabhängig.
Auch wenn die Idee für ein solches Programm sicherlich weder neu
noch besonders aufregend ist: Vor einigen Jahren war ein solches
Programm kaum zu realisieren, da man nicht an genügenden Input
herankam und der verfügbare Speicher für die Datenbank auf
privaten Rechnern nicht ausgereicht hätte.
Erste Gehversuche
Nachdem ich mein Programm mit Informationen gefüttert hatte, war
ich natürlich gespannt, ob es mir nun brauchbare Assoziationen
liefern kann. Dies ist zugegebenermaßen nicht immer der Fall. Das
Programm mogelt sich häufig mit viel zu allgemeinen Assoziationen,
wie "Jahr", "Tag", "Beispiel", "Bedeutung", "Deutschland" oder "Welt"
aus der Verantwortung. Andere Assoziationen hingegen, wie z.B. "Nadel"
und "Heuhaufen" sind zwar schon recht gut, aber eben auch sehr konkret,
weil (vermutlich) auf eine einzelne Quelle bezogen.
Wenn das Programm mit Nachrichtentexten gefüttert wird, entwickelt
es ein gutes Personengedächtnis und kann sehr bald auch aktuelle
Ereignisse miteinander assoziieren. Nahrungsmittel und
Küchengeräte können über Kochrezepte
nähergebracht werden. Bildungslücken lassen sich durch
Artikel aus der Wikipedia
schließen.
Interessant wäre es natürlich auch, das Assoziationstool mit
Logs von echten Gesprächen zu füttern, um ihm Assoziationen
und Begriffe des umgangssprachlichen Alltags zu vermitteln. Die
maschinelle Verarbeitung derartiger Daten ohne ausdrückliche
vorherige Genehmigung der Gesprächsteilnehmer dürfte jedoch
datenschutzrechtlich bedenklich sein.
Beispiele
Was fällt Ihnen zu den Begriffen "Auto"
und "Kartei" ein? Das
Assoziationsprogramm liefert "Führerschein"!
Und dies nicht etwa aufgrund eines gemeinsamen Satzes, wo diese beiden
Wörter gemeinsam auftreten würden, sondern aufgrund einer
indirekten Assoziation.
Zehn Assoziationen zu den Begriffen "Prügel"
und "Vernunft"?
Streit, Merkel, Erziehung,
Gesundheitsreform, Öl, Kampf, Kritik, Menschen, Kultur, John
Wayne.
Vier Assoziationen zu "Essen"
und "Köln"?
Stadt, Düsseldorf, Welt,
Deutschland.
Vier Assoziationen zu "Essen"
und "Bratwurst"?
Bier, Deutschland, Preise, Salami.
15
Assoziationen zu "Bier" und "Wein"?
Geschmack,
Wasser, Deutschland, Alkohol, Kaffee, Tee, Bayern, Essen, Zucker,
Regionen, Franken, Beispiel, Glas, Weine, Brot.
Lassen Sie den Assoziationen Ihres Computers freien Lauf...
Das Assoziationstool ist in
Python geschrieben, einer Sprache,
in der man sehr leicht und schnell
Ideen austesten kann. Das Programm ist lediglich ein "Proof-of-Concept"
und daher weder
besonders schnell noch besonders elegant. Dafür kann man ganz gut
damit spielen und Einsatzmöglichkeiten für "echte"
Anwendungen evaluieren.
Mögliche Anwendungsbereiche wären
- Mind-Mapping
- Brain-Storming
- Chat-Robots (Themensuche, Plausibilitätstests,
Bewertungsfunktionen)
- Suchmaschinen
- Datamining
- Übersetzungstools (Kontext-Erkennung!)
- automatischen Einordnung von Texten in Themenbereiche
In diesem Zusammenhang habe ich dann auch gleich ein altes
Turbo-Pascal-Projekt aus dem Jahre 1994 wiederaufleben lassen, welches
seinerzeit zum Ziel hatte, deutsche Verben zu konjugieren. Dank Free Pascal konnte ich meine
alten Sourcen mühelos unter Linux übersetzen. Dann kamen die
Lacher von vor 10 Jahren wieder: "Er
gelte an und wank ihnen zu,
sie igten sich ein und backten Brot." -- Inzwischen sind
diese
Kinderkrankheiten natürlich behoben. Doch das ist eine andere
Geschichte...
Da es sich bei beiden Programmen noch um Versionen handelt, die mir zur
Evaluation von Ideen dienen, stehen sie als Softwarepakete nicht
öffentlich zur Verfügung.
Wenn Sie Interesse an der Thematik haben,
können Sie mir eine e-mail an reinecke@thorstenreinecke.de
schicken, um eine Programmversion anzufordern. Programmierkenntnisse
(oder das Interesse,
sich diese anzueignen), sollten Sie aber schon mitbringen. Und auch die
Datenbank müssen Sie selbst durch Bereitstellung geeigneter
HTML-Seiten
auffüllen, bevor Sie richtig loslegen können...
Thorsten
Reinecke, 2004-10-13; letzte Änderung 2004-10-13
email: reinecke@thorstenreinecke.de