Eliza

Wissensverarbeitung

Logiken

Aussagenlogik

Die Grundlage aller Logiken, Wissensverarbeitungen, Expertensystem u. ä. ist die Aussagenlogik. Sie verknüpft Aussagen mit den Wahrheitswerten "wahr" oder "falsch" mit Operatoren zu neuen Aussagen. Die gebräuchlisten Operatoren im Rahmen einer Wissensverarbeitung sind dabei:

Prädikatenlogik

Eine Erweiterung der Aussagenlogik ist die Prädikatenlogik. Mit Hilfe der Prädikatenlogik können die Aussagen der oben beschriebenen Aussagenlogik definiert werden. Eine Aussage besteht aus einem Prädikat und einem oder mehreren Argumenten. Argumente selbst können wiederum andere Aussagen sein.

Zusätzlich werden mit der Prädikatenlogik Quantoren eingeführt. Die häufigsten sind:

Wissensrepräsentation

Um Wissen verarbeiten zu können, benötigt man zum einen eine Möglichkeit vorhandenes Wissen zu speichern und zum anderen muss es eine Möglichkeit geben, aus diesem gespeicherten Wissen neues Wissen zu generieren.

Für die Speicherung von vorhandenem Wissen bietet sich die Prädikatenlogik an. Zunächst werden jedoch einige "Grundobjekte" benötigt. Bei der Schreibweise halte ich mich an die Konventionen des Systems Cyc

Für die Darstellung von Fakten verwende ich die folgende Schreibweise:
(<Prädikat> <Argument1> ...)
Ein Prädikat und die dazugehörenden Elemente werden in runde Klammen eingeschlossen. Das Prädikat ist immer eine Konstante. Die übrigen Argumente können Konstanten, Variablen, Texte, Zahl und auch komplette Ausdrücke sein.

Wissensverarbeitung

Für die Verarbeitung des vorhandenen Wissens zu neuem Wissen, werden Regeln gespeichert, nach denen neues Wissen erzeugt werden kann. Eine solche Regel besteht immer aus dem Prädikat "#$implies" und zwei Aussagen als Argument.

Das erste Argument stellt eine Bedingung dar, die für das Ausführen der Regel erfüllt sein muss.

Das zweite Argument stellt ein neues Fakt dar, dass bei erfüllter Bedingung als neues Wissen gespeichert werden kann. Ein Beispiel:
(#$implies (#$and (#$isa ?X #$Pudel) (#$genls #$Pudel #$Hund)) (#$isa ?X #$Hund))

Also: wenn irgendetwas (?X) ein "Pudel" ist und "Hund" eine Verallgemeinerung von "Pudel" ist, dann ist das irgendwas auch ein "Hund".

Wenn also jemand als Fakt (#$isa #$Fido #$Pudel) eingibt, kann mithilfe der Regel das neue Fakt (#$isa #$Fido #$Hund) automatisch erzeugt werden.