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
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...



Valid HTML 4.01!
Thorsten Reinecke, 2004-10-13; letzte Änderung 2004-10-13

email: reinecke@thorstenreinecke.de