JEliza - Das Projekt
Das Computerprogramm JEliza ist die leistungsstärkste Deutsch sprechende künstliche Intelligenz, die den Prinzipien freier Software folgt. Es handelt sich dabei um einen Gesprächssimulator, also eine künstliche Intelligenz, mit der Unterhaltungen ermöglicht werden.
JEliza benutzt ein semantisches Netz, um alle Gesprächsverläufe zu speichern und lernt so dazu.
Anwendung
JEliza ist ein Forschungsprojekt, das sich noch stark in Entwicklung befindet. Daher muss der Anwender beim Sprechen mit JEliza einige Dinge beachten:
- Groß- und Kleinschreibung ist zu beachten.
- Satzzeichen, insbesondere das Komma und das Fragezeichen, sind zu setzen.
- Komplizierte Formulierungen sind zu vermeiden.
- Umgangssprache ist weitesgehend zu vermeiden.
- Es darf nur eine Zeile pro Satz eingegeben werden. Falsch: Sätze wie "Wenn X und wenn Y, wer ist dann Z?".
- Statt missverständlichen Formulierungen wie "Hast du schon mal was von X gehört" ist unbedingt "Was/Wer ist/sind/war X" zu verwenden.
Funktionsweise
JEliza ist in der Programmiersprache C++ geschrieben und verwendet Python 2.5 als Scriptsprache für die eigentliche Programmlogik. Es enthält ein einen Parser für Sätze, der eingegebene Fakten in seine semantischen Bestandteile aufteilt und ein semantisches Netz, mit dem Verknüpfungen zwischen diesen Begriffen hergestellt werden. Entspricht ein Satz also den Regeln, die auf der Website beschrieben werden, kann er logisch in das Netz eingebracht werden; der Mensch kann sie dann ebenfalls durch Eingaben wieder abfragen.
Im Auslieferungszustand enthält JEliza ein semantisches Netz mit über 30000 Begriffen und über 41000 Verbindungen; diese Technik wird seit Revision 1 verwendet. Da die bekannten Begriffe noch nicht optimal vernetzt sind, ist es die Aufgabe des Benutzers, seine JEliza-Kopie auf ein bestimmtes Themengebiet hin zu "trainieren". Nach Angaben der Autoren im Entwicklertagebuch ist ein semantisches Netz optimal verknüpft, wenn jedes Wort in einem bestimmten Themengebiet über maximal vier bis fünf Zusammenhänge mit jedem anderen Wort verbunden ist.
Das Programm ist nach einem Server-Client-Prinzip aufgebaut. Der Server übernimmt die eigentlichen Antwortmechanismen, während der Benutzer mit dem Client interagiert. Es existiert ein auf Qt basierender GUI-Client für gewöhnliche Anwendungen, ein shell-basierter Client für Unix und Linux sowie ein auf PHP basierender Client zum Einbau in die eigene Website.
Quelle dieses Abschnitts: WikipediaFeatures
Verständnis der Sätze:
- Bedingungen, im Format "wenn A, dann B", z.B. "Wenn das Auto kaputt ist, muss ich die Werkstatt anrufen"
- Begründungen, im Format "A, weil B", z.B. "Weil ich morgens Hunger habe, frühstücke ich"
- Relativsätze, z.B. "Der Hund, der mich gebissen hat, gehört meinem Nachbarn"; JElizas Parser generiert daraus wegen der einfacheren Verarbeitung: "Der Hund hat mich gebissen. Er gehört meinem Nachbarn". So können Relativsätze vernünftig in das semantische Netz eingebracht werden.
- Andere Nebensätze, wie "Ich glaube, dass es regnen wird"
- Handlungsvorschriften, momentan zwingend im Format: "Um X, (muss)/(soll)/(kann) Y", z.B. "Um das Auto zu reparieren, muss man Werkzeug verwenden". Der Benutzer kann JEliza dann beispielsweise später fragen: "Wie kann ich das Auto reparieren?"
- Verknüpfungen durch und und oder, z.B. "Das Telefon und der Computer sind kaputt"
- Interne Konjugation der Verben: Das Programm enthält einen Alogrithmus, der aus einem eingebenen Verb bis zu 200 mögliche Konjugationen erstellt, damit intern möglichst alle Formen der regelmäßigen Verben das selbe bedeuten.
Allgemein:
- Modularer Aufbau
- Kompatibel zu allen gängigen Betriebssystemen (Windows 98 bis Vista, Linux, MacOSX, *BSD, andere POSIX-kompatible)
- Open-Source Software
- Wegen XML ist die Datenbank beliebig erweiterbar und gut editierbar
- In Python aufgebaute Module zur schnellen Ergänzung / Bearbeitung
- Taschenrechnerfunktion
- Wikipedia zur Fragenbeantwortung
- unter Windows und Mac OS X: Sprachausgabe
- frei konfigurierbar
- integrierter Datenbankeditor
- integrierter Modulreihenfolgeneditor
Quelle dieses Abschnitts: Wikipedia