Programmieren mit Python: Chatbot bauen
Mit ELIZA erblickte ein erster "Chatbot" bereits in den 1960er Jahren das Licht der Welt. Wir programmieren mit Python einen modernen Klon des Kultprogramms.
![Künstliche Intelligenz](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/7/3/9/6/6/7/Kuenstliche_Intelligenz-2e30fa7d767d9db8.jpeg)
(Bild: agsandrew / shutterstock.com)
- Pit Noack
Chatbots und Sprachassistenten sind aus der digitalen Gegenwart kaum wegzudenken. So dienen auf Online-Plattformen immer häufiger Bots als erste Anlaufstelle für Kundenkommunikation, etwa wenn man Fragen zu einem DSL-Tarif bei einem Provider hat. Siri, Google Assistant & Co. informieren auf Sprachanfrage über das Wetter der nächsten Tage, lesen Nachrichten vor und kennen die neuesten Fußballergebnisse. Die Grundlagen für diese allgegenwärtigen Technologien hat der Informatiker Joseph Weizenbaum (1923 - 2008) bereits in den 1960er Jahren am Massachusetts Institute of Technology (MIT) mit dem Computerprogramm "ELIZA" gelegt. Das Programm antwortet auf getippte Fragen oder Sätze eines Menschen. Dabei greift es auf einen Katalog vorgefertigter Textfragmente zurück und versucht, eine möglichst passende Antwort daraus zu basteln.
Weizenbaum programmierte als "digitales Gegenüber" die parodistische Simulation einer Psychologin, die ein klientenzentriertes Therapieverfahren anwendet. Eine solche Gesprächsrolle ließ sich laut Weizenbaum relativ leicht imitieren, da es dabei grob verkürzt darum geht, den Patienten durch Gegenfragen zum Sprechen und Reflektieren zu bringen. Der Quellcode der ursprünglichen ELIZA wurde in der Programmiersprache SLIP geschrieben – er gilt heute als verschollen. In Weizenbaums Veröffentlichungen sind jedoch alle Prinzipien ELIZAs dokumentiert, die für einen Nachbau in einer anderen Programmiersprache notwendig sind.
Wir haben unsere Rekonstruktion von ELIZA in Python 3.7 auf der Online-Programmierplattform Repl.it programmiert und ELIZA+ getauft. Das Programm läuft wie das große Vorbild als reine Konsolenanwendung mit Tastatureingabe. Um einige Komplikationen der deutschen Sprache zu vermeiden, versteht und spricht ELIZA+ Englisch. Auch die internen Kommentare im Code haben wir in dieser Sprache verfasst. Der Einfachheit halber pfeift ELIZA+ auf Groß- und Kleinschreibung und antwortet ausschließlich mit Kleinbuchstaben. Dieses Programmierprojekt setzt Python-Grundkenntnisse voraus: So sollte man etwa Schlüsselwörter wie if
, while
, for
, def
, from
und import
kennen und mit Funktionen, Argumenten, Klassen, Objekten und der Methode __init__()
vertraut sein. Der Artikel zeigt anhand von ausgewählten Code-Auszügen, wie ELIZA+ Eingaben annimmt, interpretiert und Antworten findet. Den vollständigen Code finden Sie auf der Online-Programmierplattform Repl.it.