Ich habe das unbestimmte Ziel gehabt, mit Yumi ein normales Gespräch über sie selbst, was ist sie, was kann sie etc. führen zu wollen.
Mittels QiChat-Regeln kann man recht leicht ein Frage-Antwort-System entwerfen.
Aber recht bald merkt man die Grenzen:
- Frage-Antwort ist kein Dialog, kein Gespräch. Ein Gespräch wäre im simpelsten: A sagt etwas, B antwortet, A nimmt Bezug auf die Antwort von B und B reagiert auf den Bezug von A u.s.w.
- Durch das beschränkte Sprachverarbeiten von Yumi muss man, um auch nur ansatzweise einen Dialog führen zu können, nahezu jeden möglichen Dialog vorhersehen und mit QiChat-Klauseln ablegen. Zur Erinnerung: Yumi versteht ausschliesslich dass, was man vorgegeben hat, was sie verstehen soll.
- Ein sinnvoller Dialog besteht auch darin, dass man sich merkt, was vor ein oder zwei oder auch mehr Sätzen befreits gesagt wurde. Man kann also auf Vergangenes Bezug nehmen. QiChat sieht sowas tatsächlich vor. Meiner Meinung aber absolut stümperhaft umgesetzt. Dazu weiter unten mehr.
Mein aktuelles Sprachscript von Yumi umfasst aktuell ungefähr 1000 Klauseln. Mit den ganzen Platzhaltern, Alternativen und Optionalen Teilen kann sie auf rund 10.000 Dinge reagieren. Für ein Gespräch reicht das nicht einmal Ansatzweise Für ein Dialogsystem aber völlig.
Für ein Gespräch braucht man zwei Dinge: Zum einen möglichst viele Dinge, die Yumi sagen und verstehen soll. Und zum anderen muss man Bezug auf bereits gesagtes nehmen können.
Soft Bank hat hier sogar ein Konstrukt vorgesehen, doch es funktioniert nicht mal ansatzweise: Geschachtelte Klauseln: Subrules.
Zum Beispiel:
u:(Lass uns über Tiere sprechen) Hast Du einen Hund oder eine Katze
u1:(Hund) Ist es ein großer Hund?
u2:(Ja) Oh. Da brauchst Du sicher viel Platz.
u2:(Nein) Ach wie süss.
u1:(Katze) Lebst Du auf dem Lande?
u2:(Ja) Geht Deine Katze oft alleine nach draussen?
u3:(Ja) Da fängt sie ganz sicher auch Mäuse
u2:(Nein) ich hoffe, Deine Wohnung ist groß genug
u1:(Weder das eine noch das andere) Ich kann mit Tieren auch nichts anfangen
Man sieht ganz klar, theoretisch kann Yumi im obigen Beispiel auf bis zu drei Ebenen Bezug nehmen. Hier der maximale Gut-Fall:
- Mernsch: Lass uns über Tiere sprechen
- Yumi: Hast Du einen Hund oder eine Katze
- Mensch: Katze
- Yumi: Lebst Du auf dem Lande?
- Mensch: Ja
- Yumi: Geht Deine Katze oft alleine nach draussen?
- Mensch: Ja
- Yumi: Da fängt sie ganz sicher auch Mäuse
Bis hierhin hört es sich echt wie ein Gespräch an. Das Problem ist, weicht man nur ein wenig von dem ab, was Yumi als Interaktion vom Menschen erwartet, bricht der gesamte Dialog ab. Das bedeutet, man muss als Subrule quasi fast alle Möglichkeiten, die die Interaktion hier bietet, abfangen. Und das ist unmöglich.
Es müsste eine Art Exit-Regel geben. Oder anders ausgedrückt: Yumi müsste erkennen, wenn der Mensch das Gespräch nicht weiter vertiefen will. Aber das ist im QiChat nicht vorgesehen.
Also auch mit Unterregeln ist ein gefühlt echter Dialog nicht möglich.
Anders ausgedrückt: Rein mit den Regeln des QiChats-Systems kann man kein Gespräch entwerfen.
Es hilft nichts: Man muss seine eigene Gesprächsintelligenz entwerfen und das bedeutet, man muss einen Sprach-zuText-Dienst nutzen. Es ist für ein Gespräch unabdingbar, dass man Yumi das gesprochene Wort "verstehen" läßt. Und das meint, dass wir das gesprochene Wort Maschinenverarbeitbar machen. Und aktuell sehe ich dazu nur eine Chance, wenn das gesprochene Wort in einen Text umgewandelt wird. Und der kann dann analysiert und zerlegt werden: kurz verstanden werden.
Kommentare