Ruprecht-Karls-Universität Heidelberg
Lehrstuhl für Computerlinguistik
WS 2002/03 – WS 2003/04
@Autoren: Marit Rautso, Margeth Sopp, Iryna Zhmaka
7. Grammatiken und Spracherkennung
InfoLine ist ein Prototyp eines telefonischen Auskunftssystems für das Studentensekretariat der Universität Heidelberg.
Es soll dem Benutzer ( Anrufenden, vor allem Studierenden der Uni Heidelberg ) ermöglichen, Informationen zu verschiedenen Themen, die mit dem Studium zusammenhängen, zu bekommen. Die Bedienung des Systems erfolgt über natürlichsprachliche Eingaben des Anrufenden mit Hilfe eines ASR, die Ausgabe erfolgt über die TTS. Der Benutzer wird mit hinweisenden Fragen durch den Dialog geführt. Das Thema ist vorgegeben, die Antworten können ziemlich frei formuliert werden (es wird durch offene Grammatiken ermöglicht; siehe unten Grammatiken)
Als Programmierwerkzeug haben wir den Robot 5 Moderator (ein Applikationsgenerator für Sprachcomputeranwendungen) der Firma Voicerobots http://www.voicerobots.com verwendet.
Allgemeine Programmstruktur:
Robot 5 Programme werden in einer Baumstruktur dargestellt.
Die Programme (Module) werden aus verschiedenen Levels (Ebenen) aufgebaut. Robot 5 kann als Zustandsmaschine interpretiert werden. Jeder Zustand wird dabei durch einen Level im Moderator repräsentiert. Der Übergang in einen untergeordneten Level erfolgt durch eine Sprunganweisung GOTO oder ein Kommandowort (Ja/Nein-Fragen), während ein übergeordneter Level durch eine Sprunganweisung, ein Kommandowort oder eine vollständige Abarbeitung des untergeordneten Levels erreicht wird.
Unser Programm besteht insgesamt aus 34 Modulen (s. Module). Die verschiedenen Module sind durch Anweisungen ’chain’ und ’return’ miteinander verknüpft. Mit der chain-Anweisung wird aus einem übergeordneten Programm in ein Unterprogramm gesprungen. Um zu der Stelle im übergeordneten Programm, von der man in das Unterprogramm gewechselt hat, wieder zurückzukehren, wird die return-Anweisung verwendet.
Zunächst liest der Server die Programmeigenschaften des Programms. Diese Eigenschaften setzen programmglobale Einstellungen voraus, die so lange Gültigkeit haben, wie dieses Programm ausgeführt wird. In der Init-Ebene des Hauptprogramm.r5-Moduls wird die Spracherkennung aktiviert. Wir benutzen die sog. „Talkover“- Spracherkennungsart. D.h., wenn die „Talkover“- Option aktiv ist, kann der Anrufer eine sprachliche Eingabe bereits während der Systemansagen tätigen.
Die Spracherkennung erfolgt entweder durch grammatische Erkennung (SpeechPearl 2000), die mittels Grammatiken natürlich gesprochene Sprache erkennt ( in unserem System begrenzt durch Themenauswahl ) oder Kommandowörter, die in dem System vordefiniert sind (Ja/ Nein-Fragen) und somit die Steuerung des Servers durch den Anrufer realisieren (s. Spracherkennung).
Für Text-to-Speech Synthese haben wir Lernout & Hauspie eingesetzt. Das Objekt ’Sprachsynthese’ dient dazu, Sprachdateien, wie Informationsermittlung über behandelte Themen, Begrüßung des Anrufers oder Ansage einer falschen Erkennung usw., abzuspielen. Ein eingegebener Text kann einfach „vorgelesen“ werden (s. Text-To-Speech Synthese).
In 10 Modulen werden die Daten, die für die Sprachsynthese erforderlich sind, aus der Datenbank eingelesen.
z.B. TTS für die
Öffnungszeiten des Studentensekretariats:
Das Studentensekretariat hat von %SQL(1)% geöffnet. Telefonisch erreichen sie das Studentensekretariat während dieser Zeiten: %SQL(2)%
Die Datenbankanbindung wird über die ODBC-Funktion realisiert. Die Selektion der Daten erfolgt mittels der Standard-Abfragesprache SQL. Mit den Variablen %SQL(1)% ... %SQL(x)% kann auf die einzelnen Felder des Datensatzes in der Ereignistabelle einer SQL- Abfrage zugegriffen werden (s. Datenbankanbindung).
Unser System besteht aus 34 Modulen, die miteinander über die Anweisungen ’chain’ und ’return’ verknüpft sind. Alle diese Module erfüllen die Aufgabe der Informationsvermittlung über das Studieren an der Universität Heidelberg. Jedoch haben die Module Email.r5, Listen.r5 und SMTP_WaitStatus.r5 eher eine technische Funktion, da sie jeweils eine bestimmte Aufgabe erfüllen sollen und aus allen anderen Modulen erreichbar sind.
Hauptprogramm.r5:
Dieses Modul ist der Ausgangspunkt für das ganze Telefonsystem.
Über dieses Programm wird dem Anrufenden die Themenauswahl angeboten (Genaueres in dem Kommentar zur Grammatik 'Anfangserkennung'). Hier werden die Ressourcen geladen (Philips SpeechPearl 2000 für die Erkennung), die globalen Variablen definiert, die in allen Modulen zugänglich sind.
Je nach Erkennungsergebnis (in Variable %thema%) wird in das jeweilige Unterprogramm gesprungen.
Studienmöglichkeiten.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten. Als erstes wird mittels grammatischer Erkennung ('Erkennung Studienmöglichkeiten') erkannt, ob der Anrufende Infos über deutsche Studierende, ausländische Studierende oder Gasthörer haben will. Bei einem der Ergebnisse wird in das entsprechende Modul gesprungen.
Studienmöglichkeiten_dt.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende. In der grammatischen Erkennung 'Erkennung Studienmöglichkeiten_dt' wird erkannt, ob der Anrufende sich für Studienangebot, Auslandstudium, Parallelstudium, Zweitstudium oder Aufbaustudium interessiert und dementsprechend in das jeweilige Modul gesprungen.
Studienmöglichkeiten_dt_aufbaustudium.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende über Aufbaustudium. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen.
Studienmöglichkeiten_dt_auslandsstudium.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende über Auslandsstudium. Es wird ein kurzer Infotext vorgelesen und die Möglichkeit zu den weiteren Informationen aus dem Beriech Studienangebot oder allgemein angeboten.
Studienmöglichkeiten_dt_parallellstudium.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende über Parallelstudium. Es wird ein kurzer Infotext vorgelesen und die Möglichkeit zu den weiteren Informationen aus dem Beriech Studienangebot oder allgemein angeboten.
Studienmöglichkeiten_dt_studienangebot.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende über Studienangebot. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder nur, ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Studienmöglichkeiten_dt_zweitstudium.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für deutsche Studierende über Zweitstudium. Es wird ein kurzer Infotext vorgelesen und die Möglichkeit zu den weiteren Informationen aus dem Beriech Studienangebot oder allgemein angeboten. Außerdem kann sich der Anrufende das Merkblatt zum Zweitstudium zuschicken lassen. Dafür wird in das Modul Email.r5 gesprungen.
Studienmöglichkeiten_ausl.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für ausländische Studierende. In der grammatischen Erkennung 'Erkennung Themenauswahl' wird erkannt, ob der Anrufende sich für Studienangebot, Kurzzeitstudium oder Aufbaustudium interessiert und dementsprechend in das jeweilige Modul gesprungen.
Studienmöglichkeiten_ausl_aufbaustudium.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für ausländische Studierende über Aufbaustudium. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder nur, ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Studienmöglichkeiten_ausl_studienangebot.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für ausländische Studierende über Studienangebot. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder nur, ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Studienmöglichkeiten_ausl_kurzzeit.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für ausländische Studierende über Kurzzeitstudium. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder nur, ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Studienmöglichkeiten_gast.r5:
Dieses Modul bietet Informationen zum Thema Studienmöglichkeiten für Gasthörer. Es wird ein kurzer Infotext vorgelesen und dem Anrufenden die Möglichkeit gegeben, sich den Antrag auf Gasthörerschaft per E-Mail zuschicken zu lassen. In dem Falle wird in das Modul Email.r5 gesprungen.
Bewerbung.r5:
Dieses Modul bietet Informationen zum Thema Bewerbung. Als erstes wird mittels grammatischer Erkennung ('Erkennung Bewerbung') erkannt, ob der Anrufende Infos für deutsche oder für ausländische Studierende haben will. Beim Ergebnis 'ausländisch' wird in das Modul 'bewerbung_ausl' gesprungen.
Die Infos für deutsche Studierende werden per SQL-Befehl aus der Datenbanktabelle studienprojekt_fristen geholt je nach Kalenderwoche des Anrufs (für Sommersemester oder für Wintersemester). Das aktuelle Semester ist durch die Wochenzahl definiert: Systemvariable %WEEK% ( < 30 fürs WS; > 30 fürs SS ).
Bewerbung_ausl.r5:
Dieses Modul bietet Informationen zum Thema Bewerbung für ausländische Studierende. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will oder nur, ob er das Infopaket zugeschickt bekommen will. In dem letzteren Fall wird in das Modul Email.r5 gesprungen. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Fristen.r5:
Dieses Modul bietet Informationen zum Thema Fristen. Als erstes wird mittels grammatischer Erkennung ('Erkennung Fristen') erkannt, ob der Anrufende Infos über Einschreibung, Umschreibung, Exmatrikulation, Rückmeldung, Beurlaubung oder Bewerbung haben will. Bei einem der Ergebnisse wird in das entsprechende Modul gesprungen.
Frist_Beurlaubung.r5:
Dieses Modul bietet Informationen zum Thema Fristen über Beurlaubung. Der Anrufende wird danach gefragt, ob er das entsprechende Formular und das Merkblatt zugeschickt bekommen will. In dem Fall wird in das Modul Email.r5 gesprungen.
Frist_Bewerbung.r5:
Dieses Modul bietet Informationen zum Thema Fristen über Bewerbung. Das genaue Datum der Bewerbungsfrist für zulassungsbeschränkte Fächer und ausländische Studierende wird je nach Semester (SS oder WS) per SQL-Befehl aus der Datenbanktabelle studienprojekt_fristen geholt. Das aktuelle Semester ist durch die Wochenzahl definiert: Systemvariable %WEEK% ( < 30 fürs WS; > 30 fürs SS ).
Frist_Einschreibung.r5:
Dieses Modul bietet Informationen zum Thema Fristen über Einschreibung. Als erstes wird mittels grammatischer Erkennung ('Erkennung Einschreibung') erkannt, ob der Anrufende Infos für zulassungsbeschränkte bzw. für ausländische Studierende oder für zulassungsfreie Fächer haben will.
Die Fristen für Zulassungsfreie Fächer sowohl für Erstsemester als auch für Studienortwechsler werden per SQL-Befehl aus der Datenbanktabelle studienprojekt_fristen je nach Sommer-, Wintersemester geholt. Das aktuelle Semester ist durch die Wochenzahl definiert: Systemvariable %WEEK% ( < 30 fürs WS; > 30 fürs SS ). Der Anrufende wird auch danach gefragt, ob er das entsprechende Formular und das Merkblatt zugeschickt bekommen will. In dem Fall wird in das Modul Email.r5 gesprungen.
Frist_Exmatrikulation.r5:
Dieses Modul bietet Informationen zum Thema Fristen über Exmatrikulation. Der Dialog wird mittels Ja-Nein-Fragen gesteuert. Der Anrufende wird danach gefragt, ob er das entsprechende Formular und das Merkblatt zugeschickt bekommen will. In dem Fall wird in das Modul Email.r5 gesprungen.
Frist_Rueckmeldung.r5:
Dieses Modul bietet Informationen zum Thema Fristen über Rückmeldung. Die Fristen für Rückmeldung werden per SQL-Befehl aus der Datenbanktabelle studienprojekt_fristen geholt je nach Kalenderwoche des Anrufs (für Sommersemester oder für Wintersemester):
die Systemvariable %WEEK% ( < 30 fürs WS; > 30 fürs SS ).
Frist_Umschreibung.5:
Dieses Modul bietet Informationen zum Thema Fristen über Umschreibung. Der Dialog wird mittels Ja-Nein-Fragen gesteuert. Der Anrufende wird danach gefragt, ob er das entsprechende Formular und das Merkblatt zugeschickt bekommen will. In dem Fall wird in das Modul Email.r5 gesprungen.
Gebuehren.r5:
Dieses Modul bietet Informationen zum Thema Gebühren. Die entsprechenden Gebühren wie Langzeit-, Semester- ( beinhaltet Studentenwerkbeitrag ), Verspätungsgebühren und (jeweils extra Levels) werden per SQL-Befehl aus der Datenbanktabelle studienprojekt_gebuehren geholt.
Bafoeg.r5:
Dieses Modul bietet Informationen zum Thema Bafög. Die Adresse des zuständigen Amts und das Telefonnummer werden per SQL-Befehl aus den Datenbanktabellen Studienprojekt_mitarbeiter (Telefonnummer) und studienprojekt_location (Adresse) geholt.
Behinderung.r5:
Dieses Modul bietet Informationen zum Thema Behinderung. Der Dialog wird mittels Ja-Nein-Fragen gesteuert. Je nach Tageszeit wir der Anrufende danach gefragt, ob er direkt mit dem entsprechenden Sachbearbeiter weiterverbunden werden will. Die Tageszeit wird in der Systemvariable %SYSSTATE2% abgefragt. Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable gleich 1 ( -> Tagschaltung ) ist.
Die Systemvariable %CONNRES% enthält das Resultat des letzten Verbindevorgangs:
1 -> Erfolgreich verbunden mit Nebenstelle, nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Kinderbetreuung.r5:
Dieses Modul bietet Informationen zum Thema Kinderbetreuung. Der Dialog wird mittels Ja-Nein-Fragen gesteuert.
Wohnen.r5:
Dieses Modul bietet Informationen zum Thema Wohnen. Das genaue Datum der Bewerbungsfrist für Wohnheimplätze wird per SQL-Befehl je nach Semester (SS oder WS) aus der Datenbanktabelle studienprojekt_fristen geholt. Aus der Datenbanktabelle Studienprojekt_mitarbeiter werden die Telefonnummer und telefonische Sprechzeiten des Studentenwerkes geholt.
Kontakt.r5:
Dieses Modul bietet Informationen zum Thema Kontakt. Als erstes wird mittels grammatischer Erkennung ('Erkennung Kontakt') erkannt, ob der Anrufende Infos über Öffnungs- und Sprechzeiten, Anschrift, Internetadresse, Wegbeschreibung oder Bankverbindung haben will. Bei einem der Ergebnisse wird in das entsprechende Modul gesprungen.
Kontakt_öffnungszeiten.r5:
Dieses Modul bietet Informationen zum Thema Kontakt über Öffnungszeiten. Die genauen Öffnungszeiten und auch die Zeiten für telefonische Auskünfte des Studentensekretariats werden per SQL-Befehl aus der Datenbanktabelle Studienprojekt_mitarbeiter geholt.
Kontakt_bankverbindung.r5:
Dieses Modul bietet Informationen zum Thema Kontakt über Bankverbindung. Die genaue Bankverbindung (Name des Kreditinstituts, BLZ, Kontonummer) wird per SQL-Befehl aus der Datenbanktabelle studienprojekt_bankverbindung geholt.
Kontakt_anschrift.r5:
Dieses Modul bietet Informationen zum Thema Kontakt über Anschrift. Die genaue Anschrift der Uni Heidelberg wird per SQL-Befehl aus der Datenbanktabelle studienprojekt_location geholt. Der Anrufende hat auch die Möglichkeit eine Wegbeschreibung per E-mail zusenden zu lassen. In dem Fall wird in das Modul Email.r5 gesprungen.
Email.r5:
In diesem Programm wird anhand der Grammatik 'Matrikelgrammatik' die Matrikelnummer der Anrufenden erkannt, um ihm per Email die angeforderten Formulare und Merkblätter zuzuschicken. Die Matrikelnummer mit zugehörigen Uni-Emailadressen (in unsrem Fall nur das Login, also der erste Teil der Adresse) sind in der Datenbank gespeichert. Zu der erkannten Matrikelnummer wird der entsprechende Eintrag aus der Datenbank geholt und dem Anrufenden zu Bestätigung / Korrektur vorgelesen.
Listen.r5 :
In dem Programm wird sichergestellt, dass nur ein Erkennungsergebnis (mit höchster Wahrscheinlichkeit) an das System weitergereicht wird. Es werden pro Erkennung 2 Listen erzeugt: eine für Erkennungsergebnisse selber, die zweite für die jeweiligen Wahrscheinlichkeiten, mit denen die Ergebnisse erkannt wurden. Wenn mehrere Ergebnisse gleiche Wahrscheinlichkeit haben, die über dem festgelegten Schwellenwert (8000) liegt, dann werden diese Elemente in die dritte Liste eingefügt und dem Anrufenden vorgelesen, um die Auswahl einzuschränken.
SMTP_WaitStatus.r5 :
In dem Modul wird versucht, die entsprechenden Unterlagen zu versenden.
Die Systemvariable %SMTP_STATE% wird solange abgefragt, bis deren Wert != -1 ist. Beim Wert > 0 trat ein SMTP-Fehler auf. Ansonsten wurden die Unterlagen versandt.
Es gibt in unseren Programmen keine klassischen Funktionen. Aber wir haben Levels, die sich immer wieder wiederholen. Sie sind nicht als abstrakte Module, an die Parameter übergeben werden können, zu verstehen.
Wir haben folgende wiederkehrende Levels:
'Ergebnis' (Abbildung 1): wenn die Spracherkennung ein Ergebnis liefert; das Ergebnis wird in der Variable %thema% gespeichert.
'kein Erkennungsergebnis' (Abbildung 2): die Spracherkennung liefert kein Ergebnis; nach 2 Fehlschlägen wird der Anruf durch das System terminiert; die Anzahl der Fehlschläge wird in der Variable %keinErgCounter% inkrementiert.
Abbildung 2:
'kein Erkennungsergebnis'
'verbinden' (Abbildung 3): Verbinden mit einer Nebenstelle; verwendete Systemvariablen:
%SYSSTATE2% - enthält den Wert für die aktuelle Tagesschaltung:
1 Tagschaltung, 2 Mittagschaltung, 3 Nachtschaltung, 4 Wochenendschaltung;
Die 'Verbinden'-Funktion ist nur dann verfügbar, wenn der Wert der Variable = = 1 ( -> Tagschaltung ) ist.
%CONNRES% - enthält das Resultat des letzten Verbindevorgangs;
Der Wert 1 dieser Variable signalisiert, dass die Verbindung mit Nebenstelle erfolgreich war; nach Beenden des Verbindevorgangs mit Nebenstelle terminiert das System den Anruf. Bei allen anderen Werten der Variable wird es dem Anrufer angeboten im System zu bleiben, um weitere Informationen zu bekommen.
Abbildung 3: 'verbinden'
'Ende Anruf' (Abbildung 4): Terminierung des Anrufes.
Abbildung 4: 'Ende Anruf'
Des Weiteren gibt es in unserem System drei Module, die als eine Art Funktionen verstanden werden können, da sie jeweils eine bestimmte Aufgabe erfüllen sollen und aus allen anderen Modulen erreichbar sind: Listen.r5, Email.r5 und SMTP_WaitStatus.r5.
Zu der Funktion von Listen.r5, Email.r5 und SMTP_WaitStatus.r5 siehe Module.
In unserem Projekt werden folgende Datenstrukturen benutzt:
Stack: Beim ersten Sprung aus einem übergeordneten Programm in ein Unterprogramm wird ein Stack gebildet. Auf dem Stack werden die aktuellen Zustände des übergeordneten Programms gespeichert. Bei jedem weiteren Sprung kommt ein neuer Eintrag auf den Stack. So ist es möglich, zu der Stelle im übergeordneten Programm wieder zurückzukehren, von der man in das Unterprogramm gewechselt hat.
In unserem System weisen auf die Verwendung von Stack folgende Befehle im Programmablauf hin:
1) Chain <Programmname>: es wird ein neuer Eintrag auf den Stack gelegt ( push );
2) Return: der oberste Eintrag wird vom Stack entfernt ( pop ).
Linelisten: Dienen dazu, Listen oder Array ähnlicher Variablen zu manipulieren. Die Linelisten werden im Modul 'Listen' verwendet, um mehrere Erkennungsergebnisse nach Erkennungswahrscheinlichkeit zu sortieren und weiterzubearbeiten.
Durch diese Datenstrukturen wird sichergestellt, dass nur ein Erkennungsergebnis (mit höchster Wahrscheinlichkeit) an das System weitergereicht wird. Es werden pro Erkennung 2 Listen erzeugt: eine für Erkennungsergebnisse selber
(LINELIST1), die zweite für die jeweiligen Wahrscheinlichkeiten (LINELIST2), mit denen die Ergebnisse erkannt wurden. Wenn mehrere Ergebnisse gleiche Wahrscheinlichkeit haben, die über dem festgelegten Schwellenwert (8000) liegt, dann werden diese Elemente in eine dritte Liste (LINELIST3) eingefügt und dem Anrufenden vorgelesen, um die Auswahl einzuschränken.
Die Daten für die Generierung der Systemantworten sind teilweise in Form einer Datenbank abgespeichert. 'Teilweise' bedeutet, dass nur Daten, die oft geändert werden wie z.B Fristen oder Gebühren, in einer Datenbank abgelegt werden. Dies erlaubt es, die entsprechenden Einträge schnell zu ändern.
Als "Front-End"-Applikation benutzen wir MS Access, als "Back-End" haben wir den MS SQL Server getestet. Es ist aber möglich, jedes Database Management System (DBMS) einzusetzen, das über ODBC-Funktionen angefragt werden kann.
Die Datenbankapplikation ist als Microsoft Access Project (*.adp-Dateityp) gespeichert (ab MS Access 2000).
Die Datenbank setzt sich aus folgenden Tabellen zusammen:
1) studienprojekt_bankverbindung: enthält den aktuellen Banknamen, die Kontonummer und Bankleitzahl.
2) studienprojekt_email: setzt sich aus Spalten MatrNr (Schlüssel; für die Matrikelnummer) und eMail (für das Login).
Die Tabelle studienprojekt_email dient dazu, die erkannten Matrikelnummern mit den in ihr enthaltenen Universitätsmatrikelnummern zu vergleichen und den entsprechenden Eintrag für das Login zu holen, zu dem die standardmäßige Erweiterung der Uni-Adressen ( @ix.urz.uni-heidelberg.de ) hinzugefügt wird. Falls die erkannte Matrikelnummer in der Datenbank nicht gefunden wird, gilt das Erkennungsergebnis als fehlerhaft.
Die Tabelle soll also eine Abhilfe für die Erkennung sein, da die Fehlerrate bei der Einzelbuchstabenerkennung von Email-Adressen, die dem System unbekannt sind, sehr hoch ist und es keine Garantie gibt, dass die Adresse richtig erkannt wurde. Für unseren Prototyp haben wir 144 Einträge in studienprojekt_email gespeichert.
3) studienprojekt_fristen: enthält die aktuellen Fristen für Bewerbung, Einschreibung, Rückmeldung ( nach Winter-, Sommersemester getrennt ).
4) studienprojekt_gebuehren: Beträge für Langzeit-, Semester- und Verspätungsgebühren.
5) studienprojekt_location: hier sind Adressen von verschiedenen Anlaufstellen gespeichert.
6) studienprojekt_mitarbeiter: enthält Namen von Mitarbeitern des Studentensekretariats sowie verschiedenen Einrichtungen mit dazugehörigen Telefonnummern und Sprech- bzw. Öffnungszeiten.
Die Grammatiken für den Spracherkenner (in unserem Falle: Philips SpeechPearl 2000) sind in Speech Recognition Control Language geschrieben – in einem Grammatikformalismus der von Speech Recognition API Committee und vom Enterprise Computer Telephony Forum eingeführt worden ist.
Es ist ein spezieller Typ der Backus-Naur Form (BNF) und legt syntaktisches Muster und spezifisches Vokabular fest. SRCL weist kleine Unterschiede von Anbieter zu Anbieter auf. Wir benutzen den Formalismus von Philips SpeechPearl 2000.
Es werden in diesem System überall offene Grammatiken benutzt, d.h. der Recognizer sucht nach bestimmten Konzepten, die in der Grammatik definiert sind, wobei alles andere ignoriert wird (im Gegensatz zu geschlossenen Grammatiken, bei denen der Anrufer auf eine bestimmte Wortsequenz angewiesen ist, die in der Grammatik definiert ist).
Bei offenen Grammatiken werden erkannte Wörter oder Phrasen auf bestimmte Konzepte (semantic actions) zurückgeführt. Es wird gewährleistet durch sog. Attribute Result Mode, was das Interpretieren von Erkennungsergebnissen enorm erleichtert. So kann man z.B. der Anrufende "Unterlagen" oder "Informationen" sagen kann, so dass es von dem Programm immer noch als Wunsch nach dem Zuschicken von bestimmten Formularen interpretiert wird.
Es sind in der InfoLine insgesamt 15 Grammatiken definiert, die auch im Plaintext-Format in dem Ordner grammars zu finden sind.
SpeechPearl2000 leistet eine Erkennung von natürlich gesprochener Sprache, die dank semantischen Aktionen nicht satzweise festgelegt werden muss, sondern es müssen nur die Konzepte definiert werden. Dadurch ist dem Anrufenden eine relativ freie Antwortmöglichkeit gegeben.
Die Spracherkennungsressourcen werden nur ein Mal aktiviert (im Hauptprogramm.r5, in der Ebene Init) und sie bleiben für die Dauer des ganzen Prozesses aktiv. Die Spracherkennung ist in unserem System nur für die deutsche Sprache (Germany) aktiviert.
Für die Sprachausgabe wird die TTS von Lernout & Hauspie benutzt. Sie basiert auf der parametrisierten Segmentkonkatenation von kleineren, von Menschen gesprochenen Lauteinheiten (2, 3, 4 und mehr Laute) und Wörtern.
In unserem ganzen System werden die Texte aus dem Datenfeld im Programm von dem Synthese-Engine vorgelesen und es werden keine vorher aufgenommenen Texte abgespielt.
Die Länge der Texte beträgt durchschnittlich 10-20 Sekunden pro Texteinheit, längere Abschnitte wurden absichtlich vermieden hinsichtlich der beschränkten Auffassungskapazität der "Maschinen-Rede" durch den Menschen. Einige Fehler in der Aussprache wurden durch Modifizieren des Textes mit Blanks und zusätzlichen Buchstaben, durch Umformulierungen und Änderungen im Satzaufbau verbessert.
Die Synthese wird im jeweiligen Modul direkt vor jeder TTS-Einheit angefordert. Genauso wie die Spracherkennung, ist auch die TTS Synthese in dieser Version von InfoLine nur in deutscher Sprache (Germany) verfügbar.