5 Unterst ¨utzung f ¨ur Fragebeantwortung und Inferenzen

Werbung
Netzdeducer−
System
FAS
Antwortkernsuche
Axiome,
Theorembeweiser
operationale Semantik
NLI
Transformationskomponente
prozedurale Semantik
Abbildung 31: Einordnung der inferentiellen Dienste von MWR
5 Unterstützung für Fragebeantwortung und Inferenzen
Das MWR-System enthält mehrere Methoden, die zur Unterstützung von Inferenzen in
M ULTI N ET dienen und dabei aufeinander aufbauen (vgl. Abb. 31). Die zentrale Komponente ist der Netzdeducer, der ein System von objektorientierten Methoden zur Unterstützung der Ableitung von M ULTI N ET-Ausdrücken aus der Wissensbasis bereitstellt
(Kap. 5.3).
5.1 Allgemeine Einordnung
Begriff der Wissensbasis. Es sei zunächst an die Definition der Wissensbasis aus Kap.
1.2 erinnert. Danach besteht eine M ULTI N ET-Wissensbasis im weiteren Sinne aus dem
mehrschichtigen semantischen Netz (dies sind in der logischen Sichtweise die Fakten)
und weiteren axiomatischen Zusammenhängen, die in M ULTI N ET als R-Axiome und BAxiome bezeichnet werden. Diese haben typischerweise die Gestalt einer Implikation:
L1 ∧ L2 ∧ . . . ∧ Ln → ∃v1 , v2 , . . . : C1 ∧ C2 ∧ . . . ∧ Cm
(Li und Cj seien Literale, vk Variablen und 1 ≤ i ≤ n, 1 ≤ j ≤ m)
Während im logischen Sinne das Faktenwissen zusammen mit den in Form von Implikationen ausgedrückten Zusammenhängen den axiomatischen Unterbau von Inferenzen
darstellt, werden im Folgenden das semantische Netz und die R-/B-Axiome aber als separate Komponenten der Wissensbasis betrachtet (dies ist nur eine andere Sichtweise,
die aber nichts an der logischen Interpretation von Fakten und R-/B-Axiomen ändert).
Der Begriff der Wissensbasis wird nachfolgend im engeren Sinne dahingehend verwendet, daß er sich nur auf die Netzkomponente bezieht. Sofern hingegen die Wissensbasis
aus der logischen Sichtweise gemeint ist, wird dies besonders betont (z.B. durch “Wissensbasis inkl. der Axiome”). In jedem Fall sind mit “Axiomen” stets nur die R- und
B-Axiome von M ULTI N ET gemeint.
Aufgabe des Netzdeducers. Die Aufgabe des Netzdeducers besteht darin, die Ableitung eines M ULTI N ET-Ausdrucks aus der Wissensbasis unter Zuhilfenahme des Axiomsystems zu unterstützen. Der abzuleitende M ULTI N ET-Ausdruck stellt im Allgemeinen
119
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
ein semantisches Netz dar, in dem einige Knoten durch Variablen ersetzt worden sind, für
die passende Belegungen gefunden werden müssen. Diese logischen Variablen sind nicht
Teil des M ULTI N ET-Paradigmas, d.h. sie treten nur in M ULTI N ET-Ausdrücken auf, die
im Kontext der Durchführung von Inferenzen mit Hilfe des Netzdeducers verwendet werden. Typischerweise werden logische Variablen an denjenigen Stellen von M ULTI N ETAusdrücken eingesetzt, an denen üblicherweise “innere Knoten”, also Repräsentanten von
nicht lexikalisierten Konzepten stehen würden. Diese Ersetzungen werden entweder manuell vom Wissensingenieur vorgenommen, was zum Beispiel bei der Eingabe von Axiomen der Fall ist, oder sie werden automatisch unter Befolgung bestimmter Richtlinien und
Konventionen in einem M ULTI N ET-Ausdruck vorgenommen. Die entsprechenden Umformungen des Fragemusters bei der Fragebeantwortung (Kap. 5.4) sind ein Beispiel für
den letzteren Fall.
Einen speziellen Fall der oben genannten M ULTI N ET-Ausdrücke stellen die linken und
rechten Seiten von Regeln dar, die nach der in Kap. 5.2 entwickelten Regelsprache formuliert werden können. Die Regelsprache stellt eine Obermenge der Sprache der R- und
B-Axiome dar, wobei in Regeln zusätzliche prozedurale Komponenten sowie Hilfsprädikate zugelassen werden, die nicht Teil des M ULTI N ET-Paradigmas sind.
Da der Netzdeducer die M ULTI N ET-Ausdrücke der linken und rechten Regelseiten verarbeiten kann, stellt er unter anderem den deduktiven Kern für die Anwendung von M UL TI N ET-Axiomen sowie die Grundlage für die Auswertung von prozeduralen Regeln über
M ULTI N ET dar.
Anwendung in Frage-Antwort-Systemen. Die Aufgabe eines Frage-Antwort-Systems
(FAS) besteht darin, eine natürlichsprachliche Anfrage über einer gegebenen Wissensbasis zu beantworten (zur ausführlichen Diskussion siehe Kap. 5.4).
Die Frage liegt zunächst in natürlichsprachlicher Form vor (Beispiel: “Wer hat in
Deutschland den ersten elektronischen Rechner entwickelt?”) und wird in Form eines
M ULTI N ET-Ausdrucks, der auch als Fragemuster bezeichnet wird, von dem System verarbeitet. Derjenige Netzknoten, der im obigen Beispiel den “Wer”–Teil der Frage repräsentiert, stellt den Fragefokus (das Hauptinteresse des Fragenden) dar.
Zur Beantwortung der Frage muß das Fragemuster, das die semantische Repräsentation
der Frage enthält, über dem Hintergrundwissen, das in Form eines semantischen Netzes
gegeben ist, bewiesen werden.
Die Substitution, die das Beweisverfahren bei geeigneter Wissensbasis für den Fragefokus
liefert (“Konrad Zuse”), wird als Antwortkern bezeichnet. Sie liefert im vorliegenden Fall
– einer Ergänzungsfrage40 – den Ausgangspunkt für die Beantwortung.
Der Fall, daß das gesamte Fragemuster isomorph zu einem Teilnetz der Wissensbasis ist,
kommt eher selten vor. Typischerweise kann während des Beweisprozesses nur ein kleiner
Teil des Fragemusters direkt aus dem Hintergrundwissen abgeleitet werden, während der
übrige Teil der Frage erst durch Hinzuziehen von Axiomen geeignet bewiesen werden
muß. In Kapitel 5.4 werden zwei derartige Verfahren vorgestellt, die sich intensiv auf den
Netzdeducer und die Methoden zur Anwendung von Axiomen abstützen.
40
Siehe auch Kap. 5.4 zu einer Aufstellung verschiedener Fragetypen und ihrer Behandlung bei der
Antwortfindung.
120
5.1 Allgemeine Einordnung
Frage−Antwort−System
Wissensbasis:
− semantisches Netz (Fakten)
Natürlichsprachliches Interface
Generierung formaler
DB−Anfragen (z.B. in SQL)
− Axiome
Inferenzen
Transformation
Frage
Frage
(als zu beweisender Ausdruck)
(als prozedurale Handlungsaufforderung)
Abbildung 32: Unterschiede zwischen FAS und NLI aus Sicht der Fragebeantwortung
Mit den bisher genannten Methoden wird ein Anwendungsbereich repräsentiert, der die
Nutzung der operationalen Semantik (siehe auch Kap. 2.1.4) von M ULTI N ET in den Vordergrund stellt und in der linken Seite von Abb. 31 zusammengefaßt ist.
Anwendung in natürlichsprachlichen Interfaces. Ein natürlichsprachliches Interface
(NLI) erlaubt es dem Benutzer, natürlichsprachliche Anfragen an eine Datenbank zu stellen, wie z.B. die Anfrage “Gibt es Bücher von Nilsson über Expertensysteme?” an eine
bibliographische Datenbank. Im NLI werden also ebenfalls natürlichsprachliche Anfragen des Benutzers beantwortet, aber die Grundlage der Antwort wird nicht über einer
dem NLI eigenen Wissensbasis ermittelt (s. Abb. 32). Stattdessen wird die Nutzeranfrage
im NLI regelbasiert in eine formale Datenbankanfrage transformiert, und deren Anfrageergebnis liefert schließlich den Ausgangspunkt der Fragebeantwortung. Im Gegensatz
zum FAS steht im NLI also eine prozedurale Deutung der Anfrage im Vordergrund:
Die im NLI vorkommenden Transformationsregeln dienen der Suche nach Teilnetz-Strukturen, auf die im Erfolgsfall mit bestimmten prozeduralen Aktionen (z.B. dem Generieren
eines Teils einer SQL-Anfrage und schließlich dem Durchführen einer Datenbankanfrage) reagiert wird. Somit besteht auch bei der Verarbeitung von Transformationsregeln
die Notwendigkeit, nach Teilnetzen zu suchen und axiomatische Zusammenhänge auszunutzen. Deshalb spielt das Netzdeducer-System auch im NLI eine wichtige Rolle. Im
nächsten Kapitel wird eine Transformationskomponente vorgestellt, die sich wie in der
rechten Seite in Abb. 31 gezeigt in den Gesamtkomplex der Inferenzen einordnet.
Tatsächlich besteht die Transformationskomponente auch nicht als eigenständige Einheit,
sondern sie wird mit Hilfe der objektorientierten Bausteine des Netzdeducers realisiert.
Dabei dient eine Untermenge der Regelsprache zur Formulierung der Transformationsregeln.
In den folgenden Abschnitten wird zunächst eine Form des deduktiven Schließens in
M ULTI N ET formalisiert und dann mit dem Netzdeducer ein System von objektorientierten Methoden vorgestellt, die diese Schlußweise realisieren. Aufbauend auf diesen
Methoden werden zwei Verfahren zur Fragebeantwortung vorgestellt.
121
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
5.2 Anforderungen und Syntax von Axiomen und Regeln
Zunächst werden einige grundlegende Schreibweisen und Konventionen festgelegt. Der
Begriff des Matchings und der Ableitung von Literalen wird eingeführt; dabei werden
auch die Unterschiede zur Interpretation von Literalen in der klassischen Logik aufgezeigt. Auf diese Begriffe aufbauend werden in Abschnitt 5.2.2 die formale Regelsprache
beschrieben und schließlich in Unterkapitel 5.3 das Verfahren des Netzdeducers erläutert.
5.2.1 Terminologie und Konventionen
Def.: Variablen und Konstanten
Konstanten sind in Anführungszeichen eingeschlossene Bezeichner von Lexemen, die der
im Computerlexikon benutzten Konvention folgen, mit der Homographen und verschiedene Sememe zu einem und demselben Wort durch das Hintenanstellen zweier Indizes
“wort.n.m” unterschieden werden (vgl. das einführende Kap. 2.1.4). Sofern die “.n.m”Extension zum Verständnis von Beispielen nicht notwendig ist, entfällt im Folgenden
ihre Angabe zur Vereinfachung der Darstellung.
Bsp: “Haus.1.2”, “politisch”, “Rede”, ...
Alle anderen Bezeichner, die nicht in Anführungszeichen stehen, werden als logische
Variablen aufgefaßt.
Bsp: A, B, arg1, ...
Def.: Literale
Literale sind Relationen oder funktionale M ULTI N ET-Ausdrücke mit Konstanten und Variablen als Argumente. Es wird eine Prädikatsschreibweise sowohl für Relationen als auch
für Funktionen verwendet, d.h.
rel(arg1 , arg2 )
für Relationen bzw.
*fkt(arg0, arg1 , . . . , argn )
für Funktionen.
Diese Verallgemeinerung ergibt sich daraus, daß sich eine n-stellige Funktion als eine
(n+1)-stellige Relation auffassen läßt. Als Konvention repräsentiert das erste Argument
arg0 bei Funktionen den Ergebnisknoten der Funktion, so daß sich in Funktionsschreibweise arg0 = *fkt(arg1 , . . . , argn ) ergeben würde.
Ein Literal l kann durch Voranstellen von “not” negiert werden: not(l).
Bsp.:
SUB(A, B), not(SUB(A, B)), SUB(A, “haus.1.1”),
*IN(O2, “Hagen.1.1”), *PMOD(C4, “politisch”, “Rede”)
Literale, in denen nur konstante Argumente vorkommen, werden als Grundliterale bezeichnet.
122
5.2 Anforderungen und Syntax von Axiomen und Regeln
Def.: Axiome
Axiome verfügen über eine linke und eine rechte Seite, die durch einen Junktor verbunden sind. Die linken und rechten Seiten werden jeweils durch eine konjunktiv verknüpfte
Folge von Literalen gebildet, die nicht leer sein darf. Als Junktoren zwischen der linken
und rechten Seite sind nur die Implikation “→” und die Äquivalenz “↔” zulässig, deren
genaue Interpretation später definiert wird. In den Literalen der rechten Seite können ferner existenzquantifizierte Variablen vorkommen, die explizit zu Beginn der rechten Seite
ausgewiesen werden. Damit ergibt sich (am Beispiel der Implikation) die folgende Form
von Axiomen:
L1 ∧ L2 ∧ . . . ∧ Ln → ∃v1 , v2 , . . . : C1 ∧ C2 ∧ . . . ∧ Cm
(Li und Cj seien Literale, vk Variablen und 1 ≤ i ≤ n, 1 ≤ j ≤ m)
Innerhalb der linken und rechten Seiten von Axiomen gilt die Konjunktionskonvention,
d.h. Literale gelten darin als konjunktiv verknüpft, sofern keine anderen Junktoren explizit
angegeben werden.
Beispiel:
PARS(A,B) PARS(B,C) → PARS(A,C) steht abkürzend für:
PARS(A,B) ∧ PARS(B,C) → PARS(A,C)
Def.: G-Matching von Literalen
Der Vergleich von Literalen wird auf den Mustervergleich (Matching) zurückgeführt. Der
Matchingalgorithmus entspricht mit einer Ausnahme dem üblichen Verfahren der Instantiierung von Variablen und dem stellenweisen Vergleich der Literalkomponenten: Durch
einen geschickten Aufbau der später entwickelten Ableitungsstrategien, die auf dem Matching basieren, wird sichergestellt, daß einer der zu matchenden Partner stets ein Grundliteral ist. Dadurch braucht in der nachfolgenden Definition der Fall des Matchings zweier Variablen gegeneinander nicht berücksichtigt werden. Diese Vereinfachung wirkt sich
günstig auf die Komplexität der resultierenden Algorithmen aus. Um die Abgrenzung
vom allgemeinen Fall des Matchings zu erzielen, wird das hier verwendete Matching als
“G-Matching” (Ground-Matching) bezeichnet. Im folgenden ist immer diese Version des
Matchings gemeint, wenn nichts anderes angegeben ist.
Insgesamt ergibt sich folgendes Matchingverfahren für zwei Literale l1 und l2 , wobei das
zweite Literal l2 o.B.d.A. ein Grundliteral darstellt und eventuelle Variablensubstitutionen
bereits durchgeführt worden seien:
Zwei Literale l1 ≡ rel(arg1 , arg2) und l2 ≡ rel0 (const1 , const2 ) matchen genau dann,
wenn
1. rel ≡ rel’ gilt
und für i=1,2:
2. entweder argi ≡ consti gilt, wobei argi ebenfalls eine Konstante ist,
3. oder argi eine Variable ist. In diesem Fall wird die Substitution {consti /argi} der
Liste der Substitutionen hinzugefügt.
Anderenfalls ist kein Matching möglich.
123
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Das Matching von funktionalen Termen beliebiger Stelligkeit geschieht analog, indem der
Laufbereich des Index i entsprechend erweitert wird.
Def.: Direkte Ableitung eines einzelnen Literals
Die direkte Ableitung eines Literals wird auf G-Matching zurückgeführt. Gegeben sei ein
semantisches Netz SN.
Ein Literal l ist dann direkt aus SN ableitbar, wenn es mit einem relationalen oder funktionalen Tupel aus dem Netz SN matcht.
Def.: Direkte Ableitung einer Folge von Literalen
Unter einer Folge l1 , . . . , ln von Literalen wird eine Konjunktion mehrerer Literale (z.B.
Fragemuster, linke Axiomseiten) verstanden. Die direkte Ableitbarkeit von Literalen wird
iterativ auf eine Folge von Literalen ausgeweitet, indem die einzelnen Literale li der Folge
nacheinander abgeleitet werden. Dabei sind bei der Ableitung eines Literals li die Substitutionen, die bereits beim G-Matching von l1 , . . . , li−1 entstanden sind, derart zu berücksichtigen, daß für gleiche Variablennamen auch die gleichen Substitutionen durchgeführt
werden.
Aus der konjunktiven Verknüpfung der Literale ergibt sich, daß die gesamte Folge nicht
ableitbar ist, wenn die Ableitung eines beliebigen Literals li der Folge nicht möglich ist.
Def.: Indirekte Ableitung eines Literals über Axiome
Gegeben seien ein semantisches Netz SN sowie eine Menge von Axiomen AX. Ein Literal l ist indirekt mit Hilfe eines Axioms X ∈ AX ableitbar, wenn
1. die Folge der Literale in der Prämisse von X entweder direkt nach der obigen Definition ableitbar ist oder wenn sie rekursiv, also wiederum indirekt mit Hilfe weiterer
Axiome abgeleitet werden kann,
2. und danach die Konklusion von X nach Durchführung der Variablensubstitutionen,
die aus der Ableitung der Prämisse stammen, ein Grundliteral lG enthält, das mit l
matcht.
Die Hauptbausteine bei der Ausdeutung von Axiomen der Form A → B sind somit
der modus ponens sowie das “commitment principle”, das folgendes besagt: Wenn die
Prämisse A als gültig akzeptiert wird, dann ist auch die Konklusion B als gültig zu akzeptieren. Falls jedoch A nicht gültig ist, dann ist im Unterschied zur klassischen Logik
über die Implikation nichts ausgesagt.
Axiome werden in der Inferenzkomponente also wie Transformationsregeln verwendet,
die aus gültigen Aussagen andere gültige Aussagen ableiten. Insbesondere ist es wichtig
hervorzuheben, daß die Implikation im hier verwendeten Matching-Sinn nicht wahrheitsfunktional gedeutet wird.
Für die Behandlung von Axiomen mit negierten Literalen wird eine “offene Welt” angenommen, d.h. ein negiertes Literal kann nur dann abgeleitet werden, wenn eine passende
Relation oder Funktion explizit in negierter Form in der Wissensbasis enthalten oder aus
ihr ableitbar ist.
124
5.2 Anforderungen und Syntax von Axiomen und Regeln
Dach
S
PAR
Dachziegel
PAR
S
Haus
ax1: PARS(A,B) PARS(B,C) > PARS(A,C)
Abbildung 33: Beispiel zum Ableiten von Literalen
Def.: Interpretation der Äquivalenz “↔”
Die Bedeutung von Axiomen der Form A ↔ B ergibt sich ebenfalls aus dem “commitment principle”. Wenn die Prämisse A akzeptiert wird, dann ist auch die Konklusion B
zu akzeptieren und umgekehrt.
Im Kontext des Inferenz-Prozesses kann ein Axiom A ↔ B durch zwei einzelne Axiome
A → B und B → A ersetzt werden, ohne die Semantik des Gesamtaxiomsystems zu
verändern.
Def.: Allgemeiner Ableitungsbegriff
Im vielen Fällen kommt es nicht darauf an zu betonen, ob ein Literal direkt oder indirekt
ableitbar ist. Daher ist im Folgenden, wenn nichts weiter angegeben ist, mit der Ableitbarkeit eines Literals gemeint, daß es zumindest eine Möglichkeit gibt, das Literal direkt
oder indirekt nach den vorangegangenen Definitionen abzuleiten.
So gilt z.B. für das Netz und das angegebene Axiom aus Abb. 33, daß die folgenden
Literale ableitbar sind (die ersten beiden direkt, das dritte indirekt mit Hilfe des Axioms
ax1):
PARS(Dachziegel, Dach), PARS(Dach, Haus), PARS(Dachziegel, Haus).
Die Begriffe “ableitbar” und “beweisbar” werden bezüglich der hier behandelten Literale,
Axiome und der später noch eingeführten Regeln synonym behandelt. Es ist dann stets die
vorliegende Definition der Ableitbarkeit gemeint.
5.2.2 Die formale Regelsprache
Der folgende Abschnitt dient der Einführung der innerhalb von MWR verwendeten Regelsprache, die wie bereits erwähnt eine Obermenge der Sprachen der R- und B-Axiome
sowie der Transformationsregeln des NLI darstellt. Dazu wird eine halb-formale Beschreibung der Regelsprache gegeben, die sich an ihrer Verwendung in den Beispielen
und Methoden dieses Kapitels orientiert. Eine vollständige formale Darstellung der Regelsprache in Backus-Naur-Form (BNF) findet sich im Anhang 11.2.1.
125
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
Anforderungen an die Regelsprache.
malen Regelsprache umgesetzt:
UND I NFERENZEN
Die folgenden Überlegungen wurden in der for-
• Gute Lesbarkeit und Verwaltbarkeit. Da M ULTI N ET-Axiome und die Transformationsregeln zur Zeit ausschließlich durch einen Wissensingenieur von Hand eingegeben und gepflegt werden, ist ein gut strukturiertes und lesbares Format erforderlich. Für die linken und rechten Regelseiten ist es außerdem wünschenswert, wenn
sie weitgehend dem textuellen M ULTI N ET-Format (s. Kap. 4.2.3) entsprechen, das
auch in der WCFA und im Computerlexikon eingesetzt wird. Regelnamen sind ein
Teil der Beschreibungssprache, wodurch die Verwaltung des Regelsystems und die
Verfolgung von Inferenzschritten (Debugging etc.) erleichtert wird.
• Prozedurale Restriktionen. Linke und rechte Regelseiten werden unterteilt in eine Literalkomponente, die ausschließlich M ULTI N ET-Relationen und -Funktionen
enthält, und eine prozedurale Komponente zur Formulierung komplexer Prädikate oder Restriktionen. Diese Struktur ermöglicht eine Aufteilung der Regelanwendung in eine Grobverifikation, an der nur die Literalkomponente teilnimmt, und
in eine Feinverifikation, in der mittels der prozeduralen Anteile z.B. Sorten- und
Layerstrukturen miteinander verglichen werden. Ein derartiges Vorgehen ist insbesondere bei der Fragebeantwortung vorteilhaft. Unter Verwendung von prozeduralen Komponenten ist es auch möglich, mit Hilfe von arithmetischen Prädikaten mathematische Zusammenhänge zu formulieren wie z.B. die Umrechnung von
Euro/DM-Werten oder kg/g-Maßeinheiten, wodurch die Fragebeantwortung erheblich leistungsfähiger wird.
• Wohlgeformtheit hinsichtlich der logischen Variablen. Um die Verwendung der Regeln in logischen Beweisverfahren zu ermöglichen, müssen Regeln korrekt quantifiziert sein. Freie Variablen auf der linken Regelseite gelten per Konvention als
allquantifiziert; alle anderen freien Variablen müssen in einem speziellen Deklarationsteil explizit existenzquantifiziert werden. Die entsprechenden Angaben sind
auch für den Netzdeducer wichtig, da sie Aufschluß über die Behandlung freier
Variablen während des Ableitungsprozesses geben.
• Effiziente Implementierbarkeit. Dazu zählt insbesondere die Beschränkung von
Disjunktionen auf einen effizient handhabbaren Umfang. Per Konvention sind Literale innerhalb einer Regelseite konjunktiv verknüpft und keine Disjunktionen innerhalb einer Regelseite möglich. Innerhalb von Literalen sind jedoch sogenannte
“innere Disjunktionen” zugelassen, die es erlauben, statt einer bestimmten M UL TI N ET-Relation oder eines bestimmten konstanten Arguments eine Liste von alternativen Relationen bzw. Argumenten anzugeben. Auf diese Weise wird ein guter
Kompromiß zwischen Ausdrucksfähigkeit und Effizienz erreicht.
• Unterstützung der Wiederverwendbarkeit des Netzdeducers. Die Regelsprache legt
die Obermenge aller denkbaren Anwendungen des Netzdeducers fest; dadurch entfällt das Pflegen mehrerer anwendungsspezifischer Regelsprachen innerhalb des Inferenzsystems. Die Teilsprachen für Axiome bzw. Transformationsregeln verwenden jeweils ca. 90% des Sprachumfangs der Regelsprache, wobei auf die spezifischen Einschränkungen der betreffenden Untersprachen noch eingegangen wird.
126
5.2 Anforderungen und Syntax von Axiomen und Regeln
Grundstruktur der Regelsprache. Die Grundstruktur einer Regel besteht aus dem Regelnamen sowie zwei Regelseiten, die einen Regeloperator in Infixnotation enthalten. Die
gesamte Regel ist in runde Klammern eingefaßt:
( <Regelname> <Regelseite> <Regeloperator> <Regelseite> )
Um auf einzelne Komponenten der formalen Beschreibung im Text Bezug zu nehmen,
wird der Name der Komponente im Text kursiv geschrieben. Bezeichnungen wie “Regelname”, “des Regelnamens” u.s.w. beziehen sich also auf die Komponente <Regelname>.
Der Regelname besteht aus einer beliebigen Folge von Buchstaben, Ziffern und Sonderzeichen, die in der BNF aus dem Anhang 11.2.1 spezifiziert sind. Als Regeloperator sind
die Implikation “→” und die Äquivalenz “↔” erlaubt. Regelseiten unterteilen sich in drei
weitere Komponenten, wobei aufgrund der Kommutativität des Äquivalenzoperators die
Teilsprachen für die linke und rechte Regelseite identisch sind:
<Regelseite> ≡ <Quant-Liste> <Literal-Liste> <prozedurale Restriktion>
Für die Syntax von Variablen und Konstanten gelten die Konventionen aus Abschnitt
5.2.1; die genau zulässigen Buchstaben und Sonderzeichen sind dem Anhang zu entnehmen.
In der Quant-Liste werden diejenigen ungebundenen Variablen angegeben, die als existenzquantifiziert zu betrachten sind. Die Quant-Liste wird durch das Schlüsselwort “ex”
eingeleitet, dem die betreffenden Variablen durch Leerzeichen getrennt folgen. Die gesamte Quant-Liste wird durch runde Klammern eingeschlossen:
Bsp.:
(ex A B Arg1)
Falls in einer Regel keine existenzquantifizierten Variablen vorkommen, entfällt der gesamte Quant-Listen-Ausdruck.
Die Literal-Liste besteht aus einer nichtleeren Abfolge von Literalen (s. Abschn. 5.2.1).
Für die Textdarstellung wird für Literale die Prädikatnotation (Bsp.: SUB(A, “Auto”)) aus
den übrigen Kapiteln beibehalten41. In der Literal-Liste kommen keine weiteren Klammerungen oder Trennzeichen vor:
Bsp.:
AGT(s, a) SUBS(s, “fahren”) INSTR(s, b)
Prozedurale Restriktionen sind ebenso wie die Existenzquantifizierung optional, d.h. der
Ausdruck kann als Ganzes weggelassen werden. Prozedurale Restriktionen werden durch
das Schlüsselwort “proc” eingeleitet, gefolgt von einer Liste von Prozeduraufrufen, die
dem folgenden Format genügen müssen (das “=”-Symbol gehört nicht zur metasprachlichen Beschreibung):
<Prozeduraufruf> ≡ ( r1 , r2 , . . . , rn = Prozedurname arg1 , arg2 , . . . , argm )
41
Abweichend von der Textdarstellung wird in der formalen Regelsprache der Name der Relation/Funktion in den Klammerausdruck mit hineingezogen und Argumente werden nicht durch Kommata
getrennt. Das im Text geschriebene Literal würde also in einer “echten” Regel als (SUB A “Auto”) dargestellt werden. Die unterschiedlichen Schreibweisen sind auch bei der Betrachtung der BNF aus Anhang
11.2.1 zu berücksichtigen.
127
U NTERST ÜTZUNG
F RAGEBEANTWORTUNG
F ÜR
UND I NFERENZEN
Die argi stellen Konstanten dar oder sie sind Variablen, die nach der Ableitung der Literalkomponente der Prämisse instantiiert werden können. Mit den ri werden Variablen für
die Rückgabewerte des Prozeduraufrufs spezifiziert.
Bsp.:
(∗ weist c den Wert 100∗x zu ∗)
proc (c = times 100 x)
Beispiele.
Eine “minimale” Regel mit einem Literal auf jeder Seite:
(ax1 AFF(v, o) → SUBS(v, “verändern”))
Mehrere Literale auf einer Seite und Literal-Negation:
(ax21 SUB(a, c1) COMPL(c1, c2) → not(SUB(a, c2)))
Existenzquantifizierung:
(ax57 SUB(o1, o2) ATTR(o2, a1) → (ex a2) ATTR(o1, a2) SUB(a2, a1))
Äquivalenz und Umrechnung von Maßeinheiten mittels prozeduraler Restriktionen:
(ax201 *QUANT(m, kg, “kilogramm”) proc (kg = div g 1000)
↔
*QUANT(m, g, “gramm”) proc (g = times kg 1000))
Innere Disjunktionen. Die bisherigen Erfahrungen beim Aufbau von Regelsystemen
zeigen, daß häufig Regeln vorkommen, die bis auf ein bestimmtes Literal identisch sind.
Um die Formulierung dieser Regeln zu vereinfachen, verfügt die Regelsprache über sog.
“innere Disjunktionen42”, bei denen innerhalb eines Literals mehrere Alternativen für eine
M ULTI N ET-Relation oder für ein konstantes Argument in Form einer in runde Klammern
eingeschlossenen Liste angegeben werden:
(rel1 . . . reln )(A B)
rel((“k1 ” . . . “kn ”) B)
steht für:
steht für:
rel1 (A B) ∨ . . . ∨ reln (A B)
rel(“k1 ” B) ∨ . . . ∨ rel(“kn ” B)
Beispiel:
(ax79
SUBS(a, (“handeln” “unternehmen” “machen”)) → SUBS(a, “Handlung”))
steht für drei Einzel-Regeln:
(ax79-1 SUBS(a, “handeln”)
(ax79-2 SUBS(a, “unternehmen”)
(ax79-3 SUBS(a, “machen”)
→ SUBS(a, “Handlung”))
→ SUBS(a, “Handlung”))
→ SUBS(a, “Handlung”))
Bei mehreren inneren Disjunktionen ergibt sich eine entsprechende Kombinatorik.
42
Falls innere Disjunktionen auf der rechten Seite einer Regel vorkommen, ist die Ableitbarkeit der betreffenden Literale im allgemeinen nicht garantiert. Solche Regeln sind dennoch sinnvoll, um z.B. Integritätsbedingungen in einer kompakten Form aufschreiben zu können.
128
5.2 Anforderungen und Syntax von Axiomen und Regeln
Teilsprachen für Axiome und Transformationsregeln. Die Regelsprache läßt in Literalen auch Hilfsprädikate zu, die keinen M ULTI N ET-Ausdrucksmitteln entsprechen, also
beispielsweise Regeln der Form:
(autor3 fokus(F) PRED(F, “buch.1.1”) autor-von(N, F) → sql-autor(N))
In den unterstrichenen Literalen sind Hilfsprädikate enthalten, die nicht Teil der im M UL TI N ET-Paradigma definierten Relationen und Funktionen sind. Während die Benutzung
derartiger Hilfsprädikate aus formalen Gründen in der Teilsprache für Axiome nicht zulässig ist, werden sie in Transformationsregeln häufig eingesetzt; zur Motivation siehe die
Kapitel 5.3.5 und 6.
In der Teilsprache für Transformationsregeln ist hingegen der Regeloperator “↔” nicht
zulässig. Die rechte Seite von Transformationsregeln darf außerdem keine inneren Disjunktionen und keine Existenzquantifizierungen von Variablen enthalten.
Anhang 11.2.1 spezifiziert die Einschränkungen in der BNF, um die genaue Syntax für
Axiome und Transformationsregeln zu erhalten.
Erweiterungen für k-types. Literale können durch die Angabe von zwei zusätzlichen
konstanten Argumenten eingeschränkt werden, mit denen die k-types der zugehörigen
Relation oder des funktionalen Ausdrucks beschrieben werden. Dabei gilt in M ULTI N ET
die Konvention, daß sich das erste Argument auf den “Startknoten”43 der zugehörigen
Relation bezieht und das zweite Argument auf den (oder im Fall mehrstelliger Funktionen auf die) “Zielknoten”. Bei mehrstelligen Funktionen werden daher aus Sicht der
Funktionsargumente-Knoten keine individuellen k-types angegeben.
Der zu Beginn dieses Unterkapitels eingeführte Matching-Begriff wird beim Auftreten
von k-type-Argumenten entsprechend dahingehend erweitert, daß zwei Literale nur dann
matchen, wenn ihre k-types gleich sind. Da nur konstante k-type-Argumente zugelassen
sind, erzeugt die Hinzunahme von k-types keine weiteren Substitutionen.
Bsp.:
SUB(A,B,situa,categ)
matcht mit
SUB(c1, c2, situa, categ),
aber nicht mit SUB(c1, c2, situa, situa).
Um Kollisionen mit dem Namensraum von Knotenvariablen zu vermeiden, sind keine
Knotenvariablen mit dem Namen von k-type-Attributen erlaubt.
Erweiterungen für Sorten und Layers. Für Sorten und Layers existieren spezielle
Hilfsprozeduren SORT, GENER, REFER, VARIA, QUANT, CARD und ETYPE, die innerhalb der prozeduralen Erweiterung einer Regel verwendet werden können, um auf Sorten
oder Layer-Merkmale von Knoten zuzugreifen. Die Hilfsprozeduren haben genau einen
Rückgabewert w sowie genau ein Knotenargument k, so daß innerhalb des “proc”-Teils
der Regeln Aufrufe nach folgendem Schema gebildet werden können (das Gleichheitszeichen ist nicht Teil der metasprachlichen Beschreibung):
43
“Startknoten” und “Zielknoten” beziehen sich auf die graphische Darstellung der Kanten durch Pfeile.
Formal ist der Startknoten das erste Argument der repräsentierten Relation oder Funktion, und alle übrigen
Knotenargumente stellen Zielknoten dar.
129
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
proc (w1 = Hilfsprozedur k1 ) (w2 = Hilfsprozedur k2 ) . . .
oder als konkrete Beispiele:
proc (S1 = SORT c1) (“con” = VARIA c2) (“1” = CARD c2)
Die Parameter k1 , k2 , . . . sind Knotenvariablen, wie sie auch in normalen Literalen vorkommen. Die Werte w1 , w2 , . . . müssen entweder Variablen sein oder Konstanten aus den
zulässigen Wertebereichen für Sorten bzw. Layer-Merkmale darstellen; für Konstanten
gelten die Konventionen aus der Beschreibung des abstrakten Datentyps aus Kap. 4.1.1,
Abbildung 4. Im Beispiel ist S1 eine Variable und “con”, “1” sind Konstanten.
Die Interpretation der “proc”-Ausdrücke ist die folgende: Wenn wi eine Variable ist, so
wird diese durch die entsprechende Sorte oder das Layer-Merkmal von ki substituiert.
Für konstante wi wird der “proc”-Ausdruck hingegen so interpretiert, daß die linke Seite
des “=”-Zeichens (der wi - Wert) eine Vorgabe darstellt, der der Knoten ki auf der rechten
Seite nach den unten stehenden Kriterien genügen muß. Genügt der Knoten dieser Vorgabe nicht, so ist die Regel, die den betreffenden proc-Ausdruck enthält, mit den aktuellen
Substitutionen nicht anwendbar, und die Inferenzmaschine muß eine andere Substitution
für ki suchen.
Die Überprüfungskriterien für die Knoten hängen von den jeweils angegebenen Merkmalen ab:
Bei der Vorgabe eines konstanten Layer-Merkmal-Wertes für wi muß der durch die Knotenvariable ki bezeichnete Knoten entweder ebenfalls das Layer-Merkmal wi aufweisen
oder im Spezialfall des Layer-Merkmals CARD eine Kardinalität besitzen, die innerhalb
des durch wi angegebenen Intervalls liegt.
Im Falle eines konstant vorgegebenen Sortenargumentes muß der Knoten ki entweder die
Sorte wi aufweisen oder eine ihrer Untersorten besitzen.
130
5.3 Arbeitsweise des Netzdeducers
Fragezentrierung
Netzdeducer − System
Literaldeducer
deduktiver
Inferenzteil
Fragebeantwortung
über Netzdeducer
(rel A B)
Fragezentr.−
Heuristik
Teilnetzdeducer
Heuristische
Steuerung
(rel1 A B)(rel2 C D) ... (rel n X Y)
Regelanwender
(rel1 A B)...(rel n X Y) −−> (rel1 A B)...(relm X Y)
Axiom−Verwaltung
Transformationskomp.
Axiom−Liste
Transformations−
Regelanwendung
Axiom−GUI
Prozedurale
Steuerung
Abbildung 34: Architektur des Netzdeducers und seiner Anwendungen
5.3 Arbeitsweise des Netzdeducers
Die in MWR integrierte Inferenzmaschine basiert auf dem sog. Netzdeducer-System, das
mit Hilfe eines objektorientierten Aufbaus die im vorangegangenen Kapitel beschriebenen Ableitungen durchführt. Der Netzdeducer bildet den Kern eines deduktiven Systems,
auf den die übrigen inferenzbasierten Methoden aufbauen. Abbildung 34 zeigt die Architektur des Netzdeducers und die Verwendung seiner Komponenten in den übrigen Anwendungen.
Der Netzdeducer besteht aus drei objektorientiert realisierten Funktionsblöcken, die aufeinander aufbauen. Als Grundbaustein des Beweisverfahrens dient der Literaldeducer, der
ein Objekt zur Ableitung von Literalen anbietet. Das Literaldeducer-Objekt berechnet alle
Ableitungen eines als Beweisziel vorgegebenen Literals mittels einer exhaustiven Suche
über der Wissensbasis unter Zuhilfenahme der Axiome. Zur Verkleinerung des Hypothesenraumes kann die Menge der bei der Ableitung einsetzbaren Axiome eingeschränkt
werden sowie eine Liste von bereits bestehenden Variablensubstitutionen angegeben werden. Da die Suche nach allen Lösungen gegebenenfalls sehr lange dauert, verfahren alle
Objekte des Netzdeducers nach der Konvention, pro Aufruf nur eine bisher noch nicht
erzeugte Lösung zu ermitteln. Auf diese Weise kann die Suche nach dem Erreichen der
ersten Lösung abgebrochen werden, wenn die konkrete Inferenzaufgabe keine alternativen Lösungen benötigt. Anderenfalls können alle möglichen Lösungen durch iteriertes
Aufrufen des Objektes berechnet werden.
Die nächsthöhere Stufe des Netzdeducer-Systems wird durch den Teilnetzdeducer gebildet. Seine Aufgabe besteht darin, ein Teilnetz abzuleiten, das aus einer Folge von Literalen besteht, die konjunktiv verknüpft sind. Falls in verschiedenen Literalen des Teilnet131
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
zes gleiche Variablennamen vorkommen, so müssen diese mit den gleichen Konzeptknoten substituiert werden. Das Teilnetzdeducer-Objekt erzeugt intern für jedes Literal ein
Literaldeducer-Objekt, und liefert bei jedem Aufruf die nächste mögliche Ableitung für
die gegebene Literalfolge (oder das Symbol der leeren Menge, wenn alle Beweismöglichkeiten erschöpft sind).
Mit dem Regelanwender wird die abschließende Stufe des Netzdeducer-Systems gebildet.
Regelanwender-Objekte bearbeiten komplette Regeln, die der formalen Sprache aus Kap.
5.2.2 genügen müssen. Das Regelanwender-Objekt nutzt ein Teilnetzdeducer-Objekt zur
Ableitung der linken Regelseite, enthält zusätzliche Methoden zur Anwendung der prozeduralen Restriktionen und liefert schließlich die komplett instantiierte rechte Regelseite,
solange sich neue Belegungen beweisen lassen.
Verwaltung des Regelsystems. Das für den Regelanwender zur Verfügung stehende
Regelsystem wird über die Komponente “Axiom-Verwaltung” gepflegt, in der die Liste
der zur Verfügung stehenden Axiome verwaltet und in der graphischen Benutzeroberfläche (s. Kap. 3.6.1) zugänglich gemacht wird. Auf ein explizites Einzeichnen einer Verbindung zwischen der Axiomverwaltung und den übrigen inferenzbasierten Komponenten
(zur Transformation oder Fragebeantwortung) wurde verzichtet, da die Axiomverwaltung
über das Netzdeducer-System automatisch allen Modulen zur Verfügung steht, die eines
der Objekte des Netzdeducers einsetzen.
Einbindung der Anwendungen. Die Anwendungen des Netzdeducers sind an verschiedenen Stellen in die Objekthierarchie eingebunden. Die Regelauswertung der Transformationskonponente wird direkt aus einer Instanz des Regelanwenders objektorientiert
konstruiert, da es bei der Transformation hauptsächlich darum geht, Regeln anzuwenden
und ihre rechten Seiten prozedural auszuwerten.
In der Fragebeantwortung mit Hilfe des Netzdeducers wird versucht, das Fragemuster
nach einer kurzen heuristischen Umformung aus dem Hintergrundwissen unter Hinzuziehung der Axiome abzuleiten. Da das Fragemuster formal die Struktur eines semantischen (Teil-)Netzes mit Variablen aufweist, wird diese Ableitung mit Hilfe eines
Teilnetzdeducer-Objektes durchgeführt (s. Kap. 5.4.1).
Die Fragezentrierung läßt sich nicht direkt auf eine Komponente des Netzdeducers abbilden, da sie einige Heuristiken enthält, die sich von den Strategien des Netzdeducers zur
Ableitung von Teilnetzen und zur Anwendung von Axiomen unterscheiden. Insbesondere
die Steuerung des Beweisweges innerhalb des Fragemusters unterscheidet sich von der
Suchstrategie des Netzdeducers. Der Beweis von Literalen geschieht bei der Fragezentrierung jedoch analog, so daß Literaldeducer-Objekte im deduktiven Teil der Fragezentrierung eingesetzt werden können.
Konventionen zur Beschreibung der Netzdeducer-Algorithmen. Bei der algorithmischen Beschreibung der Netzdeducer-Komponenten ist der objektorientierte Aufbau zu
berücksichtigen. Jedes Objekt verfügt über eine “init”-Methode, die bei seiner Erzeugung einmal ausgeführt wird, um beispielsweise lokale Variablen zu initialisieren und
132
5.3 Arbeitsweise des Netzdeducers
damit den internen Zustand des Objektes festzulegen. Die Hauptarbeit wird in der “infer”Methode geleistet, die pro Aufruf des Objektes einmal aktiv wird. Der interne Zustand des
Objektes nach der Bearbeitung der “infer”-Methode bildet den Ausgangszustand für den
nächsten Aufruf der “infer”-Methode. Ferner verfügt jedes Objekt über einen “input”Block, in dem die Eingabeparameter des Objektes vereinbart werden.
Um von den technischen Details der Erzeugung von Objekten zu abstrahieren, wird im
Folgenden für jedes Objekt vom Typ obj-name ein Konstruktor create-obj-name(inputParameter) angenommen, der ein neues Objekt vom angegebenen Typ erzeugt, es mit den
“input-Parametern” initialisiert, die dem “input”-Teil des Objektes entsprechen, und die
“init”-Methode ausführt. Für den Aufruf der übrigen Objekt-Methoden gilt die übliche
“Punktnotation”; siehe dazu auch das nachfolgende Beispiel, in dem eine neue Instanz
des unten definierten Literaldeducer-Objektes erzeugt und anschließend dessen “infer”Methode aufgerufen wird:
new obj ← create-literal-deducer(literal, subst-list, rule-list)
result ← new obj.infer();
Die algorithmischen Komponenten der Netzdeducer-Objekte werden mit Hilfe einer Pascal-artigen Pseudocode-Sprache beschrieben. Zuweisungen werden durch den linken
Pfeil (“ a ← b”) ausgedrückt. Variablen werden automatisch erzeugt und typisiert. Für
die übrigen Sprachelemente wie if ... then ... else ... fi und Vergleichsoperatoren wie “=”,
“<=” etc. gelten die Standardinterpretationen.
5.3.1 Literaldeducer
Literaldeducer-Objekt
input: complex-literal
subst-list
rule-list
(* zu beweisendes Literal mit inneren Disjunktionen
(* Liste bereits bestehender Substitutionen
(* zum Beweis hinzuziehbare Regeln
(* Die Wissensbasis kann man sich virtuell als eine Liste von Knoten
(* und Kanten vorstellen, zu denen es die folgenden Funktionen gibt:
(* first(list)
: liefert das erste Listenelement
(* rest(list)
: liefert list ohne das erste Element
(* node-out-edges(node) : liefert die Liste der ausgehenden
(*
Kanten eines Knotens
init:
*)
*)
*)
*)
*)
*)
*)
*)
*)
← Liste aller Knoten der Wissensbasis;
← node-out-edges(first(nodes));
← rest(nodes);
← erste Kombination aus innerer Disjunktion von complex-literal;
vgl. die nachf. Bemerkungen zu Punkt 6 der Infer-Methode
literal ← substitute(literal, subst-list);
(* Subst. in literal einarbeiten *)
remaining-rules
← rule-list;
(* Laufzeiger in Regelliste *)
cache-used
← false;
rule-applier-object ← Ø;
(* Objekt für aktuell in Auswertung *)
(* befindliche Regel *)
nodes
edges
nodes
literal
133
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Literaldeducer-Objekt (Fortsetzung)
infer: (* Versuche Matching mit dem Kopf der aktuellen Kantenliste *)
(* Die match–Prozedur wird am Ende des Unterkapitels definiert. *)
1
if edges 6= Ø
then test-literal
← first(edges);
edges
← rest(edges);
new-substitutions ← match(literal,test-literal,subst-list);
if new-substitutions 6= Ø
then return new-substitutions;
(* Matching war erfolgreich *)
else retry infer;
(* kein Matching, von vorne anfangen *)
fi;
fi;
(* Die aktuelle Kantenliste ist leer. Gehe zum nächsten Knoten über und
(* initialisiere die Kantenliste neu.
2
if nodes 6= Ø
then edges ← node-out-edges(first(nodes));
nodes ← rest(nodes);
retry infer;
fi;
(* von vorne anfangen *)
(* Alle Knoten und Kanten des Hintergrundwissens abgesucht. Versuche,
(* ein Matching mit einem bereits abgeleiteten Literal aus dem Cache zu
(* finden (s. Punkt 4 aus Kap. 5.3.3 zur Erzeugung der Cache-Einträge
(* und Kap. 5.3.5 zum generellen Cache-Verfahren).
3
134
*)
*)
*)
*)
if cache-used = false
then cache-used ← true;
edges
← Liste der Literale aus dem Cache;
retry infer;
(* von vorne anfangen *)
fi;
(* Falls bereits eine Regel mit Hilfe eines Regelanwender-Objektes
(* ausgewertet wird, teste zunächst, ob das Objekt eine weitere
(* Instantiierung der Regel liefern kann. Wenn diese Instantiierung neue
(* Literale liefert, übernimm die Literale als neue Kantenliste
(* und versuche damit erneut ein Matching.
4
*)
*)
*)
*)
*)
*)
*)
if rule-applier-object 6= Ø
(* Objekt existiert *)
then inferred-literals ← rule-applier-object.infer();
(* Objekt aufrufen *)
if inferred-literals = Ø
then rule-applier-object ← Ø;
(* Objekt und Regel verbraucht*)
else edges ← inferred-literals;
(* neue Kantenliste *)
fi;
retry infer;
(* von vorne anfangen *)
fi;
5.3 Arbeitsweise des Netzdeducers
Literaldeducer-Objekt (Ende)
(* Wenn die aktuelle Regel verbraucht ist, versuche eine neue Regel zu
(* finden und erzeuge dazu ein neues Regelanwender-Objekt.
(* Das Prädikat rule-applicable(literal,rule) prüft, ob in rule eine
(* Relation/Funktion enthalten ist, die auf literal paßt. Anderenfalls
(* kann die Regel gleich verworfen werden.
5
if remaining-rules 6= Ø
then test-rule
← first(remaining-rules);
remaining-rules ← rest(remaining-rules);
if rule-applicable(literal,test-rule)
(* s. obige Erläuterung *)
then rule-applier-object ←
(* neues Objekt erzeugen *)
create-rule-applier-object(test-rule, Ø, rules);
fi;
retry infer;
(* von vorne anfangen mit neuer Regel *)
fi;
(* Alle Regeln verbraucht. Wenn aus der inneren Disjunktion noch nicht
(* alle Kombinationen probiert worden sind, initialisiere das Objekt
(* mit der nächsten Kombination neu.
6
*)
*)
*)
*)
*)
*)
*)
*)
if <noch nicht alle Kombinationen der inneren Disjunktion probiert>
then nodes
← Liste aller Knoten der Wissensbasis;
edges
← node-out-edges(first(nodes));
nodes
← rest(nodes);
literal
← nächste Kombination aus innerer Disjunktion;
literal
← substitute(literal, subst-list);
remaining-rules
← rule-list;
cache-used
← false;
rule-applier-object ← Ø;
retry infer;
fi;
(* Wenn auch alle Kombinationen der inneren Disjunktionen verbraucht
(* sind, existieren keine weiteren Ableitungen mehr.
*)
*)
return Ø;
In der “infer”-Methode befindet sich die eigentliche Arbeitsschleife des LiteraldeducerObjektes. Die Grundidee des Verfahrens besteht darin, das gegebene Literal gegen eine
Liste von M ULTI N ET-Relationen bzw. Funktionen zu matchen (Stufe 1 ). Diese Liste
enthält eine Menge von Grundliteralen, die als potentielle Matching-Kandidaten zu überprüfen sind. Wenn in der Liste ein geeigneter Matchingkandidat gefunden wurde, war das
Objekt erfolgreich und die resultierende Substitutionsliste wird zurückgegeben. Anderenfalls wird die Liste weiter durchlaufen bzw. aus verschiedenen Quellen (Stufen 2 bis 6 )
wieder aufgefüllt:
135
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
1 Hauptschleife des Literaldeducers (Versuch der direkten Ableitung des Literals).
Das vorgegebene Literal wird gegen den Kopf der Liste edges nach dem in Kap.
5.2.1 beschriebenen und am Ende dieses Unterkapitels formalisierten Verfahren gemacht. Im Erfolgsfall wird die aus dem Matching resultierende Substitutionsliste
zurückgegeben; anderenfalls geht die Suche im Rest der Liste weiter.
2 Abarbeiten der Wissensbasis. Wenn die edges–Liste leer ist, gehe zum nächsten
Knoten der Wissensbasis über und fülle die Liste aus dessen ausgehenden Kanten
wieder auf. Auf diese Weise werden alle Relationen/Funktionen der Wissensbasis
dem Matching zugeführt.
3 Wenn alle Knoten der Wissensbasis abgearbeitet sind, fülle die edges–Liste aus dem
Cache der bereits abgeleiteten Literale (s. Kap. 5.3.5).
4 Abarbeiten einer Regel (Versuch der indirekten Ableitung des Literals). Falls bereits
eine Regel mit Hilfe eines Regelanwender-Objektes ausgewertet wird, und dieses
Objekt eine weitere Instantiierung der Regel liefern kann, wird versucht, das gegebene Literal mit Hilfe der Konklusion abzuleiten. Zu diesem Zweck wird die
edges-Liste mit der instantiierten Konklusion der Regel neu aufgefüllt. Insgesamt
werden durch diesen Schritt alle Möglichkeiten überprüft, die aktuelle Regel zum
Beweis des Literals zu verwenden.
5 Abarbeiten der Regelmenge. Liefert das Regelanwender-Objekt keine weiteren Instantiierungen, so initialisiere ein neues Regelanwender-Objekt aus dem Rest der
Regelmenge. Regeln, die keine zu dem Literal passende Relation oder Funktion in
der Konklusion besitzen, werden von vorneherein nicht berücksichtigt.
6 Behandlung von inneren Disjunktionen. Das Verfahren behandelt innere Disjunktion so, daß es eine “ausmultiplizierte” Liste aller möglichen Kombinationen erzeugt
und jedes darin enthaltene Literal einzeln abzuleiten versucht. Wenn alle vorangegangenen Stufen für ein Literal dieser Liste ausgeschöpft worden sind, beginnt der
Inferenzprozeß für das nächste Literal ab Stufe 2 erneut44 .
Nach dem Durchführen einer der Stufen 2 bis 6 fährt das Verfahren mit Stufe 1 fort.
Die entsprechende “retry infer”–Anweisung kann man sich als einen Sprungbefehl an die
“infer”-Marke oder als eine zusätzliche, nicht explizit angegebene äußere while-Schleife
vorstellen.
Der innere Zustand des Objektes, also z.B. die Werte aller verwendeten Variablen, bleibt
zwischen zwei Aufrufen der “infer”-Methode erhalten. Damit ist sichergestellt, daß der
Inferenzprozeß genau nach der Stelle fortgesetzt wird, an der die letzte Ableitung erzielt
wurde. Wenn das Objekt n-mal aufgerufen werden kann, bevor es ein Fehlschlagen der
Ableitung signalisiert, bedeutet dies, daß genau n Ableitungen für das gegebene Literal
existieren und daß jede Ableitung davon genau einmal zurückgeliefert worden ist.
44
Würde man die Behandlung der inneren Disjunktionen in die anderen Stufen mit einarbeiten, so
ergäben sich dort viele zusätzliche Fallunterscheidungen und Umformungen, die sich in realen Programmen
in Bezug auf die Laufzeit negativ auswirken. Da Literale mit inneren Disjunktionen relativ selten auftreten,
und die “Programmlogik” zur Wiederholung der Stufen 1 bis 5 effizient realisierbar ist, ergeben sich unter
realen Einsatzbedingungen für die hier gezeigte Struktur des Algorithmus substantielle Zeitvorteile.
136
5.3 Arbeitsweise des Netzdeducers
Abschließend für dieses Unterkapitel sei die formale Definition der “match”–Funktion
gegeben, die eine zentrale Rolle in Stufe 1 spielt:
G-Matching zweier Literale
(* Matchen von zwei Literalen nach dem Verfahren von Kap. 5.2.1
(* edge-rel(literal) : liefert den Relations/Funktionsnamen von literal.
(* edge-args(literal) : liefert die Argumenteliste von literal.
*)
*)
*)
match(literal, test-literal, subst-list)
lit-rel
← edge-rel(literal);
lit-args ← edge-args(literal);
test-rel ← edge-rel(test-literal);
test-args ← edge-args(test-literal);
(* Übereinstimmung der Relationen und der Länge der Argumentelisten
*)
(* sind triviale Bedingungen für ein Matching.
*)
if lit-rel 6= test-rel ∨ |lit-args| =
6 |test-args|
then return Ø;
(* kein Matching *)
fi;
(* Führe explizites Matching der einzelnen Argumente durch. *)
return match-args(lit-args, test-args, subst-list);
end match;
(* Vergleichen zweier Argumentelisten.
(* constant?(arg) : soll “true” liefern,
(*
wenn arg ein konstantes Argument ist.
match-args(lit-args, test-args, subst-list)
if lit-args = Ø
then return subst-list;
fi;
*)
*)
*)
(* rekursive Abbruchbedingung *)
(* Matching erfolgreich *)
l-arg ← first(lit-args);
(* nächstes Argumentepaar extrahieren *)
t-arg ← first(test-args);
if constant?(l-arg)
(* s. obige Bemerkung *)
then if l-arg = t-arg
then match-args(rest(lit-args), rest(test-args), subst-list);
else return Ø;
(* kein Matching *)
fi;
else subst-list ← subst-list ∪ { t-arg/l-arg };
(* l-arg ist Variable *)
match-args(rest(lit-args), rest(test-args), subst-list);
fi;
137
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Besondere Eigenschaften des Literaldeducer-Objektes.
• Die Menge der zum Beweis eines Literals hinzuziehbaren Regeln kann explizit über
den rule-list–Parameter gesteuert werden.
Dadurch lassen sich spezielle Heuristiken zur Beschränkung der Rekursionstiefe
(z.B. bei Transitivitäts-Axiomen) realisieren, indem jede Regel mit einem Aufrufzähler und einem Limit versehen wird, nach dessen Erreichen sie aus der Liste
entfernt wird (entsprechende Abfragen sind aus Gründen der Vereinfachung nicht
im vorseitig beschriebenen Algorithmus aufgeführt). Weiterhin läßt sich der Literaldeducer durch diese Eigenschaft je nach Beweisziel mit einer speziellen Teilmenge
von Regeln einsetzen. Dies wird z.B. vom Transformationsverfahren des NLI ausgenutzt, das für jedes Datenbankattribut als Beweisziel eine vorsortierte Teilmenge
von Regeln einsetzt. Auf diese Weise werden die Fälle verringert, in denen Regeln
probiert werden, die den Ableitungsprozeß nicht vorantreiben.
• Es können beliebig viele Instanzen des Literaldeducers erzeugt werden.
Die Anzahl der gleichzeitig aktiven Instanzen des Literaldeducers ist nicht beschränkt, da sich die Literaldeducer-Objekte nicht gegenseitig beeinflussen. Im
Teilnetzdeducer des nächsten Kapitels werden z.B. zum Beweis eines Teilnetzes mit
n Literalen entsprechend n Literaldeducer-Objekte eingesetzt, um das Teilnetz mit
Hilfe einer Tiefensuche abzuleiten. Im Verlauf der Knotenentwicklung der Fragezentrierung (Kap. 5.4.2) ist es sogar möglich, daß mehrere Literaldeducer-Objekte
zu dem gleichen Literal (aber in verschiedenen Phasen des Ableitungsprozesses)
existieren, wenn im Suchbaum Frageknoten mehrfach vorhanden sind.
• Steuerbarkeit der Ableitungsstrategie.
Das Literaldeducer-Objekt gibt bei jedem Aufruf genau eine weitere Ableitung des
gegebenen Literals zurück. Dadurch kann in Abhängigkeit von der konkreten Anwendung entschieden werden, ob der Ableitungsprozeß nach der ersten Lösung unterbrochen wird oder eine vollständige Berechnung aller Ableitungen (durch wiederholten Aufruf des Objektes bis zum Fehlschlagen neuer Ableitungen) vorgenommen wird. Dies ermöglicht eine feinere Steuerung des Ableitungsprozesses als z.B.
in Prolog-Systemen, die den Lösungsraum vollständig absuchen. Das Fragezentrierungsverfahren (s. Kap. 5.4.1), bei dem es nur auf eine Lösung ankommt bzw. nur
eine Lösung existiert, läßt sich daher auf der Grundlage der Literaldeducer-Objekte
effizienter realisieren als innerhalb einer Prolog-artigen Architektur.
5.3.2 Teilnetzdeducer
Der objektorientierte Aufbau des Teilnetzdeducers entspricht dem Aufbau des Literaldeducers mit dem Unterschied, daß eine Liste (Folge) von Literalen als Beweisziel verarbeitet wird. Eine erfolgreiche Ableitung des Teilnetzes wird durch die Rückgabe der
entsprechenden Substitutionsliste angezeigt. Auf der nächsten Seite wird zunächst eine
Pseudocode-Version des Teilnetzdeducers angegeben, gefolgt von einer Beschreibung der
generellen Vorgehensweise beim Ableiten von Teilnetzen.
138
5.3 Arbeitsweise des Netzdeducers
Teilnetzdeducer-Objekt
input: net-literals
subst-list
rule-list
(* zu beweisendes Teilnetz (eine Liste von Literalen) *)
(* Liste bereits bestehender Substitutionen *)
(* zum Beweis hinzuziehbare Regeln *)
(* Für Listen seien zusätzlich zu den in Kap. 5.3.1 verwendeten Opera(* toren ein Satz von Operatoren gegeben, um die Listen Stack-artig
(* einzusetzen:
*)
*)
*)
(* top(list)
(* pop(list)
(* push(list,item)
*)
*)
*)
: liefert das erste Listenelement
: verkürzt die Liste um das erste Element
: fügt item als erstes Listenelement ein
(* Zur Motivation der Initialisierungen in der “init”-Methode siehe die
(* Ausführungen im nachfolgenden Text.
*)
*)
init: litdeducer-stack ← push(Ø, create-literal-deducer(first(net-literals),
subst-list,
rule-list);
proven-literals ← push(Ø, first(net-literals));
net-stack
← rest(net-literals);
infer: while literal-stack 6= Ø
1
do litdeducer-obj
← top(litdeducer-stack);
new-substitutions ← litdeducer-obj.infer();
(* Versuche eine weitere *)
(* Ableitung für akt. Literal *)
2
if new-substitutions = Ø
(* aktueller Literal-Deducer verbraucht *)
then pop(litdeducer-stack);
(* Backtracking *)
push(net-stack, top(proven-literals));
pop(proven-literals);
retry infer;
(* while-Schleife neu beginnen *)
fi;
3
if net-stack = Ø
then return new-substitutions;
(* Teilnetz-Ableitung erfolgreich *)
4
litdeducer-stack ← push(litdeducer-stack,
create-literal-deducer(first(net-stack),
new-substitutions,
rule-list));
proven-literals ← push(proven-literals, first(net-stack));
pop(net-stack);
od;
(* Ende der while-Schleife *)
5
return Ø;
(* keine weiteren Ableitungen mehr möglich *)
Die Ableitung des Teilnetzes wird mit Hilfe von Stacks gesteuert. Auf dem net-stack
werden die noch unbewiesenen Literale des Teilnetzes gespeichert, während auf litdeducer-stack und proven-literals die Literaldeducer-Objekte und die zugehörigen Literale
abgelegt werden, für die bereits eine Ableitung gefunden worden ist.
139
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
In der “init”-Methode wird für das erste Netzelement ein Literaldeducer-Objekt erzeugt
und der litdeducer-stack sowie proven-literals entsprechend initialisiert. Diese Vorinitialisierung ist notwendig, da im späteren Verlauf des Algorithmus durch litdeducer-stack =
Ø angezeigt wird, daß kein weiteres Backtracking und damit keine weiteren Ableitungen
des Teilnetzes mehr möglich sind. Der net-stack wird dementsprechend mit der um das
erste Element verkürzten Liste der Teilnetz-Literale initialisiert.
Die eigentliche Ableitung des Teilnetzes findet in der “infer”-Methode statt, die jedesmal
aktiv wird, wenn das Teilnetzdeducer-Objekt aufgerufen wird. In der “infer”-Methode
wird zunächst geprüft, ob noch weitere Ableitungen des Teilnetzes möglich sind (litdeducer-stack 6= Ø). Anschließend werden die folgenden Schritte ausgeführt:
1 Zunächst wird das oberste Literaldeducer-Objekt vom litdeducer-stack geholt und
aufgefordert, eine neue Ableitung “seines” Literals zu liefern. Da in dem Algorithmus die Invariante gilt, daß alle Vorgänger eines Objektes bereits “ihre” Literale
abgeleitet haben, wird durch diesen Schritt die Ableitung des Teilnetzes um ein
Literal vorangetrieben.
2 Wenn das Literaldeducer-Objekt keine Ableitung liefern konnte (new-substitutions
= Ø), ist der Ableitungsprozeß an dieser Stelle in eine Sackgasse geraten. Es wird
nun ein Backtracking-Schritt durchgeführt: Das Objekt wird vom litdeducer-stack
entfernt und das zugehörige Literal gilt wieder als unbewiesen, d.h. es wird erneut auf den net-stack gelegt. Anschließend wird die while-Schleife wiederholt,
wodurch das darunterliegende Literaldeducer-Objekt aufgefordert wird, eine alternative Ableitung des Vorgänger-Literals abzugeben. Auf diese Weise schreitet das
Backtracking entweder fort (erneutes Zutreffen von Fall 2 auf das Vorgängerliteral im zu beweisenden Ausdruck) oder der Beweis des Teilnetzes wird in einem
anderen Beweiszweig fortgeführt (Fall 4 ).
3 Falls net-stack = Ø gilt, so wurde in Schritt 1 das letzte fehlende Literal des
Teilnetzes abgeleitet. Da die Literaldeducer-Objekte so aufgebaut sind, daß sie
der Eingabesubstitutionsliste ihre eigenen Substitutionen hinzufügen, sind in newsubstitutions alle Substitutionen gesammelt, die zur Ableitung des Teilnetzes benötigt wurden, und new-substitutions wird daher als Ergebnis zurückgegeben.
4 Wenn in Schritt 1 ein Literal erfolgreich abgeleitet wurde, aber noch weitere Literale zu beweisen sind, wird in diesem Schritt ein neues Literaldeducer-Objekt
für das nächste zu beweisende Literal erzeugt und die Stacks werden entsprechend
angepaßt. Anschließend startet ein neuer Durchlauf der while-Schleife.
5 Die while-Schleife wird verlassen, wenn im Zuge des Backtrackings das letzte Objekt vom litdeducer-stack entfernt worden ist. In diesem Fall sind alle Literalkombinationen probiert worden und keine weiteren Ableitungen des Teilnetzes sind mehr
möglich.
140
5.3 Arbeitsweise des Netzdeducers
5.3.3 Regelanwender
Der Regelanwender weist die gleiche objektorientierte Struktur wie die übrigen Netzdeducer-Objekte auf. Der Regelanwender akzeptiert Regeln als Eingabe und liefert die vollständig instantiierte Konklusion der Regel als Ausgabe, wenn sich die linke Regelseite
ableiten ließ. Durch mehrmaliges Aufrufen des Regelanwenders lassen sich alle Instantiierungen der Regel erhalten. Im Gegensatz zu den anderen Objekten ist der Regelanwender sequentiell (d.h. ohne innere Schleifen) aufgebaut, da er im Wesentlichen über den
Teilnetzdeducer eine Ableitung der linken Regelseite anfordert und die erhaltenen Substitutionen weiterverarbeitet. Der nachfolgende Algorithmus behandelt nur den Fall einer
Implikation, da der Fall A ↔ B auf zwei Regeln A → B und B → A zurückführbar ist
(s. Kap. 5.2.1).
Regelanwender-Objekt
input: rule
subst-list
rule-list
(* zu bearbeitende Regel *)
(* Liste bereits bestehender Subst. *)
(* zur Ableitung rekursiv hinzuziehbare Regeln *)
(* Regeln seien gemäß der Regelsprache aus Kap. 5.2.2 geeignet codiert.
(* Prämisse, Konklusion sowie die prozeduralen Restriktionen der Kon(* klusion seien über entsprechende Zugriffsfunktionen premise,
(* conclusion, und conclusion-procs erreichbar.
init:
*)
*)
*)
*)
net-deducer-obj ← create-net-deducer(premise(rule),
subst-list,
rule-list);
infer: new-substitutions ← net-deducer-obj.infer();
1
if new-substitutions = Ø
then return Ø;
fi;
(* keine weitere Ableitung möglich *)
2
instantiated-conclusion ← substitute-literals(conclusion(rule),
new-substitutions);
instantiated-conclusion ← treat-ex-quantif(instantiated-conclusion, rule);
3
proc-list
← conclusion-procs(rule);
if proc-list 6= Ø
then proc-substitutions
← apply-procs(rule, new-substitutions);
instantiated-conclusion ← substitute-literals(instantiated-conclusion,
proc-substitutions)
fi;
cache-literals(instantiated-conclusion);
return instantiated-conclusion;
4
5
Die einzige Funktion der “init”–Methode des Regelanwenders besteht darin, ein Teilnetzdeducer-Objekt zur Ableitung der linken Regelseite zu erzeugen. Das TeilnetzdeducerObjekt dient gleichzeitig als Zustandsspeicher zwischen den einzelnen Regelanwender141
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Aufrufen, da es intern den Fortschritt der Ableitung der linken Regelseite vermerkt.
In der “infer”-Methode fordert der Regelanwender zunächst eine bzw. die nächste Ableitung der linken Regelseite von dem Teilnetzdeducer-Objekt an. Ist die Ableitung leer,
so scheitert die Regelauswertung an dieser Stelle (Schritt 1 ). Anderenfalls wurde durch
die Ableitung der linken Regelseite eine Substitutionsliste geliefert, mit deren Hilfe nun
die Variablen der rechten Regelseite instantiiert werden können (Schritt 2 ). Die entsprechende Prozedur substitute-literals, die Variablennamen gegen Konstanten gemäß der
Substitutionsliste austauscht, ist trivial und wird an dieser Stelle nicht weiter ausgeführt.
Bei existenzquantifizierten Regeln ist es möglich, daß die Konklusion nach Einarbeitung
der Substitutionen noch freie existenzquantifizierte Variablen enthält. Ein typisches Beispiel ist ein Axiom, das aus einer Handlung ableitet, daß es einen zugehörigen Agenten
geben muß. Der konkrete Agent muß aber nicht in der Wissensbasis enthalten sein bzw.
aus der Wissensbasis inferierbar sein. Wenn der Agent nicht nachgewiesen werden kann,
wird für ihn stellvertretend eine beliebige, aber eindeutige und feste Konstante mit Hilfe
der Prozedur treat-ex-quantif eingesetzt. Das Beispiel zur Fragebeantwortung über den
Netzdeducer (Kap. 5.4.1) enthält einen konkreten Anwendungsfall.
Auf diese Weise liefert der Regelanwender stets Konklusionen, die keine Variablen mehr
enthalten, und genügt damit der Invariante aus der Beschreibung des Matching-Verfahrens
in Kap. 5.2.1, nach der nur Grundliterale aus der Anwendung einer Regel hervorgehen
dürfen.
Für den Fall, daß die Regelkonklusion prozedurale Restriktionen enthält (Fall 3 , proclist 6= Ø), müssen diese noch in die Konklusion eingearbeitet werden. Das entsprechende
Verfahren apply-procs ist sehr stark implementierungsabhängig und wird daher hier nur
umgangssprachlich beschrieben:
Die prozeduralen Restriktionen kann man sich analog zu einem Teilnetz als eine Liste von
Prozedur-Literalen vorstellen, die sequentiell abgearbeitet wird. Bevor eine Prozedur aufgerufen wird, werden ihre Aufrufparameter mit der Substitutionsliste new-substitutions
unifiziert. Auf diese Weise erhält die aufzurufende Prozedur aktuelle Parameter, die sich
aus der Ableitung der linken Regelseite ergeben (und aus der Auswertung prozeduraler
Restriktionen, die weiter links in der Liste stehen). Nach dem Aufruf der Prozedur werden die Wertebelegungen ihrer Rückgabeparameter der Substitutionsliste hinzugefügt, so
daß eine neue Substitutionsliste proc-substitutions entsteht. Da sich die neuen Substitutionen möglicherweise auf die M ULTI N ET-Literale der Konklusion auswirken, muß die
Konklusion nach der Auswertung der prozeduralen Restriktionen erneut einer Variablensubstitution anhand dieser Liste unterzogen werden.
Schließlich nimmt der Regelanwender die jetzt vollständig instantiierten Literale der Konklusion in den Cache der bereits abgeleiteten Literale auf (Schritt 4 , siehe auch Kap.
5.3.5 zum Literal-Cache), und die instantiierte Konklusion wird als Ergebnis der durchgeführten Ableitung zurückgegeben.
142
5.3 Arbeitsweise des Netzdeducers
c9
DIRCL
Hagen
(2)
AG
T
BS
SU
(1)
(3)
beweglich
Fahrrad
Peter
fahren
c1
SUB
(7)
(5)
SUB
SUB
c4
OP
INSTR
OP
PR
PR
(9)
(8)
PROP
T
AG
SU
BS
(6)
Fahrzeug
(4)
Auto
Beweisziel z = PROP(o, “beweglich”)
Axiom
ax55: SUB(o1,o2) ∧ PROP(o2,p) → PROP(o1,p)
Hilfsregel bax23: AGT(s,a) ∧ SUBS(s,”fahren”) ∧ INSTR(s,b) → SUB(b,”Fahrzeug”)
Abbildung 35: Eine einfache Inferenzaufgabe für den Netzdeducer
5.3.4 Komplexbeispiel: Anwendung als Theorembeweiser
Das Zusammenwirken der Netzdeducer-Komponenten soll an einem komplexen Beispiel
demonstriert werden. Als Grundlage für den Inferenzprozeß dient das semantische Netz
aus Abb. 35. Das linke Teilnetz enthält die Sachverhalte c9 = “Peter fährt nach Hagen”
und c1 = “Peter fährt mit dem Fahrrad”. Zwischen c1 und c9 besteht inhaltlich kein
Zusammenhang; die gemeinsamen Knoten “Peter” und “fahren” ergeben sich aus der Objektzentriertheit von M ULTI N ET, nach der jeder Begriffsrepräsentant nur einmal im Netz
vorkommen darf. Der Sachverhalt c1 wird im Verlauf des Ableitungsprozesses zu einer
Lösung beitragen, während der Sachverhalt c9 so konstruiert wurde, daß das System in
eine Sackgasse gerät und das Backtracking demonstriert werden kann. Das rechte Teilnetz beschreibt, daß Autos Fahrzeuge sind und daß Fahrzeuge beweglich (im Sinne einer
möglichen örtlichen Veränderung) sind. Die gestrichelten “PROP”- und “SUB”-Kanten
werden erst im Verlauf des Ableitungsprozesses durch ax55 bzw. bax23 erzeugt und dienen nur der Illustration des Ziels der Inferenzaufgabe.
Als Beweisziel z dient die Frage “Welche Objekte sind beweglich?”, oder formal z =
PROP(o,”beweglich”). Da die Konklusion von ax55 ein passendes Literal zu dem Beweisziel enthält, beginnt der Beweisprozeß damit, die Anwendung dieses Axioms zu versuchen. ax55 beschreibt die Vererbung einer Eigenschaft (PROP) über die Subordinationsbeziehung. Zur Ableitung der Prämisse von ax55 darf das Bedeutungspostulat bax23
hinzugezogen werden, in dem ausgesagt wird, daß das Instrument in einem Vorgang des
Fahrens ein Fahrzeug darstellt.
Um die Funktionsweise des Literaldeducers nachzuvollziehen, muß die Reihenfolge fest143
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
R1: ax55: SUB(o1,o2) PROP(o2,p) --> PROP(o1,p)
PROP("Auto","beweglich")
T1: SUB(o1,o2) PROP(o2,p)
L1: SUB(o1,o2)
k4: SUB("Auto",Fahrzeug")
L2: PROP("Fahrzeug",p)
k5: PROP("Fahrzeug","beweglich")
Abbildung 36: Entwicklung der ersten Lösung für ax55
gelegt werden, in der das semantische Netz nach passenden Literalen abgesucht wird. Der
Literaldeducer sucht die Wissensbasis knotenweise ab und betrachtet für jeden Knoten die
ausgehenden Kanten (vgl. Schritte 2 und 1 im Literaldeducer-Objekt). Die Reihenfolge der Knoten in der Wissensbasis sei “Hagen, c9, Auto, Fahrzeug, beweglich, Fahrrad,
c4, fahren, Peter, c1”. Von dieser Knotenreihenfolge ausgehend ist die in Abbildung 35
in “( )” angegebene Kantennumerierung eine mögliche Variante, die in der Wissensbasis
enthaltenen Relationen abzusuchen. Diese Reihenfolge wird für die nachfolgende Diskussion vorausgesetzt, die sich hauptsächlich an den Diagrammen aus Abb. 36 und 37
orientiert, um die Entwicklung des Beweisprozesses und der daran beteiligten Objekte zu
beschreiben. Als Ergänzung ist eine formale Darstellung mit Verweisen auf die jeweils
relevanten Teile des Algorithmus und auf die verwendeten Datenstrukturen im Anhang
11.3 enthalten.
Eine direkte Ableitung des Beweisziels ergibt sich durch PROP(“Fahrzeug”, ”beweglich”) über die entsprechende Kante des semantischen Netzes aus Abb. 35 und soll hier
nicht weiter ausgeführt werden. Zur indirekten Ableitung weiterer PROP(o,”beweglich”)Literale muß zunächst ein Axiom mit einer passenden Konklusion ermittelt werden. Im
vorliegenden Beispiel kann hierzu nur ax55 gewählt werden, und der Ableitungsprozeß
beginnt damit, daß ein Regelanwender R1 zur Anwendung von ax55 erzeugt wird (oberstes Objekt in Abb. 36). In der Abbildung sind für die verschiedenen Netzdeducer-Objekte
die entsprechenden Axiome, Teilnetze oder Literale angegeben, die zur Erreichung der jeweiligen Teilziele bearbeitet werden müssen. R1 zieht seinerseits einen Teilnetzdeducer
T1 heran, um eine Ableitung für die linke Seite von ax55 zu finden. In T1 wird zunächst
ein Literaldeducer L1 erzeugt, um das erste Literal des Teilnetzes abzuleiten. Dies gelingt
mit Kante 4 bzw. SUB(“Auto”,”Fahrzeug”), und es wird ein weiterer Literaldeducer L2
für das noch fehlende Literal erzeugt. L2 liefert ebenfalls eine Ableitung unter Verwendung von Kante 5. Damit hat T1 alle Literale des Teilnetzes bewiesen und die Liste der
dazu benötigten Substitutionen {“Fahrzeug”/o2, “Auto”/o1, “beweglich”/p } wird an den
Regelanwender R1 zurückgegeben. Dieser wendet die Substitutionen auf die Konklusion
von ax55 an und erhält damit PROP(“Auto”, “beweglich”) als Lösung für das Ziel z.
Um weitere Lösungen zu erhalten, wird der Regelanwender R1 erneut aufgerufen und
dadurch der Ableitungsprozeß bei Literaldeducer L2 fortgesetzt. Abbildung 37 beschreibt
144
5.3 Arbeitsweise des Netzdeducers
PROP("c4","beweglich")
R1: ax55: SUB(o1,o2) PROP(o2,p) --> PROP(o1,p)
T1: SUB(o1,o2) PROP(o2,p)
L1: SUB(o1,o2)
k4: SUB("Auto",Fahrzeug")
L2: PROP("Fahrzeug",p)
BT k5: PROP("Fahrzeug","beweglich")
Fortsetzung der Ableitung
nach erster Lösung
k6: SUB("c4","Fahrrad")
L3: PROP("Fahrrad",p)
L1 hat alle Kanten probiert
Anwendung von bax23
BT
(kein Ergebnis)
R2: bax23: AGT(s,a) SUBS(s,"fahren") INSTR(s,b) --> SUB(b,"Fahrzeug")
T2: AGT(s,a) SUBS(s,"fahren") INSTR(s,b)
L4: AGT(s,a)
k1: AGT("c9","Peter")
L5: SUBS("c9","fahren")
k3: SUBS("c9","fahren")
L6: INSTR("c9",b)
BT
BT (kein Ergebnis)
(kein weiteres Ergebnis)
k9: AGT("c1","Peter")
L7: SUBS("c1","fahren")
k8: SUBS("c1","fahren")
L8: INSTR("c1",b)
k7: INSTR("c1","c4")
SUB("c4","Fahrzeug") -- Abgeleitet über R2 bzw. bax23
L9: PROP("Fahrzeug",p)
k5: PROP("Fahrzeug","beweglich")
Abbildung 37: Entwicklung der zweiten Lösung für ax55
145
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
den weiteren Verlauf der Ableitung nach der gestrichelten horizontalen Linie. Da L2 nach
Kante 5 keine weitere Ableitung mehr finden kann, findet ein Backtracking (BT) zu L1
statt. L1 schlägt als nächste Kante 6 vor, die sich aber als Sackgasse erweist, da sich über
L3 kein dazu passendes “PROP”–Literal finden läßt.
Nach einem erneuten Backtracking-Schritt hat L1 alle Kanten aus der Wissensbasis für
eine direkte Ableitung probiert. Da die Konklusion von bax23 jedoch auf das zu beweisende Literal paßt, versucht L1 noch eine indirekte Ableitung von SUB(o1,o2) über diese
Regel. Dazu erzeugt es Regelanwender R2, der seinerseits den Teilnetzdeducer T2 zum
Beweis der linken Seite von bax23 hinzuzieht. Die Anwendung von bax23 verläuft analog
zur Anwendung der übergeordneten Regel. Zunächst versucht das System, die linke Seite
von bax23 mit dem durch “c9” gegebenen Sachverhalt mit Hilfe der Literaldeducer L4
bis L6 zu instantiieren. Dies scheitert jedoch an dem fehlenden “INSTR”-Literal in L6
und verursacht ein Backtracking zurück zu L4. L4 versucht anschließend das “richtige”
Literal “c1”, wodurch die Prämisse von bax23 mit Hilfe der Literaldeducer L7 und L8
instantiiert werden kann. Die resultierenden Substitutionen {“c1”/s, “Peter”/a, “c4”/b}
werden von R2 auf die Konklusion SUBS(b,”Fahrzeug”) von bax23 angewendet, woraus
sich SUB(“c4”, “Fahrzeug”) ergibt, das von R2 an den Aufrufer L1 weitergegeben wird.
Damit hat der Literaldeducer L1 eine weitere Beweismöglichkeit gefunden und der Ableitungsprozeß kann in T1 weiter vorangetrieben werden. Mit L9 wird die Instantiierung
der linken Seite von Axiom 55 komplettiert und durch Substitution der Konklusion von
ax55 als weitere Lösung PROP(“c4”, “beweglich”) abgeleitet, d.h. es wurde inferiert, daß
das von Peter benutzte Fahrrad beweglich ist.
Ein dritter Aufruf von R1 ergibt keine weitere Lösung (ohne Darstellung im Diagramm).
L9 kann keine weitere Ableitung liefern; dadurch erfolgt Backtracking zu L1. Der Versuch
von L1, eine weitere Ableitung über R2 zu erhalten scheitert, da L8, L7 und L4 ebenfalls
keine Ableitungen mehr liefern können. Da L1 über keine weiteren anwendbaren Regeln
mehr verfügt, wird der Ableitungsprozeß in T1 und damit auch in R1 ergebnislos beendet.
5.3.5 Optionale Erweiterungen: Literal-Cache und Hilfsprädikate
Das Netzdeducer-System verfügt über zwei spezielle Erweiterungen, die zur Optimierung
des Regelsystems und der Regelanwendungen eingesetzt werden können. Die Erweiterungen umfassen das Zwischenspeichern von Literalen, die über Regeln abgeleitet wurden,
und das Zulassen von Hilfsprädikaten, die ein kompakteres Formulieren von Regeln erlauben und in Verbindung mit dem Zwischenspeichern von Literalen Performanzvorteile
ergeben.
Der Einsatz beider Erweiterungen ist optional und kann je nach den Erfordernissen der
konkreten Anwendung vorgenommen werden.
Zwischenspeichern von Literalen. Während des Ableitungsprozesses kann es aufgrund von Backtracking und dem anschließenden Verfolgen von alternativen Beweiswegen dazu kommen, daß einige Literale einer Regel wiederholt mit den gleichen Belegungen abgeleitet werden müssen. Solange das betreffende Literal direkt aus der Wissensbasis abgeleitet werden kann, ist dies unproblematisch, da dieser Fall effizient realisierbar ist. Falls jedoch das Literal nur indirekt durch die Anwendung einer anderen Regel
146
5.3 Arbeitsweise des Netzdeducers
Ball
c1
SU
B
SU
B
Farbe
ATTR
c6
SU
B
SUB
PRO
P
ball1
VA
L
PROP
PROP
blau
ball2
Axiom
ax55: SUB(o1,o2) ∧ PROP(o2,p) → PROP(o1,p)
Hilfsregel ax11: ATTR(o1,o2) ∧ VAL(o2,w) → PROP(o1,w) proc (“P” = SORT w)
Abbildung 38: Einsatz des Literal-Caches
abgeleitet werden kann, verursacht die wiederholte Ableitung des Literals einen hohen
unnötigen Laufzeitaufwand.
In logischen Beweisverfahren wird als Lösung eine sog. Saturierung der Wissensbasis
durchgeführt, d.h. einmal abgeleitete Literale werden als neue Fakten permanent der Wissensbasis hinzugefügt. Dadurch wird es vermieden, eine Regel mehr als einmal für das
gleiche Beweisziel auszuwerten, da das Resultat ab dem zweiten Mal direkt in der Wissensbasis steht. Als Voraussetzung für die Saturierung in logischen Verfahren sind die
Widerspruchsfreiheit der abgeleiteten Fakten (dies muß per Konstruktion gelten) sowie
die Beschränkung auf monotone Schlußweisen erforderlich, da anderenfalls aufwendige
Revisionen der Wissensbasis notwendig werden.
Obwohl beide Voraussetzungen mit dem Netzdeducer in einer M ULTI N ET-Wissensbasis
erfüllbar sind, erscheint es sinnvoller, Resultate der Inferenz nur für den Kontext der aktuellen Inferenzaufgabe zu behalten und danach wieder zu verwerfen. Da die Resultate jederzeit wieder aus dem Regelsystem erschließbar sind, wird so ein Aufblähen der
Wissensbasis vermieden, und die Widerspruchsfreiheit bzw. Monotonie der benutzten
Schlüsse muß strenggenommen nur lokal gelten. Das Hauptziel, redundante Beweiswege
im Zuge des Backtrackings zu vermeiden, wird auf diese Weise trotzdem erreicht.
Das Netzdeducer-System vermerkt die inferierten Literale daher in einem sog. LiteralCache, der einen separaten Teil der Wissensbasis darstellt. Der Literaldeducer greift auf
den Literal-Cache zu, nachdem alle direkten Ableitungsmöglichkeiten mit der Wissensbasis erschöpft sind, aber noch bevor das Regelsystem zur indirekten Ableitung herangezogen wird (Stufe 3 im Algorithmus von Kap. 5.3.1). Das Auffüllen des Literal-Caches
geschieht im Regelanwender, nachdem die rechte Seite einer Regel vollständig instantiiert
worden ist (Stufe 4 in Kap. 5.3.3). Für den Zeitpunkt des Löschens der inferierten Lite147
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
rale gibt es keine feststehende Heuristik. Es ist der Anwendung selbst überlassen, ob sie
den Literal-Cache direkt nach der Auswertung einer Regel oder erst nach der Bearbeitung
mehrerer Regeln löscht. Auf diese Weise kann der Wirkungsbereich der gespeicherten
Literale beliebig gesteuert werden.
Beispiel. Das Beispiel aus Abb. 38 verdeutlicht die Verwendung des Literal-Caches.
In dem Beispielnetz sind zwei blaue Bälle ball1 und ball2 beschrieben. Mit Hilfe der
Axiome 55 und 11 sollen in der Wissensbasis Objekte nachgewiesen werden, denen die
Eigenschaft “blau”, also PROP(o,”blau”) zukommt. ax55 ist bereits aus Kapitel 5.3.4 bekannt, während ax11 aus einem Attribut/Wert-Paar eines Objektes eine Eigenschaft des
gleichen Objektes folgert. ax11 ist aber nur gültig, wenn die Eigenschaft w die Sorte
p (“property”) aufweist, also eine Eigenschaft im engeren Sinne darstellt. Die entsprechende Einschränkung des Axioms wird durch eine prozedurale Restriktion vorgenommen; dies ist aber für die weitere Diskussion nicht wichtig. Die in Abb. 38 gestrichelten
“PROP”-Kanten sowie die gepunktete Kante, die den Einsatz des Literal-Caches darstellt,
sind zu Anfang nicht in der Wissensbasis enthalten.
Die Beweisführung startet mit dem Beweisziel “PROP(o,”blau”)” sowie mit der Anwendung von Axiom 55:
[1] SUB(o1,o2) ∧ PROP(o2,“blau”) → PROP(o1,“blau”),
Subst. {“blau”/p}.
Zur Ableitung des ersten Literals wird o.B.d.A. zunächst die Substitution {“ball1”/o1}
gewählt, so daß sich folgender Zwischenstand des Beweisverfahrens ergibt:
[2] SUB(“ball1”,“c1”) ∧ PROP(“c1”,”blau”) → PROP(“ball1”,“blau”),
Subst. {“blau”/p, “ball1”/o1, “c1”/o2}.
Das zweite Literal der linken Regelseite kann nicht direkt aus der Wissensbasis abgeleitet
werden; es läßt sich jedoch mit Hilfe von Axiom 11 ableiten. Nachstehend ist nur der
Endzustand der Anwendung von Axiom 11 aufgeführt:
[3] ATTR(“c1”,“c6”) ∧ VAL(“c6”,“blau”) → PROP(“c1”, “blau”),
Subst. {“c1”/o1, “c6”/o2, “blau”/w}
Entscheidend ist dabei die Ableitung von PROP(“c1”,“blau”), mit dessen Hilfe die Instantiierung der Prämisse von Axiom 55 komplettiert wird. Das Literal PROP(“c1”, “blau”)
wird in den Literal-Cache eingetragen und steht damit anschließend in Form der gepunkteten Kante aus Abb. 38 direkt zur Verfügung45 .
Unter der Annahme, daß alle blauen Objekte in der Wissensbasis nachgewiesen werden
sollen, ist mit der Ableitung von PROP(“ball1”,“blau”) über Axiom 55 bzw. PROP(“c1”,
“blau”) über Axiom 11 erst ein Teilziel erreicht. Nach der Durchführung von Backtracking wird in Axiom 55 mit der Substitution {“ball2”/c1} schließlich ein alternativer
Beweisweg versucht:
[4] SUB(“ball2”,“c1”) ∧ PROP(“c1”,”blau”) → PROP(“ball2”,“blau”),
Subst. {“blau”/p, “ball2”/o1, “c1”/o2}.
45
Das Resultat von Axiom 55, PROP(“ball1”, “blau”) wird natürlich auch in den Literal-Cache eingetragen, da das Verfahren nicht voraussehen kann, welche Literale später noch einmal benötigt werden.
148
5.3 Arbeitsweise des Netzdeducers
Damit befindet sich der Beweisprozeß in der gleichen Situation wie in Schritt [2], nämlich
daß “PROP(“c1”,“blau”)” zur Instantiierung der Prämisse von Axiom 55 zu beweisen
ist. Bei einer naiven Durchführung des Verfahrens würde jetzt erneut die Ableitung von
“PROP(“c1”,“blau”)” indirekt über Axiom 11 durchgeführt und damit letztendlich der
gesamte Aufwand von Schritt [3] dupliziert werden. Tatsächlich nutzt der Literaldeducer
an dieser Stelle aber aus, daß sich das Literal “PROP(“c1”,“blau”) bereits im LiteralCache befindet, und führt die Ableitung direkt aus.
Beurteilung des Verfahrens. Das Literal-Caching bringt immer dann Vorteile, wenn
im Beweisprozeß intensives Backtracking betrieben wird. Falls links von dem im Cache
zwischengespeicherten Literal mehrere andere Literale stehen, ist es leicht möglich, daß
durch die Kombinatorik beim Backtracking eine signifikante Anzahl von Regelauswertungen eingespart wird. Dies gilt auch für den Fall, daß das Beweisverfahren nur an einer
Lösung interessiert ist, d.h. daß kein Backtracking bis zum endgültigen Fehlschlagen einer Regelanwendung durchgeführt wird.
Zwar wäre der Literal-Cache im obigen Beispiel nicht verwendet worden, wenn das Verfahren nach der ersten Lösung “PROP(“ball1”, “blau”)” gestoppt hätte. Bei komplexeren
Regeln ist es aber möglich, daß das Beweisverfahren einige Male über das zwischengespeicherte Literal hinaus in eine Sackgasse läuft, bevor die erste Lösung erreicht wird.
Allgemein ist also zu erwarten, daß das Zwischenspeichern von Literalen auch dann vorteilhaft ist, wenn es nicht auf ein erschöpfendes Absuchen aller inferierbaren Möglichkeiten ankommt.
Hilfsprädikate. Die zweite Erweiterung des Netzdeducers besteht in der Zulassung
von Hilfsprädikaten, also von Relationsnamen, die nicht Teil des M ULTI N ET-Paradigmas
sind.
Bei der Konstruktion großer Regelbasen kommt es vor, daß sich sogenannte “Regelfamilien” bilden, in denen sich ein großer Teil der Prämisse nicht unterscheidet. Insbesondere in
dem Transformationsregelsystem, das nach bestimmten Mustern in dem Fragenetz sucht,
ist dieser Effekt häufig zu beobachten. Dort bilden sich Regelfamilien nach dem Schema:
REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d) ∧ RELn (d,e) → REL(a,e)
REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d) ∧ RELm (a,e) → REL(d,e)
REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d) ∧ RELo (a,e) → REL(d,e)
u.s.w.
wobei RELn , RELm und RELo jeweils paarweise voneinander verschieden sind. Selbstverständlich können sich die Prämissen im allgemeinen Fall auch durch mehr als ein
Literal unterscheiden.
Im Verlauf des Beweisverfahrens führt diese Regelstruktur zu Ineffizienzen, da die Literale “REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d)” für jede Regel erneut bewiesen werden
müssen. Für den Wissensingenieur wird es außerdem schwieriger, die Gemeinsamkeiten zwischen den Regeln zu erkennen und die Wissensbasis zu pflegen. Eine Möglichkeit,
dieses Problem zu beheben besteht darin, das Regelsystem automatisch zu analysieren
und zu Regelklassen zusammenzufassen, vgl. dazu das Rete-Verfahren [For84]. Für den
Netzdeducer ist eine entsprechende automatische Optimierung des Regelsystems nicht
durchführbar, ohne die Regelsprache stark zu erweitern und damit den Ableitungsprozeß
149
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
zu erschweren. Jedoch kann das Regelsystem unter Verwendung von Hilfsprädikaten so
optimiert werden, daß die beschriebenen Probleme vermieden werden.
Um dies zu erreichen, werden die gleichlautenden Komponenten einer Regelfamilie zu
einer eigenen Regel zusammengefaßt, die als Ergebnis ein Literal mit einem Hilfsprädikat
ableitet. Dieses Hilfsprädikat wird anstelle der ursprünglichen Literale in der Regelfamilie
eingesetzt:
REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d) → HPRED(a,d)
HPRED(a,d) ∧ RELn (d,e) → REL(a,e)
HPRED(a,d) ∧ RELm (a,e) → REL(d,e)
HPRED(a,d) ∧ RELo (a,e) → REL(d,e)
Die Erzeugung von Hilfsprädikaten und deren Einsatz im Regelsystem wird momentan
von Hand durch den Wissensingenieur vorgenommen.
Eine automatische Erzeugung von Hilfsprädikaten ist denkbar, wenn das Regelsystem
iteriert aufgebaut wird, indem für jede neu hinzukommende Regel zunächst Übereinstimmungen mit bereits in der Wissensbasis enthaltenen Regeln ermittelt werden. Für die
Übereinstimmungen können automatisch Hilfsprädikate erzeugt werden und entsprechende Ersetzungen in den Regeln vorgenommen werden. Ein großer Nachteil automatischer
Vorgehensweisen besteht aber darin, daß bei zufälligen Gemeinsamkeiten zwischen zwei
Regeln Hilfsprädikate generiert werden, die semantisch keine Bedeutung haben bzw. Ableitungsregeln für Hilfsprädikate entstehen, zwischen deren Literalen kein semantischer
Zusammenhang besteht. Derartige Regeln sind jedoch aufgrund der fehlenden kognitiven
Adäquatheit (vgl. die Bemerkungen zur Implikation in Kap. 5.2) problematisch.
Beurteilung des Verfahrens. Zusammen mit dem Literal-Cache aus dem vorherigen
Abschnitt läßt sich die Verarbeitung von Regelfamilien deutlich effektivieren. Statt die
einzelnen Literale “REL1 (a,b) ∧ REL2 (b,c) ∧ REL3 (c,d)” für jede Regel erneut zu beweisen, genügt die einmalige Ableitung des Literals “HPRED(a,d)”, das anschließend im
Literal-Cache zur Verfügung steht. Durch die Verwendung von “sprechenden” Namen für
Hilfsprädikate wird die Lesbarkeit des Regelsystems deutlich erhöht.
Einschränkend muß aber gesagt werden, daß sich das Verfahren nicht uneingeschränkt
für M ULTI N ET-Axiome einsetzen läßt, da die Hilfskonzepte keine gültigen M ULTI N ETRelationen darstellen. Es wäre allerdings formal kein Widerspruch, Hilfskonzepte und
-regeln als “innere Regeln” zur Vereinfachung der linken Seiten von Axiomen einzusetzen, da die Hilfskonzepte formal durch die linke Seite der entsprechenden Hilfsregel
substituiert werden können. Gedanklich kann diese Substitution soweit vorangetrieben
werden, bis wieder alle Literale des Axioms durch “echte” M ULTI N ET-Relationen und
-Funktionen rückersetzt worden sind. Auf diese Weise würden Hilfskonzepte zwar innerhalb des Literal-Caches erzeugt werden, aber nie außerhalb des Inferenzprozesses bzw. in
der Wissensbasis sichtbar werden.
Für das Transformationsregelsystem gelten diese Einschränkungen natürlich nicht; dort
wird auf beiden Seiten der Regeln reger Gebrauch von Hilfskonzepten gemacht.
150
5.4 Fragebeantwortung
5.4 Fragebeantwortung
Das in den vorhergehenden Abschnitten vorgestellte Netzdeducer-System sowie die nachfolgend diskutierten Methoden zur Fragebeantwortung liefern einen wichtigen Beitrag zur
Entwicklung eines Frage-Antwort-Systems (FAS).
Ein Frage-Antwort-System (FAS) ist der Lage, mit einem menschlichen Benutzer in einen
natürlichsprachlichen Dialog zu treten, wobei Fragen des Benutzers mit Hilfe einer umfangreichen Wissensbasis vom System beantwortet werden, die ebenfalls automatisch
aus natürlichsprachlichen Informationen aufgebaut wurde. Nach [Hel01] verfügt ein FAS
über die folgenden Hauptkomponenten:
1. Eine natürlichsprachliche Analyse, mit deren Hilfe eine natürlichsprachliche Anfrage in eine semantische Repräsentation wie z.B. M ULTI N ET übersetzt wird. Diese
Komponente stützt sich auf ein umfangreiches Computerlexikon.
2. Eine Assimilationskomponente, um neue M ULTI N ET-Strukturen der Wissensbasis redundanzfrei und ohne lokale Widersprüche hinzuzufügen. Auf diese Weise
kann das FAS natürlichsprachlich “belehrt” und seine Wissensbasis ausgebaut werden.
3. Die Wissensbasis, in der die semantischen Repräsentationen von Informationen
aus den Belehrungsphasen sowie weiteres Hintergrundwissen abgelegt sind.
4. Eine Antwortfindungskomponente, die mit Hilfe von Inferenzprozessen zu einer
Anfrage die passenden Strukturen in der Wissensbasis findet.
5. Die Antwortgenerierung, um die gefundenen Antwortstrukturen wieder in natürlichsprachliche Sätze zurückzuübersetzen.
Punkt 1 ist weitgehend durch die WCFA [HH97] und das Computerlexikon HaGenLex
[Sch99] abgedeckt.
Für die Assimilation (Punkt 2) liefern die vorliegende Arbeit und [Mar02] einige Grundlagen. Die in MWR vorhandene Assimilationshilfe (vgl. Kap. 3.4.2) stellt einen ersten
Ansatz zur rechentechnischen Unterstützung des Assimilationsprozesses dar, während
das Netzdeducer-System den deduktiven Kern für komplexe, vollautomatische Assimilationsprozesse liefern kann. In Richtung der automatischen Assimilation sind jedoch
noch umfangreiche Nachfolgearbeiten zu leisten: Zum Beispiel ist eine Subsumptionsfunktion, die entscheidet, ob ein Konzept durch ein anderes Konzept subsumiert wird,
in M ULTI N ET deutlich komplexer aufgebaut als in anderen Wissensrepräsentationssystem wie z.B. in KL-ONE mit seinem Classifier [vLOK91]. Während in KL-ONE die
Beziehungen zwischen Konzepten nur durch eine eingeschränkte Anzahl von RelationsKanten (im Wesentlichen “Role”, “V/R” und “Restr”) ausgedrückt werden, gibt es in
M ULTI N ET mehrere Relationen, die zur Berechnung potentieller Subsumptionen interpretiert werden müssen. Direkte Konzepthierarchien können durch die Relationen SUB,
SUBM, PARS entstehen sowie durch die Relation LOC erzeugt werden in Verbindung mit
funktionalen Termen, die lokale Präpositionen (*IN, *AUF, ...) darstellen. Eigenschaften, anhand derer Konzepte bezüglich einer möglichen Subsumption vergleichbar werden, können u.a. durch Relationen wie ATTR, CHPA, CHPS, CHSA, DUR, ELMT, FIN,
151
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
INIT, PROP, QMOD, STRT, TEMP, VAL und VALR46 beschrieben werden; dies stellt einen
wesentlich komplexeren Apparat von Darstellungsmitteln dar als die “V/R”- und “Restr”Mechanismen von KL-ONE. Schließlich existieren in M ULTI N ET Relationen, mit denen
Konzepte untereinander in Beziehung gesetzt oder voneinander abgegrenzt werden; u.a.
durch ASSOC, ATTCH, CNVRS, COMPL, CONTR, CORR, CTXT, DISTG und EQU. Es
ist möglich, aber noch nicht genügend untersucht, daß auch diese Relationen Einfluß auf
die Subsumption von Konzepten haben.
Bei dem Vergleich von Konzepten untereinander ist in der Subsumptionsfunktion außerdem die Mehrdimensionalität von M ULTI N ET zu berücksichtigen. Insbesondere die Eigenschaft von Konzepten, zusätzlich Sorten und Layer-Attribute zu tragen, erfordert gegenüber einfacheren Wissensrepräsentationen mit “atomaren” Konzepten eine differenziertere Herangehensweise.
Auf dem Gebiet der Erkennung von Redundanzen und von lokalen Widersprüchen in der
Wissensbasis sind ebenfalls noch umfangreiche Arbeiten zu leisten. Hier ist besonders zu
beachten, daß die Einstufung einer Information als “wahr” oder “falsch” nur zwei Extremwerte darstellt, die allenfalls in begrenzten Sachdomänen realistisch ist. Im Normalfall
wird ein Verband verschiedener Glaubwürdigkeiten benötigt (s. [Hel01] Kap. 13), anhand dessen die Informationen der Wissensbasis eingestuft werden und in Konfliktfällen
unterschiedlich priorisiert werden.
Zur Realisierung und Wartung einer umfangreichen Wissensbasis (Punkt 3) steht das
MWR-System zur Verfügung. Grundlegende Aufgaben der Antwortfindung (Punkt 4)
werden durch zwei spezielle Systemkomponenten unterstützt, die in den folgenden
Abschnitten vorgestellt werden. Zur Antwortgenerierung existieren bereits theoretische
Überlegungen in [Hel01], aber zur Zeit noch keine Implementierungen.
Allgemeine Aspekte der Antwortfindung. Die grundlegende Problemstellung der Antwortfindung besteht darin, zu einer natürlichsprachlichen Nutzeranfrage die relevanten
Informationen in der Wissensbasis zu finden. Während die Wissensbasis durch ein semantisches Netz gegeben ist, stellt die semantische Repräsentation der Frage einen speziellen
M ULTI N ET-Ausdruck dar, der auch als Fragemuster bezeichnet wird. Dies soll an dem
folgenden Beispiel erläutert werden:
Es sei die Wissensbasis aus Abb. 39 gegeben, die den folgenden Sachverhalt ausdrückt:
Die Bank in Hagen verkauft Peter eine Münze, die von der Prägeanstalt in Wien aus
1 Feinunze Gold hergestellt worden ist.” Eine passende Frage dazu lautet: “Aus wieviel
Gramm Gold besteht die Münze, die Peter von der Bank in Hagen gekauft hat?”.
Das Fragemuster (die semantische Repräsentation der Frage) ist in Abbildung 40 wiedergegeben. Im Fragemuster werden typischerweise alle nicht lexikalisierten “inneren” Knoten (die normalerweise mit ci beschriftet sind) als logische Variablen aufgefaßt. Dahinter
steht die Idee, daß lexikalisierte Knoten aufgrund der Objektzentriertheit von M ULTI N ET Anknüpfungspunkte zwischen der Wissensbasis und dem Fragemuster darstellen,
während die inneren Netzstrukturen hingegen im Fragemuster und im Hintergrundwissen
46
Nicht alle diese Relationen werden in dieser Arbeit beschrieben; zu einer vollständigen Beschreibung
aller Relationen siehe [Hel01]
152
5.4 Fragebeantwortung
Gold
Münze
Feinunze
SUB
SUB
Bank
SUB
c0
c28
herstellen
INIT
LT
RS
C
LO
*QUANT
c2
SU
B
c22
1
S
SUB
T
Prägeanstalt
OBJ
AG
c29
QMOD
ORIGM
c5
AGT
c23
SUB
*IN
S
SUB
Hagen
verkaufen
c19
OR
LOC
c24
NT
c26
Peter
Wien
*IN
bax1: SUBS(H, “verkaufen”) ∧ AGT(H,N) ∧ OBJ(H,O) ∧ ORNT(H,Z)
→ (ex SKH)
SUBS(SKH, “kaufen”) ∧ (AGT SKH Z) ∧ (OBJ SKH O) ∧ (AVRT SKH N)
bax3: *QUANT(P, U, “Feinunze”)
→ *QUANT(P, G, “g”) proc (G = TIMES 31.04 U)
Abbildung 39: Hintergrundwissen und Axiome zur Fragebeantwortung
unterschiedlich sein können und gegebenenfalls nur über Inferenzen ineinander überführbar sind.
So müssen in dem Beispiel die lexikalisierten Knoten “Gold” sowohl im Hintergrundwissen als auch in der Frage das gleiche Konzept repräsentieren, und dies wird bei der
Antwortfindung auch entsprechend ausgenutzt.
Andererseits sind die Knoten “c19” im Hintergrundwissen und “?v3” im Fragemuster
zwar beide Nachbarknoten von “Peter”, aber sie verfügen darüber hinaus zum Teil über
unterschiedliche Kanten. Dies liegt daran, daß “c19” einen Verkaufensvorgang repräsentiert, während “?v3” einen Kaufensvorgang darstellt. Diese Vorgänge werden semantisch
unterschiedlich repräsentiert und können aber zum Beispiel mit Hilfe von Axiom bax3
ineinander überführt werden. Dies ist jedoch nur möglich, wenn die im Fragemuster umzuformenden Teilnetze logische Variablen aufweisen.
Die Erzeugung des Fragemusters aus der M ULTI N ET-Repräsentation einer Frage, die z.B.
von NatLink geliefert wird, kann normalerweise durch eine einfache Umbenennung der
inneren ci -Knoten in logische Variablen geschehen. Als Konvention gilt hierbei, daß logische Variablen durch ein vorangestelltes “?” hervorgehoben werden. Der Fragefokus (das
Hauptinteresse des Fragenden) stellt eine besondere logische Variable dar, die mit “!F”
gekennzeichnet wird. Seine Ermittlung ist nicht trivial und findet während der Analyse
des natürlichsprachlichen Ausdrucks in NatLink statt.
153
U NTERST ÜTZUNG
F RAGEBEANTWORTUNG
F ÜR
UND I NFERENZEN
Gold
Münze
g
SUB
SUB
Bank
SUB
?v5
?v6
SU
B
?v2
C
LO
QMOD
ORIGM
*QUANT
?v7
?v4
!F
RT
OBJ
AV
?v1
*IN
S
SUB
Hagen
kaufen
?v3
AGT
Peter
Abbildung 40: Ein Fragemuster zum Hintergrundwissen
Einige Teilziele bei der Antwortfindung sind bereits aus der Beschreibung des Netzdeducers bekannt. Dazu gehören das Ableiten von Teilnetzen, die Anwendung von Bedeutungspostulaten (z.B. um den Zusammenhang zwischen “kaufen” und “verkaufen”
zu erschließen) sowie die Auswertung prozeduraler Elemente (z.B. das Umrechnen von
Feinunzen in Gramm). Aus diesem Grund ist das vorgestellte Netzdeducer-System ein
wichtiger Grundbaustein für die nachfolgend beschriebenen Verfahren.
Abgesehen von diesen Teilzielen, die praktisch immer in der Fragebeantwortung enthalten sind, ist der komplette Inferenzprozeß zur Antwortfindung jedoch in hohem Maße von
dem Typ der zugrundeliegenden Frage abhängig. In [Hel01] wird ein System zur Frageklassifizierung entwickelt, das drei Hauptklassen von Fragen enthält:
• Entscheidungsfragen. Dies ist der einfachste Typ von Fragen, der nur mit “Ja”
oder “Nein” beantwortet werden muß (Typ ENT).
Bsp.: “Hat Peter bei der Bank in Hagen eine Münze aus Gold gekauft?”
Zur Beantwortung dieses Fragetyps muß geprüft werden, ob das Fragemuster aus
der Wissensbasis ableitbar ist. Es gibt allerdings auch Entscheidungsfragen mit Existenzcharakter (Typ ENTEX) wie “Gibt es eine Prägeanstalt, die Münzen aus 1
Feinunze Gold herstellt?”. In diesem Fall ist eine kooperative Antwort im Sinne
von “Ja, in Wien.” einer einfachen “Ja/Nein”-Antwort vorzuziehen, sofern von der
Analyse bereits in der Fragestruktur ein Fragefokus (s.u.) gekennzeichnet worden
ist.
• Ergänzungsfragen. Ergänzungsfragen zeichnen sich durch einen zusätzlichen Fragefokus aus, der das Interesse des Fragenden kennzeichnet. Typischerweise ist es
die Aufgabe der Analyse, den Fragefokus bei der Übersetzung der natürlichsprachlichen Frage in einen M ULTI N ET-Ausdruck herauszufinden.
154
5.4 Fragebeantwortung
Bsp.: “Aus wieviel Gramm Gold besteht die Münze, die Peter von der Bank in
Hagen gekauft hat?”, s. Abb. 40.
In dem in Abb. 40 dargestellten Netz ist der Fragefokus der Knoten “!F”, der als
Variable für das “Wieviel Gramm...” der Frage steht. Die Antwortfindung hat hier
neben der Ableitung des Fragemusters aus der Wissensbasis noch zusätzlich eine
Variablenbelegung für den Fragefokus zu finden (z.B. !F = 31.04), damit das System
eine kooperative Antwort wie “31.04 Gramm.” liefern kann.
Neben den reinen Ergänzungsfragen (Typ ERG) gibt es auch noch Zählfragen
(“Wieviele Prägeanstalten stellen Goldmünzen her?”, Typ COUNT) und operationale Fragen (“Wieviel Gramm Gold besitzt Peter insgesamt?”, Typ OPERG).
Der letzte Typ ist nur dann sinnvoll zu beantworten, wenn Informationen über alle
Goldmünzen vorliegen, die Peter besitzt.
• Essayfragen. Zur Beantwortung dieses Fragetyps wird ein kleiner Antworttext (Essay) benötigt, d.h. es gibt keinen Fragefokus und keinen einfachen Netzknoten, der
den Kern der Antwort darstellt. Der Antwortkern besteht aus einem Teilnetz, das
natürlichsprachlich zu reformulieren ist.
Bsp.: “Was weißt Du über die Prägeanstalt in Wien?”
Eine Diskussion der verschiedenen Untertypen von Essayfragen unterbleibt an dieser Stelle, da dieser Fragetyp im Folgenden nicht weiter berücksichtigt wird.
Die in den nächsten Unterkapiteln beschriebenen Methoden widmen sich der Beantwortung der grundlegenden Fragetypen ENT, ENTEX und ERG. Als Ergebnis der Antwortfindung wird die Ableitbarkeit des Fragemusters aus der Wissensbasis angegeben
(Ja/Nein, für die Typen ENT und ENTEX) sowie die gefundene Instantiierung des Fragefokus für die Fragetypen ENTEX und ERG. Beide Methoden sind in ihrem Funktionsumfang bezüglich der Fragebeantwortung gleich mächtig; sie verfolgen jedoch unterschiedliche Inferenzstrategien.
5.4.1 Fragebeantwortung über den Netzdeducer
Fragemuster stellen formal Teilnetze dar, in denen ausschließlich gültige M ULTI N ETRelationen und funktionale Terme als Literale vorkommen. Im Gegensatz zu Netzen aus
der Wissensbasis enthält das Fragemuster aber wie oben erwähnt an einigen Stellen Variablen als Argumente von Relationen und funktionalen Termen. Das Beweisziel besteht bei
der Fragebeantwortung darin, zunächst das Fragemuster aus der Wissensbasis abzuleiten
und anschließend gegebenenfalls die Substitution für den Fragefokus zu bestimmen. Beides sind Teilaufgaben, die direkt mit Hilfe des Teilnetzdeducers gelöst werden können (s.
Kap. 5.3.2).
Das Fragemuster wird analog zur Ableitung der linken Seite einer Regel als Beweisziel
an den Teilnetzdeducer übergeben und es wird eine Ableitung für das Fragemuster angefordert. Als Hilfsregelsystem ist ein für die Fragebeantwortung geeignetes System von Rund B-Axiomen anzugeben. Der Teilnetzdeducer versucht anschließend, die Literale des
Fragemusters vor dem Hintergrund der Wissensbasis und der Axiome zu beweisen und
liefert im Erfolgsfall die resultierende Substitutionsliste. Mit Hilfe einer einfachen Suchprozedur läßt sich die Ersetzung für den Fragefokus aus der Substitutionsliste bestimmen.
155
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
SUB(?v4, ?v5), OBJ(?v3, ?v4), LOC(?v2, ?v1),
AVRT(?v3, ?v2), QMOD(?v6, ?v7), ORIGM(?v5, ?v6),
SUB(?v2, “Bank”), SUBS(?v3, “kaufen”), AGT(?v3, “Peter”),
SUB(?v6, “Gold”), SUB(?v5, “Münze”),
∗IN(?v1, “Hagen”), ∗QUANT(?v7, “!F” “g”)
Abbildung 41: Eine ungünstige Literal-Reihenfolge für den Ableitungs-Prozeß
Probleme einer naiven Implementierung. Eine naive Implementierung des oben beschriebenen Verfahrens ergibt jedoch unter bestimmten Randbedingungen ein sehr ineffizientes Vorgehen des Teilnetzdeducers. Die Beweisstrategie des Teilnetzdeducers besteht
im Wesentlichen darin, das gegebene Teilnetz (in diesem Fall also das Fragemuster) Literal für Literal mit Hilfe einer Tiefensuche abzuleiten. Treten nun in den ersten Beweisschritten verstärkt Literale auf, die nur logische Variablen enthalten, so führt dies später
zu verstärktem Backtracking.
Abbildung 41 enthält eine solche ungünstige Anordnung für das Fragemuster aus Bild
40. Die Literale sind so sortiert, daß zunächst alle Literale abgeleitet werden müssen,
die nur logische Variablen enthalten. Da diese Literale potentiell mit allen denjenigen
Kanten in der Wissensbasis gematcht werden können, die mit der passenden Relation
oder Funktion markiert sind, wird das Beweisverfahren einige Male in eine Sackgasse
laufen, bevor es jeweils die richtige Kante findet. Zur Ableitung der ersten SUB-Kante
aus dem Fragemuster gibt es z.B. fünf potentielle Kandidaten in der Wissensbasis aus
Abb. 39.
Heuristische Verbesserung des Verfahrens. Das Beweisverfahren kann durch die Anwendung einer speziellen “Startheuristik” optimiert werden, die bereits in [Hel77] bei der
Fragezentrierung (s. nächstes Unterkapitel) eingesetzt wurde. Die Grundidee stützt sich
auf die folgende Beobachtung:
Es ist nicht möglich, eine Anfrage derart zu formulieren, daß in dem Fragemuster nur Literale mit logischen Variablen auftreten.
Die Begründung liegt darin, daß man keine natürlichsprachliche Frage formulieren kann,
ohne nicht mindestens ein Nomen, Verb oder Adjektiv zu gebrauchen. Jeder dieser Satzbestandteile führt aber zu einem lexikalisierten Knoten und damit zu einer Konstante im
Fragemuster. Daraus folgt, daß es im Fragemuster mindestens ein Literal mit einer Konstante geben muß.
Aufgrund der Objektzentriertheit von M ULTI N ET gilt weiterhin, daß es zu jedem Konzept
genau einen Knoten geben darf (es sind also nicht mehrere Knoten mit dem gleichen
“Namen” erlaubt). Wenn es also im Fragemuster ein Literal mit einer Konstante gibt, und
ein Konzeptknoten zu dieser Konstante auch in der Wissensbasis gefunden wird, dann
hat man einen gemeinsamen Knoten des Fragemusters und des Netzes der Wissensbasis
gefunden.
Eine Verbesserung des Beweisverfahrens ergibt sich also dadurch, die Literale des Fragemusters zunächst so vorzusortieren, daß alle Literale mit mindestens einer Konstante
156
5.4 Fragebeantwortung
SUB(?v2, “Bank”), SUBS(?v3, “kaufen”), AGT(?v3, “Peter”),
SUB(?v6, “Gold”), SUB(?v5, “Münze”),
∗IN(?v1, “Hagen”), ∗QUANT(?v7, “!F” “g”),
SUB(?v4, ?v5), OBJ(?v3, ?v4), LOC(?v2, ?v1),
AVRT(?v3, ?v2), QMOD(?v6, ?v7), ORIGM(?v5, ?v6)
Abbildung 42: Eine effiziente Literal-Reihenfolge für den Ableitungs-Prozeß
zuerst abgeleitet werden47 . Dies entspricht dem Ansatz der Fragezentrierung, den Suchgraphen mit terminalen Knoten aus dem Fragemuster vorzuinitialisieren. Unter Ausnutzung der Objektzentriertheit von M ULTI N ET wird auf diese Weise sichergestellt, daß der
Teilnetzdeducer den Beweis an den Stellen beginnt, an denen sich das Fragemuster und
die Wissensbasis überlappen. Für jeden gemeinsamen konstanten Knoten muß es mindestens eine ableitbare Kante geben, die den Beweisprozeß fortführt; anderenfalls existiert
keine Ableitung des Fragemusters aus der Wissensbasis. Dadurch hängt der Aufwand zum
Beweis der betreffenden Literale nur von der Anzahl der Kanten des konstanten Knotens
in der Wissensbasis ab (und natürlich der zum Beweis hinzuziehbaren Axiome), wodurch
ein deutlich geringerer Aufwand im Vergleich zum “naiven” Matching gegen alle passenden Kanten der Wissensbasis resultiert. Für die erste SUB-Kante aus der effizient sortierten Anordnung in Abb. 42 ergibt sich beispielsweise nur noch eine Auswahlmöglichkeit;
bei einer komplexeren Wissensbasis wären hier im schlechtesten Fall nur noch alle SUBKanten zu überprüfen, die in den “Bank”-Knoten laufen, aber nicht mehr alle möglichen
SUB-Kanten in der Wissensbasis.
Da im Verlauf des Beweisprozesses logische Variablen durch bereits abgeleitete Konstanten substituiert werden, ist es zudem möglich, daß sich bei der Ableitung der ersten
“teilkonstanten” Literale (Literale mit einer Konstante und einer Variable) bereits genügend viele Substitutionen ergeben, so daß auch in den späteren “variablen” Literalen wie
AVRT(?v3,?v2) schon vor dem Matching einige Variablen durch Konstanten ersetzt werden können. Nach der Ableitung von SUB(?v2, “Bank”) mit {“c22”/?v2} folgt bereits
beispielsweise AVRT(?v3,“c22”). Empirische Untersuchungen haben ergeben, daß auf
diese Weise der Fall eines isolierten “variablen” Literals im Ableitungs-Prozeß nur sehr
selten auftritt und der Teilnetzdeducer in den meisten Fällen sehr zielstrebig auf den Beweis des Gesamtnetzes zusteuert bzw. sich maximal ein bis zwei Kanten in eine falsche
Richtung “verläuft”.
Algorithmus zum Einsatz des Teilnetzdeducers in der Fragebeantwortung. Der Algorithmus ist in Abb. 43 dargestellt. Das Teilnetzdeducer-Objekt wird in einen prozeduralen Kontext eingebunden, der das Vorsortieren der Literale sowie die Auswertung
des Fragefokus übernimmt. Die entsprechenden Hilfsprozeduren sind trivial und werden nicht weiter ausgeführt. Als Ergebnis liefert der Algorithmus die leere Menge, wenn
keine Ableitung des Fragemusters aus der Wissensbasis erzielt werden konnte. Anderenfalls hängt das Resultat vom Typ der Frage ab, der vereinfachend durch die Präsenz bzw.
47
Eine zusätzliche Verbesserung ergibt sich ggf. dadurch, die Knoten hinsichtlich der Anzahl ihrer einund ausgehenden Kanten vorzusortieren; diese Heuristik wird in Kap. 5.4.2 weiter diskutiert.
157
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Fragebeantwortung über Teilnetzdeducer
input: fragemuster
fragefokus
rule-list
(* zum Beweis hinzuziehbare Axiome *)
proc: (* eigentlicher Prozedurkörper *)
1
sorted-literals
← Sortiere das Fragemuster, so daß Literale mit
Konstanten vorne in der Liste stehen
2
net-deducer-object ← create-net-deducer-object(sorted-literals,Ø,
rule-list);
substitutions
← net-deducer-object();
3
if substitutions = Ø
then return Ø; (* keine Ableitung, Frage nicht beantwortbar *)
else if fragefokus 6= Ø
then subst-fokus ← substitute(fragefokus,substitutions);
return subst-fokus;
else return true;
fi;
fi;
Abbildung 43: Fragebeantwortung über den Teilnetzdeducer
Nicht-Präsenz des Fragefokus angezeigt wird. Wenn ein Fragefokus existiert, wird die
entsprechende Substitution zurückgegeben; diese repräsentiert den Antwortkern. Anderenfalls wird nur der Wahrheitswert “true” zurückgegeben um anzuzeigen, daß die Entscheidungsfrage positiv beantwortet werden soll.
Beispiel. Als Beispiel wird die Beantwortung des Fragemusters aus Abb. 40 vor dem
Hintergrund der Wissensbasis von Abb. 39 betrachtet. Die Darstellungen und Voraussetzungen sind analog zu dem Komplexbeispiel aus Kap. 5.3.4. Aus Gründen der Vereinfachung enthält das nachfolgende Beispiel keine Backtracking-Fälle (diese würden analog
zu Kap. 5.3.4 behandelt); damit entfällt auch die Notwendigkeit einer Kantennumerierung
in der Abbildung, da sich die jeweils gewählten Kanten eindeutig zuordnen lassen.
In Schritt 1 erfolgt zunächst die Sortierung der abzuleitenden Literale. Abgesehen von
der Sortierung der Literale nach konstanten und nicht-konstanten Knoten ist die Abfolge
beliebig bzw. durch die Reihenfolge bestimmt, in der das Netz in die Wissensbasis eingetragen wurde. Für die folgende Diskussion wird das nachstehende Sortierergebnis für das
Fragemuster angenommen:
sorted-literals → { SUB(?v6,“Gold”), ∗QUANT(?v7,!F,“g”), SUB(?v5,“Münze”),
AGT(?v3,“Peter”), SUBS(?v3,“kaufen”), SUB(?v2,“Bank”),
∗IN(?v1,“Hagen”), QMOD(?v6,?v7), ORIGM(?v5,?v6),
SUB(?v4,?v5), OBJ(?v3,?v4), AVRT(?v3,?v2), LOC(?v2,?v1) }
158
5.4 Fragebeantwortung
Als Schreibweisen-Konvention werden im Fragemuster logische Variablen durch ein vorangestelltes “?” hervorgehoben und der Fragefokus mit “!F” bezeichnet. Abbildung 44
skizziert den Ablauf der Fragemuster-Bearbeitung durch den Teilnetzdeducer.
Zunächst wird ein Teilnetzdeducer T1 zur Ableitung des gesamten Fragemusters erzeugt.
Die Ableitung des ersten Literals des Fragemusters gelingt direkt über den Literaldeducer
L1. Für das zweite Literal läßt sich kein passender Eintrag in der Wissensbasis finden, da
nach einer anderen Maßeinheit (Gramm statt Feinunzen) gefragt wurde. Der zuständige
Literaldeducer L2 stellt jedoch fest, daß in der Konklusion von bax3 ein passendes Literal
enthalten ist, und versucht die Anwendung von bax3 mit Hilfe von R1.
Regelanwender R1 versucht deshalb die linke Seite von bax3 zu instantiieren, was mit
Hilfe von T2 und L3 gelingt, da das Literal ∗QUANT(“c2”, “1”, “Feinunze”) in der Wissensbasis enthalten ist. Unter Verwendung der daraus resultierenden Substitutionen erhält
R1 als vorläufige Instantiierung der rechten Regelseite:
∗QUANT(“c2”, G, “g”) proc (G = TIMES 31.04 “1”).
Damit läßt sich die prozedurale Komponente der Regel auswerten und G= “31.04” berechnen. Ein erneutes Instantiieren der Konklusion mit dem errechneten Wert ergibt
∗QUANT(“c2”, “31.04”, “g”) und damit eine Ableitung für das von L2 gesuchte Literal.
Die Ableitung des nächsten Literals über L4 gelingt direkt. Erst bei L5 wird wiederum die
Anwendung einer Regel erforderlich. Literaldeducer L5 findet keine direkte Ableitung
für AGT(?v3,”Peter”) in der Wissensbasis, da hierzu erst der Zusammenhang zwischen
“kaufen” und “verkaufen” aufzulösen ist. Deshalb versucht L5 die Anwendung von bax1,
da ein passendes Literal in der Konklusion von bax1 enthalten ist. Die Instantiierung der
Prämisse von bax1 mittels Regelanwender R2 läuft analog zu den bisher geschilderten
Fällen ab. Die linke Seite der Regel wird mit Hilfe von Teilnetzdeducer T3 direkt aus der
Wissensbasis abgeleitet und liefert die Substitutionen {“verkaufen”/H, “c22”/N, “c28”/O,
“Peter”/Z }.
Damit tritt bei der Instantiierung der Konklusion durch R2 der Fall ein, daß auf der rechten
Seite der Regel eine freie existenzquantifizierte Variable SKH übrig bleibt. Gemäß Punkt
2 der Regelanwender-Vorschrift wird die Variable SKH durch einen eindeutigen, neu
generierten Netzknoten “exq1” substituiert. Dadurch wird die Invariante des AbleitungsVerfahrens erfüllt, daß eine abgeleitete Regel nur Grundliterale liefern darf (siehe Kap.
5.2.1). Dies ist u.a. Voraussetzung dafür, den Literal-Cache bei der Anwendung von Regeln mit mehrstelligen Konklusionen einsetzen zu können. Es muß nämlich sichergestellt
werden, daß für die ehemalige Variable SKH in allen Literalen der gleiche Knoten substituiert wird, d.h. also daß der Zusammenhang zwischen den abgeleiteten Literalen gewahrt
wird. Genau dies wird über den eindeutigen Namen “exq1” erreicht.
Nach der Durchführung der Substitution “exq1/SKH” fügt der Regelanwender R2 die
Konklusions-Literale { SUBS(“exq1”, “kaufen”), AGT(“exq1”, “Peter”), OBJ(“exq1”,
“c28”), AVRT(“exq1”, “c22”) } dem Literal-Cache hinzu. Das Literal AGT(“exq1”, “Peter”) wird als unmittelbares Ergebnis für das Beweisziel von L5 verwendet und die Ableitung des Fragemusters mit L10 fortgesetzt.
Die verbleibenden Literale des Fragemusters werden über die Literaldeducer L10 bis L18
direkt abgeleitet, wobei entweder Ableitungen aus der Wissensbasis oder über Literale
aus dem Cache durchgeführt werden. Im letzteren Fall werden die verbleibenden Literale
159
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
T1: SUB(?v6,"Gold"), ..., LOC(?v2,?v1)
L1: SUB(?v6,"Gold")
SUB("c0","Gold")
L2: *QUANT(?v7 !F "g")
R1: *QUANT(P,U,"Feinunze") −−> *QUANT(P,G,"g") proc (G = TIMES 31.04 U)
T2: *QUANT(P,U,"Feinunze")
L3: *QUANT(P,U,"Feinunze")
*QUANT("c2","1","Feinunze")
Berechnung: (G = TIMES 31.04 1)
*QUANT("c2","31.04","g")
L4: SUB(?v5,"Münze")
SUB("c5","Münze")
L5: AGT(?v3,"Peter")
R2: SUBS(H,"verkaufen") AGT(H,N) OBJ(H,O) ORNT(H,Z) −−>
(ex SKH)(SUBS SKH "kaufen") AGT(SKH Z) OBJ(SKH O) AVRT(SKH N)
T3: SUBS(H,"verkaufen") AGT(H,N) OBJ(H,O) ORNT(H,Z)
L6: SUBS(...)
Beweis der vier Literale der linken Regelseite
L9: ORNT(...)
SUBS("exq1","kaufen"), AGT("exq1","Peter"),
OBJ("exq1","c28"), AVRT("exq1","c22")
Instantiierung rechte Regelseite;
Aufnahme der Literale in den Cache
AGT("exq1","Peter")
L10: SUBS(?v3,"kaufen")
SUBS("exq1","kaufen")
Ableitung aus Literal−Cache
SUB("c22","Bank")
we *IN("c29","Hagen")
is
üb QMOD("c0","c2")
er
Lit
er ORIGM("c5","c0")
ald
ed SUB("c28","c5")
uc
er
L1 OBJ("exq1","c28")
1.
.. L AVRT("exq1","c22")
18
LOC("c22".,"c29")
Be
T1 liefert Subst.−Liste: { "c28"/?v4, "c29"/?v1, "c22"/?v2, "exq1"/?v3, "c5"/?v5, "31.04"/!F, "c2"/?v7, "c0"/?v6}
Abbildung 44: Ablauf der Fragebeantwortung durch den Teilnetzdeducer
160
5.4 Fragebeantwortung
aus der Konklusion von bax1 in die Ableitung des Fragemusters eingearbeitet, ohne die
Regel erneut auswerten zu müssen. Nachdem T1 alle Literale des Fragemusters bewiesen
hat, wird als Ergebnis die Substitutionsliste {“c28”/?v4, “c29”/?v1, “c22/?v2”, “exq1/?v3,
“c5”/?v5, “31.04”/!F, “c2”/?v7, “c0”/?v6 } zurückgeliefert.
Das Auftreten einer nichtleeren Substitutionsliste zeigt dem Algorithmus in Schritt 3 an,
daß die Frage positiv beantwortet werden kann. Da zudem der Fragefokus “!F” gegeben
ist, muß noch der Antwortkern bestimmt werden. Dazu wird in der Substitutionsliste die
Konstante gesucht, die für “!F” einzusetzen ist. Im vorliegenden Fall ist der Antwortkern
damit “31.04” und eine nachgeschaltete Generierungskomponente könnte daraus z.B. die
kooperative Antwort “31.04 Gramm” erzeugen.
5.4.2 Fragebeantwortung mit der Fragezentrierung
Das Verfahren der Fragezentrierung geht auf eine Arbeit von Helbig [Hel77] zurück.
Es versucht, den Prozeß der Antwortfindung noch stärker heuristisch zu steuern als in
der im vorherigen Kapitel beschriebenen Fragebeantwortung mit Hilfe des Teilnetzdeducers. Ergänzend zu der bereits beschriebenen Startheuristik versucht das Verfahren, den
Beweisweg innerhalb des Fragemusters zu optimieren, indem über eine Kostenfunktion
heuristische Bewertungen für den Suchweg vergeben werden. Eine entscheidende Rolle
spielen dabei die sog. Fragezentren; dies sind Knoten, die auf voneinander unabhängigen Beweiswegen mehrmals erreicht worden sind. Das Auffinden solcher Knoten gilt als
ein starkes Indiz dafür, daß ein relevanter Teil der Wissensbasis erreicht worden ist und
das Beweisverfahren in die richtige Richtung voranschreitet. Dementsprechend erhalten
Fragezentren eine hohe Priorität bei der Auswahl geeigneter Kandidaten, bei denen der
Beweisprozeß fortgesetzt wird.
Der Suchgraph zur Steuerung des Beweisweges. Zur Steuerung des Beweisprozesses
wird bei der Fragezentrierung ein Suchgraph eingesetzt. Die Knoten des Suchgraphen
können als ein Tupel aufgefaßt werden, das die folgenden Elemente zur Beschreibung
des aktuellen Zustands der Suche enthält:
name
cost
head
cont
rest
prev
subst
focus
: Ein eindeutiger Bezeichner für den Suchgraph-Knoten.
: Heuristisch abgeschätzte Kosten, die anfallen, um den Beweis mit dem
vorliegenden Knoten fortzusetzen.
: Der Knoten des semantischen Netzes (“Knotenkopf”), bis zu dem der
Beweis bisher vorangetrieben worden ist.
: Eine Liste der Netzkanten, über die der Beweisprozeß fortgesetzt werden kann. Dies sind alle noch unbewiesenen Kanten, die den Knoten
head enthalten.
: Alle übrigen noch nicht bewiesenen Literale.
: Verkettungsinformationen zu den Vorgängerknoten im Suchgraphen.
: Die Liste der auf dem bisherigen Beweisweg durchgeführten Substitutionen.
: Ein Verweis auf den Knoten im Fragemuster, der den Fragefokus darstellt.
161
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Aufbau der Fragezentrierung. Die in MWR eingesetzte Variante der Fragezentrierung setzt sich aus der sog. Kern-Heuristik und einem Objekt zur Entwicklung von Suchgraph-Knoten zusammen, das im folgenden kurz als “Knotenentwickler” bezeichnet wird.
Die Kern-Heuristik besteht aus einer prozeduralen Steuerung, mit deren Hilfe jeweils der
nach der Kostenfunktion “billigste” Suchgraph-Knoten bzw. das zugehörige Knotenentwickler-Objekt ausgewählt und zum Vorantreiben des Beweisprozesses eingesetzt wird.
Der Knotenentwickler wird für einen gegebenen Suchgraph-Knoten initialisiert und berechnet bei jedem Aufruf einen Fortsetzungsknoten. Seine Funktionsweise ist damit analog zu den Literaldeducer-Objekten aus dem MWR-Kernsystem.
Das Knotenentwickler-Objekt. Die Aufgabe des Knotenentwickler-Objektes besteht
darin, den Beweisprozeß des Fragemusters um einen Schritt weiterzuführen. Der entsprechende Algorithmus ist in Abb. 45 dargestellt.
Der Knotenentwickler erhält als Eingabe den zu entwickelnden Suchgraph-Knoten sowie
eine Liste der zur Verfügung stehenden Axiome. Analog zu den übrigen NetzdeducerObjekten liefert der Knotenentwickler pro Aufruf jeweils einen neuen Knoten, der aus
der Entwicklung des gegebenen Suchgraph-Knoten hervorgeht, oder die leere Menge,
wenn sich der Suchgraph-Knoten nicht weiter entwickeln läßt.
In der init-Phase wird die Suchgraph-Entwicklung vorbereitet. Zur Weiterentwicklung
des Suchgraphen muß eine Kante aus der Liste der Fortsetzungen des aktuellen Suchgraphknotens tnode bewiesen werden. Ohne Beschränkung der Allgemeinheit kann hier
stets die erste Kante (first(tnode.cont)) aus der Liste gewählt werden, denn wenn sich eine Kante der Fortsetzungen nicht beweisen ließe, würde das Verfahren ohnehin zu einem
späteren Zeitpunkt scheitern. Die restlichen Kanten der Fortsetzungsliste werden - unter Berücksichtigung einer eventuellen Elimination von Kanten, die im aktuellen Beweisschritt zu Grundliteralen werden und damit ebenfalls bereits bewiesen sind - in die “cont”und “rest”-Listen des Nachfolgeknoten übernommen und dadurch in den anschließenden
Beweisschritten abgearbeitet.
Der eigentliche Beweis der zu entwickelnden Kante stellt eine Standardaufgabe dar, die
keine weiteren Heuristiken beinhaltet und daher mit Hilfe eines Literaldeducer-Objektes
durchgeführt wird. Da das Literaldeducer-Objekt selbständig das Axiomsystem heranzieht, wenn sich ein Literal nicht direkt aus der Wissensbasis ableiten läßt, ist die Fortentwicklung des Suchgraphen über die Anwendung von Axiomen an dieser Stelle mit
enthalten.
Die “infer”-Phase wird ausgeführt, wenn die Kern-Heuristik eine Entwicklung des Suchgraph-Knotens anfordert. In Schritt 1 wird zunächst über das Literaldeducer-Objekt versucht, eine Ableitung für die aktuelle Kante zu finden. Gelingt dies nicht, was durch substitutions = Ø angezeigt wird, so ist die Knotenentwicklung fehlgeschlagen.
Anderenfalls (Schritt 2 ) muß nun der Inhalt des neu entwickelten Suchgraph-Knotens
berechnet werden. Als neuer Knotenkopf head dient einer der Knoten, der über die gerade
abgeleitete Kante neu erreicht werden kann. Die Liste der noch unbewiesenen Relationen
und Funktionen wird neu aufgebaut und anschließend werden alle Grundliterale daraus
entfernt, die sich direkt mit Hilfe der neu hinzugekommenen Substitutionen ableiten lassen. Da sich die Ableitung von Grundliteralen sehr effizient realisieren läßt, können so
162
5.4 Fragebeantwortung
Fragezentrierung: Knotenentwickler-Objekt
input: tnode
rule-list
(* zu entwickelnder Graphknoten *)
(* zum Beweis hinzuziehbare Axiome *)
init: litdeducer-obj ← create-literal-deducer-object(first(tnode.cont),
tnode.subst,
rules);
infer: substitutions ← litdeducer-obj();
(* nächste Kante erreichen *)
1
if substitutions = Ø
then return Ø;
(* Knotenentwicklung fehlgeschlagen *)
fi;
2
head
← über die Kante neu erreichter Knoten;
relations ← node.rest ∪ rest(tnode.cont); (* alle noch unbewiesenen Kanten *)
relations ← relations \ { beweisbare Grundliterale aus relations };
3
if relations = Ø
then name
← “solution”;
(* Frage beantwortet *)
else name
← gensym(“x”);
(* Name für neuen SG-Knoten *)
cont
← alle Relationen ∈ relations, die head enthalten;
if cont = Ø
then head ← erste Konstante 6= head aus relations;
cont ← alle Relationen ∈ relations, die head enthalten;
fi;
rest ← relations \ cont;
cost← siehe Erläuterungen im Text;
fi;
subst ← tnode.subst ∪ substitutions;
prev ← append-to-path(tnode.prev,name);
(* vereinfachte Darstellung *)
4
if tnode.focus ∈ substitutions
then substitute(tnode.focus, substitutions);
fi;
new-node ← generate-node(name,cost,head,cont,rest,prev,subst,focus);
return new-node;
Abbildung 45: Algorithmus zum Knotenentwickler-Objekt
gegebenenfalls mehrere Literale aus dem Fragemuster pro Beweisschritt eliminiert werden.
Wenn anschließend keine unbewiesenen Literale mehr vorhanden sind (Schritt 3 ), wurde die Frage beantwortet und der neue Knoten erhält den Namen “solution”. Anderenfalls
erhält der Knoten einen automatisch generierten Namen und die Liste der Fortsetzungen
wird berechnet. Falls der Knotenkopf head aufgrund der Elimination von Grundliteralen
nicht mehr in der Liste der unbewiesenen Relationen vorkommt, dann wurde beweistechnisch ein terminaler Knoten erreicht. In diesem Fall muß zu einem anderen Knoten aus
einem noch unbewiesenen Literal gewechselt und die Liste cont neu berechnet werden.
163
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Die heuristische Bewertung cost hat einen wesentlichen Einfluß darauf, zu welchem Zeitpunkt der Beweis an der Stelle des neu entwickelten Knotens fortgesetzt wird. Nach
[Hel77] ist die Kostenfunktion wie folgt zu berechnen:
cost =
Anzahl der noch unbewiesenen Relationen
+ Anzahl der Kanten von head in der Wissensbasis
+ Bonus, wenn head ein Fragezentrum darstellt.
Der Bonus für ein Fragezentrum wird erst später in der Kern-Heuristik addiert, da die
Feststellung eines Fragezentrums innerhalb des Knotenentwickler-Objektes mangels Zugriff auf den aktuellen Zustand des Beweisverfahrens nicht möglich ist. Bei der Angabe
der Kantenanzahl von head muß das System gegebenenfalls einen konstanten Schätzwert
verwenden, da sich der Wert nur exakt berechnen läßt, wenn head wirklich in der Wissensbasis vorhanden ist. Falls head über ein Axiom erschlossen werden muß (z.B. head =
“kaufen”, und die Wissensbasis enthält nur “verkaufen”), läßt sich der exakte Wert ohne
die Anwendung des Axioms nicht ermitteln. In den vorliegenden Beispielen hat sich der
Wert 10 als gute Wahl für den Schätzwert erwiesen.
Schließlich müssen die neuen Substitutionen in die Gesamtliste aller Substitutionen aufgenommen werden und der Beweisweg zu dem neuen Knoten in der “prev”-Liste vermerkt werden. Falls der Fragefokus in der Substitutionsliste auftritt (Schritt 4 ), hat das
Beweisverfahren den Antwortkern erreicht. In diesem Fall wird der Fragefokus mit dem
Antwortkern substituiert, da diese Information später bei der Fragebeantwortung benötigt
wird. Die bisher berechneten Bestimmungsstücke des neu entwickelten Knotens werden
zusammengefaßt (“generate-node(...)”) und an die aufrufende Kern-Heuristik zurückgegeben.
Die Kern-Heuristik. Nachdem durch das Knotenentwickler-Objekt die Entwicklung
von einzelnen Suchgraph-Knoten gelöst ist, fehlt noch die Vorbereitung und Durchführung der Entwicklung des gesamten Suchgraphen. Dies ist die Aufgabe der KernHeuristik, die aus einem Hauptprogramm zur Initialisierung und zur Auswertung der
Ergebnisse und einem Verfahren develop-graph besteht, in der die Entwicklung des Suchgraphen vorangetrieben wird.
In der Initialisierungsphase 1 des Hauptprogramms aus Abb. 46 wird für jeden lexikalisierten Knoten des Fragemusters ein Suchgraphknoten erzeugt, wobei die einzelnen Einträge des Knotens analog zu der Beschreibung des Knotenentwickler-Objektes initialisiert
werden. Die Liste subst der Substitutionen ist zu Anfang leer, und in der Verkettungsinformation prev befindet sich zu Anfang nur ein virtueller Wurzelknoten. Auf die explizite
Generierung eines Wurzelknotens in dem Suchgraphen kann verzichtet werden.
Schritt 2 besteht in dem Aufruf der Suchgraphentwicklung. Diese liefert entweder einen
Ergebnisknoten, in dem das komplette Fragemuster bewiesen wurde, oder Ø, falls die
Entwicklung nicht möglich ist. Schritt 3 ist analog zur Fragebeantwortung über den
Netzdeducer und dient zur Aufbereitung des Rückgabewertes anhand des vorliegenden
Fragetyps.
Die Suchgraphentwicklung wird mit Hilfe des in Abb. 47 dargestellten rekursiven Verfahrens gesteuert, das wie folgt vorgeht:
164
5.4 Fragebeantwortung
Kern-Heuristik: Hauptprogramm
input: fragemuster
fragefokus
rule-list
(* zum Beweis hinzuziehbare Axiome *)
proc: (* eigentlicher Prozedurkörper *)
1
graph ← init-graph(fragemuster,fragefokus);
2
result ← develop-graph(graph,rule-list);
3
if result = Ø
then return Ø;
else if fragefokus = Ø
then return true;
else return result.fokus;
fi;
fi;
(* siehe nächste Seite *)
Abbildung 46: Algorithmus zur Kern-Heuristik der Fragezentrierung
1 Falls der Suchgraph leer ist (z.B. über einen rekursiven Aufruf), dann wurden alle
Suchgraphknoten entwickelt oder verworfen, ohne daß das Fragemuster vollständig
bewiesen werden konnte. Die Frage wird als nicht beantwortbar zurückgewiesen.
2 Der Knoten mit der kleinsten Kostenbewertung wird ausgewählt und aus dem Suchgraphen entfernt. Die Entwicklung des ausgewählten Knotens wird durch die Erzeugung eines Knotenentwickler-Objektes vorbereitet.
3 Das Knotenentwickler-Objekt wird aufgerufen, um den ausgewählten Knoten zu
entwickeln.
4 Wenn die Knotenentwicklung scheitert, muß an dieser Stelle Backtracking erfolgen. Die Programmausführung kehrt zur übergeordneten develop-graph–Prozedur
zurück, um dort einen alternativen Beweisweg zu versuchen. Falls kein übergeordneter Aufrufer mehr existiert, scheitert der Beweis an dieser Stelle.
5 Enthält jedoch der neu abgeleitete Knoten das leere Fragemuster, so ist das Fragemuster erfolgreich abgeleitet worden und der erhaltene Knoten stellt den Ergebnisknoten dar.
6 Sofern die rekursiven Abbruchbedingungen 4 und 5 nicht erfüllt werden konnten, wird jetzt die Suchgraphentwicklung weiter rekursiv vorangetrieben. Zunächst
wird überprüft, ob der gerade erreichte Knoten head ein Fragezentrum darstellt. Im
Falle eines Fragezentrums existiert im Suchgraphen ein Vorgängerknoten fz-node,
über den head bereits einmal auf einem alternativen Beweisweg erreicht worden ist.
7 Wenn kein Fragezentrum erreicht wurde (fz-node = Ø), so ist der neu entwickelte
Knoten dem Suchgraphen hinzuzufügen.
165
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Kern-Heuristik: develop-graph (Suchgraphentwicklung)
input: graph
rule-list
(* aktueller Suchgraph *)
(* zum Beweis hinzuziehbare Axiome *)
proc: (* eigentlicher Prozedurkörper *)
1
if graph = Ø
return Ø;
(* alle Suchgraphknoten erfolglos bearbeitet *)
fi;
2
graph-node ← Knoten aus graph mit kleinstem cost–Wert;
graph
← remove-from-graph(graph,graph-node);
node-dev-obj ← make-node-dev(graph-node,rule-list);
repeat
3
new-graph-node ← node-dev-obj();
(* Knoten entwickeln *)
4
if new-tree-node = Ø
(* Entwicklung fehlgeschlagen *)
then return Ø;
(* Backtracking *)
5
if new-tree-node.cont = Ø ∧ new-tree-node.rest = Ø
then return new-tree-node;
(* Fragemuster abgeleitet *)
6
head ← new-tree-node.head;
(* neu erreichter Knoten *)
fz-node ← Knoten ∈ graph, über den head bereits erreicht wurde;
7
if fz-node = Ø
then graph ← insert-into-graph(graph,new-graph-node);
8
else cont ← fz-node.cont ∩ new-graph-node.cont;
rest
← fz-node.rest ∩ new-graph-node.rest;
subst ← fz-node.subst ∪ new-graph-node.subst;
cost ← Kostenfunktion + fz-bonus;
prev ← append-to-path(combine-path(new-tree-node.prev,
fz-node.prev), name);
focus ← new-graph-node.focus;
combined-node ← generate-node(name,cost,head,cont,
rest,prev,subst,focus);
graph ← remove-from-graph(graph,fz-node);
graph ← insert-into-graph(graph,combined-node);
fi;
9
recursive-result ← develop-tree(graph,rule-list);
until recursive-result 6= Ø;
10
return recursive-result;
Abbildung 47: Algorithmus zur Suchgraphentwicklung
8 Im Falle eines Fragezentrums sind der neu entwickelte Knoten graph-node sowie
das Gegenstück fz-node zu einem neuen Knoten combined-node zu vereinigen. Anschließend wird fz-node aus dem Graphen entfernt (graph-node wurde bereits in
Schritt 2 herausgenommen) und stattdessen der neue Knoten combined-node in
den Graphen eingefügt.
166
5.4 Fragebeantwortung
9 Die develop-tree-Prozedur wird mit dem aktualisierten Suchgraphen aus den Schritten 8 /
9 rekursiv aufgerufen. Auf diese Weise wird erneut der kostengünstigste Suchgraphknoten ausgewählt und das Beweisverfahren weiter vorangetrieben. Wenn die Suchgraphentwicklung im nächsten Schritt scheitert und Ø zurückliefert, wird über die repeat-Schleife Backtracking durchgeführt. Im Zuge des
Backtrackings erfolgt entweder in Schritt 3 eine alternative Entwicklung des aktuellen Suchgraphknotens, oder der gesamte aktuelle Suchgraphknoten wird in Schritt
4 verworfen und die Beweisführung wird an den übergeordneten Aufrufer zurückverwiesen.
10 Positiver Ausgang des Beweisverfahrens. In diesem Fall ist ein leeres Fragemuster
bewiesen worden und der zugehörige Suchgraphknoten wurde durch alle Rekursionsebenen über die erfüllte until-Bedingung “hindurchgereicht”.
Beispiel. Als Beispiel dient wie in Kapitel 5.4.1 die Beantwortung des Fragemusters
aus Abb. 40 mit Hilfe der Wissensbasis von Abb. 39.
Zunächst wird in der Kernheuristik der anfängliche Suchgraph (SG) aufgebaut. In der
folgenden Tabelle sind nur die Startknoten mit den wichtigsen Einträgen der zugehörigen Suchgraph-Knoten angegeben. Für die nicht aufgeführten Einträge gilt: Das restElement enthält für die Startknoten immer die Gesamtmenge aller Kanten abzüglich der
Kanten aus der cont-Menge. Die Menge subst der Substitutionen ist zu Anfang leer und
für den Fokus gilt immer focus = !F. Auf die Protokollierung der Vorgängerknoten im
prev-Element wird in der folgenden Diskussion verzichtet, da sich die Graphentwicklung
aus der Beschreibung ergibt. Da sich in dem Fragemuster sieben lexikalisierte Knoten
befinden, startet der Suchgraph mit der entsprechenden Anzahl von Knoten:
SG-Knoten
(name)
qn7
qn5
qn4
qn2
qn1
qn6
qn3
Bewertung Knotenkopf Fortsetzung
(cost)
(head)
(cont)
14
Münze
SUB(?v5, ”Münze”)
14
Gold
SUB(?v6, ”Gold”)
14
Peter
AGT(?v3, ”Peter”)
14
Bank
SUB(?v2, ”Bank”)
14
Hagen
*IN(?v1, ”Hagen”)
23
g
*QUANT(?v7, !F, ”g”)
23
kaufen
SUBS(?v3, ”kaufen”)
Die Bewertung der ersten sechs Knoten ergibt sich aus der Summe der Anzahl der im Fragemuster noch unbewiesenen Kanten (13; die *QUANT-Funktion zählt einfach) und der
Anzahl der Kanten, die die Konzeptknoten in der Wissensbasis besitzen (zufällig immer
1). Für die letzten beiden Suchbaum-Knoten existieren keine passenden Konzeptknoten
in der Wissensbasis, wodurch sich die heuristische Bewertung 13 + Schätzwert 10 ergibt.
Die Reihenfolge der Knoten mit gleicher Bewertung ist zufällig bzw. davon abhängig, in
welcher Reihenfolge das Fragemuster aufgebaut wurde.
Nach dem Aufbau des Suchgraphen startet die Entwicklung des ersten Knotens, wobei
o.B.d.A. der oberste Knoten aus der Tabelle genommen wird. Die Fortsetzung “SUB(?v5,
“Münze”) kann direkt aus der Wissensbasis abgeleitet werden und es entsteht ein neuer
Suchbaumknoten:
167
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
xn8
Forts.
16 c5
ORIGM(“c5”, ?v6), SUB(?v4, “c5”)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), AGT(?v3, ”Peter”),
Rest. SUBS(?v3, ”kaufen”), SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
QMOD(?v6, ?v7), OBJ(?v3, ?v4), AVRT(?v3, ?v2), LOC(?v2, ?v1)
Subst. “c5”/?v5
!F
Die Einträge in der ersten Tabellenzeile enthalten den SG-Knotennamen, die Bewertung,
den Knotenkopf sowie ganz rechts den Fragefokus.
Der neue Knoten xn8 kann zunächst nicht weiterentwickelt werden, da der Knotenkopf
in der Wissensbasis eine größere Anzahl Kanten besitzt und dadurch eine schlechtere
Bewertung erhält. Die Fragezentrierung wird mit der Entwicklung von qn5 fortgesetzt,
wobei ebenfalls eine direkte Ableitung aus der Wissensbasis möglich ist. Als Resultat
entsteht xn9:
xn9
Forts.
16 c0
QMOD(“c0”, ?v7), ORIGM(?v5, “c0”)
*QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”), AGT(?v3, ”Peter”),
Rest. SUBS(?v3, ”kaufen”), SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
SUB(?v4, ?v5), OBJ(?v3, ?v4), AVRT(?v3, ?v2), LOC(?v2, ?v1)
Subst. “c0”/?v6
!F
Da auch xn9 keine minimale Bewertung erhält, wird als nächstes qn4 weiterentwickelt.
Dazu muß der zugehörige Literaldeducer die Kante AGT(?v3, “Peter”) mit Hilfe von Axiom bax1 ableiten. Dies gelingt und führt zu dem Seiteneffekt, daß die folgenden Kanten
aus der instantiierten Konklusion von bax1 dem Literal-Cache hinzugefügt werden:
Aus bax1 abgeleitete Kanten, die dem Literal-Cache hinzugefügt werden:
SUBS(“exq1”, ”kaufen”),
AGT(“exq1”, ”Peter”)
OBJ(“exq1”, “c28”),
AVRT(“exq1”, “c22”)
Bei der Neuberechnung der cont - und rest-Listen kann gleich noch das Grundliteral
SUBS(“exq1”, ”kaufen”) eliminiert werden, so daß sich nachstehender Folgeknoten ergibt:
xn10
Forts.
21 exq1
!F
OBJ(“exq1”, ?v4), AVRT(“exq1”, ?v2)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest. SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), LOC(?v2, ?v1)
Subst. “exq1”/?v3
Als nächstes werden die Knoten qn2 und qn1 mit dem Knotenköpfen “Bank” bzw. “Hagen” entwickelt, wobei sich in beiden Fällen eine direkte Ableitung aus der Wissensbasis
ergibt.
168
5.4 Fragebeantwortung
xn11
Forts.
15 c22
!F
AVRT(?v3, “c22”), LOC(“c22”, ?v1)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest. AGT(?v3, ”Peter”), SUBS(?v3, ”kaufen”), *IN(?v1, ”Hagen”),
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), OBJ(?v3, ?v4)
Subst. “c22”/?v2
xn12
Forts.
14 c29
!F
LOC(?v2, “c29”)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
AGT(?v3, ”Peter”), SUBS(?v3, ”kaufen”), SUB(?v2, ”Bank”),
Rest.
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), OBJ(?v3, ?v4),
AVRT(?v3, ?v2)
Subst. “c29”/?v1
Anschließend wird xn12 direkt (aufgrund seiner minimalen Bewertung) weiterentwickelt,
wodurch der Knotenkopf c22 entsteht. c22 stellt damit ein Fragezentrum dar, da es bereits
über xn11 erreicht worden ist. Der aus xn12 entwickelte Knoten wird mit xn11 kombiniert:
xn14
Forts.
8 c22 * Fragezentrum *
AVRT(?v3, “c22”)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest. AGT(?v3, ”Peter”), SUBS(?v3, ”kaufen”), QMOD(?v6, ?v7),
ORIGM(?v5, ?v6), SUB(?v4, ?v5), OBJ(?v3, ?v4)
Subst. “c22”/?v2, “c29”/?v1
!F
Aufgrund der um den fz-bonus vergünstigten Bewertung wird xn14 für den nächsten Entwicklungsschritt herangezogen. Die Kante AVRT(?v3, “c22”) kann mit Hilfe des LiteralCache abgeleitet werden und führt zu dem Netzknoten exq1, der bereits in xn10 erreicht
worden ist. Damit stellt exq1 ebenfalls ein Fragezentrum dar und es ergibt sich nach
Verschmelzung der Knoten und dem Beweis der Grundliterale AGT(“exq1”,”Peter”) und
SUBS(“exq1”,”kaufen”):
xn16
Forts.
12 exq1 * Fragezentrum *
OBJ(“exq1”, ?v4)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest.
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5)
Subst. “exq1”/?v3, “c22”/?v2, “c29”/?v1
!F
Aufgrund des Fragezentrum-Bonus wird der Beweis in der eingeschlagenen Richtung
fortgesetzt und xn16 über die Kante OBJ(“exq1”,?v4) entwickelt, die ebenfalls bereits im
Literal-Cache bereitsteht. Dies führt zu Knoten xn17:
xn17
Forts.
8 c28
SUB(“c28”, ?v5)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest.
QMOD(?v6, ?v7), ORIGM(?v5, ?v6)
Subst. “c28”/?v4, “exq1”/?v3, “c22”/?v2, “c29”/?v1
!F
169
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Die Entwicklung des Knotens xn17 erreicht ein weiteres Fragezentrum mit Netzknoten
c5 und ergibt unter Einbeziehung der Resultate aus Knoten xn5 den nachstehenden Folgeknoten:
xn19
Forts.
Rest.
Subst.
3 c5 * Fragezentrum *
ORIGM(“c5”, ?v6)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), QMOD(?v6, ?v7),
“c5”/?v5, “c28”/?v4, “exq1”/?v3, “c22”/?v2, “c29”/?v1
!F
Durch die Weiterentwicklung von xn19 ergibt sich eine analoge Situation mit dem neuen
Fragezentrum c0 und der Verschmelzung mit Knoten xn9:
xn21
Forts.
Rest.
Subst.
1 c0 * Fragezentrum *
QMOD(“c0”, ?v7)
*QUANT(?v7, !F, ”g”)
“c0”/?v6, “c5”/?v5, “c28”/?v4, “exq1”/?v3, “c22”/?v2, “c29”/?v1
!F
Nach der Fortsetzung des Beweises bei xn21 ist nur noch eine Kante im Fragemuster
enthalten:
xn22 3 c2
!F
Forts. *QUANT(“c2”, !F, ”g”)
Rest. Ø
“c2”/?v7, “c0”/?v6, “c5”/?v5, “c28”/?v4, “exq1”/?v3, “c22”/?v2,
Subst.
“c29”/?v1
Die verbleibende Kante wird durch den zuständigen Literaldeducer mit Hilfe von Axiom
bax3 bewiesen. Es ergibt sich der folgende Lösungsknoten:
solution
Forts.
Rest.
Subst.
0 Ø * Lösungsknoten *
Ø
Ø
“31.04”/!F, “c2”/?v7, “c0”/?v6, “c5”/?v5, “c28”/?v4, “exq1”/?v3,
“c22”/?v2, “c29”/?v1
31.04
Der Zeitpunkt der Substitution des Fragefokus im letzten Beweisschritt liegt in der Konstruktion des Beispiels begründet und hätte bei einer anderen Beweisreihenfolge auch
schon zu einem früheren Zeitpunkt geschehen können. Mit dem Erreichen des leeren Fragemusters und des Antwortkerns “31.04” ist die Fragebeantwortung abgeschlossen.
170
5.4 Fragebeantwortung
Unterschiede zum originalen Fragezentrierungs-Verfahren. Das hier vorgestellte
Verfahren versucht das Originalverfahren nach [Hel77] möglichst genau mit den in dieser
Arbeit entwickelten Inferenzmethoden zu realisieren. Es gibt jedoch bei der Behandlung
von Axiomen einen Unterschied zwischen den beiden Versionen.
In der Originalversion des Verfahrens wird die Behandlung von Axiomen von dem direkten Ableiten von Literalen abgetrennt. Es wird dort zunächst versucht, ein Literal aus dem
Fragemuster direkt aus der Wissensbasis abzuleiten. Wenn dies gelingt, wird das Literal
aus dem Fragemuster gestrichen. Gelingt die direkte Ableitung jedoch nicht, und wird
stattdessen ein passendes Axiom gefunden, so wird das Fragemuster selbst modifiziert.
Alle Literale des Fragemusters, die in der Konklusion eines passenden Axioms enthalten
sind, werden dazu aus dem Fragemuster entfernt und stattdessen die Literale der AxiomPrämisse in das Fragemuster eingefügt.
Die hier vorliegende Version der Fragezentrierung verwendet stattdessen eine einheitliche Behandlung der Ableitung von Literalen, da das betreffende Literaldeducer-Objekt
automatisch entscheidet, ob ein Literal direkt aus der Wissensbasis abgeleitet wird oder
indirekt mit Hilfe eines Axioms abgeleitet werden kann. Unabhängig vom Beweisweg
werden abgeleitete Literale aus dem Fragemuster entfernt, und es werden keine anderen
Modifikationen oder Hinzufügungen an dem Fragemuster vorgenommen. Falls mehrere
Literale des Fragemusters aus einer mehrstelligen Konklusion ableitbar sind, werden diese Literale nach der ersten Anwendung des Axioms durch wiederholten Rückgriff auf den
Literal-Cache abgeleitet, also in der nachfolgenden Entwicklung schrittweise, aber ohne
erneute Instantiierung des Axioms entfernt.
Beispiel. Der Unterschied tritt im vorhergehenden Beispiel bei der Entwicklung von
qn4 mit Hilfe von bax1 ein:
bax1: SUBS(H, “verkaufen”) ∧ AGT(H,N) ∧ OBJ(H,O) ∧ ORNT(H,Z)
→ (ex SKH)
SUBS(SKH, “kaufen”) ∧ (AGT SKH Z) ∧ (OBJ SKH O) ∧ (AVRT SKH N)
qn4
Forts.
14 Peter !F
AGT(?v3, ”Peter”)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
SUBS(?v3, ”kaufen”), SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
Rest.
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), OBJ(?v3, ?v4),
AVRT(?v3, ?v2), LOC(?v2, ?v1)
Subst. Ø
Im Original-Verfahren müssen zunächst die passenden Substitutionen für die Konklusion gefunden werden; diese sind { ?v3/SKH, “Peter”/Z, ?v4/O, ?v2/N }. Danach werden
folgende Literale aus dem Fragemuster entfernt:
SUBS(?v3, ”kaufen”), AGT(?v3, ”Peter”), OBJ(?v3, ?v4), AVRT(?v3, ?v2)
Anschließend werden aus der Prämisse von bax1 die folgenden Literale hinzugefügt:
SUBS(H, “verkaufen”), AGT(H, ?v2), OBJ(H, ?v4), ORNT(H, Peter).
171
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
Damit man von dem bisherigen Knotenkopf “Peter” einen Schritt weiter kommt und nicht
nur Literale austauscht, wird man den Beweis zumindest eine Netzkante vorantreiben
wollen und “c19”/H substituieren. Damit können bereits zwei Grundliterale eliminiert
werden und der Folgeknoten lautet danach:
xn10
Forts.
21 c19 * Folgeknoten nach Original-Verfahren *
!F
AGT(“c19”,?v2), OBJ(“c19”,?v4)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest. SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), LOC(?v2, ?v1)
Subst. Ø
Der Folgeknoten zu qn4 aus dem hier dargestellten Verfahren und Lösungsweg ergibt sich
hingegen als:
xn10
Forts.
21 exq1 * Folgeknoten nach vorgestelltem Verfahren *
!F
OBJ(“exq1”, ?v4), AVRT(“exq1”, ?v2)
SUB(?v6, ”Gold”), *QUANT(?v7, !F, ”g”), SUB(?v5, ”Münze”),
Rest. SUB(?v2, ”Bank”), *IN(?v1, ”Hagen”),
QMOD(?v6, ?v7), ORIGM(?v5, ?v6), SUB(?v4, ?v5), LOC(?v2, ?v1)
Subst. “exq1”/?v3
Dabei ist bei dem hier vorgestellten Verfahren zu berücksichtigen, daß u.a. die Literale
OBJ(“exq1”, “c28”) und AVRT(“exq1”, “c22”) jetzt bereits im Literal-Cache stehen.
Insgesamt können die beiden Verfahren so charakterisiert werden, daß das Original-Verfahren die Konklusion des Axioms sofort in den Beweisprozeß integriert und die Ableitung der Prämisse auf später verschiebt, während das hier vorgestellte Verfahren nach
Prüfung der generellen Eignung des Axioms zuerst die Prämisse instantiiert und die Integration der Ergebnisse aus der Konklusion auf die nachfolgenden Schritte verteilt.
Demnach bestehen die Unterschiede zwischen den beiden Verfahren im Aufbau der Fortsetzungsliste. Im Original-Verfahren enthält die Fortsetzungsliste aus dem obigen Beispiel
den Teil der Prämisse von bax1, der noch abzuleiten ist, während die Fortsetzungliste des
hier vorgestellten Verfahrens den Teil der bereits instantiierten Konklusion von bax1 darstellt, der noch in den Beweisprozeß zu integrieren ist (über direkte Ableitung mit Hilfe
des Literal-Cache).
Würde man die komplette Abarbeitung aller Literale eines Axioms vor der Generierung
bzw. Betrachtung des nächsten Folgeknotens fordern, so lieferten beide Verfahren in dem
obigen Beispiel sogar einen identischen Folgeknoten. Letztendlich verhalten sich beide
Verfahren symmetrisch und sind in diesem Punkt von der Laufzeitkomplexität her gesehen vergleichbar.
Der Austausch von Literalen verursacht jedoch einen erheblichen programmtechnischen
Aufwand in dem Original-Algorithmus, da er ein neues Matchingproblem “Fragemuster
gegen Konklusion” einführt.
Die Struktur der Kernheuristik würde bezüglich des Backtrackings im Original-Verfahren
ebenfalls deutlich komplexer werden, da beim Backtracking ein weiteres “offenes Ende”
berücksichtigt werden müßte, nämlich das Rückgängigmachen der Literalersetzungen,
wenn sich die Anwendung eines Axioms als beweistechnische Sackgasse erwiesen hat.
172
5.4 Fragebeantwortung
Das hier vorgestellte Verfahren kommt hingegen mit einer einfachen rekursiven Aufrufstruktur in der Kernheuristik aus, da sich das Fragemuster nur stackartig ändert. Bewiesene Literale werden aus dem Fragemuster entfernt und können später, sollte sich der
Beweiszweig als Sackgasse erweisen, wieder dem Stack hinzugefügt werden. Das sequentielle Einarbeiten der Konklusionen von Axiomen in den Beweisprozeß ergibt gegenüber dem “parallelen” Austauschen von Literalen des Original-Verfahrens keine Performanznachteile, da es sich mit Hilfe des Literal-Caches mit konstantem Mehraufwand
realisieren läßt. Da sich auf diese Weise zudem der Funktionsumfang und die objektorientierte Struktur des Netzdeducer-Systems besser ausnutzen läßt, wurde in MWR gemäß
Ockhams Rasiermesser mit der hier vorgestellten Methode die programmtechnisch einfachere Version realisiert.
Bewertung der Fragebeantwortungs-Verfahren. Eine abschließende Bewertung der
hier vorgestellten Verfahren, der Fragebeantwortung über den Netzdeducer und mit Hilfe
der Fragezentrierung, ist schwierig, da noch keine genügend großen Wissensbasen und
standardisierte Kataloge von Referenz-Anfragen existieren. Während die in den Beispielen genannten Fragemuster als durchaus typisch anzusehen sind, ist für das Hintergrundwissen eines FAS ein semantisches Netz mit tausenden von Knoten und einer entsprechenden Anzahl von Kanten als realistisch anzusehen. Derartige Netze liegen um ein
bis zwei Größenordnungen über den hier verwendeten Beispielnetzen und werden erst
verfügbar sein, wenn weitere Methoden zur automatischen Assimilation großer Wissensbasen zur Verfügung stehen und entsprechend umfangreiche quantitative Arbeiten zur
Erzeugung einer großen Wissensbasis durchgeführt worden sind.
Es lassen sich jedoch Abschätzungen treffen, indem die hier vorgestellten Verfahren mit
einem naiven Beweisverfahren verglichen werden, das mit einer Brute-Force-Methode
alle Literale des Fragemusters gegen alle möglichen Literale der Wissensbasis matcht, bis
ein leeres Fragemuster erzeugt worden ist.
Gegenüber dem Brute-Force-Verfahren sind beide vorgestellten Methoden klar im Vorteil,
was insbesondere auf die ursprünglich aus der Fragezentrierung stammende Startheuristik
zurückzuführen ist, mit der die Objektzentriertheit von M ULTI N ET ausgenutzt wird.
Dadurch, daß sich die Beweisverfahren zu Anfang auf Literale mit lexikalisierten Knoten aus dem Fragemuster konzentrieren, wird der Weg der Beweisverfahren verstärkt
durch die Struktur des Fragemusters und nicht durch die Komplexität des Hintergrundwissens gesteuert. Durch den Start mit lexikalisierten Knoten werden gegenüber dem
Brute-Force-Verfahren bereits zu Beginn des Ableitungsprozesses die Wahlmöglichkeiten
eingeschränkt und damit die Restlaufzeit verringert. Insgesamt kann sich aber im worstcase auch für die heuristisch verbesserten Verfahren eine exponentielle Laufzeit ergeben,
die allerdings empirisch selten beobachtet wird.
Für den Nutzen der Navigation innerhalb des Fragemusters kann abschließend keine Aussage gemacht werden, da die vorhandenen Wissensbasen zu klein sind. Während die Fragebeantwortung über den Teilnetzdeducer das Fragemuster mit einer Tiefensuche abarbeitet, versucht die Fragezentrierung, die Auswahl der als nächstes zu beweisenden Literale
heuristisch weiter zu optimieren und damit das Beweisziel noch schneller zu erreichen.
Bei den vorliegenden kleinen Netzen bedeutet die Verwaltung des Suchgraphen und das
Berechnen der Suchgraphknoten allerdings einen spürbaren Mehraufwand, der die Ant173
U NTERST ÜTZUNG
F ÜR
F RAGEBEANTWORTUNG
UND I NFERENZEN
wortzeit der Fragezentrierung auf das ca. 1,5 bis 3 fache der Fragebeantwortung durch
den Netzdeducer erhöht. Es ist aber zu erwarten, daß dieser Faktor bei größeren Netzen
in den Hintergrund tritt.
Insgesamt verhalten sich beide Verfahren sehr effizient, solange große Teile des Fragemusters direkt aus der Wissensbasis abgeleitet werden können.
Ein wichtiges Problem, das bisher von keinem der beiden Verfahren angegangen wird, ist
die heuristische Auswahl von Axiomen sowie gegebenenfalls eine Begrenzung der Rekursionstiefe z.B. bei Transitivitätsaxiomen. Die Laufzeit beider Verfahren wächst stark
mit der Anzahl der nicht direkt ableitbaren Kanten und der Menge der zur Verfügung stehenden Axiome. Insbesondere bei nicht direkt ableitbaren Kanten, die potentiell in sehr
vielen Konklusionen von Axiomen auftreten (z.B. SUB-, PARS-Kanten) kann bereits mit
3-5 axiomatisch abzuleitenden Kanten und bei 20-30 passenden Axiomen eine kombinatorische Explosion erreicht werden, die beide Verfahren nicht mehr praktikabel macht.
Als Ausweg bietet sich eine Begrenzung der Rekursionstiefe bei Axiomen auf Werte von
2 oder 3 an, da in der Praxis bisher keine tieferen Schachtelungen von Axiomen beobachtet worden sind. Zusätzlich müssen Heuristiken gefunden werden, um aus der Menge der
potentiell anwendbaren Axiome das vielversprechendste auszuwählen. Ein Ansatzpunkt
kann z.B. darin bestehen, B-Axiome bevorzugt einzusetzen, da sie weniger Variablen enthalten und dadurch den Hypothesenraum weniger stark erweitern. In diesem Kontext bieten die vorgestellten Methoden Ansatzpunkte für weiterführende Arbeiten.
174
Herunterladen