ELIZA Chatbot — Dein eigener Therapie-Roboter
Bauen Sie einen einfachen Chatbot nach dem Vorbild des berĂĽhmten ELIZA-Programms. Sie erhalten einen Grundcode und erweitern ihn mit eigenen Regeln.
- Sie können die Funktionsweise eines einfachen regelbasierten Chatbots erklären.Verstehen
- Sie können ein Python-Programm mit Dictionary, Schleife und String-Manipulation umsetzen.Anwenden
- Sie können den Chatbot mit eigenen Regeln und Funktionen erweitern.Kreieren
In diesem Modul erstellen Sie einen einfachen Chatbot in Python, der nach dem Prinzip des historischen ELIZA-Programms funktioniert. Sie erhalten einen funktionierenden Grundcode und erweitern ihn Schritt für Schritt mit eigenen Schlüsselwörtern, Antworten und einer Reflexions-Funktion.
Was ist ELIZA?
ELIZA ist eines der berĂĽhmtesten Programme der Informatikgeschichte. Es wurde 1966 von Joseph Weizenbaum am MIT entwickelt und simuliert einen Psychotherapeuten.
Das Besondere: ELIZA versteht nichts — es sucht nur nach Schlüsselwörtern in der Eingabe und gibt vorgefertigte Antworten zurück. Trotzdem hatten Testpersonen das Gefühl, das Programm würde sie wirklich verstehen!
In diesem Modul bauen Sie Ihren eigenen kleinen ELIZA-Chatbot in Python.
Note
Wie funktioniert ELIZA?
Die Idee ist einfach:
- Das Programm liest eine Eingabe des Benutzers.
- Es sucht nach Schlüsselwörtern in der Eingabe.
- Wenn es ein Schlüsselwort findet, wählt es eine zufällige passende Antwort.
- Falls kein SchlĂĽsselwort passt, gibt es eine Standardantwort zurĂĽck.
Diese Schleife läuft endlos, bis der Benutzer "tschüss" schreibt.
import random
def begruessung():
print("ELIZA: Hallo! Ich bin Eliza, dein Therapie-Roboter.")
print("ELIZA: Erzähle mir, was dich beschäftigt.")
print("ELIZA: (Schreibe 'tschĂĽss' zum Beenden.)")
print()
regeln = {
"hallo": [
"Hallo! Wie geht es dir heute?",
"Hi! Schön, dass du da bist."
],
"traurig": [
"Warum fĂĽhlst du dich traurig?",
"Erzähle mir mehr darüber."
],
"glĂĽcklich": [
"Das ist schön zu hören!",
"Was macht dich glĂĽcklich?"
],
"mĂĽde": [
"Warum bist du mĂĽde?",
"Hast du gut geschlafen?"
],
"angst": [
"Wovor hast du Angst?",
"Angst ist ein wichtiges Gefühl. Erzähl mehr."
],
"schule": [
"Wie ist es in der Schule?",
"Was passiert in der Schule?"
],
"mutter": [
"Erzähl mir mehr über deine Mutter.",
"Wie ist deine Beziehung zu deiner Mutter?"
],
"vater": [
"Erzähl mir mehr über deinen Vater.",
"Wie ist deine Beziehung zu deinem Vater?"
],
}
standard_antworten = [
"Erzähl mir mehr darüber.",
"Das ist interessant.",
"Kannst du das genauer erklären?",
"Wie fĂĽhlt sich das an?",
"Mmmh, weiter.",
]
def antwort_finden(eingabe):
eingabe = eingabe.lower()
for schluesselwort, antworten in regeln.items():
if schluesselwort in eingabe:
return random.choice(antworten)
return random.choice(standard_antworten)
def main():
begruessung()
while True:
eingabe = input("Du: ")
if eingabe.lower() in ["tschĂĽss", "bye", "auf wiedersehen"]:
print("ELIZA: Auf Wiedersehen! Bis zum nächsten Mal.")
break
antwort = antwort_finden(eingabe)
print("ELIZA:", antwort)
main()Challenge
Dein Auftrag: Erweitere ELIZA!
Der obige Code ist ein funktionierender Chatbot — aber er ist noch recht einfach. Ihre Aufgabe ist es, ihn zu erweitern.
Teil 1 — Basis (alle)
- Kopiere den Code in eine Datei
eliza.pyund teste ihn. - Füge mindestens 5 neue Schlüsselwörter mit jeweils 2–3 Antworten zum
regeln-Dictionary hinzu. - Ăśberlege: Welche Themen passen zu einem Therapie-Roboter? (z.B. Freunde, Liebe, Familie, Stress, Zukunft...)
Teil 2 — Mittel
- Füge eine Reflexions-Funktion hinzu: Wenn der Benutzer "Ich bin traurig" schreibt, soll ELIZA antworten: "Warum bist du traurig?" — also den Satz umdrehen.
Tipp: Nutzeeingabe.replace()um "Ich bin" durch "Warum bist du" zu ersetzen. - FĂĽge mindestens 3 neue Standardantworten hinzu, die noch natĂĽrlicher klingen.
Teil 3 — Fortgeschritten (optional)
- Lass ELIZA den Namen des Benutzers merken und in Antworten verwenden: "Sag mir, [Name], was beschäftigt dich?"
- Baue einen Zähler ein: Wenn ein Schlüsselwort zum 3. Mal erwähnt wird, reagiert ELIZA anders ("Das hast du schon oft erwähnt...").
Warning
Häufige Fehler
- Endlosschleife ohne Ausstieg: Vergiss nicht, die
while True-Schleife mitbreakzu beenden, wenn der Benutzer "tschĂĽss" schreibt. - Gross-/Kleinschreibung: Der Code wandelt die Eingabe mit
.lower()in Kleinbuchstaben um. Die Schlüsselwörter im Dictionary müssen ebenfalls kleingeschrieben sein. - Dictionary-Syntax: Jedes Schlüsselwort hat eine Liste von Antworten — achte auf die eckigen Klammern
[...]und die Kommas. - input() im Terminal: Das Programm muss im Terminal gestartet werden (
python eliza.py), nicht in einer IDE ohne Console.
# Tipp fĂĽr die Reflexions-Funktion (Teil 2):
def reflexion(eingabe):
eingabe = eingabe.lower()
if "ich bin" in eingabe:
teil = eingabe.replace("ich bin", "")
return "Warum bist du" + teil + "?"
if "ich habe" in eingabe:
teil = eingabe.replace("ich habe", "")
return "Warum hast du" + teil + "?"
return None
# In antwort_finden() einbauen:
def antwort_finden(eingabe):
# Zuerst Reflexion prĂĽfen
reflex = reflexion(eingabe)
if reflex:
return reflex
# Dann normal weiter
eingabe_lower = eingabe.lower()
for schluesselwort, antworten in regeln.items():
if schluesselwort in eingabe_lower:
return random.choice(antworten)
return random.choice(standard_antworten)Warum hatten die Testpersonen von ELIZA das Gefühl, das Programm würde sie verstehen — obwohl es nur nach Schlüsselwörtern sucht? Was sagt das über uns Menschen aus?
Mindestens 50 Zeichen, Maximal 1000 Zeichen (Aktuell: 0)