DE68928230T2 - System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes - Google Patents
System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten SatzesInfo
- Publication number
- DE68928230T2 DE68928230T2 DE68928230T DE68928230T DE68928230T2 DE 68928230 T2 DE68928230 T2 DE 68928230T2 DE 68928230 T DE68928230 T DE 68928230T DE 68928230 T DE68928230 T DE 68928230T DE 68928230 T2 DE68928230 T2 DE 68928230T2
- Authority
- DE
- Germany
- Prior art keywords
- word
- component
- sentence
- program
- constituent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 24
- 239000000470 constituent Substances 0.000 claims description 136
- 230000015654 memory Effects 0.000 claims description 124
- 230000006870 function Effects 0.000 claims description 108
- 238000012937 correction Methods 0.000 claims description 60
- 238000012360 testing method Methods 0.000 claims description 17
- 238000001914 filtration Methods 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 7
- 238000002224 dissection Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 69
- 238000004458 analytical method Methods 0.000 description 48
- 230000008569 process Effects 0.000 description 36
- 230000003936 working memory Effects 0.000 description 18
- 230000009471 action Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 8
- 208000027418 Wounds and injury Diseases 0.000 description 7
- 230000006378 damage Effects 0.000 description 7
- 208000014674 injury Diseases 0.000 description 7
- 230000006978 adaptation Effects 0.000 description 5
- 230000007935 neutral effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001755 vocal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Machine Translation (AREA)
Description
- Die Erfindung betrifft ein System zur grammatikalischen Verarbeitung eines in einer natürlichen Sprache zusammengesetzten und aus Worteinheiten aufgebauten Satzes, mit Eingabemitteln zur Eingabe eines Satzes, Massenspeichermitteln zur Speicherung lexikalischer Daten von Worteinheiten, Lexikalisierungsmitteln zum Assoziieren geeigneter lexikalischer Information, die von den Massenspeihermitteln geliefert wird, mit jeder Worteinheit aus dem Satz, Speichermitteln zur Speicherung einer Menge grammatischer Regeln, wobei diese Menge Regeln zur Überprüfung eines eingegebenen Satzes und seiner Bestandteile umfaßt, Zergliederungsmitteln (Parser) zum Zergliedern des Satzes anhand der Menge grammatischer Regeln unter Bestimmung eines Wahrscheinlichkeitsfaktors, der einen Grad bestimmt, mit dem ein Bestandteil oder Satz die Menge grammatischer Regeln erfüllt, und zur Erzeugung wenigstens einer Satzrepräsentation, und Wählmitteln zum Wählen von Satzrepräsentationen auf der Grundlage der zugehörigen Wahrscheinlichkeitsfaktoren.
- Systeme und Verfahren zur grammatikalischen Verarbeitung eines Satzes unter Verwendung eines Parsers (Zergliederers) werden beschrieben in: Allen, James; Natural Language Understanding; The Benjamin/Cummings Publishing Company Inc., Menlo Park, U.S.A., 1987. Die dort beschriebenen Parser arbeiten nach einem Algorithmus, der auf einem Umschreibmechanismus basiert, und dies bedeutet, daß die Parser die Zergliederung anhand einer großen Anzahl von Umschreibregeln vornehmen. Diese Umschreibregeln stellen einen Zusammenhang her zwischen einerseits einer Gruppe von Worten und/oder Satzbestandteilen und andererseits einem Stammbestandteil, d.h., einem Bestandteil, der diese Gruppe dominiert. Die Anzahl der Umschreibregeln hängt vom Umfang des zu verwendenden Beschreibungsmechanismus ab, der die Grundlage des Parsers bildet; der Beschreibungsmechanismus ist seinerseits bestimmt durch die Syntax und Morphologie der Sprache, und dies erlegt dem Parser Beschränkungen auf hinsichtlich seiner Fähigkeit auf, bei der Zergliederung im Fall einer nicht-grammatischen Eingabe zu einem Ergebnis zu gelangen. Nur durch Einschluß einer sehr weitreichenden Skala von Umschreibregeln in dem Parser ist es möglich, falsch aufgebaute und weniger gebräuchliche Satzkonstruktionen zu analysieren (zergliedern). Dies hat wiederum zur Folge, daß in dem Computer, auf dem der Parser laufen soll, der für die Umschreibregeln vorgesehene Speicherplatz sehr groß sein muß, während die zur Analyse eines solchen Satzes benötigte Zeit lang veranschlagt werden muß. Außerdem ist es unter diesen Umständen sehr schwierig, nicht-grammatische Ausdrücke zu erkennen.
- Das neuerliche Interesse an der Verarbeitung ist zu einem großen Teil auf Computeranwendungen zurückzuführen, wie etwa Sprachübersetzung, grammatische Korrektur von Sätzen als Bestandteil von Textverarbeitungssystemen und dergleichen. Zum Beispiel beschreibt Machine Translation Technology; On the way to Market Introduction, Siemens Review, Band 54, Nr. 6, Nov./Dez. 1987, Forschungen zur maschinellen Übersetzung von Text in verschiedene Sprachen. Dort wird vorgeschlagen, eine lexikalische Analyse an natürlichsprachlichen Sätzen vorzunehmen und dann sämtliche Elemente nach bestimmten Grammatikregeln zu interpretieren, deren Anwendung auf der Grundlage von Wahrscheinlichkeiten getestet wird. Somit beziehen sich Wahrscheinlichkeiten auf Grammtikregeln, und Sprachkonstruktionen, die nur selten auftreten, haben eine niedrige Wahrscheinlichkeit (Seite 33, Spalte 3, Zeilen 50-53; Spalte 4, Zeilen 20-22). Nicht-grammatische Sätze führen nicht zu einer vollständigen Analyse des Satzes: das System liefert dann nur analysierte Phrasen. Die Verarbeitung eines nicht-grammatischen Satzes nur anhand von Umschreibregeln, die zur Analyse von korrekten Sätzen definiert sind, endet in einem Stadium, in dem das Analyseverfahren nicht vollständig abgeschlossen ist. Technisch bleibt es möglich, auch nicht-grammatische Sätze nach dem beschriebenen Verfahren zu verarbeiten: durch Einbeziehung einer sehr umfangreichen Menge von Umschreibregeln. Dies führt jedoch wieder zu den zuvor erwähnten Nachteilen.
- In einem Artikel von J.J. Robinson, Diagrams: A Grammar for Dialogues, Communication of the Association for Computing Machinery, Band 25, Nr. 1, Jan. 1982, Seiten 27-47, wird ein Analyseverfahren beschrieben, das Erzeugungs- oder Umschreibregeln anwendet. Diese Erzeugungs- oder Umschreibregeln sind für eine Anzahl von Typen von Basissätzen definiert (Seite 33, rechte Spalte, Zeile 1 bis Seite 34, rechte Spalte, Zeile 30), die weiter entwickelt und umgeschrieben werden durch Verwendung einer Anzahl häufig auftretender Untertypen von Sätzen, oder in die die Untertypen von Sätzen eingebettet werden (Seite 34, rechte Spalte, Zeile 31 bis Seite 36, linke Spalte, Zeile 25). Dies führt zu einer sehr großen Sammlung von Umschreibregeln, was als ein Nachteil dieses Parsers angesehen werden kann.
- Außerdem wird dort beschrieben, daß einige korrekte Sätze eine Anzahl alternativer korrekter Analyseergebnisse besitzen. In einem solchen Fall erzeugt und verwendet der Parser einen Wahrscheinlichkeitsfaktor für jedes Analyseergebnis, um es als wahrscheinlich oder unwahrscheinlich zu bewerten. Diese Zuweisung von Bewertungen bezieht sich jedoch nur auf grammtisch korrekte Sätze.
- Das Analyseverfahren von Robinson versucht, einen gegebenen Satz auf eine der erwähnten Umschreibregeln abzubilden. Dabei sollte angenommen werden, daß der gegebene Satz nur ein grammatisch korrekter Satz sein kann, weil es nahezu unmöglich ist, eine hinreichende Anzahl von Umschreibregeln für die Analyse von grammtisch falschen Sätzen aufzustellen. Weiterhin endet die Verarbeitung eines grammatisch falschen Satzes nur mit Hilfe von Umschreibregeln, die zur Analyse von korrekten Sätzen definiert sind, in einem Stadium, in dem das Analyseverfahren nicht vollständig abgeschlossen ist. Das Analyseverfähren ist deshalb nicht zur Analyse von grammtsich fehlerhaften Sätzen geeignet.
- Auch hier gilt, daß es nur durch Einbeziehung einer sehr weitreichenden Skala von Umschreibregeln in den Parser möglich ist, fehlerhaft aufgebaute Satzmkonstruktionen zu analysieren. Dies hat zur Folge, daß dem Computer, auf dem der Parser läuft, der für die Umschreibregeln vorgesehene Speicherplatz sehr groß sein muß, während die zur Analyse eines solchen Satzes benötigte Zeit lang veranschlagt werden muß. Außerdem ist es unter diesen Umständen sehr schwierig, nichtgrammatische Ausdrücke zu erkennen. Diese Nachteile, die sich auf physikalische Beschränkungen beziehen, die durch das technische Umfeld auferlegt werden, in dem eine Implementierung des Verfahrens laufen muß, und mit denen man konfrontiert wird, wenn man versucht, ein solches Verfahren tatsächlich zu implementieren, stellt ein ernstes Hindernis bei der Implementierung eines machbaren und praktisch anwendbaren Parsers dar.
- Aufgabe der Erfindung ist es, diese Nachteile weitgehend zu überwinden.
- Gemäß der Erfindung, wie in Anspruch 1 beansprucht, wird diese Aufgabe in einem System nach dem Oberbegriff dadurch gelöst, daß die Zergliederungsmittel mit Filtermitteln (75,84,67,95) zum Ausfiltern von Bestandteilen versehen sind, die nicht eine Menge von Testkriterien erfüllen, wobei diese Kriterien sich auf zulässige Konstruktionen beziehen, und zur anschließenden Neubewertung des Wahrscheinlichkeitsfaktors der aufgefilterten Bestandteile und zur Zuweisung eines Verletzungscodes zu den ausgefilterten Bestandteilen, wobei dieser Verletzungscode einen Fehlertyp wiedergibt, der durch die tatsächlich verletzten Testkriterien bestimmt ist.
- Durch Hinzufügen dieser Filtermittel zu dem System ist es möglich, nichtgrammatische Sätze zu verarbeiten, ohne daß es notwendig ist, grammatische Regeln für nichtgrammatische Syntaxkonstruktionen hinzuzufügen, deren Anzahl im Prinzip unendlich ist, sondern auf der Grundlage einer begrenzten Menge von Testkriterien, so daß der Speicherbedarf beträchtlich verringert wird. Folglich ermöglichen diese zusätzlichen Maßnahmen eine durchführbare und praktisch anwendbare Implementierung des Systems innerhalb der technischen Beschränkungen, die durch ein Computer-Umfeld auferlegt werden.
- Gemäß der Erfindung wird eine bevorzugte Ausführungsform des Zergliederungssystems dadurch erreicht, daß das System weiterhin aufweist:
- einen Wortspeicher zur Speicherung von Wortstrukturen, die sich jeweils auf eine Worteinheit und ihre zugehörige lexikalische Information beziehen, einschließlich einer Wortkategorie und linguistischer Merkmale;
- einen Satzrepräsentationsspeicher zur Speicherung von Bestandteilsstrukturen, die sich jeweils auf eine grammatische Konstruktion eines Satzes oder eines Teils desselben beziehen und jeweils einen Wahrscheinlichkeitsfaktor, eine Bestandteilskategorie, ein Stammfeld und eine Menge von Mitgliedern mit Funktionsetiketten umfassen, wobei jedes Mitglied einem in diesem Bestandteil enthaltenen Wort oder Bestandteil zugeordnet ist und das Funktionsetikett die grammatische Funktion des Mitglieds in diesem Bestandteil angibt, und wobei die Zergliederungsmittel umfassen:
- Mittel zum anfänglichen Erzeugen eines offenen Anfangsbestandteils (12);
- Mittel zum Lesen der lexikalisierten Wortstrukturen aus dem Wortspeicher; und
- Mittel zum anschließenden Verarbeiten dieser Worteinheiten zur Bildung wenigstens einer Satzrepräsentation, die in dem Satzrepräsentationsspeicher abzulegen ist, wobei diese Mittel umfassen:
- Mittel (53) zur Bestimmung, für jede Worteinheit und für jeden Bestandteil, eines Funktionsetiketts innerhalb des Bestandteils und/oder innerhalb eines Bestandteils, der auf der Grundlage der Wortkategorie und der Kategorie des Bestandteils neu zu erstellen ist, um den Satzrepräsentationsspeicher zu aktualisieren;
- erste Filtermittel (75,84) zur Überprüfung aller Bestandteile in dem Satzrepräsentationsspeicher anhand einer ersten Menge von Testkriterien auf der Basis der Syntax,
- Mittel (37) zum Testen, ob jeder Bestandteil, der von dem Satzrepräsentationsspeicher geliefert wird und in einem anderen, dominierenden Bestandteil enthalten ist, abgeschlossen werden kann, auf der Grundlage der Katagorien beider Bestandteile in Verbindung mit Grammatik-Daten, und zum Zuweisen eines Funktionsetiketts, und
- zweite Filtermittel (67,59) zur Überprüfung jedes abgeschlossenen Bestandteils anhand einer zweiten Menge syntaxbasierter Testkriterien.
- In dieser bevorzugten Ausführungsform machen die Zergliederungsmittel gemäß der Erfindung, die zur Analyse nicht-grammatischer Sätze geeignet sind, von einem Mitgliedsmechanismus Gebrauch, nach dem ein neues Wort (Mitglied) in einen aktuellen, offenen Stammbestandteil eingebettet wird, durch Verwendung des Funktionsetiketts dieses Wortes. Danach wird eine Abschlußprozedur für den Stammbestandteil gestartet, auf der Grundlage der Daten des gerade in den Stammbestandteil eingebetteten Wortes. Diese Prozedur, einschließlich Filterschritten, wird jedesmal wiederholt, wenn das nächste Wort in die Satzanalyse einbezogen wird.
- Gemäß einer vorteilhaften Ausführungsform der Erfindung ist das System weiter dadurch gekennzeichnet, daß das System auch Korrekturmittel (153) aufweist, zum Korrigieren eines Satzes anhand von Verletzungscodes, die von den Zergliederungsmitteln geliefert werden.
- Auf diese Weise werden die von den Verletzungscodes gelieferten Daten vorteilhaft zur Korrektur des Satzes verwendet.
- Eine weitere Verbesserung gemäß der Erfindung wird dadurch erreicht, daß das System Vergleichsmittel (76,85) aufweist, zum Vergleich des Wahrscheinlichkeitsfaktors mit einem Schwellenwert und zum Zurückweisen von Bestandteilen, für die der Wahrscheinlichkeitsfaktor unter einen Schwellenwert abfällt.
- Auf diese Weise wird während des Analyseprozesses die Anzahl von zu verarbeitenden Bestandteilen dadurch reduziert, daß diejenigen Bestandteile zurückgewiesen werden, die am meisten von der korrekten Syntax abweisen. Dies verringert den Speicherbedarf und erhöht die Verarbeitungsgeschwindigkeit.
- Eine weitere Verbesserung wird erreicht durch Hinzufügen von Mitteln (40) zu dem System, zur Neubewertung des Schwellenwertes und zur Wiederholung des Analyseschrittes, wenn, nach anschließender Verarbeitung aller Worteinheiten eines Satzes, der Analyseschritt nicht wenigstens eine Satzrepräsentation (38) liefert.
- Auf diese Weise wird der Analyseschritt schließlich immer eine Satzrepräsentation ergeben.
- Eine Modelgrammatik oder exemplarische Grammatik, die aus einer Sammlung ausgewählter Grammatikregeln aufgebaut ist, zur präzisen Definition der zentralen, anerkannten grammatischen Strukturen einer Sprache, wird häufig als eine Kerngrammatik bezeichnet.
- Der zu beschreibende Parser nach einer ersten Ausführungsform eines Systems zur grammatikalischen Verarbeitung eines Satzes ist ein Parser mit einer externen Grammatik (syntaxgelenkter Parser), bei dem die Grammatikregeln außerhalb des eigentlichen Programmteils gehalten und in Speicherteilen oder Speichermodulen abgelegt werden. Dies bietet die Möglichkeit, den grammatischen Inhalt außerhalb des Programms zu ändern. Durch einfache Änderung des Inhalts der Speicherteile oder Speichermodule kann der Parser auch an andere natürliche Sprachen angepaßt werden. Die Kerngrammatik hat eine solche Form, daß es möglich ist, eine große Anzahl möglicher Strukturen mit einer begrenzten Anzahl von Regeln zu verarbeiten.
- Auch im Fall einer nicht-grammatischen Eingabe ist dieser Parser im allgemeinen stets in der Lage, zu einem Ergebnis zu gelangen und sogar anzugeben, welche Art von Fehler gemacht worden ist. Dies macht den Parser beispielsweise für die Anwendung in einem Editor geeignet.
- Die Ergebnisse des Parsers und die grundlegenden Prinzipien dieses Parsers bilden die Grundlagen für ein Programm zur Korrektur fehlerhafter Sätze und auch zur Korrektur eines Textes mit inkonsistentem Wortgebrauch oder für eine andere Wortwahl in einem Text.
- Neben der obigen Ausführungsform eines Systems zur grammatikalischen Verarbeitung eines Satzes mit Hilfe eines Parsers mit einer externen Grammatik ist es selbstverständlich möglich, in einem System zur grammatikalischen Verarbeitung eines Satzes einen Parser mit interner oder integrierter Grammatik zu verwenden (Parser mit eingebetteter Syntax), durch Aufnahme der Grammatikregeln in den Parser. Dies kann zu einem schnelleren Parser führen.
- Die Erfindung wird anhand der beigefügten Zeichnungen erläutert, in denen zeigen:
- Fig. 1 ein Flußdiagramm, das einen allgemeinen Überblick über das bei der grammatikalischen Verarbeitung eines Textes zu verwendende Verfahren gibt;
- Fig. 2 ein Flußdiagramm des Grundprinzips des in einem System zur grammatikalischen Verarbeitung zu verwendenden Parsers;
- Fig. 3 eine Flußdiagramm einer ersten Ausführungsform des Kernteils des in Fig. 2 gezeigten Flußdiagramms;
- Fig. 4 ein Flußdiagramm einer anderen Ausführungsform des in Fig. 3 gezeigten Kernteils;
- Fig. 5 ein Flußdiagramm einer anderen Ausführungsform des in Fig. 3 gezeigten Kernteils;
- Fig. 6 ein detailliertes Flußdiagramm eines ersten gemeinsamen Teils des in Fig. 3 bis 5 gezeigten Kernteils;
- Fig. 7 ein detailliertes Flußdiagramm eines ersten Teils des in Fig. 6 gezeigten gemeinsamen Teils;
- Fig. 8 ein detailliertes Flußdiagramm eines zweiten Teils des in Fig. 6 gezeigten gemeinsamen Teils;
- Fig. 9 eine detaillierte Ausführungsform eines zweiten gemeinsamen Teils des in Fig. 3 bis 5 gezeigten Kernteils;
- Fig. 10 ein Flußdiagramm eines anwendungsorientierten Teils des in Fig. 2 gezeigten Flußdiagramms;
- Fig. 11 ein detailliertes Flußdiagramm eines Teils des in Fig. 10 gezeigten Flußdiagramms;
- Fig. 12 ein Flußdiagramm einer Abwandlung eines Teils des in Fig. 7 gezeigten Flußdiagramms;
- Fig. 13 ein Flußdiagramm eines schematischen Überblicks über einen Erweiterungsteil eines Systems zur grammatikalischen Verarbeitung mit Verwendung dieses Parsers;
- Fig. 14 ein Flußdiagramm einer wichtigen Phase des in Fig. 13 gezeigten Erweiterungsteils;
- Fig. 15 ein Flußdiagramm eines Teils eines zu Fig. 14 gehörenden Programms;
- Fig. 16 ein Flußdiagramm eines weiteren Teiles eines zu Fig. 14 gehörenden Programms;
- Fig. 17-23 eine Anzahl von Flußdiagrammen detaillierter Korrekturprogramme aus Fig. 16;
- Fig. 24 ein Flußdiagramm einer ersten Hilfsfunktion aus dem Programm, das sich auf den Erweiterungsteil eines Systems zur grammatikalischen Verarbeitung bezieht;
- Fig. 25 ein Flußdiagramm einer zweiten Hilfsfunktion aus dem Programm, das sich auf den Erweiterungsteil eines Systems zur grammatikalischen Verarbeitung bezieht;
- Fig. 26 ein Flußdiagramm eines ersten Teils eines speziellen Anwendungsverfahrens der in Fig. 13 gezeigten Form des Erweiterungsteils; und
- Fig. 27 ein Flußdiagramms des Teils, der dem Flußdiagramm in Fig. 26 folgt.
- Soweit möglich, werden in der Beschreibung Beispiele in englischer und niederländischer Sprache angeführt.
- Wie weiter erläutert werden wird, erfolgt die Analysephase und erforderlichenfalls die Korrekturphase einer grammatikalischen Verarbeitung eines Satzes unter Verwendung einer exemplarischen Grammatik oder Kerngrammatik, die dieser Beschreibung in Tabellenform sowohl in englischer als auch in niederländischer Sprache beigefügt ist.
- Ein Parser bildet das Mittel zur Umwandlung eines in natürlicher Sprache zusammengesetzen Satzes in eine syntaktische Repräsentation mit Hilfe eines Formalismus, in dem die Beziehungen zwischen den verschiedenen Objekten ausgedrückt werden. Ein solcher Formalismus beruht auf der Idee, daß es möglich ist, die wesentlichen Satzglieder (Bestandteile) mit Hilfe einer hierarchischen Struktur zu repräsentieren, etwa einer Baumstruktur. Streng genommen, umfaßt die Eingabe in den Parser keine Satzzeile, sondern eine Serie von Wörtern, die durch Lexikalisierung des Satzes erhalten wird. Wie in Fig. 1 gezeigt ist, bedeutet dies, daß jeder in der Programmphase 1 präsentierte Satz zunächst in der Programmphase 2 lexikalisiert werden muß, bevor die Analyse des Satzes mit Hilfe des Parsers in der Programmphase 3 stattfindet. Bei der Lexikalisierung eines Satzes wird die zugehörige lexikalische Information jedes Wortes, die sich auf die möglichen verbalen Kategorien und die anwendungsorientierten Kategorien bezieht, aufgesucht und/oder erzeugt mit Hilfe eines lexikalischen Speichers, der Teil des Computerspeichers ist oder beispielsweise auf einer Speicherplatte vorhanden ist, und diese Information wird mit Hilfe einer oder mehrerer Wortstrukturen in einem Wortspeicher gespeichert, der ebenfalls Teil des Computerspeichers ist. Die Resultate des Lexikalisierungsprozesses einer Worteinheit in bezug auf die anwendungsorientierten Katagorien werden danach unter der Bezeichnung "Merkmale" gruppiert. Die Beschreibung wird eine Erörterung enthalten, weshalb man von mehr als einer Wortstruktur sprechen kann, doch zunächst wird der Ausdruck Wortstruktur im einzelnen erläutert.
- Eine Wortstruktur ist eine Zusammenstellung von Datenbestandteilen, die zu einem Wort gehören, wobei diese Datenbestandteile einer Struktur mit einer Anzahl von Speicherfeldern zugewiesen werden. Die Wortstruktur umfaßt die folgenden Felder: ein Kategorienfeld, ein Befehlsfeld, ein Zeichenkettenfeld und ein Merkmalsfeld. Das Kategorienfeld entält die im lexikalischen Speicher gefundene Wortkategorie, es gelten zum Beispiel die folgenden Wortbezeichnungen: article (Artikel), noun (Nomen oder Substantiv), pronoun (Pronomen), verb (Verb), preposition (Präposition), convunction (Konjunktion), adjectiv (Adjektiv) oder adverb (Adverb). Dies dient nur als ein Beispiel und ist von den verwendeten grammatischen Tabellen und Wörterbüchern abhängig.
- Das Befehlsfeld ist am Anfang leer, wird jedoch später von dem Parser ausgefüllt. Die Bedeutung des Befehlsfeldes wird im Zusammenhang mit der Beschreibung einer anderen Struktur näher erläutert, nämlich der Bestandteilsstruktur, bei der es ebenfalls ein ähnliches Befehlsfeld gibt.
- Das Zeichenkettenfeld wird mit einer Zeichenkettendarstellung des Wortes ausgefüllt, d.h., einer linearen Sequenz von Elementen des Wortes. Das Merkmalsfeld enthält die übrigen Wortmerkmale, d.h., diejenigen Wortmerkmale, die während des Lexikalisierungsprozesses erhalten wurden, jedoch nicht in das Kategorienfeld aufgenommen wurden. Die im Merkmalsfeld aufgenommenen Wortmerkmale sind von funktioneller Art.
- Das oben Gesagte wird anhand zweier Beispiele erläutert: Im Fall des niederländischen Wortes "huis" (Englisch: "house") wird das folgende eingetragen: im Kategorienfeld: "noun"; im Befehlsfeld: "NIL"; im Zeichenkettenfeld: "house" und im Merkmalsfeld: "sing 3" und "neuter".
- In der englischen Sprache hat das Wort "house", das dem niederländischen Wort "huis" entspricht, eine ähnliche Wortstruktur, mit der Ausnahme des Merkmalsfeldes, in dem "neuter" ersetzt ist durch "neutral".
- Eine solche Repräsentation einer Wortstruktur hat das Ergebnis, daß ein Wort wie etwa das niederländische Wort "regent" ein Kategorienfeld mit dem Eintrag "verb" und ebenso ein Kategorienfeld mit dem Eintrag "noun" erhält, mit einem separaten Merkmalsfeld für jedes Kategorienfeld. Als ein ähnliches Beispiel in der englischen Sprache ist es möglich, daß Wort "saw" zu verwenden, mit dem drei Wortstrukturen verbunden sind: eine mit dem Kategorienfeld "noun" (Säge) und zwei mit dem Kategorienfeld "verb" (sägen, sah).
- Da deshalb ein Wort in einer Anzahl von Wortkategorien auftreten kann, und auch infolge mehrdeutiger Beziehungen zwischen Bestandteilen mehrere Satzstrukturen zwischen den Satzteilen möglich sind, führt dieser Ansatz zu einer Vielzahl von Formen von Baumstrukturen und damit zu einer Vielzahl syntaktischer Repräsentationen des analysierten Satzes. Der Parser wird stets versuchen, jede Wortstruktur des aktuellen Wortes in jeder offenen Bestandteilsstruktur unterzubringen. Dies bedeutet, daß die Analysegeschwindigkeit absinkt, wenn viele Repräsentationen vorhanden sind.
- Da sich jedoch nicht alle Repräsentationen nachher als geeignet erweisen, ist es Aufgabe der Erfindung, zu untersuchen, wie ein oder mehrere weniger akttraktive Formen von Repräsentationen von Satzteilstrukturen in einer Interimsperiode beseitigt werden können, d.h., während der Betriebsphase des Parsers. Der Ausgangspunkt hierfür die Tatsache, daß nach jeder Phase, in der ein Wort zu der bestehenden Repräsentationsform hinzugefügt wird, der davon betroffene Bestandteil bestimmten syntaktischen Regeln unterworfen wird und der dem Bestandteil zugewiesene anfängliche Wahrscheinlichkeits faktor in Übereinstimmung mit einem Satz individueller Korrekturfaktoren verringert wird, auf der Grundlage bestimmter Fehlererkennungen, und dann der korrigierte Wahrscheinlichkeitsfaktor mit einem bestimmten Schwellenwert verglichen wird. Alle Repräsentationsformen von Bestandteilen mit einem Wahrscheinlichkeitsfaktor unterhalb dieses Schwellenwertes können als "weniger wahrscheinlich" ausgeschlossen werden. Dieses Verfahren wird dann wiederholt, damit das nächste Wort in die Repräsentationsstruktur aufgenommen werden kann.
- Eine Aktion dieser Art kann sowohl direkt nach der Aufnahme eines Wortes in einen bestehenden oder neuen Bestandteil als nach einer nachfolgenden Überprüfung hinsichtlich des Abschlusses dieses Bestandteile erfolgen. Im Fall des hier zu beschreibenden Parsers findet eine Filteraktion dieser Art in beiden Situationen statt.
- Obgleich die Lexikalisierung, wie sie hier beschrieben wird, vor der eigentlichen Analyse stattfindet, so daß der Analyseprozeß nicht beginnt, bevor sämtliche Wörter lexikalisiert worden sind, ist es auch möglich, ein Wort zu lexikalisieren und dann dieses Wort zu analysieren, das nächste Wort - soweit möglich in der Interimsperiode - zu lexikalisieren und dann dieses Wort zu analysieren usw.
- Ein Vorteil eines solchen Ansatzes könnte darin bestehen, daß es dann möglich ist, mit der Analyse eines Satzes zu beginnen, während ein Benutzer den Satz noch eingibt (Echtzeitanalyse).
- In dem nachfolgend beschriebenen Flußdiagramm geht jedoch die als Grundlage dienende Lexikalisierung dem eigentlichen Analyseprozeß voran. Der Parser wird dann nach der Lexikalisierung aufgerufen. Wenn der Parser in Schritt 4 (J) erfolgreich ein Analyseergebnis findet, kann dieses Analyseergebnis im Rest des Programms verwendet werden (Schritt 5). Dies kann ein Baum-Zeichenprogramm sein, in dem eine grafische Repräsentation der gefundenen Analyse gezeichnet wird, ein Editor, ein Indexierungs- und Rückgewinnungssystem usw., wonach es möglich ist, mit dem nächsten Satz bei Schritt 1 fortzufahren. Wenn jedoch Schritt 4 kein verwertbares Resultat liefert (N), so war der Parser bei der Suche nach einem guten Analyseergebnis erfolglos. Dies ist äquivalent dazu, daß der Satz sehr ungrammatisch ist. Erforderlichenfalls können hierfür gewisse Vorkehrungen getroffen werden, etwa eine Korrekturphase für diesen Satz, wonach mit dem nächsten Satz fortgefahren werden kann.
- Bevor die tatsächliche Beschreibung des Parsers beginnt (siehe Schritt 3) ist es wichtig, eine andere Struktur zu beschreiben, nämlich die Bestandteilsstruktur. Die Bestandteilsstruktur ist eine Menge von Datenbestandteilen, die sich auf einen Teil eines Satzes beziehen und denen die folgenden Speicherfelder zugeordnet sind: Kategorienfeld, Befehlsfeld, Mitgliederfeld, Merkmalsfeld, Stapelfeld, Verletzungsfeld und ein Wahrscheinlichkeitsfeld.
- Das Kategorienfeld ist reserviert für Informationen, die die Kategorie des Bestandteils betrifft, die in unserer Beispielsgrammatik unter anderem die folgenden Satzteile umfassen muß: Hauptsatz, nebengeordneter Satz oder untergeordneter Nebensatzatz (Satz, abgekürzt zu S), die Nominalphrase oder der Nomen-Satzteil (Nominalphrase, abgekürzt zu NP), Präpositionalgruppe oder -satzteil (Präpositional-Phrase, abgekürzt PP) und die adjektivische/adverbiale Phrase (abgekürzt AP). Das Kategorienfeld enthält anfänglich die Angabe NIL, wird jedoch während des Analyseprozesses mit der Information über den Bestandteil gefüllt. Das Befehlsfeld ist ein Feld, das nach dem Analysevorgang Adresseninformationen (Zeiger) über den Stammbestandteil enthält, d.h., den Bestandteil, der den aktuellen Bestandteil dominiert. Das Mitgliederfeld ist reserviert für Informationen bezüglich einer oder mehrerer - in Paaren auftretender - Kombinationen aus Funktionsetikett in Verbindung einer zu diesem Bestandteil gehörenden Wort- oder Bestandteilsstruktur, und auch die Adresseninformationen bezüglich der zugehörigen Wort- oder Bestandteilsstruktur. Allgemein kann ein Bestandteil aus einer Anzahl von Wortstrukturen und/oder Bestandsteilsstrukturen aufgebaut sein.
- Die Funktionsetiketten, die in der Beispielsgrammatik verwendet werden, sind unter anderem die folgenden:
- - Subj : Subjekt
- - Indobj. : indirektes Objekt
- - Obj : Objekt
- - Smod : Satzbestimmung oder adverbiale Bestimmung
- - Comp : Ergänzung
- - Pred : Prädikat
- - fNP : Funktional-NP, zu verwenden als ein provisorisches Etikett, das nachfolgend durch ein endgültiges Funktionsetikett auf Satzniveau ersetzt wird
- - Nmod-a : eine Bestimmung in Verbindung mit einem Nomen in der Form einer AP
- - Nmod-s : eine Bestimmung in Verbindung mit einem Nomen in der Form eines S
- - Nmod-p : eine Bestimmung in Verbindung mit einem Nomen in der Form einer PP
- - Det : ein Bestimmer (determiner)
- - Head : zentrales Element (Huaptteil) innerhalb einer NP, PP oder AP
- - Pobj : ein zu einer Präposition gehörender Teil verkörpert durch eine NP
- - Amod : eine Bestimmung des Hauptwortes einer AP
- - Seq : ein verknüpfendes, einschließendes Komma mit beiordnender Funktion zwischen zwei Satzteilen oder Sätzen (Sequenzierer)
- - Conj : einer der nebengeordneten Satzteile
- Das Merkmalsfeld ist reserviert für die Information bezüglich der zu dem Bestandteil gehörenden Merkmale. Sobald ein Bestandteil mit einer bestimmten Kategorie aufgestellt wird, wird das Merkmalsfeld mit den der Kategorie zugewiesenen Merkmalen gefüllt. Es ist zu bemerken, daß im Fall einer Wortkategorie das Merkmalsfeld mit den Merkmalen versehen wird, die diesem Wort zugewiesen sind, wie sie während des Lexikalisierungsprozesses gefunden wurden. Während des Analyseprozesses wird das Merkmalsfeld des zugehörigen Bestandteils für jedes in den zugehörigen Bestandteil aufzunehmende Element (Wort oder Bestandteil) an die zu diesem Element gehörende Information angepaßt. Das Stapelfeld enthält eine Aufzählung der Funktionsetiketten, die auch im Mitgliederfeld des Bestandteils angegeben sind. Das Verletzungsfeld enthält Informationen betreffend alle Verletzungscodes, die sich auf Grammatikfehler beziehen, die innerhalb des Bestandteils gemacht worden sind. Diese Feld ist am Anfang leer.
- Das Wahrscheinlichkeitsfeld gibt den Wahrscheinlichkeitsfaktor an, der dem Auftreten dieses Bestandteils zugewiesen ist. Am Anfang ist dies "1", doch für jeden erkannten Grammatikfehler nimmt dieser Wert um einen Betrag ab, der von der erkannten Art dieses Fehlers abhängig ist. Mit Hilfe der Bestandteile ist es möglich, den Analysebaum zusammenzustellen. Jeder Bestandteil kann natürlich seinerseits Bestandteile und/oder Worter enthalten. Das Mitgliederfeld gibt nicht nur die Funktionskategorie an, sondern auch die zu den Bestandteils- oder Wortstrukturen gehörende Speicheradresseninformation. Es ist möglich, anhand dieser Informationen tiefer in den Analysebaum vorzudringen. Umgekehrt liefert das Befehlsfeld eines Bestandteils Adresseninformationen bezüglich seines Stammbestandteils, d.h., des Bestandteils, der den anderen Bestandteil dominiert, und dies eröffnet die Möglichkeit, im Analysbaum aufzusteigen. Es ist zu bemerken, daß Wörter keine Mitglieder enthalten können, während das Befehlsfeld des höchsten Bestandteils (Wurzel) im Analysebaum keine Information enthält (NIL).
- Wie schon in gewissen Ausmaß aus dem Wahrscheinlichkeitsfeld hervorgeht, arbeitet der Parser mit Wahrscheinlichkeitsfaktoren und hat einen Schwellenwert, der erforderlichenfalls modifiziert werden kann, anhand welches Schwellenwertes alle verfügbaren Strukturen im Hinblick auf ihren Wahrscheinlichkeitsfaktor geprüft werden, nur Strukturen, deren Wahrscheinlichkeitsfaktor größer oder gleich dem Schwellenwert ist, werden von dem Parser verarbeitet. Auf diese Weise ist es möglich, grammatische und nahezu grammatische Sätze schneller zu analysieren.
- Die Arbeitsweise des Parsers wird im folgenden Abschnitt näher erläutert, wobei es wichtig ist, zu bemerken, daß der Parser auf dem Prinzip beruht, daß ein Wort einer bestimmten Kategorie innerhalb eines Bestandteils einer bestimmten Kategorie in vielen Fällen eine eindeutig definierte funktionelle Bedeutung innerhalb des Bestandteils haben wird. Dasselbe gilt für Bestandteile innerhalb von Bestandteilen. Das Analyseverfahren beruht demnach auf der Tatsache, daß es in den meisten Fällen adäquat ist, die Kategorien des Stammbestandteils einerseits und diejenigen des Wortes oder Bestandteils andererseits zu kennen, um die Funktion (Funktionskategorie) oder das Wort oder den Bestandteil (die Funktion des Wortes oder Bestandteils?) innerhalb des Stammbestandteils zu bestimmen.
- Ein zu dem Parser gehörendes Programm ist in den nachfolgenden Figuren mit Hilfe eines Flußdiagrammes dargestellt, nach dem das Verfahren zur Analyse eines Textes in einem Computer ausgeführt wird. Der vollständige Parser wird zunächst auf relativ allgemeine Weise beschrieben. Zwei Programmteile, d.h., "Wort-Rechtsassoziieren" und "Abschluß" werden nur summarisch angegeben, wonach in einem folgenden Teil der Beschreibung diese Programmteile im einzelnen anhand detaillierter Zeichnungen erläutert werden. Das zu beschreibende Verfahren kann in zwei Phasen aufgeteilt werden, in einer ersten Phase werden die möglichen Satzrepräsentationen durch eine syntaktische Analyse gebildet, die in der Tat den eigentlichen Analyseprozeß (Zergliederung) enthält, und endgültige Funktionsetiketten werden in der zweiten (zusätzlichen) Phase solchen Bestandteilen zugewiesen, die noch einen unbestimmten Funktionscharakter haben. Geeignete Filterprozeduren für diesen Zweck werden in beiden Phasen erörtert.
- Dieses Verfahren wird für jedes Wort (mit all seinen Gebrauchsfunktionen) durchgeführt und wird erneut durchgeführt, wann immer ein nachfolgendes Wort in die Repräsentationsstruktur aufgenommen werden muß.
- In dem in Fig. 1 gezeigten Flußdiagramm beginnt die Einlesephase eines Satzes, die die Durchführung des Analyseverfahrens ermöglicht, bei dem Bezugszeichen 1. In dieser Phase wird der zu analysierende Satz dem Computer in bekannter Weise zugeführt (z.B. mit Hilfe einer Tastatur), und der Satz wird Wort für Wort in den Speicherbereich des Computers geschrieben, der als Wortspeicher bezeichnet werden kann, wobei jedesmal die Anzahl (kmax) der den Satz bildenden Wörter berechnet wird. Das anwendbare Prinzip ist, daß die Wörter durch Leerzeichen, Tabulatoren und Interpunktionszeichen voneinander getrennt sind, und jedes Interpunktionszeichen ist in einer Wortkategorie enthalten. Die genannte Anzahl kmax wird ebenfalls im Wortspeicher abgelegt.
- Es findet dann die nächste Phase (2) statt, d.h., die lexikalische Beschreibung aller Wörter des eingegebenen Satzes. In dieser Phase werden die in Verbindung mit jedem Wort vorhandenen Wortstrukturen in den Wörtern des Satzes gesucht, dies geschieht mit Hilfe einer Speicherstufe in dem Computerspeicher, die als lexikalischer Speicher bezeichnet werden kann, und in der eine große Sammlung mit ein oder mehreren möglichen Wortstrukturen gespeichert ist.
- Eine detaillierte Erläuterung der Phase 2 wird anhand der Fig. 2 gegeben. Darin findet die lexikalische Beschreibung statt. Im nächsten Programmschritt 6 wird eine Zähleinheit (k-Zähler), der die laufende Nummer (k) des zu behandelnden Wortes angibt, auf 0 zurückgesetzt. In Schritt 7 wird der Zählerstand des k-Zählers dann um 1 erhöht (k = k+1), wonach in Schritt 8 eine Überprüfung erfolgt, ob der Zählerstand des k-Zählers bereits den maximalen k-Wert (kmax) überschritten hat, d.h., (k > kmax). Wenn dies der Fall ist (J), verzweigt das Programm zu Schritt 11, falls nicht (N), verzweigt es zu Schritt 9, wo mit Hilfe einer durch den Zählerstand des k-Zählers bestimmten Adresse das nächste Wort aus dem Wortspeicher aufgerufen und in eine Speicherstufe des Computers geschrieben wird, die als Arbeitsspeicher bezeichnet werden kann. In Schritt 10 wird das in den Arbeitsspeicher geschriebene Wort dann im lexikalischen Speicher gesucht, und die dort gefundene spezifische Information in Verbindung mit dem Wort wird in den Wortspeicher geschrieben. Das Programm kehrt dann zum Schritt 7 zurück. Da bei der Satzanalyse jedes Wort auf alle festgestellten Wortfunktionen (Wortkategorien) überprüft werden sollte, wird jedesmal, wenn ein Wort eine andere Wortkategorie und/oder andere Merkmale hat, die zugehörige Wortstruktur durch ihre eigene laufende Nummer (l) individualisiert, und die Anzahl von laufenden Nummern (lmax,k), die pro Wort (k) zugewiesen wird, wird ebenfalls aktualisiert. Anstelle von (lmax,k) kann es genügen, dem letzten Array ein bestimmtes Etikett zuzuweisen, um dadurch bei der nachfolgenden syntaktischen Analyse anzuzeigen, daß die letzte Wortfunktion dieses Wortes erreicht worden ist.
- Während der in Phase 3 durchzuführenden Syntaxanlayse kann als mögliche Lösungen gleichzeitig eine Vielzahl von Repräsentationen mit unterschiedlichen Bestandteilsstrukturen auftreten, und sie können aufgrund von Konflikten mit bestimmten Grammatikregeln unterschiedliche Wahrscheinlichkeitsfaktoren haben. Da wir nur an der Lösung oder Serie von Lösungen mit dem höchsten Wahrscheinlichkeitsfaktor interessiert sind, sollten Lösungen mit einem kleineren Wahrscheinlichkeitsfaktor als uninteressante Lösungen qualifiziert und folglich ausgesondert werden. Dies geschieht durch Vergleich der zu diesen Lösungen gehörenden Wahrscheinlichkeitsfaktoren mit einem bestimmten Schwellenwert. Am Beginn der Syntaxanalyse ist dieser Schwellenwert auf den Wert "1" gesetzt, er kann jedoch während einer solchen Analyse auf einen niedrigeren Wert gesetzt werden, falls sich zeigt, daß keiner der erhaltenden Wahrscheinlichkeitsfaktoren diesem Schwellenwert genügt.
- Folglich weist das Programm einen Schritt 11 auf, in dem der anfängliche Schwellenwert auf "1" gesetzt wird.
- Ein Anfangsbestandteil für den Satz wird dann in Schritt 12 erstellt. Dies ist ein Bestandteil, dessen Felder in der Anfangsphase die folgende Informationen enthalten:
- Kategorienfeld : S
- Befehlsfeld : NIL
- Mitgliederfeld : NIL
- Merkmalsfeld : NIL
- Stapelfeld : NIL
- Verletzungsfeld : NIL
- Wahrscheinlichkeitsfeld : 1
- Zum Ausfüllen des Merkmalsfelds wird zunächst eine als erster Tabellenspeicher (siehe Tabelle A) bezeichnete Speicherstufe nach den Merkmalen durchsucht, die unter der Kategorie S angegeben sind. Da in dieser Beispielsgrammatik keine Merkmale angegeben sind, bleibt das zugehörige Feld leer (NIL). Der Speicher weist auch einen Repräsentationsspeicher zur Aufnahme aktueller Bestandteile auf (z.B. in Listenform, wie es bei der Programmiersprache LISP üblich ist), mit denen der Parser kontinuierlich arbeiten soll. Der Startbestandteil S wird in diesen Repräsentationsspeicher geschrieben, der bis dahin leer war.
- In Schritt 13 wird der k-Zähler dann auf den Anfangswert "0" zurückgesetzt, und in Schritt 14 wird der Zählerstand des k-Zählers um "1" erhöht. Nach Schritt 14 erreicht das Programm den Schritt 15, wo eine Überprüfung stattfindet, ob alle Wörter (einschließlich der Interpunktionszeichen) in dem Satz der Syntaxanalyse unterzogen worden sind und ob, deshalb, für den Zählerstand des k-Zählers k > kmax gilt. Wenn dies der Fall ist (J), so ist offensichtlich jedes Wort in den Bestandteilen untergebracht, und die Syntaxanalyse sollte als abgerundet angesehen werden. Wenn in Schritt 15 die Aussage k < kmax nicht wahr ist, schreitet das Programm zu Schritt 16 fort. Hier beginnt das Einpassen des mit Hilfe des k-Zählers angegebenen Wortes in die in diesem Augenblick verfügbaren Bestandteilsstrukturen, wobei das Wort in die bis dahin noch nicht abgeschlossenen Bestandteilsstrukturen eingepaßt wird, die in dem oben genannten Repräsentationsspeicher vorhanden sind.
- Alle Wortstrukturen (l) dieses Wortes sind nun als Ergebnis des Lexikalisierungsprozesses verfügbar. Beim Einpassen eines Wortes in eine bestimmte Wortstruktur innerhalb eines Bestandteils mit einer bestimmten Kategorie wird das Wort in vielen Fällen eine bestimmte Funktion erfüllen, und ihm kann deshalb eine bestimmte funktionelle Wortkategorie zugewiesen werden. Dasselbe wird in einem späteren Stadium für Bestandteile innerhalb ihrer Stammbestandteile gelten. Auf der Grundlage der Bestandteilskategorie einerseits und der Wortkategorie andererseits wird die Funktion (Funktionskategorie) des Wortes innerhalb des Bestandteils bestimmt. Wenn die beschriebene Einpassung des Wortes in diesem Bestandteil nicht direkt möglich ist, ist es manchmal möglich, einen neuen Bestandteil damit zu koppeln, in den das Wort einbezogen werden kann. In diesem Zusammenhang ist zu bemerken, daß das Einbeziehen einer Wortstruktur in eine offene Bestandteilsstruktur wegen einer Anzahl von Grammatikregeln und wegen der zu diesem Wort (k) gehörenden Anzahl von Wortstrukturen (lmax,k) zu einer gewissen Vervielfachung der Anzahl von Bestandteilsstrukturen führen kann. Da die Resultate des Analyseprozesses stets im Repräsentationsspeicher aufzunehmen sind und die darin auftretenden aktuellen Bestandteilsstrukturen als Eingabe werte für den Analyseprozeß genommen werden sollten, wird eine Speicherstufe in dem Computer, die als "Zwischenspeicher" bezeichnet werden kann, zunächst in Schritt 17 geleert, der Repräsentationsspeicher mit all seinen Bestandteilsstrukturen wird dann in Schritt 18 in den Zwischenspeicher kopiert, und dann wird in Schritt 19 der Repräsentationsspeicher gelöscht. Bei dem folgenden Programmabschnitt 20 sind mehrere Varianten möglich. Diese werden nacheinander anhand der Figuren 3, 4 und 5 beschrieben.
- Davon ausgehend, daß die Kopplungsmöglichkeit für jede Struktur geprüft werden muß, sofern ein Wort (k) mehrere Wortstrukturen (l) hat, enthält der Computer eine Zähleinheit (den l-Zähler), dessen Zählerstand jedesmal der zugehörigen Wortstruktur entspricht.
- Für ein nachfolgendes Wort (k+1), das in die vorliegende Satzteilstruktur (Sm) aufgenommen werden soll, muß der l-Zähler ebenfalls auf 0 gesetzt werden, und dies gilt auch für die Zähleinhelt (m-Zähler), die die laufenden Nummern (m) der Bestandteile angibt.
- Folglich wird in Schritt 21 in Fig. 3 der Zählerstand des l-Zählers auf 0 zurückgesetzt (l = 0), und dann wird in Schritt 22 der Zählerstand des l-Zählers um "1" erhöht (l = l+1). In Schritt 23 wird gefragt, ob der Zählerstand des l-Zählers bereits den Maximalwert (lmax,k) überschritten hat (l > lmax), der die Anzahl der Wortstrukturen des Wortes mit der laufenden Nummer k angibt.
- Wenn diese Frage bejaht wird (J) geht das Programm weiter zu Schritt 24.
- Wenn jedoch die Frage in Schritt 23 negativ beantwortet wird (N), so wird im nächsten Schritt 25 die l-te Wortstruktur aus dem Wortspeicher in den Arbeitsspeicher überführt, um die vorherige Wortstruktur zu überschreiben, damit eine Anzahl von Operationen an der neu eingeschriebenen Wortstruktur vorgenommen werden kann. In Schritt 26 wird dann der m-Zähler auf 0 zurückgesetzt (m = 0), und dann wird in Schritt 27 der Zählerstand des m- Zählers um "1" erhöht (M = m+1). In Schritt 28 wird dann gefragt, ob der Zählerstand des m-Zählers die Zahl mmax überschritten hat, die die Anzahl der dann auftretenden Bestandteile angibt (m > mmax). Wenn dies der Fall ist (J), wird festgestellt, daß das Wort (k), das in die vorgesehene Struktur (l) eingepaßt werden soll, für die Verbindung in allen zu dieser Zeit im Zwischenspeicher vorhandenen Bestandteilsstrukturen überprüft worden ist und daß dieser Teil des Programms deshalb für dasselbe Wort (k), jedoch für eine nachfolgende Wortstruktur (l+1) wiederholt werden sollte.
- Folglich kehrt das Programm zurück zu Schritt 22. Im Fall einer negativen Antwort (N) auf die Frage in Schritt 28 folgt der Schritt 29, wo der m-te Bestandteil aus dem Zwischenspeicher aufgerufen und in den Arbeitsspeicher gebracht wird, um den vorherigen Bestandteil zu überschreiben. Somit befinden sich sowohl die l-te Wortstruktur des k-ten Wortes als auch der m-te Bestandteil im Arbeitsspeicher. Mit diesen beiden Strukturen (Wortstruktur und Bestandteilsstruktur) wird in dem Programmteil 30 eine Anzahl von Operationen durchgeführt. Es wird dann nämlich versucht, die Wortstruktur in der Bestandteilsstruktur unterzubringen, nötigenfalls durch Erstellen anderer Bestandteilsstrukturen. Der Programmteil ist in Fig. 6 näher dargestellt. Nachdem der Programmteil 30 ausgeführt worden ist, kehrt das Programm zu Schritt 27 zurück.
- Wenn die Frage in Schritt 28 bejahend beantwortet wird (J), kehrt das Programm zu Schritt 22 zurück. Somit ist das Rechts-Wortassoziationsverfahren für eine Wortstruktur (l) im Fall eines Wortes (k) mit allen aktuellen Bestandteilen (mmax) durchgeführt worden.
- Wenn eine gewisse Zeit später die Frage in Schritt 23 bejahend beantwortet wird (J), geht das Programm weiter zu Schritt 24. Zu dieser Zeit ist das Rechts-Wortassoziationsverfahren für sämtliche Wortkategorien (lmax) im Fall eines Wortes (k) an allen aktuellen Bestandteilen (mmax) durchgeführt worden, und die so gebildeten Bestandteile sind im Repräsentationsspeicher abgelegt. All diese Bestandteile sollten nunmehr einem Programmteil für den "Bestandteilsabschluß" unterzogen werden. Zu diesem Zweck wird zunächst in Schritt 24 der Zwischenspeicher gelöscht, und im nächsten Schritt 31 werden alle im Repräsentationsspeicher gespeicherten Bestandteile in den Zwischenspeicher kopiert. In Schritt 32 wird dann der Repräsentationsspeicher gelöst. Im nächsten Schritt 33 wird ein m*-Zähler, dessen Zählerstand einem bestimmten Bestandteil im Zwischenspeicher entspricht, auf 0 zurückgesetzt (m* = 0). Im nächsten Schritt 34 wird der Zählerstand des m*- Speichers um um "1" erhöht (m* = m*+1). In Schritt 35 wird dann gefragt, ob der m*-Zähler bereits den Maximalwert (m*max) überschritten hat, der der Anzahl der Bestandteile entspricht (m* > m*max). Wenn diese Frage bejahend beantwortet wird (J), sind alle für alle Wortkategorien (lmax) des k-ten Wortes erhaltenen Repräsentationen (m*max) dem Programmteil für den "Bestandteilsabschluß" unterzogen worden. Das Programm kehrt dann zu Schritt 14 zurück, um Repräsentationen mit Hilfe des nächsten Wortes (k+1) zu erstellen. Wenn jedoch die Frage in Schritt 35 negativ beantwortet wird (N), so wird im nächsten Schritt 26 die m*-te Repräsentation aus dem Zwischenspeicher aufgerufen und in Schritt 37 dem oben erwähnten Programmteil für den "Bestandteilsabschluß" unterzogen. Das in diesem Schritt erhaltene Resultat wird in den Repräsentationsspeicher geschrieben, wonach das Programm zum Schritt 34 zurückkehrt.
- Wenn die Frage in Schritt 15 in Fig. 2 bejahend beantwortet wird (J), so sind alle Wörter (kmax) mit all den zugehörigen Wortstrukturen (lmax,k) in den Bestandteilen untergebracht, und im nächsten Schritt 38 wird gefragt, ob es im Repräsentationsspeicher wenigstens einen Bestandteil mit einem leeren Befehlsfeld gibt. Ein leeres Befehlsfeld bedeutet selbstverständlich, daß wir es mit dem höchsten Bestandteil (Wurzel) zu tun haben. Diese Frage ist real, weil die Schritt 30 und 37 eine Filterprozedur enthalten, die fehlerhafte Repräsentationen ausfiltert (eliminiert), mit Hilfe einer Schwellenwertschaltung, in der der Wert des Wahrscheinlichkeitsfelds mit dem aktuellen Schwellenwert verglichen wird. Dieser Vergleich wird unten im Zusammenhang mit Fig. 6 bis 9 erläutert.
- Wenn die Frage in Schritt 38 negativ beantwortet wird (N), sollte eine Überprüfung gemacht werden, ob der so beschriebene Programmteil für den Parser, nach Verringerung des Schwellenwertes, ein brauchbares Ergebnis, d.h., eine sinnvolle Repräsentation liefert. Der Schwellenwert sollte jedoch nicht unter einem bestimmten Wert, z.B. 0,2 abgesenkt werden, weil dann anzunehmen ist, daß der angebotene Satz strukturell und grammatisch so fehlerhaft ist, daß keine verwertbare Repräsentation von dem Analysprozeß erwartet werden kann. Wenn die Frage in Schritt 38 negativ beantwortet wird (N), wird folglich während des nächsten Schrittes 39 die Frage gestellt, ob der Schwellenwert noch oberhalb eines vorgegebenen Minimalwertes, z.B. 0,2 liegt. Wenn die Antwort bejahend ist (J), so wird im nächsten Schritt 40 der Schwellenwert gemäß einer festen Zahlenfolge auf einen nächstniedrigeren Zahlenwert gesetzt. Gewünschtenfalls kann ein niedriger Schwellenwert auch von Hand eingegeben werden. Das Programm kehrt dann zu Schritt 12 zurück, um erneut das Programm bezüglich der Analyse (Parsing) des Satzes durchzuführen, doch in diesem Fall mit einem kleineren Schwellenwert. Somit werden auch grammatisch inkorrekte Sätze zugelassen. Wenn die Frage in Schritt 39 negativ beantwortet wird (N), und wenn es deshalb anzunehmen ist, daß kein brauchbares Analyseergebnis gefunden werden kann, so muß eine entsprechende Maßnahme getroffen werden. Der Satz kann möglicherweise als verdächtig angesehen werden, mit vermutlich vielen und/oder sehr ernsten grammatischen Fehlern. Erforderlichenfalls kann hierzu eine Notiz gemacht werden. Der Schritt 40 kann dem Schritt 39 vorangehen. In diesem Fall erhält Schritt 39 einen anderen Wert als Kriterium. Wenn die Frage in Schritt 38 bejahend beantwortet wird (J), also bei Vorliegen wenigstens einer Repräsentation des höchsten Bestandteils, so wird im nächsten Schritt 42 das Mitgliederfeld der vorliegenden höchsten Bestandteile angepaßt. Als Ausgangssituation wird angenommen, daß die zu dem Satz gehörende Struktur bereits erstellt worden ist. Eine Anzahl von Befehlsfeldern muß jedoch noch ausgefüllt oder angepaßt werden. Die im Repräsentationsspeicher auftretenden Bestandteile (Stammbestandteile) werden in ihren Mitgliederfeldern eine Anzahl von Bestandteilen (Mitglieder-Bestandteile) und/oder Wörter (Mitglieder-Wörter) enthalten. Ein Mitglieder-Bestandteil ist ein Bestandteil, der durch seinen Stammbestandteil dominiert wird. Das Befehlsfeld dieser Mitglieder-Bestandteile und Mitglieder-Wörter wird nun mit einer Angabe einer Verweisung auf den zugehörigen Stammbestandteil ausgefüllt. Auf diese Weise erhalten auch die Befehlsfelder aller im Mitglied eines gegebenen Stammbestandteils gegebenen Mitglieder-Bestandteile und Mitglieder- Wörter eine Angabe oder Verweisung bezüglich dieses Stammbestandteils. Dasselbe geschieht auch für jedes Befehlsfeld der Bestandteile und der Wörter innerhalb eines Bestandteils, deren Befehlsfeld während des Parser-Prozesses ausgefüllt worden ist.
- Da während des Parser-Prozesses provisorische Funktionsetiketten zugewiesen werden können, werden sie in Schritt 43 durch endgültige Funktionsetiketten ersetzt. In der noch zu beschreibenden Beispielsgrammatik wird das provisorische Etikett fNP für jeden Bestandteil mit der Kategorie NP innerhalb, unter anderem, eines Bestandteils mit der Kategorie S verwendet. Während dieses Schrittes werden Etiketten dieser Art durch die endgültigen Etiketten, also "Subjekt", "Objekt", "indirektes Objekt" (Indobj.) und "Prädikat" (Pred) ersetzt. Dieser Schritt 43 wird später näher erläutert. Schließlich wird in Schritt 44 aus dem Repräsentationsspeicher diejenige Repräsentation ausgewählt, die den höchsten Wahrscheinlichkeitsfaktor hat. Dies kann auch zu mehreren Repräsentationen führen. So gibt es bei dem niederländischen Satz "Ik zag een meisje met de verrekijker" (deutsche Übersetzung: "Ich sah ein Mädchen mit dem Fernrohr") zwei mögliche Lösungen, da die Phrase "mit dem Fernrohr" als "verb" und ebenso auch als "objekt" qualifiziert werden kann.
- Eine zweite Ausführungsform des Programmteils 20 wird nun auch anhand von Fig. 3 erläutert. Der Index l bezeichnet nun eine bestimmte Bestandteilsstruktur (und keine bestimmte Wortstruktur), während infolgedessen der Index m sich auf eine bestimmte Wortstruktur bezieht. Als ein laufender Index muß in Schritten 33 bis 37 l* und L*max anstelle von m* undm*max benutzt werden. Foflich wird in Schritt 21 der Zählerstand des l-Zählers auf "null" (l=0) in bezug auf die laufende Nummer des zu verwendenden Bestandteils zurückgesetzt, in Schritt 22 wird der Zählerstand l-Zählers um "1" erhöht (l=l+1) und in Schritt 23 wird gefragt, ob der Zählerstand des l-Zählers bereits den Maximalwert (lmax) überschritten hat, der der Anzahl der vorhandenen Bestandteile entspricht (l > lmax). In Schritt 25 wird der durch den Zählerstand des l-Zählers angegebene Bestandteil aus dem Zwischenspeicher aufgerufen, wobei dieser Bestandteil den vorherigen Bestandteil im Arbeitsspeicher überschreibt. In Schritt 26 wird der m-Zähler, dessen Zählerstand der laufenden Nummer einer bestimmten Wortkategorie entspricht, dann auf 0 zurückgesetzt (m = 0). In Schritt 27 wird der Zählerstand des m-Zählers um "1" erhöht (m = m+1), und in Schritt 28 wird gefragt, ob der Zählerstand des m-Zählers bereits den Maximalwert mmax überschritten hat, der der Anzahl der Wortstrukturen entspricht (m > mmax). In Schritt 29 wird das m-te Wort aus dem Zwischenspeicher aufgerufen, und das m-te Wort überschreibt das vorherige Wort im Arbeitsspeicher. Das m-te Wort und der l-te Bestandteil werden dann dem Anpassungsprozeß nach Schritt 30 unterzogen.
- Eine bejahende Antwort (J) auf die Frage in Schritt 28 bedeutet, daß in dem Programmteil 20 alle zu einem Wort (k) gehörenden Wortstrukturen (mmax) auf Verbindung zu einem Bestandteil (l) überprüft worden sind. Die übrigen Schritte laufen in der bereits beschriebenen Weise ab. In den schon beschriebenen Ausführungsformen werden sämtliche möglichen Repräsentationen von Bestandteilen, die in Verbindung mit einem Wort (k) für sämtliche Wortstrukturen möglich sind, anhand der verfügbaren Bestandteile aufgestellt oder entfaltet, bevor der Programmteil 37 zum "Abschluß dieser Bestandteile" ausgeführt wird.
- In der folgenden Ausführungsform werden all die möglichen Repräsentationen (m*max) von Bestandteilen, die in Verbindung mit einem Wort (k) für eine Wortstruktur (l) möglich sind, mit Bezug auf all die Bestandteile (mmax) aufgestellt oder entfaltet, bevor der Programmteil 37 für den Abschluß dieser Bestandteile (m*) ausgeführt wird. Derselbe Programmteil wird dann wiederholt, jedoch für eine nachfolgende Wortstruktur (l+1).
- Die dritte auf diesen Überlegungen basierende Ausführungsform ist in Fig. 4 gezeigt.
- In Schritt 21 wird der l-Zähler für die laufende Nummer einer zu dem Wort (k) gehörenden Wortstruktur auf "0" zurückgesetzt (l=0), und in Schritt 22 wird der Zählerstand des l-Zählers um "1" erhöht (l = l+1). In Schritt 23 wird dann gefragt, ob der Zählerstand des l-Zählers schon den Maximalwert (lmax) überschritten hat (l > lmax). In Schritt 25 wird das Wort mit der durch den l-Zähler angegebenen Wortstruktur aus dem Wortspeicher aufgerufen und im Arbeitsspeicher abgelegt. In Schritt 26 wird der m-Zähler, dessen Zählerstand die laufende Nummer eines Bestandteils im Zwischenspeicher repräsentiert, dann auf "0" zurückgesetzt (m = 0), und in Schritt 27 wird der Zählerstand des m-Zählers um "1" erhöht (m = m+1). In Schritt 28 wird gefragt, ob all die Bestandteile (mmax) schon durch den Programmteil des Schrittes 30 auf Verbindung überprüft worden sind (m > mmax). Wenn die Antwort negativ ist (N), so wird in Schritt 29 der durch den Zählerstand des m-Zählers definierte Bestandteil aus dem Zwischenspeicher in den Arbeitsspeicher überführt, wonach in Schritt 30 die Verbindung der l-ten Wortstruktur mit der m-ten Bestandteilsstruktur geprüft wird, und das Ergebnis wird in den Repräsentationsspeicher eingeschrieben. Im Fall einer bejahenden Antwort auf die Frage in Schritt 28 werden dann im nächsten Schritt 45 die Inhalte des Repräsentationsspeichers und diejenigen des Zwischenschaltspeichers ausgetauscht, wonach der Repräsentationsspeicher in Schritt 32 gelöscht wird. In Schritt 33 wird der m*-Zähler, dessen Zählerstand die laufende Nummer eines bestimmten Bestandteils im Zwischenschaltspeicher repräsentiert, auf "0" zurückgesetzt (m* = 0). In Schritt 34 wird der Zählerstand des m*-Zählers um "1" erhöht (m* = m*+1), und in Schritt 35 wird gefragt, ob der Zählerstand des m*-Zählers schon den Maximalwert (m*max) überschritten hat (m* > m*max). Wenn dies nicht der Fall ist (N), wird der durch den m*-Zähler angegebene Bestandteil in Schritt 36 aus dem Zwischenschaltspeicher aufgerufen und in Schritt 37 dem Programmteil für den Abschluß des Bestandteils unterzogen. Das Ergebnis wird dann im Repräsentationsspeicher gespeichert, und das Programm kehrt zu Schritt 34 zurück. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 35 wird dann im nächsten Schritt 47 der Inhalt des Repräsentationsspeichers in einen Pufferspeicher kopiert, und in Schritt 48 wird der Repräsentationsspeicher gelöscht.
- Das Programm kehrt dann zu Schritt 22 zurück. Der auf diese Weise ausgeführte Programmteil wird dann wiederholt, aber dann mit der nachfolgenden Wortstruktur (l+1) in Verbindung mit dem k-ten Wort.
- Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 23 geht das Programm zu Schritt 46, wobei der Pufferspeicher in den Repräsentationsspeicher kopiert wird und dann der Pufferspeicher gelöscht wird. Das Programm kehrt dann zu Schritt 14 zurück (siehe Fig. 2).
- Statt die Ergebnisse der Verarbeitungsschritte 37 und 30 erst im Repräsentationsspeicher und dann im Pufferspeicher abzulegen, ist es auch möglich, die Ergebnisse direkt im Pufferspeicher abzulegen. Dies hat die notwendigen Konsequenzen im Zusammenhang mit der Behandlung dieser Programmteile in Fig. 6 und 9.
- Eine vierte Ausführungsform, die sich von der obigen Ausführungsform in derselben Weise unterscheidet wie sich die zweite Ausführungsform von der ersten unterscheidet, wird nunmehr im einzelnen beschrieben. Hier beziehen sich die Indizes l und m auf eine laufende Nummer eines Bestandteils bzw. eines Wortes. Die Bezeichnung l* wird wieder als laufender Index für die Schritte 33 bis 37 verwendet.
- Folglich wird in Schritt 21 der Zählerstand des l-Zählers bezüglich des zu verwendenden Bestandteils auf "0" zurückgesetzt (l = 0), in Schritt 22 wird der Zählerstand l-Zählers um "1" erhöht (l = l+1), und in Schritt 23 wird gefragt, ob der Zählerstand des l-Zählers schon dem Maximalwert (lmax), entsprechend der Anzahl der vorhandenen Bestandteile überschritten hat (l> lmax). In Schritt 25 wird der durch den Zählerstand des l-Zählers angegebene Bestandteil aus dem Zwischenspeicher aufgerufen und im Arbeitsspeicher abgelegt. In Schritt 26 wird dann der m-Zähler, dessen Zählerstand der laufenden Nummer einer bestimmten Wortstruktur entspricht, auf "0" zurückgesetzt (m = 0). In Schritt 27 wird der Zählerstand des m-Zählers um "1" erhöht (m = m+1), und in Schritt 28 wird gefragt, ob der Zählerstand des m-Zählers schon den Maximalwert (mmax), entsprechend der Anzahl der Wortstrukturen, überschritten hat (m > mmax).
- In Schritt 29 wird die m-te Wortstruktur aus dem Wortspeicher aufgerufen und im Arbeitsspeicher abgelegt. Diese m-te Wortstruktur und der l-te Bestandteil werden dann der Einpaß-Prozedur nach Schritt 30 unterzogen, das Ergebnis wird im Repräsentationsspeicher abgelegt, und das Programm kehrt zu Schritt 27 zurück. Eine bejahende Antwort (J) auf die Frage in Schritt 28 bedeutet somit, daß all die zu einem Wort (k) gehörenden Wortstrukturen (mmax) in dem Programmteil 30 auf Verbindung mit einem Bestandteil (l) überprüft worden sind; in Schritt 45 wird dann der Inhalt des Repräsentationsspeichers in den Zwischenschaltspeicher übertragen, und der Repräsentationsspeicher wird gelöscht. Eine Phase, die zu dem Abschlußprozeß der vorliegenden Bestandteile in Schritt 37 führt, beginnt dann in Schritt 33. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 35 geht das Programm zu Schritt 47, woraufhin der so beschriebene Programmteil wiederholt wird, aber dann für den nächsten Bestandteil (l+1) im Zwischenspeicher. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 23 kehrt das Programm über Schritt 46 zum Schritt 14 zurück (siehe Fig. 2).
- Fig. 5 zeigt eine fünfte Ausführungsform des Programmteils 20, basierend auf der Idee, daß, wann immer ein Wort und ein Bestandteil in den Arbeitsspeicher übertragen worden sind, nicht nur der Programmteil 30 bezüglich der Einpassung dieses Wortes in diesen Bestandteil, sondern auch direkt anschließend daran der Programmteil 37 bezüglich des Abschlusses der erhaltenen Bestandteil ausgeführt werden sollte. Folglich wird in Schritt 21 der l- Zähler, dessen Zählerstand die laufende Nummer der Wortstruktur repräsentiert, auf "0" zurückgesetzt (l = 0), in Schritt 22 wird der Zählerstand des l- Zählers um "1" erhöht (l = l+1), und in Schritt 23 wird gefragt, ob der Zählerstand des l-Zählers schon den Maximalwert (lmax) überschritten hat, der der Anzahl der zu dem k-ten Wort gehörenden Wortstrukturen entspricht. Wenn dies nicht der Fall ist (N), so wird in Schritt 25 die durch den l-Zähler angegebene l-te Wortstruktur aus dem Wortspeicher aufgerufen und in den Arbeitsspeicher geschrieben. In Schritt 26 wird dann der m-Zähler, dessen Zählerstand der laufenden Nummer des m-ten Bestandteils im Zwischenspeicher entspricht, auf "0" zurückgesetzt (m = 0), und im nächsten Schritt 27 wird der Zählerstand des m-Zählers um "1" erhöht (m = m+1). In Schritt 28 wird gefragt, ob der Zählerstand des m-Zählers schon den Maximalwert (mmax) überschritten hat, der der Anzahl der Bestandteile im Zwischenspeicher entspricht (m > mmax). Wenn dies nicht der Fall ist (N), so wird im nächsten Schritt 29 der m-te Bestandteil aus dem Zwischenspeicher in den Arbeitsspeicher geschrieben. Der Programmteil 30 bezüglich der Verbindung der l-ten Wortstruktur mit der m-ten Bestandteilsstruktur wird dann ausgeführt, und im Repräsentationsspeicher gespeichert. Direkt danach werden ein oder mehrere ergänzende (oder neue) Bestandteile aus dem Repräsentationsspeicher aufgerufen und entfernt und dann dem Programmteil 37 bezüglich ihres Abschlusses unterzogen. Während des Schrittes 37 wird das Resultat in den Repräsentationsspeicher geschrieben, wonach das Programm zu Schritt 27 zurückkehrt.
- Wenn die Frage in Schritt 28 bejahend beantwortet wird (J), kehrt das Schritt 22 zurück.
- Wenn die Frage in Schritt 23 bejahend beantwortet wird (J), so kehrt das Programm zu Schritt 14 zurück (siehe Fig. 2).
- In einer sechsten Ausführungsform sind die Indizes l und m im Vergleich zur fünften Ausführungsform vertauscht.
- Die Schritte 21, 22, 23 und 25 beziehen sich deshalb auf die Bestandteilsrepräsentation mit dem Index l, und die Schritte 26, 27, 28 und 29 beziehen sich auf die Wortstruktur mit dem Index m.
- Der Programmteil 30 wird nunmehr im einzelnen unter Bezugnahme auf das Flußdiagramm nach Fig. 6 erläutert.
- Dieser Programmteil dient dem Versuch, die angebotene Wortstruktur in der angebotenen Bestandteilsstruktur unterzubringen. Obgleich ein Interpunktionszeichen wie etwa das "Komma" und die Konjunktionen "en" (deutsch: "und") "alsmede" (deutsch: "sowie") und "of" (deutsch: oder") als Wörter bezeichnet werden und auch als solche in dem lexikologischen Speicher gespeichert werden, nehmen sie nichts desto weniger in dem Parser-Prozeß eine Sonderstellung in bezug auf andere Wörter ein; sie können als ein Mitgliedselement innerhalb eines neuen Stammbestandteils behandelt werden, der für den zugehörigen Bestandteil zu erzeugen ist, innerhalb dessen der Prozeß der Einpassung in diese Konjunktionen oder Interpunktionszeichen wirklich stattfinden sollte. Aus diesem Grund folgen solche Konjunktionen und Interpunktionen einer anderen Route innerhalb des Wort-Einpaßprozesses. Folglich wird am Beginn dieses Programmteils in Schritt 50 gefragt, ob die Wortkategorie des angebotenen und einzupassenden Wortes im lexikalischen Speicher mit "Seq" bezeichnet ist. Wenn dies der Fall ist (J), geht das Programm zu Schritt 51. Wenn es nicht der Fall ist (N), so werden im nächsten Schritt 52 die Wortstruktur sowie die Bestandteilsstruktur, innerhalb derer das Wort eingepaßt wird, in den Arbeitsspeicher geschrieben. In Schritt 53 wird anhand der Information betreffend das Kategorienfeld des Wortes und das des angebotenen Bestandteils eine Suche in einem Speicherteil für Grammatikregeln durchgeführt, der als der zweite Tabellenspeicher bezeichnet werden kann. Somit werden in der angegebenen Kerngrammatik die Wortkategorie "article" (Artikel) und der angebotene Bestandteil "NP" mit der Grammatikregel "article (NP(det))" assoziiert, was bedeutet, daß das Wort mit Hilfe des Funktionsetiketts "det" in den vorliegenden Bestandteil eingepaßt wird. Eine Anzahl von Grammatikregeln dieser Art findet sich in der beigefügten Tabelle B.
- In Schritt 54 wird gefragt, ob die gesuchte Grammatikregel existiert und deshalb ein Datenfeld hat. Wenn das Datenfeld leer ist (J) und die Grammatikregel deshalb kein funktionelles Wortetikett hat, so wird der Programmteil 30 für die Verbindung eines Wortes innerhalb eines Bestandteils als abgeschlossen angesehen. Dies ist beispielsweise der Fall, wenn nach der Verbindung eines Verbs in einer NP zu suchen ist: dies führt nicht zu einer Lösung (label length = 0 (Etikett Länge = 0)). Im Fall einer negativen Antwort (N) in Schritt 54 wird im nächsten Schritt 55 gefragt, ob die Grammtikregel ein Datenfeld mit nur einem Funktionsetikett hat. Wenn dies der Fall ist (J), wie im Fall der Regel "article (NP(det))", so wird im nächsten Programmteil 56 das angebotene Wort, "article" in diesem Fall, mit dem Funktionsetikett "det" in diesem Fall, in die vorliegende Bestandteilstruktur einbezogen. Dieser Programmteil wird mit Bezugnahme auf Fig. 7 näher erläutert. Wenn jedoch die Antwort in Schritt 55 negativ ist (N) und deshalb mehrere Elemente in dem Datenfeld auftreten, wie im Fall der Grammtikregel "article(PP(det NP))", so wird im nächsten Schritt 57 ein neuer Bestandteil für das letzte Element, NP in diesem Fall, erstellt und zwischen dem Stammbestandteil PP und dem Wort "article" eingefügt.
- Dieser neue Bestandteil erhält somit die folgende Struktur: Kategorienfeld: das letzte Element der Grammatikregel , NP in diesem Fall. Befehlsfeld: Stammbestandteil, PP in diesem Fall. Mitgliederfeld: NIL, d.h., das Feld enthält keine Information. Merkmalsfeld: alle zu dieser Bestandteilskategorie (NP) gehörenden Merkmale, die aus dem ersten Tabellenspeicher entnommen werden können. In diesem Fall: "neuter, inneuter, sing 1, sing 2, sing 3, plu 1, plu2, plu 3, definite, indefinite" ( neutral, nicht-neutral, erste Person Singular, zweite Person Singular, dritte Person Singular, erste Person Plural, zweite Person Plural, dritte Person Plural, bestimmt, unbestimmt). Eine Anzahl von Beispielen dieser Art wird in Tabelle A gegeben.
- Gemäß der englischen Grammatik gibt es die folgenden Merkmale: "definite", "indefinite", "male", "female", "neutral", "sing 1", "sing 2", "sing 3", "plu 1", "plu 2", "plu 3" (bestimmt, unbestimmt, männlich, weiblich, neutral, erste Person Singular, zweite Person Singular, dritte Person Singular, erste Person Plural, zweite Person Plural, dritte Person Plural).
- Stapelfeld: NIL, d.h., das Feld enthält keine Information.
- Verletzungsfeld: NIL, d.h., das Feld enthält keine Information.
- Wahrscheinlichkeitsfeld: 1
- Diese neue Bestandteilsstruktur wird nunmehr als die aktuelle Bestandteilsstruktur angesehen.
- Im nächsten Schditt 58 wird das letzte Element, NP in diesem Fall, aus der Grammatikregel entfernt, und das Programm kehrt zu Schritt 55 zurück. Da im vorliegenden Fall nur ein Element in der Grammatikregel übrig ist, schreitet das Programm nun mit Schritt 56 fort. Schritt 56 wird mit der aktuellen Wortstruktur und der aktuellen Bestandteilsstruktur ausgeführt. Es ist zu bemerken, daß die als aktuelle Bestandteilsstruktur angesehene Struktur während des Schrittes 57 geändert worden sein kann.
- In Schritt 51 wird der angebotene Bestandteil (innerhalb dessen mit Hilfe der Schritte 25 bis 30 ein Wort einzufügen ist) kopiert. Im nächsten Schritt 59 wird überprüft, ob der kopierte Bestandteil schon ein Element "Conj" in dem Bestandteils-Stapelfeld hat. Wenn dies der Fall ist (J), ist es ratsam, einen neuen Bestandteil wieder mit dem Präfix "Conj" als einen Stammbestandteil für den kopierten Bestandteil und das einzufügende Wort oder die einzufügende Interpunktion einzuführen. Das Verfahren geht dann zu Schritt 60, wo der kopierte Bestandteil im Repräsentationsspeicher abgelegt wird und die nächsten Schritte 61 bis 66 erwartet, bei denen dieser Bestandteil beteiligt ist. Wenn die Frage in Schritt 59 negativ beantwortet wird (N), so folgt der Schritt 67, wo überprüft wird, ob dieser Bestandteil zu dieser Zeit schon die Bedingungen für den Abschluß eines Bestandteils erfüllt. Eine erste Bedingung ist, daß das zuletzt zu dem Stapelfeld hinzugefügte Element auch ein geeignetes Element ist, mit dem der Bestandteil enden kann. Eine zweite Bedingung ist, daß gewisse Elemente als ein Minium im Stapelfeld des Bestandteils vorhanden sein müssen.
- Die erste Bedingung ist auch durch eine andere Bedingung ersetzbar, die diejenigen Elemente angibt, mit denen ein Bestandteil nicht enden darf. Die erste Ersetzungsbedingung und die zweite Bedingung werden anhand von Grammtikregeln gesucht, die in einem als dritter Tabellenspeicher bezeichneten Speicherteil abgelegt sind. So gibt die Information (NP(det Nmod-a)head) an, daß kein "determiner" (Bestimmer) oder "Nmod-a" als das letzte Element in einer NP fungieren kann und der "head" (Hauptteil) auf jeden Fall darin auftreten muß. Eine Anzahl von Beispielen ist in Tabelle C gegeben. Wenn eine NP solche Bedingungen nicht erfüllt, wird der Wert des Wahrscheinlichkeitsfeldes verringert, und ein passender Verletzungscode wird in das Verletzungsfeld aufgenommen. Wenn diese Bedingungen erfüllt sind, so findet in diesem Schritt keine weitere Aktion statt. Die Verringerung des Wahrscheinlichkeitsfaktors erhöht die Chance, daß dieser Bestandteil in einer nachfolgenden Filterprozedur (im Programmteil 69) eliminiert wird.
- In Schritt 67 wird auch geprüft, ob dem aktuellen Bestandteil ein wesentliches Element fehlt. Dies geschieht anhand einer Tabelle K, in der für jeden Bestandteil eine Anzahl von gruppenbezogenen Kombinationen von Regeln angegeben ist, die aus drei Listensegmenten aufgebaut sind. Diese Tabelle spezifiziert, daß, wenn keines der als Merkmale fungierenden Elemente aus dem ersten Listensegment in dem Bestandteil vorhanden ist, die Mitglieder aus dem zweiten Listensegment zwingend sind und die Mitglieder aus dem dritten Listensegment verboten sind. So gibt die Bestimmung NP ((plu 3 proper pro) (det) ()) an, daß, wenn in einem NP-Bestandteil keines der Elemente aus dem ersten Listensegment "plu 3", "proper", "pro" vorhanden ist, das Element aus dem zweiten Listensegment, in diesem Fall "determiner" vorhanden sein muß. Das dritte Listensegment ist hier leer und stellt demzufolge keine Anforderungen. Tabelle K gibt verschiedene Beispiele. Wenn solche Bedingungen nicht erfüllt sind, so wird der Wert des Wahrscheinlichkeitsfeldes verringert, und ein zugehöriger Verletzungscode wird in das Verletzungsfeld aufgenommen, wobei auch die beabsichtigte Kombination von Listensegmenten gezeigt wird.
- Im nächsten Schritt 68 wird in Verbindung mit der Einbeziehung eines "Komma" oder der nebenordnenden Konjunktionen zusätzlich zu dem kopierten Bestandteil ein neuer Stammbestandteil erzeugt, der dieselbe Kategorienbezeichnung wie der kopierte Bestandteil erhält, jedoch mit dem Präfix "Conj". Das Befehlsfeld des neuen Bestandteils wird identisch mit demjenigen des kopierten Bestandteils. Die anderen Felder werden auf dieselbe Weise ausgefüllt, wie es in Schritt 57 der Fall war.
- Im nächsten Schritt 69 wird ein Vorschlag gemacht, den kopierten Bestandteil in den neu gebildeten Bestandteil einzupassen, mit "Conj" als Funktionsetikett. Dies geschieht unter Verwendung des Funktionsetiketts "Conj", der kopierten Bestandteilsstruktur selbst und des neu erstellten Stammbestandteils. Der zugehörige Programmteil wird im einzelnen unter Bezugnahme auf die Schritte 81 bis 89 erläutert und kann dazu führen, daß eine neue Bestandteilsstruktur zum Repräsentationsspeicher hinzugefügt wird.
- Im nächsten Schritt 70 wird geprüft, ob wirklich eine Bestandteilsstruktur zum Repräsentationsspeicher hinzugefügt worden ist. Wenn dies nicht der Fall ist (N), und der kopierte Bestandteil deshalb eliminiert worden ist, wird der Einpassungsprozeß für den "Sequenzierer" als abgeschlossen angesehen. Wenn andererseits die Frage in Schritt 70 bejahend beantwortet wird, so folgt der Schritt 61, in dem der zuletzt hinzugefügte Bestandteil aus dem Repräsentationsspeicher gelesen und ebenfalls daraus entfernt wird. In dem nächsten Schritt 62 wird dasselbe Programm durchlaufen wie in Schritt 56, jedoch wird dabei im Stapelfeld das Funktionsetikett "seq" vorgeschlagen. Da in Schritt 62 ein Element zum Repräsentationsspeicher hinzugefügt worden sein kann, wird in Schritt 63 gefragt, ob dies wirklich der Fall ist. Im Fall einer negativen Antwort (N) wird dieser Programmteil als abgeschlossen angesehen. Im Fall einer bejahenden Antwort (J) wird in Schritt 64 das zuletzt hinzugefügte Element aus dem Repräsentationsspeicher aufgerufen, und dann wird in Schritt 65 auf die bereits im Zusammenhang mit Schritt 57 beschriebene Weise eine neue Bestandteilsstruktur erstellt. Das Befehlsfeld wird in diesem Fall mit einer Verweisung auf den Stammbestandteil ausgefüllt. Hier wird als Stammbestandteil derjenige Bestandteil betrachtet, der in Schritt 64 aus dem Repräsentationsspeicher aufgerufen wurde und der nunmehr als aktueller Bestandteil angesehen wird.
- Das Kategorienfeld erhält denselben Wert wie das Kategorienfeld des Mitgliedbestandteils mit dem Funktionsetikett "Conj" innerhalb des aktuellen Bestandteils.
- Die anderen Felder werden exakt auf dieselbe Weise ausgefüllt wie in Schritt 57. Im nächsten Schritt 66 wird die neue, gerade erstellte Bestandteilsstruktur zum Repräsentationsspeicher hinzugefügt, wonach das Programm zum Einfügen eines Wortes in einen Bestandteil als abgeschlossen angesehen wird.
- Fig. 7 zeigt ein Flußdiagramm eines detailliertes Programms, auf das während der Programmteile 56 und 62 Bezug genommen wurde. In Schritt 71 wird eine Kopie der aktuellen Bestandteilsstruktur, d.h., der Struktur des Bestandteils, in den das betreffende Wort aufzunehmen ist, in den Arbeitsspeicher geschrieben. Im nächsten Schritt 72 wird das in Schritten 53 und 56 oder 62 erhaltene Funktionsetikett zum Stapelfeld dieser Kopie hinzugefügt. In Schritt 63 wird eine Kombination von Mitgliedern, d.h., das Funktionsetikett und die einzufügende Wortstruktur, als ein Etikettenpaar zu dem Mitgliederfeld hinzugefügt. In der Praxis wird die Adresse der Wortstruktur anstelle der Wortstruktur selbst hinzugefügt.
- In Schritt 74 erfolgt dann in einem als vierter Tabellenspeicher bezeichneten Speicherteil eine Auswahl für die Serie von Merkmalen, die zu der Kategorie des aktuellen Bestandteils und dem Funktionsetikett des Wortes gehören. Jedes Element dieser Serie von Merkmalen, das nicht in dem Merkmalsfeld der Wortstruktur auftritt und im Merkmalsfeld der Bestandteilsstruktur auftritt, wird aus dem Merkmalsfeld der Bestandteilsstruktur entfernt.
- Das folgende Beispiel dient zur Illustration des Vorstehenden: gemäß dem vierten Tabellenspeicher (siehe Tabelle D) gehört zu "NP" und "determiner" die folgende Serie von Merkmalen: "neuter", inneuter, sing 1, sing 2, sing 3, plu 1, plu 2, plu 3, definite, indefinite". Es sei angenommen, daß die Bestandteilsstruktur mit der Kategorie "NP" die Merkmale "sing 1, sing 2, sing 3, plu 1, plu2, plu 3, neuter, inneuter" hat. Da die Wortstruktur nun beispielsweise im Merkmalsfeld die Merkmale "neuter, "definite", sing 1" hat (was beispielsweise für den Artikel "the" gilt), müssen die Merkmale sing 1, sing 2, plu 1, plu 2, plu 3, und inneuter aus dem Merkmalsfeld der Bestandteilsstruktur entfernt werden.
- Gemäß der englischen Grammatik wird für NP und "determiner" eine ähnliche Serie von Merkmalen gefunden, jedoch ohne "neuter" und "inneuter". Als Beispiel in der englischen Sprache wird eine Wortstruktur mit den Merkmalen "indefinite", "sing 3" ausgewählt, nämlich der Artikel "a". Infolge dieser Auswahl werden die Merkmale "sing 1", "sing 2", "plu 1" und "plu 2", "plu3" und "definite" aus dem Merkmalsfeld der Bestandteilsstruktur entfernt.
- Im folgenden Schritt 75 werden erforderlichenfalls einige Prüfoperationen ausgeführt, dies geschieht anhand eines als fünfter Tabellenspeicher bezeichneten Speichenteils (siehe Tabelle E). Bei diesen Operationen werden fehlerhafte Kombinationen, fehlerhafte Reihenfolgen und falsche Nummern von Funktionsetiketten im Stapelfeld für jeden Bestandteilstyp (Bestandteilskategorie) gesucht. So ist das Auftreten von zwei Funktionsetiketten "head" hintereinander in einem Bestandteil NP als eine fehlerhafte Kombination zu interpretieren, die Funktionsetiketten "Nmod-S" und dann ein "head" als eine Kombination in falscher Reihenfolge, und mehr als ein Funktionsetikett "determiner" in einer NP als eine falsche Anzahl von Funktionsetiketten für einen solchen Bestandteil. Eine falsche Reihenfolge von zwei Funktionsetiketten liegt auch vor, wenn ein "head" von einem "Nmod-A" gefolgt ist. Es ist zu berücksichtigen, daß die zuletzt hinzugefügten Elemente in den Bestandteilsstrukturen vorne stehen.
- Tabelle E gibt diese Überprüfungen an: "NP ((head head)) ((head Nmod-S) (Nmod-a head)) ((det 1))".
- Diese Tabelle kann für andere Bestandteile ausgeweitet werden sowie auch hinsichtlich der Anzahl der Prüfregeln pro Bestandteil. Bei dieser Überprüfung werden sowohl ein spezieller Verletzungscode als auch die zugehörigen Elementpaare in das Verletzungsfeld geschrieben. Eine zweite Überprüfung erfolgt für jede Bestandteilskategorie durch Suchen nach falschen Kombinationen in dem Merkmalsfeld anhand der Tabelle F, die als solche in einem als sechster Tabellenspeicher bezeichneten Speicherteil gespeichert ist. So muß die zu der Wortkombination "the house" gehörende Kombination "inneuter" und "neuter" in einer NP als falsch angesehen werden. Dies drückt sich in der Abwesenheit sowohl von neuter als auch von inneuter im Merkmalsfeld aus. Wen das Programm findet, daß nicht eine der Merkmalskombinationen (neuter, inneuter) im Merkmalsfeld vorhanden ist, werden eine Verletzung und die zugehörige Merkmalskombination im Verletzungsfeld aufgenommen. Als ein Beispiel in der englischen Sprache bezüglich einer NP kann die Kombination aus "sing 3" und "plu 3" für "a houses" als falsch angesehen werden. Dies manifestiert sich im Fehlen eines der Merkmale "sing 1", "sing 2", "sing 3", "plu 1", "plu 2" und "plu 3". Wenn das Programm feststellt, daß kein Element dieser Merkmalskombination im Merkmalsfeld vorhanden ist, werden ein Verletzungscode und die betreffende Merkmalskombination im Verletzungsfeld gespeichert.
- Es kann auch eine Suche nach Kombinationen durchgeführt werden, deren Vorhandensein im Merkmalsfeld als notwendig angesehen wird.
- Jeder Bestandteil sollte wenigstens eine genehmigte Kombination von Merkmalsetiketten im Merkmalsfeld zeigen.
- So enthält das Merkmalsfeld des NP-Bestandteils "large house" die Kombination "indefinite", sing 3, adj.-not-infl., adj. enumerative, neuter", während eine geprüfte Standardkombination beispielsweise (indefinite, adj.-not-inflected, neuter) ist, die sich in diesem Merkmalsfeld befindet. Der NP-Bestandteil "the large house" hat das Merkmalsfeld (definite, sing 3, adj.-inflected,adj.-enumerative, neuter), in dem sich die Standardkombination (definite, adj.-inflected) befindet. So kann für einen NP-Bestandteil eine Serie von Standardkombinationen von Merkmalsetiketten zusammengestellt werden.
- Eine Serie von Standardkombinationen dieser Art für eine NP könnte sein: NP ((definite, adj.-inflected) (plu 3), adj.-inflected) (inneuter, adj.-inflected) (neuter, indefinite, adj.-not-inflected)). Standardkombinationen dieser Art können auch für andere Typen von Bestanddteilen zusammengestellt werden und werden gemeinsam in dem als sechster Tabellenspeicher bezeichneten Speicherteil abgelegt (siehe Tabelle F).
- Ein Bestandteil muß dann wenigstens eine der zugehörigen Standardkombinationen erfüllen. Wenn dies nicht der Fall ist, so sollte der Wert des zu diesem Bestandteil gehörenden Wahrscheinlichkeitsfelds verringert werden. So hat der falsche NP-Bestandteil "a large house" als Merkmalsfeld: (indefinite, sing 3, adj. inflected, adj.-enumerative, neuter) (unbestimmt, dritte Person Singular, Adjektiv gebeugt, Adjektiv aufzählend, neutral), worin keine der geprüften Standardkombinationen gefunden wird. Auch hier kann in dem Verletzungsfeld ein Verletzungscode aufgenommen werden und bei irgendeiner Anzeige des analysierten Satzes auf dem Bildschirm angezeigt werden. Wenn die verwendete Kerngrammatik in englischer Sprache benutzt wird, die in den beigefügten Tabellen, wie etwa Tabelle F ausgedrückt ist, ist ein zu dem oben erörterten Beispiel äquivalentes Beispiel nicht verfügbar.
- Im nächsten Schritt 76 wird gefragt, ob der Wert des Wahrscheinlichkeitsfeldes des Kopie-Bestandteils größer oder gleich dem Schwellenwert ist. Wenn die Frage negativ beantwortet wird (N), wird der Kopie-Bestandteil eliminiert, und der betreffende Schritt 56 oder 62 (Fig. 6) wird als abgeschlossen angesehen.
- Wenn die Frage in Schritt 76 bejahend beantwortet wird (J), so wird im nächsten Schritt 77 gefragt, ob der Kopie-Bestandteil, der dann als aktueller Bestandteil angesehen wird, angesichts des aktuellen Schwellenwertes noch abgeschlossen werden kann. In diesem Fall wird ein Test an den möglichen Funktionsetiketten für den aktuellen Bestandteil innerhalb des Bestandteils im Befehlsfeld ausgeführt. Wenn der vorliegende Bestandteil mehr als ein Funktionsetikett im Stapelfeld hat (J), ist dieser Test bereits in einer vorausgegangenen Stufe mit einem positiven Resultat ausgeführt worden und braucht deshalb nicht noch einmal ausgeführt zu werden. Auf diese Weise schreitet das Programm fort zu Schritt 78, ebenso wie in der Situation, in der es als möglich erscheint, daß der Bestandteil noch mit dem aktuellen Schwellenwert abgeschlossen werden kann. Andernfalls kann dann der in Fig. 7 gezeigte Teil des Programms als beendet betrachtet werden (N). Dieser Schritt kann als fakultativ angesehen werden, weil er für den Parser-Prozeß nicht wesentlich ist, sondern nur eine beschleunigende Wirkung bei der Erzielung des Endresultats hat. Im nächsten Schritt 78 wird dieser Bestandteil in den Repräsentationsspeicher aufgenommen.
- Eine detaillierte Beschreibung des Teils 69 des Programms erfolgt nunmehr anhand des Flußdiagramms in Fig. 8.
- Da dieser Teil des Programms viele Ahnlichkeiten mit den Programmschritten 71 bis 78 hat, wird darauf bei einigen der Programmschritte Bezug genommen.
- Im nächsten Schritt 80 wird der Wahrscheinlichkeitsfaktor des kopierten Bestandteils angepaßt, indem dieser Wahrscheinlichkeitsfaktor mit dem Wahrscheinlichkeitsfaktor des Bestandteils korrigiert wird, der durch den Stammbestandteil dominiert wird (Mitglieds-Bestandteil), d.h., durch Multiplikation der beiden Wahrscheinlichkeitsfaktoren. Zur Bestimmung des neuen Wertes des Wahrschinlichkeitsfaktors ist es auch möglich, eine andere geeignete Funktion f (x,y) der beiden Wahrscheinlichkeitsfaktoren x und y zu verwenden.
- In Schritt 81 wird das Funktionsetikett in das Stapelfeld des Kopie-Bestandteils aufgenommen, wie in Verbindung mit Schritt 69 und den später beschriebenen Schritten 99 und 104 erwähnt wird.
- In Schritt 82 wird dann ein Kombinationspaar aus, nacheinander, dem Funktionsetikett und dem dominierten Bestandteil zu dem Mitgliederfeld des Kopie-Bestandteils hinzugefügt.
- In Schritt 83 wird eine Merkmalsliste in dem vierten Tabellenspeicher durchgegangen (siehe Tabelle D), in Verbindung mit der Kategoriebezeichnung des Stammbestandteils und dem Funktionsetikett des von diesem Bestandteil dominierten Mitglieds-Bestandteils. All die Merkmale, die sowohl in dieser als auch in der Merkmalsliste des in Schritt 79 kopierten Bestandteils, aber nicht in der Merkmalsliste des Mltglieds-Bestandteils auftreten, werden aus dem Merkmalsfeld des kopierten Bestandteils entfernt. Außerdem werden all die Merkmale, die in der zweiten Merkmalsliste aus der Tabelle vorhanden sind, soweit sie nicht bereits in der Merkmalsliste des kopierten Bestandteils vorhanden sind, zu der Merkmalsliste des kopierten Bestandteils hinzugefügt. Dieser Schritt ist vergleichbar mit Schritt 74.
- In Schritt 84 wird ein Programm durchgeführt, wie es bereits in Verbindung mit Schritt 75 beschrieben wurde.
- Die folgenden Schritte 85, 86 und 87, die auf den kopierten Bestandteil anzuwenden sind, sind vergleichbar mit den Schritten 76, 77 und 78, mit der Maßgabe, daß es hier um einen Bestandteil und nicht um ein Wort geht.
- Eine detaillierte Beschreibung des Programmteils 37, der sich auf den Abschluß der aktuellen Bestandteilsstruktur bezieht, wird nunmehr anhand des Flußdiagramms in Fig. 9 gegeben.
- In Schritt 88 wird die aktuelle Bestandteilsstruktur, die im vorangehenden Schritt 36 aus dem Zwischenspeicher (siehe Fig. 3), aus dem Zwischenschaltspeicher (siehe Fig. 4) vom Programmteil 30 (siehe Fig. 5) oder aus den später zu beschreibenden Programmteilen 103 und 108 in Fig. 9 angeboten wird, zum Repräsentationsspeicher hinzugefügt. Da in Schritt 65 eine Bestandteilsstruktur erzeugt worden sein kann, in der das Stapelfeld keine Elemente enthält, ist es nicht zulässig, einen Bestandteil dieser Art abzuschließen. Folglich wird in Schritt 89 gefragt, ob das Stapelfeld leer ist. Wenn die Antwort bejahend ist (J), wird dieser Teil des Programms als beendet angesehen. Im Fall einer negativen Antwort (N) wird dann in Schritt 90 gefragt, ob das Befehlsfeld des aktuellen Bestandteils einen Wert hat. Wenn dies nicht der Fall ist (N), so ist der Bestandteil ein höchster Bestandteil, und der Abschluß ist nicht anwendbar. Im Fall eines höchsten Bestandteils wird der in Fig. 9 gezeigte Programmteil dann als beendet angesehen. Wenn die Antwort in Schritt 90 bejahend ist (J), folgt der Schritt 91, wo ein Kopie-Bestandteil von dem aktuellen Bestandteil gemacht wird. Im nächsten Schritt 92 wird die Kategorie des Kopie-Bestandteils, nachfolgend als Mitglieds-Bestandteil bezeichnet, bestimmt. Dann wird in Schritt 93 die Kategorie des Stammbestandteils bestimmt, anhand des Befehlsfeldes des Mitglieds-Bestandteils. Die zugehörige Grammatikregel (siehe Tabelle G) wird dann in Schritt 94 mit Hilfe der Daten ausgwählt, die in Schritten 92 und 93 bezüglich der Kategorie des Mitglieds-Bestandteils und seines Stammbestandteils erhalten wurden, anhand eines als siebter Tabellenspeicher bezeichneten Speicherteils.
- Wenn die Kategorie des Mitglieds-Bestandteils eine NP ist und wenn die Kategorie des Stammbestandteils ein "S" ist, so folgt aus der Grammatikregel NP (S,fNP), daß dem Mietglieds-Bestandteil ein Funktionsetikett fNP zugewiesen werden kann. Im Prinzip kann an dieser Stelle in der Tabelle mehr als ein Element auftreten.
- In Schritt 95 wird dann eine Filterprozedur ausgeführt, bei der Bedingungen hinsichtlich der Elemente im Stapelfeld geprüft werden. Die Prüfkriterien sind im dritten Tabellenspeicher gespeichert, wobei der Test selbst vollständig identisch ist mit demjenigen in Schritt 67 (siehe Tabellen C und K).
- Im nächsten Schritt 96 wird geprüft, ob der Wert in dem Wahrscheinlichkeitsfeld größer oder gleich dem Schwellenwert ist. Natürlich ist es in Schritt 95 möglich, daß der Wert des Wahrscheinlichkeitsfeldes abgesenkt worden ist. Wenn dies nicht der Fall ist (N), so wird der Programmteil 37 als beendet angesehen. Andernfalls (J) folgt Schritt 97, in dem gefragt wird, ob die in Schritt 94 ausgewählte Grammatikregel Funktionsetiketten enthält. Falls nicht (N), ist ein Abschluß des aktuellen Bestandteils nicht möglich, und der Prozeß zum Abschluß des aktuellen Bestandteils sollte als beendet angesehen werden. Wenn die Antwort auf diese Frage jedoch bejahend ist (J), so ist mindestens eine logische Abschlußprozedur möglich. Es sollte jedoch geprüft werden, ob ein oder mehrere Funktionsetiketten in Schritt 94 vorgeschlagen worden sind. Zu diesem Zweck wird im nächsten Schritt 98 gefragt, ob in Schritt 94 genau ein Funktionsetikett vorgeschlagen worden ist. Wenn die Antwort bejahend ist (J), folgt Schritt 99, während bei einer negativen Antwort (N) der Schritt 100 folgt. In dem Programmteil 99 wird für den aktuellen Bestandteil, beispielsweise NP, vorgeschlagen, innerhalb der Bestandteilsstruktur des Stammbestandteils als ein Element mit dem Funktionsetikett, also fNP, zu wirken, wie in der Grammatikregel nach Schritt 94 angegeben wird. Der Stammbestandteil ist im Befehlsfeld des aktuellen Bestandteils angegeben. Der aktuelle Bestandteil mit dem zugehörigen vorgeschlagenen Funktionsetikett wird dann in das Mitgliederfeld des Stammbestandteils aufgenommen, wie bereits im einzelnen in Verbindung mit den Schritten 79 bis 83 erörtert worden ist. In Schritt 99 wird eine Kopie des Stammbestandteils gemacht (wie in Verbindung mit Schritt 79 beschrieben), und das Funktionsetikett (fNP) wird ebenfalls wärend des Schrittes 82 in Verbindung mit dem Mitglied (NP) in das Mitgliederfeld eingeschrieben. In Schritt 101 wird überprüft, ob während des Programmteils 99 ein Element zum Repräsentationsspeicher hinzugefügt worden ist (genau wie in Verbindung mit Schritt 78 erläutert). Im Fall einer negativen Antwort (N) wird dieser Teil des Programms als beendet angesehen. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 101 schreitet das Programm fort mit Schritt 102, wo das letzte hinzugefügte Element aus dem Repräsentationsspeicher aufgerufen, daraus entfernt und dann in Schritt 103 der Prozedur bezüglich des Abschlusses dieses Elements unterzogen wird, wie in der mit Nummer 88 beginnenden Schrittfolge angegeben wird. Die aktuelle Bestandteilsstruktur wird in Schritt 100 kopiert, wonach die Kopie als der aktuelle Bestandteil angesehen wird. Im Programmteil 104 wird vorgeschlagen, daß der aktuelle Bestandteil innerhalb der Bestandteilsstruktur des Stammbestandteils als ein Element mit dem Funktionsetikett wirken soll, das als das erste Element in der Grammatikregel nach Schritt 94 angegeben ist. Der aktuelle Bestandteil mit dem vorgeschlagenen Funktionsetikett wird dann in das Mitgliederfeld des vorgesehenen Stammbestandteils aufgenommen, wie im einzelnen in Verbindung mit Schritten 79 bis 87 beschrieben worden ist. In Schritt 105 wird das erste Element (erstes Funktionselement) aus der Grammatikregel entfernt. Es wird dann in Schritt 106 geprüft, ob die Anzahl von Bestandteilen im Repräsentationsspeicher zugenommen hat, was im Programmteil 104 geschehen sein könnte.
- Im Fall einer negativen Antwort (N) auf diese Frage kehrt das Programm direkt zu Schritt 98 zurück, um den Abschlußprozeß des aktuellen Bestandteils anhand der korrigierten Grammatikregel vorzunehmen. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 106 wird im nächsten Schritt 107 die zuletzt hinzugefügte Bestandteilsstruktur aus dem Repräsentationsspeicher aufgerufen und daraus entfernt und als der aktuelle Bestandtel angesehen, wonach der nächste Schritt 108 des Abschlußprogramms Anwendung findet, wie durch die mit der Nummer 88 beginnende Schrittfolge angegeben wird. Nach dem Schritt 108 kehrt das Programm zu Schritt 98 zurück.
- Da während des vorausgehenden Programms provisorische Etiketten zugewiesen sein können, werden diese provisorischen Etiketten im Anschluß an den aktuellen Parser-Prozeß im nächsten Teil des Programms durch endgültige Etiketten ersetzt. So werden für die hier verwendete Beispielsgrammatik die Etiketten fNP in all den im Repräsentationsspeicher gespeicherten Bestandteilen soweit möglich durch die endgültigen Etiketten Subjekt, Objekt, indirektes Objekt und Prädikat ersetzt, die jeweils mit den folgenden Abkürzungen verwendet werden: Subj., Obj., Indobj., Pred.
- Zu diesem Zweck wird in Schritt 109 der Zählerstand des m*-Zählers, der eine Verweisung auf die laufende Nummer eines Bestandteils liefert, auf "0" zurückgesetzt, wonach in Schritt 110 der Zählerstand dieses Zählers um "1" erhöht wird.
- In Schritt 111 wird geprüft, ob der Zählerstand des m*-Zählers bereits den Maximalwert (m*max) überschritten hat, der der Anzahl der Bestandteile entspricht. Im Fall einer bejahenden Antwort (J) wird dieser Teil des Programms als beendet angesehen. Im Fall einer negativen Antwort (N) auf die Frage in Schritt 111 wird dann im nächsten Schritt 112 gefragt, ob das Befehlsfeld der m*-ten Bestandteilsstruktur Information enthält. Wenn diese Frage bejahend beantwortet wird (J), handelt es sich nicht um einen höchsten Bestandteil, und deshalb ist es nicht notwendig, endgültige Etiketten zuzuweisen.
- Wenn die Frage negativ beantwortet wird (N), folgt die Programmphase 113, die sich auf das Ersetzen der provisorischen Funktionsetiketten durch endgültige Etiketten bezieht, wonach das Programm zu Schritt 110 zurückkehrt. Eine detaillierte Erläuterung der Programmphase 113 folgt nunmehr unter Bezugnahme auf Fig. 11.
- In Schritt 114 wird ein n-Zähler, dessen Zählerstand sich auf die laufende Nummer des Mitgliederpaares im Mitgliederfeld des aktuellen Bestandteils bezieht, auf "0" zurückgestellt. In Schritt 115 wird der Zählerstand dieses Zählers dann um "1" erhöht.
- Im nächsten Schritt 116 wird gefragt, ob der Zählerstand des n-Zählers schon den Maximalwert (nmax) überschritten hat, der der Anzahl von Mitgliederpaaren in diesem Mitgliederfeld entspricht. Wenn dies der Fall ist (J), wird der Programmteil 113 als beendet angesehen, und das Programm kehrt zu Schritt 110 zurück. Im Fall einer negativen Antwort (N) in Schritt 116 wird im nächsten Schritt 117 das zweite Element des durch den Zählerstand des n-Zählers anzugebenden Paares der aktuellen Bestandteile bestimmt und als der aktuelle Bestandteil angesehen. Im nächsten Schritt 118 wird gefragt, ob das als aktueller Bestandteil angesehene Element wirklich ein Bestandteil und kein Wort ist. Wenn dies nicht der Fall ist (N), kehrt das Programm zu Schritt 115 zurück. Wenn es der Fall ist (J), so wird der aktuelle Bestandteil hinsichtlich seiner Struktur überprüft und damit hinsichtlich des Inhalts des Stapelfeldes des aktuellen Bestandteils, d.h., des in Schritt 117 angegebenen Bestandteils. Dies impliziert, daß dieselbe Prozedur wie in Verbindung mit den Schritten 114, 115, 116, 117 und 118 beschrieben, nun erneut innerhalb des Programmteils 119 mit den Schritten 120, 121, 122, 123 und 124 ausgeführt werden muß, jedoch nun für die Mitgliederpaare des Elements, das als aktueller Bestandteil angesehen wird. Die laufende Nummer des Mitgliederpaares ist hier mit n* bezeichnet. Wenn eines der Mitgliederpaare ein zweites Element hat, das kein Wort, sondern ein Bestandteil ist (wie es beispielsweise bei Relativsätzen der Fall sein kann), so sollte der nächste Schritt 125 auch durch einen Programmteil ersetzt werden, wie er mit dem Bezugszeichen 119 angegeben ist. In dieser Beschreibung wird die Situation untersucht, in der das zweite Element für alle Mitgliederpaare in Schritt 118 als ein Wort angesehen wird. Die Folge dieser Annahme ist, daß Schritt 119 im Augenblick ausgelassen werden kann und das Programm zu Schritt 126 geht, wo gefragt wird, ob eines der Elemente des Stapelfeldes des in Schritt 118 ausgewählten Bestandteils, d.h., das zweite Element des n-ten Paares, ein provisorisches Etikett ist. Wenn dies nicht der Fall ist (N), kehrt das Programm zu Schritt 115 zurück. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 126 folgt dann in Schritt 127 ein Programmteil, in dem das provisorische Funktionsetikett durch ein endgültiges Funktionsetikett ersetzt wird. Unter diesen Bedingungen wird der Inhalt des Stapelfeldes der m*-ten Bestandteilsstruktur untersucht, und dieser Inhalt wird mit bestimmten Grammatikregeln verglichen, die in einem als achter Tabellenspeicher bezeichneten Speicherteil abgelegt sind. Eine Regel dieser Art könnte die folgende sein: ((fNP-Vfin-main, Smod, fNP, Endmark) (Subj., Obj.), was bedeutet, daß das erste fNP durch ein Etikett "Subjekt" und das zweite fNP durch ein Etikett "Objekt" ersetzt wird (siehe Tabelle H). Wenn mehrere Lösungen für einen bestimmten Dateninhalt des Stapelfeldes auftreten, führt dies zu einer entsprechenden Anzahl von höchsten Bestandteilen, die alle in den Repräsentationsspeicher eingeschrieben werden. Dies geschieht durch Kopieren der aktuellen Struktur mit den provisorischen Funktionsetiketten.
- Zunächst werden die provisorischen Funktionsetiketten im Mitgliederfeld jedes höchsten Bestandteils entsprechend ersetzt.
- Dann wird in Schritt 128 ein Filterprozeß anhand eines Speicherteils ausgeführt, der als neunter Tabellenspeicher bezeichnet wird (siehe Tabelle I), in welchem überprüft wird, ob die Umwandlung der provisorischen Funktionsetiketten in endgültige Funktionsetiketten gemäß der Grammatikregel dieses Programmteils im Hinblick auf zwingende Entsprechungen gewisser Elemente im Merkmalsfeld im Fall gewisser verknüpfter Bestandteile zulässig ist. Insbesondere gibt es eine Verknüpfung dieser Art zwischen den Bestandteils strukturen "Subjekt" und "Verb", bei denen die Deklinationsangabe konsistent sein sollte. Tabelle I gibt die hierfür vorgesehenen Grammatikregeln, die angeordnet sind durch Kategorieangabe des untersuchten Bestandteils. Jede Grammatikregel enthält auch eine Liste von Elementen und eine Liste von Merkmalen. Das Merkmalsfeld wird für jede Struktur (Bestandteil oder Wort) aufgerufen, die einem der in der Liste auftretenden Elemente entspricht. Die Schnittmenge all dieser Merkmalsfelder miteinander und mit der gefundenen Merkmalsliste darf nicht leer sein.
- Beispielsweise in dem Satz "Hij lopen (englisch "He walk") (deutsch: "Er laufen") liefert die Schnittmenge der Merkmale des "Subjekts" mit der gefundenen Merkmalsliste "sing 3" (dritte Person Singular), wonach die Schnittmenge leer wird, infolge der Einführung der Merkmale des "Verbs". Somit liegt eine ungrammatische Satzkonstruktion vor. Das erhaltene Analyseresultat wird nun weniger wahrscheinlich gemacht durch Absenken des Wertes im Wahrscheinlichkeitsfeld, während das Verletzungsfeld auch einen Verletzungscode erhält.
- Nach dem Filterprozeß kehrt das Programm zu Schritt 115 zurück. Die Schritte 129, 130 und 131 sind dieselben wie die Schritte 126, 127 und 128. Nach dem "syntaxgelenkten Parser" wird nun ein "Parser mit eingebetteter Syntax" erläutert werden, der gemäß der beschriebenen Erfindungsidee arbeitet. Der letztgenannte Parser unterscheidet sich von dem ersten Parser dadurch, daß die mit einem Tabellenspeicher auszuführenden Schritte durch Aktionen ersetzt werden, die gemäß einem Programm ausgeführt werden. Als ein Beispiel werden wir den Programmschritt 75 (Fig. 7) betrachten, wobei Teile des Inhalts der Tabelle E in dem Flußdiagramm von Fig. 12 dargestellt sind.
- In Schritt 12 wird in Schritt 132 gefragt, ob der Bestandteil die Kategorie "S" hat. Wenn dies der Fall ist (J), folgt der Programmteil 133, wonach der Programmschritt 75 als abgeschlossen angesehen wird. Falls nicht (N), folgt ein Schritt 134, wo gefragt wird, ob der Bestandteil den Typ Srel hat. Wenn dies der Fall ist (J), folgt ein hierauf zielendes Suchprogramm 135. Wenn es nicht der Fall ist (N), folgt Schritt 136, wo die mögliche Verarbeitungsphase in Verbindung mit dem Bestandteil Scomp beginnt, mit möglicher Verwendung des Schrittes 137.
- Der folgende Programmteil 138, der sich auf einen NP-Bestandteil mit dem zugehörigen Suchprogramm bezieht, wird nun im einzelnen erläutert. In Schritt 138 wird gefragt, ob der Bestandteil eine NP ist. Wenn dies der Fall ist (J), folgt Programmschritt 139, wo gefragt wird, ob das Funktionsetikett "head" zweimal aufeinanderfolgt. Wenn dies der Fall ist (J), so folgt Programmschritt 152, wo der Wert des Wahrscheinlichkeitsfeldes um einen bestimmten Korrekturfaktor verringert wird, wonach das Programm zu Schritt 140 fortschreitet. Wenn die Frage in Schritt 139 negativ beantwort wird (N), folgen ein oder mehrere ähnliche Fragen, die hier nicht im einzelnen erläutert werden, die jedoch letztlich im Programmschritt 140 enden. Hier wird gefragt, ob dem Funktionsetikett "head" in dem geprüften Bestandteil das Etikett "det" folgt. Wenn dies der Fall ist (J), so liegt eine fehlerhafte Reihenfolge vor, und im nachfolgenden Schritt 141 wird der Wert des Wahrscheinlichkeitsfeldes um einen bestimmten Faktor korrigiert. Im Fall einer negativen Antwort (N) auf die Frage in Schritt 140 folgt dann Schritt 142 mit der Frage, ob dem Funktionsetikett "head" das Etikett "nmod-a" folgt. Wenn dies der Fall ist (J), so wird in Schritt 143 der Wert des Wahrscheinlichkeitfeldes des geprüften Bestandteils um einen bestimmten Faktor verringert. Im Fall einer negativen Antwort (N) auf die Frage in Schritt 142 wird in einem folgenden Schritt eine ähnliche Frage verarbeitet. Letztlich, und somit auch nach den Schritten 141 und 143, gelangt das Programm zu dem ersten Schritt 144 der nächsten Phase des Prüfprogramms, wo gefragt wird, ob das Etikett "det" nur einmal in dem Bestandteil auftritt. Im Fall einer negativen Antwort (N) auf diese Frage wird im nächsten Programmschritt 145 der Wert des Wahrscheinlichkeitsfeldes um einen bestimmten Faktor verringert. Im Fall einer bejahenden Antwort (J) folgt Schritt 146, wo gefragt wird, ob der Bestandteil nur ein Funktionsetikett "head" enthält. Falls nicht (N), so wird in Schritt 147 der Wert des Wahrscheinlichkeitfeldes verringert. Nach den in dieser Phase auszuführenden Programmschritten wird das in Schritt 75 durchlaufene Programm als beendet angesehen. Wenn die Frage in Schritt 138 negativ beantwortet wird (N), so folgt Schritt 148, wo sich die Frage auf einen PP-Bestandteil bezieht. Im Fall einer bejahenden Antwort auf die Frage in Schritt 138 (J) wird ein hierauf bezogenes Prüfprogramm ausgeführt. Ein ähnliches Programm, jedoch für einen AP-Bestandteil, findet dann in den Schritten 150 und 151 statt, wonach das Programm gemäß Fig. 2, äquivalent zu Schritt 75, als beendet angesehen wird.
- Eine ähnliche programmierte Behandlung ist auch für die anderen Tabellen des "syntaxgelenkten Parsers" möglich.
- In den Programmteilen, die sich auf die Schritte 67, 75, 84, 95 und 128 beziehen, werden Filterprozeduren verwendet, durch die gewisse, aus Grammatikregeln abgeleitete Kriterien verwendet werden, um zu entscheiden, ob der eingegebene Satz grammatisch korrekt ist oder nicht. Wenn dies nicht der Fall ist, erhält der Satz eine Verletzung oder einen Verletzungscode und einen geringeren Wahrscheinlichkeitsfaktor, der im Fall der Auswahl des Satzes in Schritt 44 durch das System beispielsweise auf einen Bildschirm wiedergegeben wird. Der Sysdtembenutzer kann dann den eingegebenen Satz von Hand korrigieren. Ein System, das den eingegebenen Satz analysiert und auch automatisch korrigiert, wird als wünschenswert angesehen. Diese Korrekturfunktion sollte als eine Programmphase 153 nach Schritt 4 ausgeführt werden, falls kein brauchbares Resultat vorliegt. Im nächsten Schritt 154 wird gefragt, ob der ungrammatische Satz genügend korrigiert worden ist, was sich aus dem Wert im Wahrscheinlichkeitsfeld ergibt. Eine negative Antwort (N) auf die Frage in Schritt 154 impliziert, daß der angebotene Satz nicht endgültig korrigiert werden kann. Das Programm kehrt dann zu Schritt 1 zurück, damit der Benutzer eine geänderte Version des aktuellen Satzes eingeben kann. Im Fall einer bejahenden Antwort (J) auf die Frage 154 schreitet das Programm fort zu Schritt 4. Die Grundidee hinter der Programmphase 153 wird nun anhand der Fig. 13, 14 und 15 erläutert. Damit sowohl die ursprüngliche Repräsentation als auch die korrigierte Repräsentation nach der Korrekturaktion verfügbar sind, wird während des Schrittes 155 (Fig. 13) eine Kopie der ausgewählten ursprünglichen Satzrepräsentation im Repräsentationsspeicher gemacht und während der Phase 156 einer Korrekturprozedur unterzogen. Im nachfolgenden Schritt 157 wird eine Anzahl von Feldern des ausgewählten höchsten Bestandteils an die vorgenommene Änderung angepaßt. Dies gilt beispielsweise für die Befehlsfelder der zu diesem höchsten Bestandteil gehörenden Mitglieds-Bestandteile und auch für die davon abhängenden Mitglieds-Bestandteile. Diese Befehlsfelder werden nun mit einer Angabe oder einer Verweisung auf den zugehörigen Stammbestandteil ausgefüllt, wonach das Programm zum Schritt 154 fortschreitet.
- Die Programmphase 156 ist in eine Anzahl von Programmschritten unterteilt, wie in Fig. 14 gezeigt ist.
- Da die Programmphase 156 nicht nur auf den höchsten Bestandteil und die Mitgelids-Bestandteile mit einer fehlerhaften Struktur angewandt werden muß, beginnt das Programm in Schritt 158 mit der Frage, ob der angebotene Bestandteil einen Wahrscheinlichkeitsfaktir kleiner als 1 hat. Im Fall eines Bestandteils mit einer korrekten Struktur ist die Antwort auf diese Frage negativ (N). Das eigentliche Korrekurprogramm wird deshalb nicht ausgeführt, und das Programm schreitet fort zu Schritt 157. Wie später deutlich wird, kann der Schritt 158 auf Schritt 164 folgen, mit dem Ergebnis, daß dem Programm nach Schritt 158 der Schritt 161 folgt. Für einen Bestandteil mit einer fehlerhaften Struktur wird die Frage bejahend beantwortet (J), und das Programm schreitet fort mit Schritt 159, wo das Wahrscheinlichkeitsfeld den Wert 1 hat. Es wäre schließlich falsch, wenn der aktuelle Bestandteil nach der Korrektur dieses Bestandteils selbst oder seiner Mitglieds-Bestandteile einen unkorrigierten Wahrscheinlichkeitsfaktor hätte. Die Korrektur einer Satzstruktur beginnt auf der niedrigsten Ebene in einem Satz, auf der es noch Bestandteile gibt. Damit man in einer Satzstruktur auf diese Ebene heruntergehen kann, wird im nächsten Programmschritt 160 ein Zähler (r-Zähler) auf 0 zurückgesetzt (r = 0), und dann wird im nächsten Schritt 161 der Zählerstand dieses Zählers um 1 erhöht (r = r+1). Im nächsten Schritt 162 wird überprüft, anhand der Bedingung r ≤ rmax, ob der r-Zähler einen Zählerstand hat, der kleiner oder gleich der Anzahl der Mitglieds-Bestandteile in dem aktuellen Bestandteil ist. Wenn dies der Fall ist (J), so wird in Schritt 163 der durch den r-Zähler bestimmte Bestandteil aus dem Wortspeicher dem Systems aufgerufen, und in Schritt 164 wird gefragt, ob dieser Bestandteil wirklich ein Satzbestandteil ist (und somit kein Wortbestandteil). Wenn diese Frage bejahend beantwortet wird (J), so muß noch eine niedrigere Ebene in der Satzstruktur durchsucht werden, und das Programm geht weiter zu Schritt 165. Dieser Schritt impliziert deshalb, daß das Korrekturprogramm von Schritt 158 für diesen Satzbestandteil als aktuellen Bestandteil erneut läuft. Wenn jedoch der Bestandteil unter die Kategorie "Wort" fällt und somit die Frage in Schritt 164 negativ beantwortet wird (N), kehrt das Programm zu Schritt 161 zurück.
- Wenn die Frage in Schritt 162 negativ beantwortet wird (N), so hat der aktuelle Bestandteil eine Bestandteilsstruktur, in der nur Wörter als Mitgliedeselemente auftreten. Während des folgenden Schrittes 166 wird im Fall des aktuellen Bestandteils überprüft, ob das zugehörige Verletzungsfeld ein oder mehrere Verletzungen enthält. Wenn dies nicht der Fall ist (N), ist der Korrekturprozeß für diesen Bestandteil beendet, und das Programm schreitet fort zu Schritt 173. Wenn jedoch die Frage in Schritt 166 bejahend beantwortet wird (J), so folgt Schritt 167, wo die Werte des Wahrscheinlichkeitsfeldes, des Merkmalsfeldes und des Verletzungsfeldes des aktuellen Bestandteils an die Änderungen angepaßt werden, die bereits während der Korrekturphase stattgefunden haben. Dies ist keineswegs imaginär, weil Schritt 165 die komplette Korrekturphase nach Fig. 14 enthält, und die tatsächliche Korrektur der Satzstruktur präzise im Schritt 172 stattfindet. Da die Programmschritte 67, 75, 84, 95 und 128 zu einer Anzahl (l) von Typen von Verletzungen in der Form von Verletzungscodes führen und eine für den zugehörigen Fehler charakteristische Korrekturfunktion zu jeder Art von Verletzung gehört, wird der aktuelle Bestandteil nach möglichen Verletzungen oder Verletzungscodes im Verletzungsfeld durchsucht.
- In Schritt 168 wird ein t-Zähler, dessen Zählerstand einer bestimmten laufenden Nummer in einer möglichen Folge von Verletzungscodes im Verletzungsfeld entspricht, zurückgesetzt (t = 0). In Schritt 169 wird der Zählerstand des t-Zählers dann erhöht (t = t+1), und in Schritt 170 wird gefragt, ob der Zählerstand des t-Zählers höher ist als die Anzahl, die die Anzahl von Verletzungscodes (tmax) im Verletzungsfeld angibt (t > tmax). Wenn dies nicht der Fall ist (N), so wird in Schritt 171 der dem Zählerstand des t-Zählers entsprechende Verletzungscode aus dem Verletzungsfeld aufgerufen, und im folgenden Schritt 172 wird die anwendbare Korrekturfunktion aufgerufen, so daß der Verletzungscode auf den aktuellen Bestandteil angewandt wird. Schritt 172 wird im einzelnen anhand der Fig. 16 erläutert werden. Das Programm geht dann weiter zu Schritt 169. Wenn andererseits die Frage in Schritt 170 bejahend beantwortet wird (J), so daß alle zu diesem Bestandteil gehörenden Verletzungscodes behandelt worden sind, schreitet das Programm fort zu Schritt 173, wo ein zu dem Programm in Schritt 167 identisches Programm ausgeführt wird. Nach dem Durchlauf des Programmschritts 173 kehrt das Programm - zumindest wenn die Korrekturfunktion (Fig. 14) ein Teil des Schrittes 165 ist - zu diesem Schritt zurück und fährt dann mit Schritt 161 fort. Wenn jedoch die Korrekturfunktion (Fig. 14) nicht als Teil des Schrittes 165 ausgeführt wird, fährt das Programm nach dem Schritt 173 mit Schritt 157 fort.
- Wenn die Frage in Schritt 158 negativ beantwortet wird (N), so kehrt das Programm zu diesem Schritt zurück, wenn die Korrekturfunktion nach Fig. 14 Teil des Schrittes 165 ist. Andernfalls fährt das Programm mit Schritt 157 fort.
- Die Schritte 167 und 173 erfordern weitere Erläuterungen, die anhand von Fig. 15 gegeben werden. Die Funktion dieser Schritte bezieht sich auf die Anpassung des Wahrscheinlichkeitfelds, des Verletzungsfeldes und des Merkmalsfeldes des aktuellen Bestandteils an die geschaffene Situation. Hier wird von den im Zusammenhang mit den Programmschritten 67, 74 und 75 beschriebenen Funktionen Gebrauch gemacht. Die Anpassung dieser Felder beginnt mit der Zuweisung eines Anfangswertes zu diesen Feldern. So erhält in Schritt 174 das Wahrscheinlichkeitsfeld den Wert "1", das Verletzungsfeld erhält in Schritt 175 den Wert "NIL", und das Merkmalsfeld erhält in Schritt 176 die vollständige Liste möglicherweise auftretender Werte, wie sie in Tabelle A in der Spalte des aktuellen Bestandteils angegeben ist. Diese Felder können Änderungen unterliegen, sicherlich soweit es das Merkmalsfeld betrifft.
- Die Anpassung dieser Felder an die Mitgliedselemente beginnt mit Schritt 177, wo eine Zähleinheit (u-Zähler), deren Zählerstand der laufenden Nummer des Mitgliedeselements innerhalb des aktuellen Bestandteils entspricht, auf 0 zurückgesetzt wird (u = 0). In Schritt 178 wird der Zählerstand des u- Zählers dann erhöht (u = u+1), und in Schritt 179 wird gefragt, ob der Zählerstand des u-Zählers die Anzahl von Mitgliedselementen (umax) innerhalb des aktuellen Bestandteils übersteigt (u > umax). Im Fall einer negativen Antwort (N) auf diese Frage folgt Programmschritt 180, wo der Wert des Wahrscheinlichkeitsfeldes in diesem Augenblick für diesen Bestandteil mit dem Wert des Wahrscheinlichkeitsfeldes des zugehörigen Mitglieds-Bestandteils multipliziert wird. Wenn der Mitglieds-Bestandteil ein Wort ist, so tritt hier der fiktive Wert 1 auf.
- In Schritt 181 wird dann der Wert des Merkmalsfeldes an die zu dem aktuellen Mitgliedselement gehörenden Daten angepaßt. Die Anpassung erfolgt anhand der Tabelle D, auf dieselbe Weise wie in Schritt 74.
- Wenn die Frage in Schritt 179 bejahend beantwortet wird (J), so werden im nächsten Schritt 182 bestimmte Filterfunktionen, wie in Schritt 75 beschrieben, mit Hilfe einer Anzahl von Prüfoperationen an der resultierenden Bestandteilsstruktur ausgeführt. Dies gilt auch für den nächsten Schritt 183, der dem Schritt 67 ähnelt.
- Die Bestandteilsstruktur wird damit vorbereitet, um die notwendigen Korrekturen auszuführen oder um es zu ermöglichen, daß eine korrekte Repräsentation des Bestandteils erhalten wird.
- Eine Anzahl spezifischer Korrekturprozeduren laufen in Programmschritt 172 ab und werden in Übereinstimmung mit einem in Fig. 16 gezeigten Programm ausgeführt. Nach Schritt 171 geht das Programm zu Schritt 184, wo gefragt wird, ob die Verletzung mit der laufenden Nummer t aus dem aktuellen Bestandteil (siehe Schritt 171) einer Verletzung einer bestimmten Qualität entspricht, die mit diesem Schritt gekoppelt ist. Wenn die Frage bejahend beantwortet wird (J), folgt Schritt 185, wobei die in Schritt 184 spezifizierte Korrektur an dem aktuellen Bestandteil ausgeführt wird. Schritt 184 kann somit die Funktion haben, einen Bestandteil zu korrigieren, bei dem eine falsche Reihenfolge von Mitgliedselementen festgestellt worden ist. Eine Korrektur dieser Art wird anhand von Fig. 17 erläutert. Nach Schritt 185 schreitet das Programm fort zu Schritt 169. Im Fall einer negativen Antwort (N) auf die Frage in Schritt 184 folgt dann Schritt 186, wo gefragt wird, ob das Verletzungselement mit der laufenden Nummer t einem bestimmten Typ von Verletzungselement entspricht, der mit diesem Schritt gekoppelt ist. Wenn diese Frage bejahend beantwortet wird (J), folgt dann Schritt 187, in dem eine andere Art von Korrektur an dem Bestandteil ausgeführt wird, z.B. Ausführung einer bestimmten Aktion in einem Bestandteil infolge einer falschen Anzahl von Funktionsetiketten. Diese Fehlerkorrektur wird anhand von Fig. 18 erläutert. Nach Schritt 187 schreitet das Programm mit Schritt 169 fort.
- Auf die angegebene Weise wird überprüft, welcher Korrekturschritt zu einer bestimmten Verletzung gehört und auszuführen ist. Neben den Korrekturschritten, die anhand von Fig. 17 und 18 erläutert werden, werden andere in Fig. 16 berücksichtigte Korrekturschritte anhand von Fig. 19 bis 25 beschrieben. In der Korrekturphase gemäß Fig. 17 ist angenommen worden, daß sowohl die Verletzung selbst, in diesem Fall angegeben durch "COA", als auch die auszuwechselnden Elementpaare im Verletzungsfeld des aktuellen Bestandteils angegeben sind. Diese Korrekturphase beginnt mit Schritt 198 mit der Frage, ob das Verletzungsfeld eine Verletzung des Typs "COA" enthält. Im Fall einer negativen Antwort (N) auf diese Frage geht das Programm zu Schritt 169 (siehe Fig. 14), und im Fall einer bejahenden Antwort (J) geht es zu Schritt 199, wo das auszuwechselnde Elementpaar aus dem Verletzungsfeld in den Arbeitsspeicher übertragen wird. Im nächsten Schritt 200 werden die zugehörigen Elemente im Stapelfeld ausgetauscht, und dies gilt auch für den nächsten Schritt 201 für das Merkmalsfeld. Es muß dann geprüft werden, ob das erhaltene Resultat hinsichtlich der Reihenfolge korrekt ist. Zu diesem Zweck wird in Schritt 202 die betreffende Angabe "COA" aus dem Verletzungsfeld entfernt und im nächsten Schritt 203 wird der in das Wahrscheinlichkeitfeld eingeschriebene Wert durch den Wert "1" ersetzt. In Schritt 204 wird eine Prüfprozedur wie in Schritt 75 ausgeführt, und im nächsten Schritt 205 wird überprüft, ob der Bestandteil die Bedingung für den Abschluß eines Bestandteils erfüllt, genau wie im Fall des Schrittes 67 gezeigt. Als Ergebnis dieser beiden Schritte werden das Wahrscheinlichkeitsfeld und das Verletzungsfeld an die neue Situation angepaßt.
- Nach Schritt 205 kehrt das Programm zu Schritt 198 zurück, wo die Frage im Hinblick auf die neue Situation wiederholt wird. Das erhaltene Resultat wird in jedem Fall an den Repräsentationsspeicher zurückgemeldet. Wenn die Frage in Schritt 186 bejahend beantwortet wird, startet die mit 187 bezeichnete Korrekturphase, deren Programm in Fig. 18 gezeigt ist.
- Diese Korrekturphase behandelt Fehler, die sich auf eine flasche Anzahl von Funktionsetiketten innerhalb eines Satzes oder Satzteils beziehen, wie in Schritt 75 dargestellt. Es wird hierzu angenommen, daß die Verletzung selbst, in diesem Fall mit COB bezeichnet, die zugehörigen Funktionsetiketten, die maximale Anzahl von Malen, daß ein Etikett dieser Art auftreten kann, und in einigen Fällen ein Etikett, das zu diesem Zweck dringend vorhanden sein muß, im Verletzungsfeld des aktuellen Bestandteils angegeben sind. Diese Korrekturphase beginnt mit Schritten 206 und 207, in denen das Verletzungsfeld und das Stapelfeld nacheinander in den Arbeitsspeicher kopiert werden. In Schritt 208 wird die vorgesehene Verletzung dann aus dem Verletzungsfeld aufgerufen. Im nächsten Schritt 209 wird ein bestimmtes Flag (oder ggfs. ein variables Etikett) zu der Information im Arbeitsspeicher hinzugefügt, und es erhält den Wert "NIL". Im nächsten Schritt 210 wird überprüft, ob die Verletzung drei Elemente enthält oder nicht. Hierzu wird angenommen, daß es neben den in Schritt 75 beschriebenen ereignisunabhängigen Verletzungen auch ereignisabhängige Verletzungen gibt. Eine ereignisunabhängige Verletzung bedeutet einfach, daß das Auftreten eines gewissen Etikettes in einem Bestandteil auf ein Maximum begrenzt ist. So gibt (det 1) an, daß ein Bestimmer (determiner) nur einmal in diesem Bestandteil auftreten darf. Wir haben es hier mit einer Verletzung von zwei Elementen zu tun. Eine ereignisabhängige Verletzung bedeutet, daß die Tatsache, daß das Auftreten eines bestimmten Etiketts in dem Bestandteil auf ein Maximum begrenzt ist, nur für einen bestimmten Fall (Ereignis) gilt. So bedeutet die Verletzung (Vfin intr.,fNP, 1), daß bei Vorhandensein einer intransitiven Verbalform in den Satz der aktuelle Bestandteil nur eine fNP enthalten darf. Damit ist es dem System möglich, Fehler zu erkennen, wie etwa "Hij loopt de stad" (englisch: "he walks the town") (deutsch: "Er geht die Stadt"), wonach der Benutzer den Satz korrigieren kann durch Einfügen einer Präposition (in, durch) in die letzte NP korrigieren kann. Dies ist ein Fall einer dreielementigen Verletzung.
- In Schritt 210 wird gefragt, ob hier eine dreielementige Verletzung vorliegt. Wenn diese Frage negativ beantwortet wird (N), geht das Programm zu Schritt 211. Wenn dagegen die Frage bejahend beantwortet wird (J), folgt Schritt 212, wo gefragt wird, ob das Etikett (das dritte Element), das das Ereignis angibt, noch im Stapelfeld vorhanden ist oder schon früher daraus entfernt worden ist. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 212 geht das Programm zu Schritt 214, um zu überprüfen, ob eine Verletzungskorrektur stattfinden muß. In Schritt 211 und in Schritt 214 wird gefragt, ob mehr als die zulässige Anzahl von Funktionsetiketten der vorgesehenen Art auftritt. Wenn dies nicht der Fall ist (N), geht das Programm zu Schritt 213, wo das Flag (oder Etikett), das in Schritt 209 eingeführt wurde, den Wert "TRUE" (WAHR) erhält (und dies bedeutet, daß die Verletzung nicht mehr zutrifft). Selbst im Fall einer verneinenden Antwort (N) in Schritt 212 trifft die Verletzung nicht mehr zu, und das Programm schreitet fort zu Schritt 213. Wenn jedoch die Frage in Schritt 211 oder 214 bejahend beantwortet wird (J), geht das Programm zu Schritt 215 bzw. zu Schritt 216, wo das in Schritt 209 eingeführte Flag oder Etikett den Wert "NIL" errhält.
- In Schritt 217, der auf die Schritte 215, 213 und 216 folgt, wird gefragt, ob das Flag (oder Etikett) den Wert "TRUE" hat. Wenn dies der Fall ist (J), so ist dies nicht mehr ein Fall einer ursprünglichen Verletzung, und in Schritt 218 wird die Verletzung (COB) aus dem Verletzungsfeld entfernt, und im nächsten Schritt 219 wird der verbleibende Teil der Verletzung entfernt. Dann folgt Schritt 169. Wenn in Schritt 217 eine negative Antwort (N) erhalten wird und somit zu viele Funktionsetiketten desselben vorgesehenen Typs vorhanden sind, so wird in Schritt 212 das überschüssige Elementpaar aus dem Mitgliederfeld entfernt, und in Schritt 222 wird das entsprechende Element aus dem Stapelfeld entfernt. Es kann in diesem Zusammenhang als eine Grundregel angesehen werden, daß das letzte Element (-paar) stets den überschüssigen Teil darstellt. Ein gezielteres Entfernen des überschüssigen Elements könnte auch auf der Grundlage von Überlegungen erzielt werden, wie etwa "mit welchem Nomen stimmt der Artikel überein" oder "welches Nomen stimmt mit der Personalform überein". Nach Schritt 222 kehrt das Programm zu Schritt 210 zurück, um zu überprüfen, ob immer noch zu viele Etiketten des vorgesehenen Funktionstyps vorhanden sind. Wenn die Frage in Schritt 188 bejahend beantwortet wird (J), wird die durch 189 angegebene Korrekturphase benutzt. Das Programm hierfür ist in Fig. 19 gezeigt.
- Diese Korrekturphase behandelt die Fehler, die sich auf eine Verletzung beziehen, die anhand einer Überprüfung erhalten wird, ob es ein oder mehrere fehlerhafte Kombinationen von Merkmalen im Merkmalsfeld gibt. Diese Überprüfung wird anhand der ersten Folge von Kombinationen in Tabelle F in Schritt 75 oder 84 durchgeführt. In dem hier beschriebenen Beispiel war deshalb keines der Elemente aus der durch Tabelle F gegebenen Kombination (neuter, inneuter) im Merkmalsfeld vorhanden. Im Verletzungsfeld wird deshalb die Verletzung (COC), die für diese Fehlerart zu verwenden ist, und die zugehörige Kombination von Merkmalen (neuter, inneuter) im Verletzungsfeld angegeben.
- In Schritt 223 wird die betrachtete Kombination (neuter, inneuter) aus dem Verletzungsfeld aufgerufen und in den Arbeitsspeicher überführt. In Schritt 224 wird aus einer in einem neunten Tabellenspeicher gespeicherten Prioritätstabelle L diejenige Liste von Elementen ausgewählt, die die Elemente des Bestandteils enthält, und die diesen (Funktions-) Elementen eine Prioritätsreihenfolge zuordnet. Diese Prioritätsreihenfolge gibt an, wie die verschiedenen Elemente aneinander angepaßt werden und dadurch korrigiert werden müssen. Im Fall der Wortkombination "de huis" (englisch: "the house") (deutsch: "das Haus") als NP, gibt ein zehnter Tabellenspeicher die Prioritätsreihenfolge (head determiner) (Hauptteil Bestimmer) an, so daß der Artikel an das Substantiv angepaßt werden muß.
- Als vergleichbares Beispiel in der englischen Sprache dient: "this houses".
- Im nächsten Schritt 225 wird eine Hilfsvariable HLP aufgerufen und erhält den Wert der in Schritt 223 kopierten Kombination, im Fall von Niederländisch (neuter, inneuter).
- Im Fall des erwähnten Beispiels in der englischen Sprache ("this houses") ist der Wert der Wortkombination "sing 1", "sing 2", "sing 3", "plu 1", "plu 2", "plu 3".
- In der nächsten Programmphase wird das wichtigste Merkmal in der Variablen HLP anhand der Wichtigkeit der Elemente ausgewählt, wie sie in der Prioritätstabelle L angegeben sind. In dem Beispiel "de huis" (Englisch: "the house") in Schritt 75 bedeutet dies, daß, weil das Wort "huis" das wichtigste Element ist, "neuter" aus der Kombination (neuter, inneuter) verbleibt, und die anderen zu diesem Bestandteil gehörenden Elemente entsprechend angepaßt werden müssen. Im Fall des obigen Beispiels aus der englischen Sprache ("this houses") bleibt das Element "plu 3" als das wichtigste aus der betreffenden Kombination übrig, und die anderen mit diesem Bestandteil zusammengehörigen Elemente müssen entsprechend angepaßt werden. Folglich wird in Schritt 226 eine Zähleinheit (v-Zähler), deren Zählerstand der laufenden Nummer eines Elements in der in Schritt 224 aus der Prioritätstabelle L ausgewählten Liste entspricht, zurückgesetzt (v = 0). In Schritt 227 wird der Zählerstand des v-Zählers dann erhöht (v = v+1), wonach in Schritt 228 gefragt wird, ob der Zählerstand des v-Zählers die Anzahl (vmax) von Elementen der ausgwählten Liste in der Prioritätstabelle L überschritten hat. Wenn die Frage bejahend beantwortet wird (J), folgt Schritt 229. Im Fall einer verneinenden Antwort folgt Schritt 230, in dem das durch den Zählerstand des v-Zählers bestimmte Element in der Liste der Prioritätstabelle ausgewählt wird. In Schritt 231 wird eine Zähleinheit (w-Zähler) deren Zählerstand einer bestimmten laufenden Nummer in der Folge von Elementen im aktuellen Bestandteil entspricht, dann auf die Anfangsposition zurückgesetzt (w = 0). Im nächsten Schritt 232 wird der Zählerstand dieses Zählers erhöht (w = w+1), wonach in Schritt 233 geprüft wird, ob der Zählerstand des w- Zählers die Anzahl (wmax) von Elementen des Bestandteils überschritten hat. Wenn diese Frage bejahend beantwortet wird (J), kehrt das Programm zu Schritt 227 zurück. Im Fall einer verneinenden Antwort auf diese Frage (N) wird im nächsten Schritt 234 das Element, dessen laufende Nummer dem Zählerstand des w-Zählers entspricht, aus dem Stapelfeld ausgewahlt.
- Der folgende Schritt 235 sollte je nach der ausgwählten Kerngrammatik entweder in das Programm einbezogen werden oder ausgelassen werden. Im Fall einer Kerngrammatik, in der die Kategorie eines Bestandteils im einzelnen anhand bestimmter zugehöriger Merkmale beschrieben wird, können bestimmten Verletzungen zwingende Richtlinien zugeordnet werden. Wenn beispielsweise die Kategorieangabe "neuter" für "house" in dem Bestandteil "the house" zu NP-neuter ergänzt wird, erzeugt dies die zwingende Bestimmung, daß der gesamte Bestandteil in der Form "neuter" geschrieben werden muß. Mit anderen Worten: es ist nicht die kollidierende Kombination (neuter, inneuter), die in das Verletzungsfeld geschrieben wird, sondern die Bestimmung "neuter". Im Fall des englischen Beispiels "this houses" wird die Kategorie "plu 3" ergänzt zu "NP-plu 3". Dies erzeugt die zwingende Bestimmung, daß der gesamte Bestandteil in der Form "neuter" geschrieben werden muß. Wenn die Verletzung festgestellt wird, so wird die Bestimmung "plu 3" in das Verletzungsfeld geschrieben. In diesem Fall wird in Schritt 235 gefragt, ob die im Verletzungsfeld enthaltene Liste nur ein Element enthält, d.h., die bestimmung. Wenn dies der Fall ist (J), folgt Schritt 229, in dem als ein Prüfschritt auch gefragt wird, ob die Variable "HLP" ein Element enthält. Wenn "HLP" nicht ein Element enthält (N), beendet dies das Programm von Fig. 19, und das Programm geht weiter zu Schritt 169.
- Wenn andererseits die Frage in Schritt 229 bejahend beantwortet wird, so folgt Schritt 236. Wenn die Frage in Schritt 235 verneint wird (N), folgt Schritt 237.
- Wenn Verletzungen immer anhand von Kombinationen von Merkmalen erzeugt werden, z.B. aus Tabelle F, kann Schritt 235 ausgelassen werden, und Schritt 237 folgt direkt auf Schritt 234. In Schritt 237 wird gefragt, ob das Element (Funktionsetikett), aus der Prioritätsliste nach Tabelle L, das durch den Zählerstand des v-Zählers angegeben ist (siehe Schritt 226), gleich dem Funktionsetikett aus dem aktuellen Bestandteil ist, das durch den Zählerstand des w-Zählers bestimmt ist (siehe Zähler 232). Wenn dies nicht der Fall ist (N), kehrt das Programm zu Schritt 232 zurück. Wenn die Frage in Schritt 237 bejahend beantwortet wird (J), so wird im nächsten Schritt 238 der gemeinsame Teil der zu dem Element aus dem Merkmalsfeld gehörenden Liste von Merkmale, angegeben durch den Zählerstand des w-Zählers (siehe Schritt 232), und der in Schritt 225 aus dem Verletzungsfeld kopierten Liste bestimmt und als Ersetzungsfeld der Variablen "HLP" zugewiesen. Im vorliegenden Fall wird der Wert (neuter, inneuter) für die Variable HLP ersetzt durch "neuter", da in Schritt 225 die aus der Prioritätstabelle L ausgewählte Liste eine Verweisung auf "head" ergab und deshalb auf "house" mit dem Merkmal "neuter".
- Im Fall des erwähnten Beispiels aus der englischen Sprache wird der Wert ("sing 1", "sing 2", "sing 3", "plu 1", "plu 2", "plu 3") für die Variable HLP ersetzt durch "plu 3", weil in Schritt 225 die aus der Prioritätstabelle L ausgewählte Liste eine Verweisung auf "head" ergab und deshalb auf "houses", mit dem Merkmal "plu 3".
- Im nächsten Schritt 239 wird gefragt, ob die Variable HLP in Schritt 238 einen wirklichen Wert erhalten hat und nicht beispielsweise leer ist. Wenn diese Frage verneint wird (N), so folgt Schritt 240. Da in diesem Fall die Variable HLP keinerlei Vorschlag machen kann, wodurch die Korrektur des aktuellen Bestandteils bewirkt werden sollte, wird der Variablen HLP nichts desto weniger ein Wert für den weiteren Fortgang des Programms zugewiesen, und dies ist das erste Element aus der Kombination, die in Schritt 243 oder 225 erhalten wurde. Das Programm geht dann zu Schritt 236.
- Wenn die Frage in Schritt 239 bejaht wird (J), so folgt Schritt 241 mit der Frage, ob der Wert der Variablen HLP, wie in Schritt 238 bestimmt, mehrere Elemente enthält. Wenn dies nicht der Fall ist (N), so folgt Schritt 242, wo das erste Element aus der in Schritt 238 bestimmten Kombination der Variablen "HLP" als ein neuer Wert zugewiesen wird. Das Programm geht weiter zu Schritt 236. Wenn die Frage in Schritt 241 bejaht wird (J), so wird im nächsten Schritt 243 die in Schritt 223 aus dem Verletzungsfeld aufgerufene Liste durch den Wert der Variablen HLP ersetzt, wie er in Schritt 238 erhalten wurde. Das Programm schreitet dann fort zu Schritt 232.
- In Schritt 236 wird eine Funktion LHF aufgerufen, die dazu dient, die Struktur des aktuellen Bestandteils an diejenige des Merkmals anzupassen, das mit Hilfe der Funktion HLP bestimmt wurde (siehe Schritt 240 bzw. 242), in diesem Fall kann und wird der Struktur "neuter" zugewiesen werden. Im erwähnten Beispiel aus der englischen Sprache kann und wird der Struktur das Merkmal "plu 3" zugewiesen werden. Die in Schritt 236 aufzurufende Funktion wird im einzelnen anhand von Fig. 25 erläutert werden. Nach dem Schritt 236 wird in Schritt 244 gefragt, ob das Verletzungsfeld des aktuellen Bestandteils noch eine Verletzung des Typs COC enthält. Im Fall einer bejahenden Antwort (J), geht das Programm zurück zu Schritt 223, und im Fall einer verneinenden Antwort (N) zu Schritt 169 (siehe Fig. 14). In Fig. 19 und auch in den noch zu beschreibenden Figuren 20 und 23 wird die in Schritt 236 erwähnte Funktion LHF aufgerufen und wird anhand von Fig. 25 erläutert werden und beginnt bei Schritt 245 mit der Frage, ob die aktuelle Struktur sich auf ein Wort bezieht. Wenn dies der Fall ist (J), so wird im nächsten Schritt 246 eine andere Form für das aktuelle Wort im lexikalischen Speicher gesucht, welche Form das durch die HP-Funktion bestimmte Merkmal erfüllt. Das Programm geht dann zurück zu dem Teil des Programms, den es verlassen hat.
- Im Fall einer verneinenden Antwort (N) auf die Frage in Schritt 245 wird eine Anzahl von Feldern des Bestandteils in den Anfangszustand gebracht. Dies bedeutet, daß in Schritt 247 das Wahrscheinlichkeitsfeld den Wert "1" hat, in Schritt 248 das Verletzungsfeld den Wert "NIL" hat, und in Schritt 249 das Merkmalsfeld die Merkmale hat, die zu dieser Kategorie gehören, wie in Tabelle A angegeben. Dann werden in Schritt 250 einer als "GRAM" bezeichneten Variablen die Merkmale zugewiesen, die in Tabelle D für die Kategorie des aktuellen Bestandteils und das Funktionsetikett aufgelistet sind.
- Die verschiedenen Elemente (Mitglieder) dieses Bestandteils sollten dann an das durch die Funktion HLP bestimmte Merkmal angepaßt werden, in diesem Fall "neuter". Zu diesem Zweck wird in Schritt 251 eine Zähleinheit (s-Zähler), deren Zählerstand der laufenden Nummer der Mitgliedselemente in diesem Bestandteil entspricht, auf den Anfangswert zurückgesetzt (s = 0), wonach in Schritt 250 der Zählerstand dieses Zählers erhöht wird (s = s+1). In Schritt 253 wird gefragt, ob der Zählerstand des s-Zählers über die Anzahl (smax) der Mitgliedselemente innerhalb dieses Bestandteils hinausgegangen ist. Wenn dies der Fall ist (J), folgt Schritt 254. Wenn die Frage in Schritt 253 verneint wird (N), so folgt Schritt 255, in dem das Mitgliedselement des Bestandteils, das dem Zählerstand des s-Zählers entspricht, aus dem Repräsentationsspeicher aufgerufen und in den Arbeitsspeicher geschrieben wird.
- Im nächsten Schritt 256 wird gefragt, ob das Mitgliedselement in dem Bestandteil, das durch den Zählerstand des s-Zählers bestimmt wird, das durch die Variable HLP bestimmte Merkmal, in diesem Fall "neuter" erhalten kann und es nicht bereits besitzt. So ergibt in dem NP-Bestandteil "de grote, mooie huis" (Englisch: "the large beautiful house") (Deutsch: "das große schöne Haus") der Artikel "de" eine bejahende Antwort, da in Tabelle D das Merkmal neuter" unter die Möglichkeiten im Fall von "NP" und "determiner" fällt. Wenn der NP-Bestandteil "this large beautiful houses" als eine Beispielsphrase der englischen Sprache benutzt wird, ergibt das Pro-Adjektiv "this" eine bejahende Antwort, da in Tabelle D das Merkmal "plu 3" unter die Möglichkeiten im Fall von "NP" und "determiner" fällt.
- Über Schritt 258 und 245 wird das Äquivalent dieses Bestimmers (determiner) mit dem Merkmal "neuter" aufgesucht, und in Schritt 246 führt dies auf das Wort "het". In dem zuletzt genannten Beispiel aus der englischen Sprache führt das Merkmal "plu 3" zu dem Wort "these".
- Für die folgende Kombination "grote, mooie" (Englisch: large, beautiful) mit dem Etikett nmod-A gibt es keine Verweisung auf nmod-A in Tabelle D, so daß die Antwort auf die Frage in Schritt 256 negativ ist. Im nächsten Schritt 257 wird das Merkmalsfeld dieses Bestandteilselements mit Hilfe der Tabelle D angepaßt, wie in Verbindung mit Schritt 74 erläutert wurde. Das Wort "huis" (Englisch: "house") hat bereits das Merkmal "neuter" und folglich schreitet das Programm nach dem Schritt 256 zu Schritt 257 fort. Im Fall des letztgenannten Beispiels aus der englischen Sprache hat das Wort "houses" bereits das Merkmal "plu 3" und folglich schreitet das Programm nach Schritt 256 zu Schritt 257 fort.
- Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 256 folgt Schritt 258, wo die in dieser Figur beschriebene Funktion HLF erneut ausgeführt wird. Das Endergebnis dieser Funktion ist stets in Schritt 246, wo die angepaßte lexikalische Form als das dann gültige Mitgliedselement ausgewählt wird. Wenn das Mitgliedselement eine Wortstruktur hat, dann muß auch das Befehlsfeld ausgefüllt werden. Zu diesem Zweck wird in Schritt 259 eine entsprechende Frage gestellt, und wenn die Antwort bejahend ist (J), wird in Schritt 260 der Zeiger auf den Stammbestandteil in das Befehlsfeld eingetragen. Das Programm geht dann zu Schritt 257. Im Fall einer verneinenden Antwort (N) auf die Frage in Schritt 259 geht das Programm direkt zu Schritt 257.
- Wenn die Frage in Schritt 253 bejahend beantwortet wird (J), sollte überprüft werden, ob noch Verletzungen in Verbindung mit dem geänderten Bestandteil im Verletzungsfeld einzutragen sind. Zu diesem Zweck werden in Schritt 254 und dann in Schritt 261 einige Filteroperationen ausgeführt, die bereits in Schritt 75 bzw. 67 beschrieben worden sind. Das Programm kehrt dann zu der Stelle im Programm zurück, die es verlassen hat, um diese Funktion LHF auszuführen.
- Wenn die Frage in Schritt 190 bejahend beantwortet wird (J), so wird die mit 191 bezeichnete Korrekturphase angewandt, deren Programm in Fig. 20 gezeigt ist.
- Diese Korrekturphase behandelt Fehler, die sich auf unzulässige Merkmalskombinationen beziehen, wie in Schritt 75 oder 84 anhand der Tabelle F festgestellt wurde. Diese Korrekturphase enthält auch einen wichtigen Teil, in dem danach gesucht wird, welches das erforderliche Merkmal sein sollte. Zu diesem Zweck wird angenommen, daß sowohl die Verletzung selbst, d.h. "COD", als auch die zu ersetzenden Merkmale im Verletzungsfeld des aktuellen Bestandteils angegeben sind. Diese Korrekturphase beginnt mit Schritt 262, wo das zweite Element dieser Verletzung aus dem Repräsentationsspeicher in den Arbeitsspeicher übertragen wird. In Schritt 263 wird eine Liste von zulässigen Merkmalskombinationen zu diesem zweiten Element und mit der Kategorie des Bestandteils aus Tabelle F aufgerufen und einer Variablen "FTRLSTS" im Arbeitsspeicher zugewiesen. Im nächsten Schritt 264 wird eine Funktion "FFTC" aufgerufen und liefert anhand der Liste zulässiger Merkmalskombinationen und der im Merkmalsfeld des Bestandteils vorhandenen Merkmale das geforderte Merkmal. Die Funktion "FFTC" wird im einzelnen in Fig. 24 erläutert. In Schritt 265 wird das geforderte Merkmal dann mit Hilfe der Funktion "LHF" (siehe Fig. 25) zu dem aktuellen Bestandteil hinzugefügt. Darin wird ein Wort durch eine andere Form des Wortes ersetzt.
- Die Funktion "FFTC" in Fig. 24 arbeitet mit zwei Argumenten, nämlich der Liste mit zulässigen Merkmalen aus Tabelle F und der Merkmalsliste aus dem Merkmalsfeld, die in den Schritten 266 und 267 im Arbeitsspeicher abgelegt wurden.
- Im nächsten Schritt 268 wird überprüft, ob die Variable "FTRLSTS" die in der Anfangsphase der Ausführung der Funktion "FFTC" noch die vollständige Liste zulässiger Merkmalskombinationen hatte, noch eine solche Kombination übrig hat. Im Fall einer negativen Antwort auf diese Frage (N) wird das Programm nach Fig. 24 ausgeführt und geht zurück zu Fig. 20, um den Schritt 265 auszuführen. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 268 wird im nächsten Schritt 269 gefragt, ob alle Elemente der Merkmalskombination, die in diesem Augenblick als die erste solche Merkmalskombination angesehen wird, mit Ausnahme des letzten Elements in dieser Kombination, auch in der Liste der aktuellen Merkmale gefunden werden (siehe Schritt 267). Im Fall einer negativen Antwort (N) auf diese Frage wird die erste zu dieser Zeit noch in der Liste zulässiger Merkmalskombinationen auftretende Kombination im nächsten Schritt 227 entfernt, und das Programm geht weiter zu Schritt 268. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 269 wird dann im nächsten Schritt 271 das letzte Element aus der untersuchten (ersten) Merkmalskombination als das geforderte Merkmal angegeben.
- Wenn beispielsweise für die Variable "FTRLSTS" nur eine zulässige Merkmalskombination übrig ist, in diesem Fall "neuter indefinite adj.-not-inflected" (siehe Tabelle F), und wenn "neuter" und "indefinite" auch in der Liste der aktuellen Elemente auftreten (Schritt 267), so ist das letzte Element, in diesem Fall "adj-not-inflected" das geforderte Merkmal. Das Programm nach Fig. 24 ist somit beendet und geht weiter zu Schritt 265 in Fig. 20, wonach diese Korrekturphase verlassen wird und das Programm zu Schritt 269 zurückkehrt. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 192 folgt eine als Schritt 193 bezeichnete Korrekturphase, deren Programm in Fig. 21 gezeigt ist. Diese Korrekturphase behandelt Verletzungen, die infolge der Abwesenheit eines wesentlichen Elements, etwa eines Artikels in einigen NPs, in Schritt 67 und/oder 95 erzeugt werden. Die Abschlußphase des unter diesen Bedingungen auftretenden Bestandteils führte zu einer Verringerung des Wahrscheinlichkeitsfaktors mit der Erzeugung einer Verletzung COE. Diese Verletzung und die vorgesehene Kombination von Listensegmenten, die zu dieser Verletzung führen, werden in Schritt 273 aus dem Verletzungsfeld in den Arbeitsspeicher übertragen. Im nächsten Schritt 274 wird überprüft, welches Funktionsetikett in dem Listensegment fehlt. Obgleich im allgemeinen ein Etikett dieses Listesegement ausfüllt, ist es möglich, daß darin mehrere Etiketten auftreten. Zu diesem Zweck wird eine Zähleinheit (p-Zähler), dessen Zählerstand der laufenden Nummer eines Funktionsetiketts in dem zweiten Listensegment entspricht, auf den Anfangswert zurückgesetzt (p = 0). Der p-Zähler wird dann in Schritt 275 erhöht (p = p+1), und in Schritt 276 wird gefragt, ob der Zählerstand des p-Zählers bereits die Anzahl von Funktionsetiketten (pmax) in dem zweiten Listensegment überschritten hat (p > pmax). Wenn dies der Fall ist (J), geht das Programm weiter zu Schritt 269, während andernfalls (N) der Schritt 277 folgt, in dem das p-te Element aus dem zweiten Listensegment ausgewählt wird. Im nächsten Schritt 278 wird überprüft, ob das p-te Element wirklich nicht im Stapelfeld auftritt (zu diesem Zweck werden die Elemente des Stapelfeldes eins nach dem anderen mit dem p-ten Element verglichen, und wenn Nicht-Identität zwischen den verglichenen Elementen bis zu dem ersten Etikett des Stapelfeldes und einschließlich desselben festgestellt wird, fehlt das p-te Element im Stapelfeld). Wenn das Vorhandensein des p-ten Elements in Schritt 278 festgestellt wird (J), folgt Schritt 275, andernfalls (N) folgt Schritt 279.
- Wenn das als Funktionsetikett dienende p-te Element als ein fehlendes Element festgestellt wurde, kann dieses Etikett zum Stapelfeld hinzugefügt werden. Es fehlt jedoch noch eine zugehörige Wortstruktur oder Bestandteilsstruktur. In der Praxis ist dies üblicherweise eine Wortstruktur. Die zugehörige Wortstruktur wird erhalten durch Überprüfung in der Tabelle B, welche Wortkategorie für einen bestimmten Stammbestandteil und das Funktionsetikett des fehlenden Mitgliedselements zulässig ist, und dann durch Auswahl des ersten Wortes, das diese Bedingung erfüllt, im lexikalischen Speicher. Zu diesem Zweck wird in Schritt 279 eine Zähleinheit (g-Zähler), deren Zählerstand der laufenden Nummer einer speziellen Kombination in dem gemäß Tabelle B aufgeteilten Tabellenspeicher entspricht, zunächst auf die Anfangsposition zurückgesetzt (g = 0). In Schritt 280 wird der Zählerstand des g- Zählers dann erhöht (g = g+ 1), und im nächsten Schritt 268 wird überprüft, ob der Zählerstand des g-Zählers über die Anzahl von Grammatikregeln in dem Tabellenspeicher nach Tabelle B hinausgegangen ist. Wenn dies der Fall ist (J), geht das Programm zurück zu Schritt 275, andernfalls (N) folgt Schritt 282, wo überprüft wird, ob die Grammatregel das fehlende Funktionsetikett hat, aus dem sich dann die Wortkategorie ergibt. Wenn zum Beispiel das Funktionsetikett "det" in einer NP fehlt (siehe Schritt 67 und 95), so folgt aus der ersten Grammatikregel "article" (NP(det))", daß eine Wortkategorie "article" in diesem Bestandteil möglich ist.
- Wenn in Schritt 282 die richtige Grammatikregel nicht gefunden wird (N), geht das Programm zurück zu Schritt 280. Andernfalls (J) wird in Schritt 283 die erste in Verbindung mit der gefundenden Wortkategorie auftretende Wortstruktur im lexikalischen Speicher gesucht, und das Stapelfeld und das Mitgliederfeld werden mit dem zugehörigen Funktionsetikett oder mit diesem Etikett und der gefundenden Wortstruktur ausgefüllt.
- In Schritt 284 werden dann in Verbindung mit dem aktuellen Bestandteil das Wahrscheinlichkeitsfeld, das Verletzungsfeld und das Merkmalsfeld an die aktuelle Situation angepaßt, wie in Verbindung mit Schritt 174 und 183 erläutert wurde (siehe Fig. 15). Dann muß in Schritt 285 überprüft werden, ob das neu eingeführte Element sich an der korrekten Stelle befindet, und dies impliziert den Lauf einer Programmphase, wie sie in Verbindung mit Schritten 198 bis 205 beschrieben wurde (siehe Fig. 17), wonach die Korrekturphase für die Verletzung "COE" beendet ist und das Programm zu Schritt 169 springt. Im Fall einer bejahenden Antwort auf die Frage in Schritt 194 (J) wird die mit 195 bezeichnete Korrekturphase ausgeführt, deren Programm in Fig. 22 gezeigt ist.
- Diese Korrekturphase ist nämlich ein Gegenstück zu derjenigen, die sich auf die "COE"-Verletzung bezieht. In der hier zu betrachtenden Korrekturphase ist ein überschüssiges Element vorhanden, und dies wird festgestellt anhand der Tabelle K, wie im Fall des Schrittes 67 und/oder 95. Die Verletzung selbst, in diesem Fall "COF", und die Liste überschüssiger Funktionsetiketten werden in Schritt 286 aus dem Verletzungsfeld in den Arbeitsspeicher übertragen.
- In Schritt 287 wird eine Zähleinheit (q-Zähler), deren Zählerstand der laufenden Nummer eines Elements in der Liste überschüssiger Funktionsetiketten entspricht, auf den Anfangswert zurückgesetzt (q = 0), und in Schritt 288 wird der Zählerstand des q-Zählers erhöht (q = q+1). In Schritt 289 wird überprüft, ob der Zählerstand des q-Zählers nicht schon die Anzahl (qmax) der Elemente im dritten Listensegment der zugehörigen Grammatikregel überschritten hat. Wenn dies nicht der Fall ist (N), so wird während des Schrittes 290 das zugehörige Element aus dem Stapelfeld entfernt und während des Schrittes 291 das zugehörige Elementpaar aus dem Mitgliederfeld entfernt. Das Programm kehrt dann zu Schritt 288 zurück. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 289 werden dann in Schritt 292 das Wahrscheinlichkeitsfeld, das Verletzungsfeld und das Merkmalsfeld an die neue Situation in Verbindung mit dem aktuellen Bestandteil angepaßt, wie in Verbindung mit den Schrittn 174 bis 183 erläutert wurde (siehe Fig. 15). Diese Korrekturphase wird dann verlassen, und das Programm kehrt zu Schritt 169 zurück.
- Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 196 wird die mit 197 bezeichnete Korrekturphase ausgeführt, deren Programm in Fig. 23 gezeigt ist,.
- Diese Korrekturphase behandelt Fehler, die sich auf ein abwesendes Merkmal im Verletzungsfeld beziehen, was anhand der Tabelle I in Schritt 128 festgestellt wird. Als Grundlage hierfür dient eine ziemlich detaillierte Verletzung, die nicht nur die Verletzung "COG" enthält, sondern auch das Funktionsetikett der zu korrigierenden Struktur und das abwesende Merkmal. Für das Beispiel in Schritt 128 war dies: (vfin main, sing 3). In Schritt 293 und 294 werden das Etikett "vfin main" und das fehlende Merkmal "sing 3" erfolgreich aus dem Verletzungsfeld aufgerufen. Das Etikett entspricht einer bestimmten Bestandteilsstruktur oder Wortstruktur, in diesem Fall "lopen" (Englisch: "walk"), im Merkmalsfeld. Diese Struktur wird in Schritt 295 aufgerufen. In Schritt 296 wird dann die Funktion "LHF" ausgeführt, die bereits anhand von Fig. 25 beschrieben worden ist. Schließlich wird in Schritt 246 in dem oben genannten Fall die Struktur "lopen" (Englisch: "walk") durch "loopt" (Englisch: "walks") ersetzt, die das Merkmal "sing 3" erfüllt. Der Bestandteil auf höherer Ebene sollte dann an die eingeführte Änderung angepaßt werden, zu welchem Zweck in Schritt 297 das Verletzungsfeld dieses Bestandteils geleert wird und in Schritt 298 das Wahrscheinlichkeitsfeld den Wert "1" erhält. In Schritten 299 und 300 werden dann einige Prüfoperationen an dem aktuellen Bestandteil ausgeführt, und diese sind bereits erfolgreich in Verbindung mit Schritten 75 bzw. 67 beschrieben worden. Diese Korrekturphase wird dann verlassen und das Programm kehrt zu Schritt 169 zurück.
- Zur Erhellung der obigen Korrekturprozedur für einen falschen Text sind Programmsequenzen zur Korrektur einer Textphrase in niederländisch (Beispiel A) und in englisch (B) dieser Beschreibung hinzugefügt.
- Eine spezielle Anwendung des beschriebenen Parsers und der zugehörigen Korrekturprozedur erhält man durch Ersetzen von Worten in einem Text durch andere Worte. In einem Multi-Autor-System, in dem mehrere Personen jeweils ihren eigenen Textbeitrag zu einem umfangreichen Dokument liefern, kann es infolge der Einzelbeiträge der beteiligten Personen vorkommen, daß der Wortgebrauch in dem Dokument nicht konsistent ist. Um einen konsistenten Wortgebrauch in dem Dokument zu erreichen, sollten gewisse Wörter durch andere ersetzt werden. Der Austausch eines Wortes durch ein anderes kann gewisse Konsequenzen haben. Im Fall eines Beispiels in der niederländischen Sprache erfordert das Ersetzen eines neutralen Nomens durch ein nicht-neutrales Nomen manchmal eine Anpassung des Artikels oder Adjektivs. In der englischen Sprache kann das Ersetzen eines neutralen Nomens durch ein männliches oder weibliches Nomen ebenfalls Auswirkungen auf das Ersetzen der anderen Wörter haben. Dies gilt beispielsweise für das Relativpronomen. Die Anpassung des Satzes ist auch notwendig, wenn ein Singular-Subjekt durch ein Plural-Subjekt ersetzt wird.
- Die Ersetzungsprozedur beginnt mit Schritt 301 (siehe Fig. 26), wo das ersetzende Wort und das zu ersetzende Wort in den Arbeitsspeicher geschrieben werden. In Schritt 302 wird die Wortstruktur für das neue Wort aus dem lexikalischen Speicher aufgerufen und in den Arbeitsspeicher geschrieben.
- In Schritt 303 durchläuft das Programm dann den Text und hält an dem ersten Satz an, in dem das zu ersetzende Wort auftritt. In Schritt 304 wird gefragt, ob bereits ein Analyseresultat für diesen Satz im Speicher gespeichert ist.
- Wenn dies der Fall ist (J), geht das Programm zu Schritt 305, andernfalls (N) zu Schritt 306, wo der Satz analysiert wird, und das Programm geht dann zu Schritt 305. Zuerst wird während einer Ersetzung überprüft, ob eine entsprechende Wortkategorie für beide Wörter gefunden werden kann. Es ist auch möglich, daß es trotz eines Unterschieds in der Wortkategorie Übereinstimmung bei dem Funktionsetikett gibt. So haben die Wortkategorien "noun" und "pronoun substantive" in den in Tabelle B gezeigten Grammtikregeln dieselben Etiketten. Ein "noun" in einer NP mit dem Etikett "head" kann deshalb durch ein "pronoun substantive" ersetzt werden. Ähnliche Möglichkeiten gelten für einen "article" und ein "pronoun adjective". Es kann deshalb überprüft werden, ob die Kombination aus einem Bestandteil und einem Funktionsetikett, wie sie durch den Parser festgestellt wurde, auch in Grammatikregeln zu einer der Wortkategorien der ersetzenden Wortstruktur auftritt. Da das ersetzende Wort für jede auftretende Kategorie untersucht werden muß, wird ein "z-Zähler" in Schritt 305 auf Null zurückgesetzt (z = 0). Der Zählerstand des z-Zählers entspricht der laufenden Nummer der Wortkategorie, wie sie in einer Wortstruktur im lexikalischen Speicher auftritt. In Schritt 307 wird der Zählerstand des z-Zählers erhöht (z = z+1), und in Schritt 308 wird gefragt, ob der Zählerstand des z-Zählers die Anzahl von in Verbindung mit dem ersetzenden Wort auftretenden Kategorien überschritten (z > zmax).
- Falls nicht (N), so wird in Schritt 309 die Menge der zu der durch den Zählerstand des z-Zählers bestimmten Wortkategorie gehörenden Grammatikregeln im Tabellenspeicher mit der Information nach Tabelle B ausgewählt. Innerhalb dieser Menge wird für jede Grammatikregel überprüft, ob dasselbe Etikett innerhalb des vorgesehenen Bestandteils für die aktuelle Wortkategorie möglich ist. Zu diesem Zweck wird in Schritt 310 eine Zähleinheit (h- Zähler) zurückgesetzt (h = 0), und in Schritt 311 wird der Zählerstand dieses Zählers erhöht (h = h+1). In Schritt 312 wird dann überprüft, ob der Zählerstand des h-Zählers größer ist als die Anzahl von Grammatikregeln zu der aktuellen Wortkategorie (h > hmax). Wenn dies der Fall ist (J), geht das Programm zurück zu Schritt 307. Wenn nicht (N), geht das Programm zu Schritt 313. In Schritt 313 wird aus der Menge der Grammatikregeln diejenige Regel ausgewählt, deren laufende Nummer dem Zählerstand des h-Zählers entspricht, und in Schritt 314 wird überprüft, ob der Stammbestandteil und das Funktionsetikett in dieser Grammatikregel denjenigen der zu ersetzenden Wortstruktur genügen. Falls nicht (N), geht das Programm zurück zu Schritt 311. Wenn dies jedoch der Fall ist (J), folgt Schritt 315, in dem überprüft wird, ob die vorgesehene Wortkategorie des ersetzenden Wortes mit derjenigen des zu ersetzenden Wortes übereinstimmt. Wenn dies der Fall ist (J), geht das Programm zu Schritt 316 und das ersetzende Wort mit der Wortkategorie und zugehörigen Merkmalen wird in einen ersten Puffer geschrieben. Wenn die Frage in Schritt 315 verneint wird (N), folgt Schritt 317, wo das ersetzende Wort mit der aktuellen Wortkategorie und den zugehörigen Merkmalen in einen zweiten Puffer geschrieben wird. Nach Schritt 316 oder 317 geht das Programm zurück zu Schritt 307.
- Wenn die Frage in Schritt 308 bejahend beantwortet wird (J), so wird im nächsten Schritt 318 (siehe Fig. 27) gefragt, ob in Schritt 316 kein Resultat in den ersten Puffer geschrieben wurde. Wenn diese Frage bejaht wird (J), folgt Schritt 319, wo gefragt wird, ob in Schritt 316 kein Resultat in den zweiten Puffer geschrieben wurde. Wenn diese Frage bejaht wird (J), kann das zu ersetzende Wort nicht durch das ersetzende Wort an dieser Stelle ersetzt werden, und der Text und das Programm kehren zurück zu Schritt 303. Das zu ersetzende Wort und das ersetzende Wort stimmen nur in der Schreibweise überein, sind jedoch ansonsten verschieden. Etwas dieser Art kann mit Wörter wie "like" in englisch und "regent" in niederländisch auftreten. So kann in einem niederländischen Satz "het regent" (Englisch: "it rains") (Deutsch: "es regnet") das Wort "regent" nicht durch das niederländische Wort "bestuurder" ersetzt werden (das das Äquivalent zu dem englischen Wort "ruler" (Regent) ist). Ein entsprechendes Beispiel in der englischen Sprache liefert der Satz "She is like her mother", in dem das Wort "like" nicht durch "love" ersetzt werden kann.
- Wenn die Frage in Schritt 318 verneint wird, folgt Schritt 320, wo gefragt wird, ob in Schritt 316 genau ein Ergebnis in den ersten Puffer geschrieben wurde. Wenn dies der Fall ist (J), folgt Schritt 321. Wenn es jedoch nicht der Fall ist (N), folgt Schritt 322, wo die Anzahl von Merkmalen jedes Resultats bestimmt wird, die mit der zu ersetzenden Wortstruktur übereinstimmen, wonach in Schritt 323 das Resultat mit der größten Anzahl von Übereimstimmungen ausgewählt wird, und das Programm geht weiter zu Schritt 321.
- Wenn die Frage in Schritt 319 verneint wird, folgt Schritt 324, wo gefragt wird, ob in Schritt 317 genau ein Resultat in den zweiten Puffer geschrieben wurde. Bei einer bejahenden Antwort (J), folgt Schritt 321, während bei einer verneinenden Antwort (N) die Schritte 322 und 323 einer nach dem anderen folgen, wonach das Programm mit Schritt 321 fortfährt.
- In Schritt 321 wird die alte Wortstruktur durch die neue Wortstruktur ersetzt, die durch die Auswahl in den Schritten 322 und 323 erhalten wurde oder nicht. Dabei wird der Zeiger im Befehlsfeld der alten Wortstruktur zugunsten des Befehlsfelds der neuen Wortstruktur übernommen. In Schritt 325 wird dann die Bestandteilsstruktur des Stammbestandteils aus dem Repräsentationsspeicher aufgerufen, und es wird im Mitgliederfeld diejenige Kombination ausgewählt, die einen Zeiger auf die alte Struktur hat.
- Dieser Zeiger wird durch einen ersetzt, der auf die neue Wortstruktur verweist. Das zugehörige Funktionsetikett ändert sich natürlich nicht. Imnächsten Schritt 326 wird für den aufgerufenen Stammbestandteil ein Programmteil durchlaufen, wie er in Verbindung mit Schritten 174 bis 183 beschrieben wurde (siehe Fig. 15), so daß die Merkmale und das Verletzungsfeld an die neue Situation angepaßt werden.
- In Schritt 327 wird dann überprüft, ob es einen Stammbestandteil auf höherer Ebene gibt. Zu diesem Zweck wird überprüft, ob das Befehlsfeld des aktuellen Bestandteils leer ist (NIL). Im Fall einer verneinenden Antwort (N) auf diese Frage folgt Schritt 328, wo der Stammbestandteil aus der höheren Ebene aus dem Repräsentationsspeicher aufgerufen wird, wonach das Programm zu Schritt 326 zurückkehrt, um das zugehörige Programm auf diesen Stammbestandteil anzuwenden. Im Fall einer bejahenden Antwort (J) auf die Frage in Schritt 327 wird dann im nächsten Schritt 329 ein Programm ausgeführt, wie es in Verbindung mit Schritten 158 bis 173 beschrieben wurde (siehe Fig. 14). Auf diese Weise wird die Satzstruktur erforderlichenfalls weiter korrigiert.
- Nachdem einmal klar ist, daß die gesamte Aktion nach Schritt 301 ein Resultat ergeben hat, kann dann im nächsten Schritt 330 die alte Satzstruktur durch die neue ersetzt werden. Das Programm kehrt dann zu Schritt 303 zurück und sucht nach dem nächsten zu ersetzenden Wort. Wenn somit das Wort "apparaat" (Englisch: "apparatus") (Deutsch: "Apparat") im gesamten Text durch "copiers" (Kopierer) ersetzt wird, so wird ein Satz wie etwa "Het apparaat, dat daar staat" (Englisch: "the apparatus, which is over there") (Deutsch: "Der Apparat, der da steht") automatisch ersetzt durch "De copiers, die daar staan" (Englisch: "the copiers which are over there") (Deutsch: "Die Kopierer, die da stehen").
- het minister (English: the minister)
- Die folgenden Programmschritte werden während der Korrekturprozedur für die obige Phrase durchlaufen:
- 155, 156, 158, 159, 161, 162, 163, 164 (dies ist kein Bestandteil, sondern ein Wort mit dem Etikett Endmark (Endmarke)), 161, 162, 163, 164 (dies ist wirklich ein Bestandteil mit dem Etikett fNP), 158, 159, 160, 161, 162, 163, 164 (ein Wort: Head), 161, 162, 163, 164 (ein Wort: Det), 161, 162 (der aktuelle Bestandteil hat nur zwei Mitglieder), 166, 167 ( dieser Schritt führt nicht zu einer Änderung), 168, 169, 170, 171, 172 (die Verletzung COC wird angegeben), 184, 186, 188, 189 (COC-Korrektur wird aufgerufen), 232, (Merkmalsliste ist "neuter inneuter"), 224 (Priorität: "head, det, nmods, nmod-a"), 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 237, 238 (HLP: "inneuter"), 239, 241, 242 (HLP ist jetzt inneuter), 236 (LHF wird aufgerufen), 245 (NP ist kein Wort), 247, 248, 249, 250, 251, 252, 253, 255, 256 (der Hauptteil (Head) kann das Merkmal "inneuter" haben), 258, 245, 246 (der Hauptteil hat schon das Merkmal "inneuter", so daß keine Änderung erfolgt), 259, 260, 257, 252, 253, 255, 256 (auch ein Bestimmer (determiner) kann das Merkmal "inneuter" haben), 258, 245, 246 (die Wortstruktur wird durch eine andere Wortstruktur ersetzt, nämlich durch die des Artikels "de"), 259, 260, 257 (die NP hat noch das Merkmal "inneuter"), 252, 253, 254, 261, 244 (COC-Code erlischt), 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 181, 178, 179, 180, 181, 178, 179, 182, 183, 161, 162 (auch der Bestandteil S hat nur zwei Mitglieder), 166 (Bestandteil S hat keine Verletzung), 173, 174, 175, 176, 177, 178, 179, 180, 181, 178, 179, 180, 181, 178, 179, 182, 183 (keine Änderungen), 157 (dies ist das Ende des Korrekturprogramms).
- this houses
- Die folgenden Programmschritte werden während der Korrekturprozedur für die obige Phrase durchlaufen.
- 155, 156, 158, 159, 160, 161, 162, 163, 164 (kein Bestandteil, sondern ein Wort mit dem Etikett Endmark), 161, 162, 163, 164 (dies ist wirklich ein Bestandteil mit dem Etikett fNP), 158, 159, 160, 161, 162, 163, 164 (ein Wort: Head), 161, 162, 163, 164 (ein Wort: Det), 161, 162 (der aktuelle Bestandteil hat nur zwei Mitglieder), 166, 167 (dieser Schritt führt nicht zu einer Änderung), 168, 169, 170, 171, 172 (die Verletzung COC wird genannt ), 184, 186, 188, 189 (die COC-Korrektur wird aufgerufen), 223 (die Merkmalsliste ist "sing 1 sing 2 sing 3 plu 1 plu 2 plu 3"), 224 (Priorität: head, det, nmod-s, nmod-a"), 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 237, 238 (HLP: "plu3"), 239, 241, 242 (HLP ist jetzt "plu 3"), 236 (LHF wird aufgerufen), 245 (NP ist kein Wort), 247, 248, 249, 250, 251, 252, 253, 255, 256 (der Hauptteil (Head) kann das Merkmal "plu 3" haben), 258, 245, 246 (der Hauptteil hat bereits das Merkmal "plu 3", so daß keine Änderung erfolgt), 259, 260, 257, 252, 253, 255, 256 (auch ein Bestimmer (determiner) kann das Merkmal "plu 3" haben), 258, 245, 246 (die Wortstruktur wird durch eine andere Wortstruktur ersetzt, nämlich diejenige des Artikels "these"), 259, 260, 257 (die NP hat noch das Merkmal "plu 3"), 252, 253, 254, 261, 244 (COC-Code erlischt), 169, 170, 173, 174, 175, 176, 177, 178, 179, 180, 181, 178, 179, 180, 181, 178, 179, 182, 183, 161, 162 (auch der Bestandteil S hat nur zwei Mitglieder), 166 (Bestandteil S hat keine Verletzung), 173, 174, 175, 176, 177, 178, 179, 180, 181, 178, 179, 180, 181, 178, 179, 182, 183 (keine Änderungen), 157 (dies ist das Ende des Korrekturprogramms).
Claims (8)
1. System zur grammatischen Verarbeitung eines in einer natürlichen
Sprache aufgebauten Satzes, der aus Worteinheiten besteht, die Bestandteile des
Satzes bilden, mit:
Eingabemitteln zur Eingabe eines Satzes;
Massenspeichermitteln zum Speichern lexikalischer Daten von
Worteinheiten;
Lexikalisierungsmitteln zum Zuordnen geeigneter lexikalischer Information,
die von den Massenspeichermitteln geliefert wird, zu jeder Worteinheit des
Satzes;
Speichermitteln zum Speichern einer Menge von Grammatikregeln, die
Regeln zum Prüfen eines eingegebenen Satzes und seiner Bestandteile
umfassen;
Zergliederungsmitteln zum Zergliedern des Satzes gemäß der Menge der
Grammatikregeln, zur Bestimmung eines Wahrscheinlichkeitsfaktors, der
eine Bewertung repräsentiert hinsichtlich der Übereinstimmung eines
Bestandteils oder Satzes mit der Menge der Grammatikregeln und zur Lieferung
wenigstens einer Satzrepräsentation; und
Wählmitteln zum Auswählen von Satzrepräsenationen auf der Grundlage der
zugehörigen Wahrscheinlichkeitsfaktoren;
dadurch gekennzeichnet, daß die Zergliederungsmittel mit Filtermitteln
(75,84,67,95) zum Ausfiltern von Bestandteilen versehen sind, die nicht eine
Menge von Testkriterien erfüllen, welche Kriterien sich auf zulässige
Konstruktionen beziehen, und zur anschließenden Neubewertung des
Wahrscheinlichkeitsfaktors der ausgefilterten Bestandteile und zur Zuordnung
eines Verletzungscodes zu den ausgefilterten Bestandteilen, welcher
Verletzungscode einen durch die aktuell verletzten Testkriterien bestimmten
Fehlertyp wiedergibt.
2. System nach Anspruch 1, dadurch gekennzeichnet, daß das System
weiterhin aufweist:
einen Wortspeicher zum Speichern von Wortstrukturen, die sich jeweils auf
eine Worteinheit und ihre zugehörige lexikalische Information beziehen und
eine Wortkategorie und linguistische Merkmale umfassen;
einen Satz-Repräsentationsspeicher zum Speichern von
Bestandteilsstrukturen, die sich jeweils auf eine grammatische Konstruktion eines Satzes oder
eines Teils desselben beziehen und jeweils einen Wahrscheinlichkeitsfaktor,
eine Bestandteilskategorie, ein Stammfeld und eine Menge von Mitgliedern
mit Funktionsetiketten umfassen, wobei jedes Mitglied einem in diesem
Bestandteil enthaltenen Wort oder Bestandteil zugeordnet ist und das
Funktionsetikett die grammatische Funktion des Mitglieds in dem Bestandteil
angibt, und wobei die Zergliederungsmittel umfassen:
Mittel zur anfänglichen Erzeugung eines offenen Startbestandteils (12);
Mittel zum Lesen der lexikalisierten Wortstrukturen aus dem Wortspeicher;
und
Mittel zum nachfolgenden Verarbeiten der Worteinheiten, um wenigstens
eine in dem Satz-Repräsentationsspeicher zu speichernde Satz-Repräsentation
zu bilden, welche Mittel umfassen:
Mittel (53) zum Bestimmen, für jede Worteinheit und für jeden Bestandteil,
eines Funktionsetiketts innerhalb des Bestandteils und/oder innerhalb eines
Bestandteils, der auf der Grundlage der Wortkategorie und der Kategorie des
Bestandteils neu zu erstellen ist, zum Aktualisieren des
Satz-Repräsentationsspeichers;
erste Filtermittel (75,84) zum Prüfen aller Bestandteile in den
Satz-Repräsentationsspeicher anhand einer ersten Menge von Testkriterien, die auf
Systax basieren,
Mittel (37) zum Prüfen, ob jeder Bestandteil, der vom
Satz-Repräsentationsspeicher geliefert wird und in einem anderen dominierenden Bestandteil
enthalten ist, abgeschlossen werden kann, auf der Grundlage der Kategorien
beider Bestandteile in Verbindung mit grammatischen Daten, und zum
Zuweisen eines Funktionsetiketts, und
zweite Filtermittel (67,95) zum Prüfen jedes abgeschlossenen Bestandteils
anhand einer zweiten Menge von Testkriterien auf der Basis der Syntax.
3. System nach Anspruch 2, dadurch gekennzeichnet, daß die
Grammatikregeln, die Testkriterien und die Grammatikdaten in
Tabellenspeichermitteln gespeichert sind.
4. System nach Anspruch 2, dadurch gekennzeichnet, daß die
Grammatikregeln, Testkriterien und Grammatikdaten Teil der Programmdaten sind.
5. System nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß
das System auch Korrekturmittel (153) zum Korrigieren eines Satzes in
Übereinstimmung mit Verletzungscodes enthält, die von den
Zergliederungsmitteln geliefert werden.
6. System nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß
das System Vergleichsmittel (76,85) enthält, zum Vergleich des
Wahrscheinlichkeitsfaktors mit einem Schwellenwert, und zum Zurückweisen von
Bestandteilen, für die der Wahrscheinlichkeitsfaktor unter einen Schwellenwert
absinkt.
7. System nach Anspruch 6, dadurch gekennzeichnet, daß das System
Mittel (40) zur Neubewertung des Schwellenwertes und zum Wiederholen des
Zergliederungsschrittes aufweist, wenn nach anschließender Verarbeitung
aller Worteinheiten eines Satzes der Zergliederungsschritt nicht wenigstens
eine Satzrepräsentation (38) liefert.
8. System nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß
das System auch Anzeigemittel zum Anzeigen eines Satzes aufweist, wenn die
Wählmittel einen nicht-grammatischen Satz auswählen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL8802271A NL8802271A (nl) | 1988-09-15 | 1988-09-15 | Werkwijze voor het ontleden van een, in natuurlijke taal gestelde zin, in, met functionele indicaties te omschrijven zinsdelen, alsmede een inrichting voor het uitvoeren van een dergelijke werkwijze. |
NL8901050A NL8901050A (nl) | 1989-04-26 | 1989-04-26 | Werkwijze voor het ontleden en corrigeren van een, in natuurlijke taal gestelde zin, alsmede een inrichting voor het uitvoeren van een dergelijke werkwijze. |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68928230D1 DE68928230D1 (de) | 1997-09-11 |
DE68928230T2 true DE68928230T2 (de) | 1998-02-05 |
Family
ID=26646423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68928230T Expired - Fee Related DE68928230T2 (de) | 1988-09-15 | 1989-09-01 | System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes |
Country Status (4)
Country | Link |
---|---|
US (1) | US5068789A (de) |
EP (1) | EP0361570B1 (de) |
JP (1) | JP3384564B2 (de) |
DE (1) | DE68928230T2 (de) |
Families Citing this family (74)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111398A (en) * | 1988-11-21 | 1992-05-05 | Xerox Corporation | Processing natural language text using autonomous punctuational structure |
JP2814634B2 (ja) * | 1989-12-29 | 1998-10-27 | 松下電器産業株式会社 | 機械翻訳装置 |
US5243520A (en) * | 1990-08-21 | 1993-09-07 | General Electric Company | Sense discrimination system and method |
US5418717A (en) * | 1990-08-27 | 1995-05-23 | Su; Keh-Yih | Multiple score language processing system |
JP2804403B2 (ja) * | 1991-05-16 | 1998-09-24 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 質問回答システム |
US5477451A (en) * | 1991-07-25 | 1995-12-19 | International Business Machines Corp. | Method and system for natural language translation |
US5487147A (en) * | 1991-09-05 | 1996-01-23 | International Business Machines Corporation | Generation of error messages and error recovery for an LL(1) parser |
JP2892548B2 (ja) * | 1992-05-25 | 1999-05-17 | シャープ株式会社 | 自動翻訳装置 |
JPH0668137A (ja) * | 1992-08-21 | 1994-03-11 | Hitachi Ltd | 操作指示対象情報生成システムおよび操作指示対象認識システム |
NL9300310A (nl) * | 1993-02-19 | 1994-09-16 | Oce Nederland Bv | Inrichting en werkwijze voor syntactische signaal-analyse. |
US5510981A (en) * | 1993-10-28 | 1996-04-23 | International Business Machines Corporation | Language translation apparatus and method using context-based translation models |
US5737617A (en) * | 1995-06-06 | 1998-04-07 | International Business Machines Corporation | Method and system for English text analysis |
US6279017B1 (en) * | 1996-08-07 | 2001-08-21 | Randall C. Walker | Method and apparatus for displaying text based upon attributes found within the text |
US5802533A (en) * | 1996-08-07 | 1998-09-01 | Walker; Randall C. | Text processor |
US6616703B1 (en) * | 1996-10-16 | 2003-09-09 | Sharp Kabushiki Kaisha | Character input apparatus with character string extraction portion, and corresponding storage medium |
AU724147B2 (en) * | 1997-04-01 | 2000-09-14 | Yeong Kuang Oon | Didactic and content oriented word processing method with incrementally changed belief system |
US6408266B1 (en) | 1997-04-01 | 2002-06-18 | Yeong Kaung Oon | Didactic and content oriented word processing method with incrementally changed belief system |
US5960384A (en) * | 1997-09-03 | 1999-09-28 | Brash; Douglas E. | Method and device for parsing natural language sentences and other sequential symbolic expressions |
US6098042A (en) * | 1998-01-30 | 2000-08-01 | International Business Machines Corporation | Homograph filter for speech synthesis system |
US6721697B1 (en) * | 1999-10-18 | 2004-04-13 | Sony Corporation | Method and system for reducing lexical ambiguity |
US6778949B2 (en) | 1999-10-18 | 2004-08-17 | Sony Corporation | Method and system to analyze, transfer and generate language expressions using compiled instructions to manipulate linguistic structures |
US6928448B1 (en) | 1999-10-18 | 2005-08-09 | Sony Corporation | System and method to match linguistic structures using thesaurus information |
US6535886B1 (en) * | 1999-10-18 | 2003-03-18 | Sony Corporation | Method to compress linguistic structures |
US7725307B2 (en) | 1999-11-12 | 2010-05-25 | Phoenix Solutions, Inc. | Query engine for processing voice based queries including semantic decoding |
US7392185B2 (en) | 1999-11-12 | 2008-06-24 | Phoenix Solutions, Inc. | Speech based learning/training system using semantic decoding |
US6633846B1 (en) | 1999-11-12 | 2003-10-14 | Phoenix Solutions, Inc. | Distributed realtime speech recognition system |
US9076448B2 (en) * | 1999-11-12 | 2015-07-07 | Nuance Communications, Inc. | Distributed real time speech recognition system |
US6615172B1 (en) | 1999-11-12 | 2003-09-02 | Phoenix Solutions, Inc. | Intelligent query engine for processing voice based queries |
US6665640B1 (en) | 1999-11-12 | 2003-12-16 | Phoenix Solutions, Inc. | Interactive speech based learning/training system formulating search queries based on natural language parsing of recognized user queries |
US7050977B1 (en) * | 1999-11-12 | 2006-05-23 | Phoenix Solutions, Inc. | Speech-enabled server for internet website and method |
US7099855B1 (en) | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
US6704728B1 (en) | 2000-05-02 | 2004-03-09 | Iphase.Com, Inc. | Accessing information from a collection of data |
US8478732B1 (en) | 2000-05-02 | 2013-07-02 | International Business Machines Corporation | Database aliasing in information access system |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US6408277B1 (en) | 2000-06-21 | 2002-06-18 | Banter Limited | System and method for automatic task prioritization |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
US7644057B2 (en) | 2001-01-03 | 2010-01-05 | International Business Machines Corporation | System and method for electronic communication management |
JP2003271389A (ja) * | 2002-03-19 | 2003-09-26 | Shuichi Araki | 自然言語によるソフトウェア・オブジェクトの操作方法及びそのためのプログラム |
US7191119B2 (en) * | 2002-05-07 | 2007-03-13 | International Business Machines Corporation | Integrated development tool for building a natural language understanding application |
US7805302B2 (en) * | 2002-05-20 | 2010-09-28 | Microsoft Corporation | Applying a structured language model to information extraction |
US7389230B1 (en) | 2003-04-22 | 2008-06-17 | International Business Machines Corporation | System and method for classification of voice signals |
US20050187913A1 (en) | 2003-05-06 | 2005-08-25 | Yoram Nelken | Web-based customer service interface |
US8495002B2 (en) | 2003-05-06 | 2013-07-23 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US7970600B2 (en) * | 2004-11-03 | 2011-06-28 | Microsoft Corporation | Using a first natural language parser to train a second parser |
US20060122834A1 (en) * | 2004-12-03 | 2006-06-08 | Bennett Ian M | Emotion detection device & method for use in distributed systems |
US20060277028A1 (en) * | 2005-06-01 | 2006-12-07 | Microsoft Corporation | Training a statistical parser on noisy data by filtering |
US9633005B2 (en) | 2006-10-10 | 2017-04-25 | Abbyy Infopoisk Llc | Exhaustive automatic processing of textual information |
US9645993B2 (en) | 2006-10-10 | 2017-05-09 | Abbyy Infopoisk Llc | Method and system for semantic searching |
US8548795B2 (en) * | 2006-10-10 | 2013-10-01 | Abbyy Software Ltd. | Method for translating documents from one language into another using a database of translations, a terminology dictionary, a translation dictionary, and a machine translation system |
US20080086298A1 (en) * | 2006-10-10 | 2008-04-10 | Anisimovich Konstantin | Method and system for translating sentences between langauges |
US8214199B2 (en) * | 2006-10-10 | 2012-07-03 | Abbyy Software, Ltd. | Systems for translating sentences between languages using language-independent semantic structures and ratings of syntactic constructions |
US9235573B2 (en) | 2006-10-10 | 2016-01-12 | Abbyy Infopoisk Llc | Universal difference measure |
US9984071B2 (en) | 2006-10-10 | 2018-05-29 | Abbyy Production Llc | Language ambiguity detection of text |
US9047275B2 (en) | 2006-10-10 | 2015-06-02 | Abbyy Infopoisk Llc | Methods and systems for alignment of parallel text corpora |
US8195447B2 (en) | 2006-10-10 | 2012-06-05 | Abbyy Software Ltd. | Translating sentences between languages using language-independent semantic structures and ratings of syntactic constructions |
US8145473B2 (en) | 2006-10-10 | 2012-03-27 | Abbyy Software Ltd. | Deep model statistics method for machine translation |
US7991609B2 (en) * | 2007-02-28 | 2011-08-02 | Microsoft Corporation | Web-based proofing and usage guidance |
US20080221870A1 (en) * | 2007-03-08 | 2008-09-11 | Yahoo! Inc. | System and method for revising natural language parse trees |
US8959011B2 (en) | 2007-03-22 | 2015-02-17 | Abbyy Infopoisk Llc | Indicating and correcting errors in machine translation systems |
US8812296B2 (en) | 2007-06-27 | 2014-08-19 | Abbyy Infopoisk Llc | Method and system for natural language dictionary generation |
US8738353B2 (en) * | 2007-09-05 | 2014-05-27 | Modibo Soumare | Relational database method and systems for alphabet based language representation |
US9262409B2 (en) | 2008-08-06 | 2016-02-16 | Abbyy Infopoisk Llc | Translation of a selected text fragment of a screen |
US9298697B2 (en) * | 2010-01-26 | 2016-03-29 | Apollo Education Group, Inc. | Techniques for grammar rule composition and testing |
US8601030B2 (en) * | 2011-09-09 | 2013-12-03 | International Business Machines Corporation | Method for a natural language question-answering system to complement decision-support in a real-time command center |
US8989485B2 (en) | 2012-04-27 | 2015-03-24 | Abbyy Development Llc | Detecting a junction in a text line of CJK characters |
US8971630B2 (en) | 2012-04-27 | 2015-03-03 | Abbyy Development Llc | Fast CJK character recognition |
US9472189B2 (en) | 2012-11-02 | 2016-10-18 | Sony Corporation | Language processing method and integrated circuit |
RU2592395C2 (ru) | 2013-12-19 | 2016-07-20 | Общество с ограниченной ответственностью "Аби ИнфоПоиск" | Разрешение семантической неоднозначности при помощи статистического анализа |
RU2586577C2 (ru) | 2014-01-15 | 2016-06-10 | Общество с ограниченной ответственностью "Аби ИнфоПоиск" | Фильтрация дуг в синтаксическом графе |
US10515138B2 (en) | 2014-04-25 | 2019-12-24 | Mayo Foundation For Medical Education And Research | Enhancing reading accuracy, efficiency and retention |
RU2596600C2 (ru) | 2014-09-02 | 2016-09-10 | Общество с ограниченной ответственностью "Аби Девелопмент" | Способы и системы обработки изображений математических выражений |
US9626358B2 (en) | 2014-11-26 | 2017-04-18 | Abbyy Infopoisk Llc | Creating ontologies by analyzing natural language texts |
US10592614B1 (en) | 2017-01-19 | 2020-03-17 | Amdocs Development Limited | System, method, and computer program for translating unified ticketing system (UTS) messages |
US10395649B2 (en) | 2017-12-15 | 2019-08-27 | International Business Machines Corporation | Pronunciation analysis and correction feedback |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4887212A (en) * | 1986-10-29 | 1989-12-12 | International Business Machines Corporation | Parser for natural language text |
US4862408A (en) * | 1987-03-20 | 1989-08-29 | International Business Machines Corporation | Paradigm-based morphological text analysis for natural languages |
US4868750A (en) * | 1987-10-07 | 1989-09-19 | Houghton Mifflin Company | Collocational grammar system |
US4864501A (en) * | 1987-10-07 | 1989-09-05 | Houghton Mifflin Company | Word annotation system |
-
1989
- 1989-09-01 EP EP89202222A patent/EP0361570B1/de not_active Expired - Lifetime
- 1989-09-01 DE DE68928230T patent/DE68928230T2/de not_active Expired - Fee Related
- 1989-09-14 JP JP23975389A patent/JP3384564B2/ja not_active Expired - Fee Related
- 1989-09-15 US US07/407,564 patent/US5068789A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0361570A1 (de) | 1990-04-04 |
JP3384564B2 (ja) | 2003-03-10 |
EP0361570B1 (de) | 1997-08-06 |
DE68928230D1 (de) | 1997-09-11 |
US5068789A (en) | 1991-11-26 |
JPH02115971A (ja) | 1990-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68928230T2 (de) | System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes | |
DE69710458T2 (de) | Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen | |
DE69726339T2 (de) | Verfahren und Apparat zur Sprachübersetzung | |
DE69427848T2 (de) | Unterstützungssystem zur Herstellung von Wörterbüchern | |
DE69712411T2 (de) | Verfahren und System um Datenstrukturen zu vereinigen | |
DE69728282T2 (de) | System und verfahren zur extraktion und kodierung von medizinischer fachsprache | |
DE69331044T2 (de) | Vorrichtung und Verfahren zur syntaktischen Signalanalyse | |
DE69031354T2 (de) | Natursprachenverarbeitungssystem | |
DE3751276T2 (de) | Zergliedergerät für Naturalsprachen. | |
DE69803043T2 (de) | Übersetzungssystem | |
DE69820343T2 (de) | Linguistisches Suchsystem | |
DE3587832T2 (de) | Sprachverarbeitungslexikon zum Zweirichtungswiederfinden von morphemischen und semantischen Ausdrücken. | |
EP0910829B1 (de) | Datenbanksystem | |
DE68928231T2 (de) | Verfahren und Vorrichtung zur Maschinenübersetzung | |
DE10120262A1 (de) | Feststellung und Korrektur von Fehlern bei grammatikalischen Fällen im Deutschen | |
DE102004046252A1 (de) | Einrichtung zum Trennen zusammengesetzter Wörter und zur Rechtschreibprüfung | |
DE60304066T2 (de) | Verfahren zur Normalisierung einer Diskursrepräsentationsstruktur und normalisierte Datenstruktur | |
EP0968478A1 (de) | Verfahren zur automatischen generierung einer zusammenfassung von einem text durch einen rechner | |
DE3788782T2 (de) | Verfahren zur Herstellung einer Meldungsdatei in einem Computer. | |
DE69733294T2 (de) | Einrichtung und Verfahren zum Zugriff auf eine Datenbank | |
DE69715525T2 (de) | Verfahren und System um Datenstrukturen zu vereinigen | |
DE69933123T2 (de) | Zugriff auf eine semi-strukturierte datenbank | |
DE69229583T2 (de) | Verfahren zur Flektieren von Wörtern und Datenverarbeitungseinheit zur Durchführung des Verfahrens | |
DE69227881T2 (de) | Textübersetzungssystem | |
DE19849855C1 (de) | Verfahren zur automatischen Generierung einer textlichen Äußerung aus einer Bedeutungsrepräsentation durch ein Computersystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8327 | Change in the person/name/address of the patent owner |
Owner name: OCE-TECHNOLOGIES B.V., VENLO, NL |
|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |