next up previous contents
Nächste Seite: Modellierung Aufwärts: Der gewählte Verarbeitungsansatz - Vorherige Seite: Annahmen   Inhalt


Verfahren

Das gewählte Verfahren beruht auf der Annahme, daß bereits aus wenigen Fragmenten einer Wortkette in einem bestimmten Kontext die Semantik hinreichend erschlossen werden kann. Dabei kann auch grammatikalisch inkorrekten Sätzen ein Sinn zugeordnet werden, da immer die Absicht einer Auftragserteilung unterstellt wird (siehe Annahmen). Die sinnrelevanten Fragmente nennen wir in diesem Zusammenhang Chunks (Sinnzusammenhangskomponenten) oder Konzepte. Ein Kaffeebeispiel zur Verdeutlichung:

Kommando 1: Carl hol mir bitte einen Kaffee und bring ihn in Raum sechs.

In diesem Beispiel reichen die unterstrichenen Wörter aus, den Sinn dieses Satzes in einer Büroumgebung zu erfassen. Die zentrale Rolle bei der Verarbeitung spielt das Schlüsselwort - in diesem Fall Kaffee. Damit ist die Grundaufgabe - einen Kaffee holen - definiert. Daraus ergeben sich die Fragen: ''ZU WEM soll der Kaffee gebracht werden?'' und/oder ''WOhin soll der Kaffee gebracht werden?''. Als weitere Möglichkeit wäre zum Beispiel noch die Frage nach einer bestimmten Uhrzeit (WANN) zu nennen. Eine Standardfrage ist immer, ob der Roboter angesprochen wurde oder nicht (RoboterName). Diese Fragen bilden die Grundlage der Chunks. Das ''ZU WEM''-Konstrukt kann danach zum Beispiel folgende Phrasen enthalten (siehe auch 5.2.3 Punkt 6), wobei O_NAME die Menge aller bekannten Namen ist:

oder das ''VON WEM''-Konstrukt:

Für ein Kaffeekommando (siehe Kommando 1) ergeben sich also folgende Chunks:

und die Zuordnungen:

Für die Aufgabe, Briefe zu verteilen, könnte die Chunkzuordnung folgendermaßen modelliert sein:

Kommando 2: Carl bringe diesen Brief  zu Henrik.

{Key : Brief} {RoboName : Carl} {Von_Wem : _} {Zu_Wem : Henrik}.

Die egozentrierte Aussage mir sowie die daraus resultierende leere Zuordnung (_) in Kommando 2 müssen im folgenden noch aufgelöst werden. Dazu wird in der späteren Implementierung ein eigener Chunk (Ego) definiert. Die Wortkette \( W=w^{N}_{1} \) wird zunächst auf bedeutungstragende Wörter hin untersucht und nicht relevante Elemente entfernt. Bedeutungstragende Wörter sind alle Wörter, die mit einem beliebigen Chunk zusammenhängen, zum Beispiel zu, da es im Konzept ''Zu_Wem'' vorkommt. Bringen ist in bezug auf die beiden Kommandobeispiele ein irrelevantes Wort und würde entfernt werden. \( S \) bezeichne diese Scanner-Funktion:

\( S(w^{N}_{1})=\hat{w}^{\hat{N}}_{1} \), mit \( \hat{N}\leq N \) und alle \( \hat{w}_{i} \) sind bedeutungstragende Wörter.

Auf dieser vorverarbeiteten Wortkette aufbauend kann der nachfolgende Parser (\( P \)) die Wörter beziehungsweise Phrasen zu Chunks zusammenfassen und auf ihre Gültigkeit hin überprüfen. Die Generierung von Kommandos kann an dieser Stelle variabel gehandhabt werden. Im folgenden werden die Chunks auch als Parameter bezeichnet.

Zum einen besteht die Möglichkeit an dieser Stelle bereits ein Kommando für die Planungsebene aufgrund des Schlüsselwortes zu generieren. Durch diese Zuordnung ergibt sich die Parmeterliste \( p_{i} \) (Chunkliste). Für den Kaffee-Befehl ergibt sich in bezug auf obiges Beispiel folgende Parameterdefinition:

\begin{displaymath}
p_{kaffee}:=(RoboterName,\, Zu\_Wem,\, Wo,\, Wann).\end{displaymath}

Diese Struktur muß mit den Werten der erkannten Chunks gefüllt werden. Dies führt allerdings bei Erkennung von Chunks, die dem Schlüsselwort nicht zugeordnet sind, zu einer Zurückweisung des Befehls, zum Beispiel der teilweise falsch erkannte Satz Carl bring einen Kaffee von Henrik würde zu einer Darstellung

{Key : Kaffee } {RoboName : Carl } {Von_Wem : Henrik }

führen. Da \( p_{kaffee} \) kein ''Zu_Wem'' enthält, könnte der Befehl nicht zugeordnet werden. \( \mathcal{C} \) sei nun die Menge aller definierten Kommandos. Zu jedem Kommando \) existiert eine Liste \( p_{i}\in \mathcal{P} \). Die Liste \( p_{i} \) enthält die für das Kommando \( c_{i} \) relevanten Parameter beziehungsweise Chunks. Für das Kaffeekommando \( c_{kaffee} \) wird in dieser Realisierung die oben beschriebene Struktur \( p_{kaffee} \) verwendet. Wir erhalten also für jede Anfrage ein Tupel mit dem Kommandonamen \( c_{i} \) und die zugeordnete Parameterliste \( p_{i} \). Allgemein kann die Interpretation (\( F \)) folgendermaßen dargestellt werden:


\begin{displaymath}
F(w^{N}_{1}):=P(S(w^{N}_{1}))=(c_{i},\, p_{i}),\end{displaymath}

wobei \( S \), wie oben gezeigt, eine die Wortkette verkürzende Scanner-Funktion ist. \( P \) erkennt aufgrund des in Key enthaltenen Schlagwortes das Kommando \( i \) und versucht, alle weiteren Chunks (RoboterName, Zu_Wem, ...) der Parameterstruktur \( p_{i} \) zuzuweisen.

Zum anderen kann eine Datenstruktur mit allen erkannten Chunks an die Planungsebene geschickt werden. Dies bedeutet, daß eigentlich nur ein Kommando (\( c_{1} \)) existiert und die Parameter alle erlaubten Chunks inklusive des Schlüsselwortes enthalten. Vorstellbar wäre eine Datenstruktur wie

\( p_{1}=(kmd\_key\, ,RoboterName,\, Zu\_Wem,\, Von\_Wem,\, Wann,\, Wo). \)

Die Planung muß sich dann um die weitere Verarbeitung kümmern. Diese kann mit falschen oder widersprüchlichen Informationen flexibler umgehen, zum Beispiel die Hypothese erstellen, daß ein Kaffee zu Henrik gebracht werden soll. Man muß dabei allerdings bedenken, daß die verwendete Planungsebene - GOLOG - in Relation zur Realisierung des Parsers recht langsam ist (siehe 5.2.3).

Probleme können entstehen, wenn zum Beispiel Sätze 2 und 3 erkannt werden, obwohl Satz 1 gesprochen wurde:

1. Carl bringe mir einen Kaffee in Raum sechs

2. Carl bringe mir einen Kaffee in in Raum sechs

3. Carl bringe mir einen Brief in Raum sechs

Für Satz zwei würde gelten \( S(W)= \) {Carl Kaffee in in Raum sechs}. Wenn dieser Spezialfall nicht modelliert ist, so würde kein Befehl durch \( P(\hat{W}) \) generiert werden. An dieser Stelle muß dazu gesagt werden, daß ein solcher Fehler mit den verwendeten Erkennern nicht auftreten kann. Dies liegt an der Verwendung von DFA's im linguistischen Modell. Bei Erkennern mit einem \( m \)-Gramm Sprachmodell (siehe 2.2.4) kann dieser Fehler aber sehr wohl auftauchen und die Weiterverarbeitung beeinflussen.

Das Problem mit Satz 3 ist schwerwiegender. Durch die falsche Erkennung eines Schlagwortes kann ein falscher Befehl abgesetzt werden. In diesem Beispiel scheitert es an der Zuordnung des Orts-Chunks. In der verwendeten Modellierung kann ein Brief nur an eine Person versendet werden. Wenn aber zum Beispiel Kommando 2 als Carl bringe diesen Kaffee zu Henrik erkannt wird, so führt dies zur Ausführung eines falschen Kommandos. Solche elementaren Fehler durch den Spracherkenner werden aber eher selten produziert, führen aber definitiv zu einem fehlerhaften Kommando.

Im folgenden wird die Realisierung der unter 2.3.2 genannten Quellen in diesem Verfahren erläutert. Morphologie und Syntax ( Punkt 1 und 2) werden in diesem Zusammenhang völlig außer acht gelassen. Die Semantik wird auf Basis von Einzelwörtern bzw. kurzen Phrasen (Chunks bzw. Konzepte) ausgenutzt, um den Zusammenhang zu einem Befehl herzustellen. Diese Zusammenhangserkennung stellt auch einen Teil des sechsten Bereichs (Weltwissen) dar. Das Benutzermodell ist ebenfalls zum Teil in der gerade beschriebenen Ebene realisiert. Die Auflösung von Begriffen wie mir oder Ich werden hier vorgenommen. Ein Benutzer muß sich daher zu Beginn am System anmelden. Das Dialoggedächtnis ist vollständig in der Planungsebene realisiert. Auf seiten des Parsers ist der Dialogkontext (Anfrage oder Interaktion in einem bestimmten Kontext) nicht bekannt. Weitere Aspekte des Benutzermodells (zum Beispiel üblicher Sitzplatz eines Kollegen) und Weltmodells (zum Beispiel wo die Kaffeemaschine steht) sind ebenfalls im Planungssystem realisiert.


next up previous contents
Nächste Seite: Modellierung Aufwärts: Der gewählte Verarbeitungsansatz - Vorherige Seite: Annahmen   Inhalt

2001-01-04