DE69331044T2 - Vorrichtung und Verfahren zur syntaktischen Signalanalyse - Google Patents

Vorrichtung und Verfahren zur syntaktischen Signalanalyse

Info

Publication number
DE69331044T2
DE69331044T2 DE69331044T DE69331044T DE69331044T2 DE 69331044 T2 DE69331044 T2 DE 69331044T2 DE 69331044 T DE69331044 T DE 69331044T DE 69331044 T DE69331044 T DE 69331044T DE 69331044 T2 DE69331044 T2 DE 69331044T2
Authority
DE
Germany
Prior art keywords
feature
current
declared
routine
grammar
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
Application number
DE69331044T
Other languages
English (en)
Other versions
DE69331044D1 (de
Inventor
Marie Cremers
Jan Gerritsen
Petrus Heemels
Johan Hommerson
Josephus Van Vliembergen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Production Printing Netherlands BV
Original Assignee
Oce Technologies BV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oce Technologies BV filed Critical Oce Technologies BV
Publication of DE69331044D1 publication Critical patent/DE69331044D1/de
Application granted granted Critical
Publication of DE69331044T2 publication Critical patent/DE69331044T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/18Extraction of features or characteristics of the image
    • G06V30/18162Extraction of features or characteristics of the image related to a structural representation of the pattern
    • G06V30/18171Syntactic representation, e.g. using a grammatical approach
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/19Recognition using electronic means
    • G06V30/196Recognition using electronic means using sequential comparisons of the image signals with a plurality of references
    • G06V30/1983Syntactic or structural pattern recognition, e.g. symbolic string recognition
    • G06V30/1985Syntactic analysis, e.g. using a grammatical approach
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Character Discrimination (AREA)
  • Machine Translation (AREA)

Description

    HINTERGRUND DER ERFINDUNG Technisches Gebiet
  • Die Erfindung betrifft eine Vorrichtung zur syntaktischen Signalanalyse mit einer Umwandlungseinheit zum Umwandeln eines eingegebenen Signals in Grundelemente und diesen entsprechende normierte Grundelemente, einer mit der Umwandlungseinheit verbundenen Mustererkennungseinheit zur Durchführung einer syntaktischen Analyse an jeweils einer. Kette von normierten Grundelementen anhand einer Grammatik, und einer Speichereinheit zum Speichern der Grammatik, wobei die Grammatik Terme aufweist, die in Umschreibregeln geordnet sind und auch Endterme umfassen, die normierten Grundelementen entsprechen; ebenso bezieht sich die Erfindung auf ein Verfahren zur syntaktischen Signalanalyse.
  • Beschreibung des Standes der Technik
  • Signale werden in einer Vielzahl technischer Anwendungsgebiete verarbeitet. Aus verschiedenen Gründen sind diese Signale jedoch manchmal verstümmelt. In den meisten Fällen ist es vorteilhaft, über unverstümmelte Signale zu verfügen. Wenn im voraus bekannt ist, dass die unverstümmelten Signale bestimmte Regeln erfüllen müssen, ist es möglich zu überprüfen, ob die verfügbaren Signale wirklich diese Regeln erfüllen, und wenn dies nicht der Fall zu sein scheint, die Signale zu verwerfen oder zu korrigieren.
  • Ein im Stand der Technik bekanntes Verfahren zur Überprüfung, ob Signale bestimmte Regeln erfüllen, ist die syntaktische Analyse oder Parsing-Technik. Eine Einführung in dieses Gebiet findet sich in "Digital Pattern Recognition", Springer-Verlag (1980) von K.S. Fu (Herausgeber), S. 95-134, bzw. "Digital Image Processing", John Wiley & Sons (1978), von W.K. Pratt, S. 574-578.
  • Bei diesem Verfahren wird das Signal zunächst in Grundelemente zerlegt. Diese Grundelemente werden dann klassifiziert und durch normierte Grundelemente ersetzt. Ein normiertes Grundelement dieser Art ist ein Prototyp einer bestimmten Klasse oder Kategorie. Dann wird überprüft, ob eine in dieser Weise erhaltene Kette normierter Grundelemente einer Grammatik genügt. Eine Grammatik umfasst eine Anzahl von Regeln, die als Umschreib- oder Erzeugungsregeln bekannt sind, und jeweils aus einer Anzahl von Termen, Endtermen oder Nicht- Endtermen, bestehen und jeweils eine Weise vorgeben, in der eine Menge von Termen umgeschrieben werden kann, um einen Nicht-Endterm zu bilden. Weiterhin definiert die Grammatik ein Startsymbol. Dieses Startsymbol ist ein Nicht-Endterm. Die definierten Klassen oder Kategorien und demgemäß die normierten Grundelemente entsprechen eins zu eins den Endtermen aus der Grammatik.
  • Eine bottom-up Parsingprozedur besteht aus der Anwendung geeigneter Umschreibregeln auf eine Kette von normierten Grundelementen und auf zwischendurch erhaltene Umschreibregeln, bis das Startsymbol erreicht wird. Die Anwendung von Umschreibregeln bedeutet jeweils das Zusammenfügen einfacherer Terme, um komplexere Terme zu bilden, und resultiert schließlich in einer hierarchischen Komposition des Signals in der Form einer Baumstruktur, die auch als Parsingbaum, Lösungsbaum oder Analyse bekannt ist und die das Startsymbol als Wurzel, die normierten Grundelemente an den Endpunkten (Blättern) und die Nicht-Endterme der angewendeten Umschreibregeln an den Zwischenknoten hat. Die Grammatik definiert sämtliche solcher hierarchischer Kompositionen, die zugelassen sind.
  • Wenn es zu einem bestimmten Zeitpunkt in der Parsingprozedur nicht möglich ist, irgendeine weitere Umschreibregel anzuwenden und wenn das Startsymbol noch nicht gefunden worden ist, so genügt das Signal der Grammatik nicht, und das Signal wird verworfen. Es ist dann möglich, ein oder mehrere Grundelemente oder normierte Grundelemente anzupassen, mit denen die Regeln in der Grammatik verträglich sind: Das Signal wird dann korrigiert. Ein Korrekturverfahren dieser Art wird gezeigt in "Digital Image Processing" von W. Pratt, S. 571, Fig. 20.2-3.
  • Wenn die Parsingprozedur tatsächlich das Startsymbol ergibt, so erfüllt das Signal die vorgegebenen Regeln, und hat eine der zulässigen hierarchischen Kompositionen. Wenn nur die Verifikation des Signals gefordert ist, so genügt die Tatsache, dass das Startsymbol erreicht wurde, als Nachweis, dass das Signal die Regeln erfüllt. Falls der Zweck der Vorrichtung auch die Erkennung des Signals ist, so können die zu erkennenden Objekte direkt aus der gewonnenen Analyse abgeleitet werden: ein zu erkennendes Objekt wird durch das Nicht- Endtermsymbol repräsentiert, das die Wurzel eines Teilbaumes ist, der dem zu erkennenden Objekt entspricht. Wenn ein Signal auf diese Weise in eine Kette erkannter Symbole umgewandelt worden ist, so ist es möglich, die resultierenden Symbole - erforderlichenfalls nach einigen Zwischenoperationen - einem nachfolgenden Parsingschritt zu unterziehen, in dem überprüft wird, ob die Kette bekannter Symbole einem anderen System von Regeln genügt. Dies kann wiederum zur Anpassung der Symbole führen, und dies kann wieder zu einer Anpassung des Signals führen. Es ist auch möglich, dass dieser Parsingschritt erneut eine Strukturbeschreibung liefert, mit der eine weitere Verarbeitung ausgeführt wird.
  • Es sind verschiedene Typen von Pasern bekannt. Ein robuster Parser, d. h. ein Parser, der auch Signale verarbeitet, die den Regeln in der Grammatik nicht genügen, zusammen mit einem damit zusammenwirkenden Korrekturmechanismus, wird in die EP-A-0 361 570 beschrieben.
  • In "Efficient parsing for natural language", Kluwer Academic Publishers (1986), beschreibt M. Tomita einen "generalisierten LR-Parser". Diese Parsingtechnik beruht auf der allgemein im Stand der Technik bekannten LR-Parsingtechnik (von links nach rechts), die von Knuth 1965 eingeführt wurde. Tomita hat diese LR-Technik erweitert, indem er sie für mehrdeutige Eingangssignale anwendbar gemacht hat: in diesem Fall ist der Parser in der Lage, mehr als eine Strukturbeschreibung für ein solches Eingangssignal auszugeben. Ein Beispiel für einen mehrdeutigen Input in natürlicher Sprache ist der Satz "Er sah einen Mann mit einem Teleskop", in dem die Phrase "mit einem Teleskop" entweder eine Adverbialkonstruktion zu dem Verb "sah" oder eine adjektivische Konstruktion sein kann, die das Nomen "Mann'" qualifiziert. Der GLR-Parser ist zurzeit eine der schnellsten und effizientesten Parsingtechniken.
  • Anwendungsgebiet
  • Es gibt eine Anzahl technischer Gebiete, in denen die Parsingtechnik zur Überprüfung und Korrektur von Signalen anwendbar ist.
  • Optische Zeichenerkennungssysteme sind Systeme, die dazu dienen, Text mit Hilfe eines optischen Scanners einzulesen und ihn in eine Form umzuwandeln, die von einem Computer verarbeitet werden kann. Das von dem optischen Scanner gelieferte elektrische Signal wird einem Schwellenwertvergleich unterzogen und in einem Speicher in einem Pixelmuster gespeichert. Das Pixelmuster ist kein genaues Bild der Vorlage, zum Beispiel wegen Ungenauigkeiten im optischen System, ungleichmäßiger Ausleuchtung oder wegen Rundungsfehlern bei der Schwellenwertbildung. Es ist auch möglich, dass die zum Scannen benutzte Vorlage von schlechter Qualität ist, die Zeichen beschädigt, verwischt oder handgeschrieben sind. Allerdings ist bekannt, dass das erhaltende Signal Zeichen repräsentieren muss. Diese Kenntnis kann ausgenutzt werden, indem man einen Parser überprüfen lässt, ob das Pixelmuster tatsächlich Strukturen hat, die Zeichen repräsentieren. Zu diesem Zweck muss das Pixelmuster zunächst in eine Folge von Grundelementen und normierten Grundelementen umgewandelt werden, wobei die normierten Grundelemente direkt Endtermen aus der Grammatik entsprechen, wonach die Endterme gegen die Umschreibregeln der Grammatik geprüft werden. In "Digital Pattern Recognition" von K.S. Fu (Herausgeber), S. 103 werden Grundelemente für handgeschriebene englische Zeichen angegeben, und auf S. 110 ff. werden eine Anzahl von Grammatiken angegeben, die spezifische Muster beschreiben.
  • Ein weiteres Anwendungsgebiet ist das Gebiet der Objekterkennung. Wenn nur eine kleine Anzahl von Objekten erkannt zu werden braucht, ist es möglich, das von einer Detektoreinrichtung kommende Inputsignal mit allen zulässigen Objekten zu vergleichen und zu entscheiden, welches Objekt am besten mit dem Inputsignal übereinstimmt. Wenn jedoch eine große Anzahl von Objekten betroffen ist, so ist es vorteilhafter, jedes Objekt als einen Satz von Grundelementen zu beschreiben. Diese Beschreibungsregeln bilden die Grammatik. Ein Inputsignal wird in Grundelemente zerlegt, und dann überprüft ein Parser, ob die Regeln der Grammatik erfüllt sind, und der Parsingprozess liefert als Ergebnis, welches Objekt der gefundenen Struktur entspricht. In "Digital Pattern Recognition" von K.S. Fu (Herausgeber) wird auf S. 113 unter anderem eine Grammatik für die Erkennung von Chromosomen beschrieben.
  • Das syntaktische Verfahren kann mit Vorteil auch bei der Spracherkennung genutzt werden. In "Digital Pattern Recognition" von K.S. Fu (Herausgeber) wird auf S. 177 ein Beispiel eines Spracherkennungssystems gegeben. In dieser Vorrichtung ist einem Akustikprozessor ein linguistischer Prozessor nachgeschaltet. Eine Anzahl von Verarbeitungsoperationen des Akustikprozessors liefert eine Kette von Phonemen. Diese Kette von Phonemen wird dem Linguistikprozessor zugeführt, der die Kette von Phonemen unter anderem auf der Grundlage syntaktischer Regeln in eine Kette von Wörtern umwandelt.
  • Ein weiteres Beispiel eines technischen Gebietes, in dem Parsingtechniken für die Überprüfung und Korrektur von Signalen anwendbar sind, ist das Gebiet "natürlichsprachlicher Benutzeroberflächen". Ein System dieser Art zielt darauf ab, die Wechselwirkung zwischen Menschen und Computersystemen zu unterstützen. Dies ist zum Beispiel von größter Wichtigkeit, wenn ein Laie in die Lage versetzt werden soll, eine Datenbank zu konsultieren. Eine "natürlichsprachliche Benutzeroberfläche" dieser Art muss es dem Benutzer ermöglichen, komplexe Fragen in natürlicher Sprache zu formulieren. Die vom Benutzer in natürlicher Sprache eingegebenen Sätze werden von einem Parser analysiert und ergeben eine Anzahl von Fragen in einer Form, die zur Weitergabe an die Datenbank geeignet ist. Ein System dieser Art wird diskutiert in dem Lehrbuch von M. Wallace: "Communicting with databases in Natural Language", Wiley & Sons Inc. (1984).
  • Die europäische Patentanmeldung EP-A-0 513 918 beschreibt ein Rechtschreibprüfungssystem. Die Verwendung eines Parsers für diese Anwendung macht solche Rechtschreibprüfungssysteme zweckdienlicher und genauer: es wird nicht nur ein isoliertes Wort überprüft, sondern auch die Beugungen des Wortes und die Syntax des Satzes. Infolgedessen wird die Anzahl möglicher Alternativen für ein falsch geschriebenes Wort erheblich verringert. Außerdem ist ein Parser naturgemäß auch ein geeignetes Instrument zur Überprüfung der Grammatik von natürlicher Sprache.
  • In maschinellen Übersetzungssystemen sind Parser geeignet zur Analyse des zu übersetzenden Satzes und zur Synthese eines übersetzten Satzes aus übersetzten Wörtern mit ihren grammatischen Funktionen.
  • Die Verwendung eines Parsers in einer solchen Anwendung findet sich in EP-A-0 357 344.
  • Ein Parser kann auch zur Rekonstruktion von verstümmelten Signalen benutzt werden, die aus einem beschädigten Massenspeichersystem oder einem schlechten Kommunikationskanal stammen, da die Signale Regeln genügen, die im voraus bekannt sind.
  • Ein Parser kann auch vorteilhaft in Indexierungssystemen benutzt werden. Die Aufgabe von Systemen dieses Typs ist es, eine Liste von Indexwörtern für einen Satz von Texten zu erstellen. Zu diesem Text werden Nomen und Verben, die auf eine normierte Form reduziert sind (z.B. Singular bzw. Infinitiv) mit Hilfe eines Parsers aus den Texten extrahiert. Ein System dieser Art wird beschrieben in dem Artikel von C. Berrut und P. Palmer: "Solving grammaticel ambiguities within a surface syntactical parser for automatic indexing", ACM Conference on Research and Development in Information Retrieval (1986).
  • Aus dem Vorstehenden wird deutlich, dass die Parsingtechnik in einer großen Anzahl von Anwendungsgebieten einsetzbar ist.
  • Vereinheitlichung von Merkmalen
  • Eine bedeutende Verbesserung wird bei Parsingtechniken durch die Vereinheitlichung von Merkmalen erreicht. Grundelemente, aus denen das Inputsignal aufgebaut sind, werden zu diesem Zweck mit Merkmalen versehen. Diese Merkmale spezifizieren ein Grundelement genauer. Hierzu werden die Terme aus den grammatischen Regeln ebenfalls mit Merkmalen versehen. Bei der Parsingprozedur werden die Merkmale der Grundelemente an den Merkmalen der entsprechenden Terme in den grammatischen Regeln geprüft. Die Merkmale können auch an Terme weitergegeben werden, die dann ihrerseits im Parsingprozess weiter an einer nächsten anwendbaren grammatischen Regel getestet werden. Die Vereinheitlichung von Merkmalen ermöglicht es, komplexere Strukturen mit Parsingtechniken zu verarbeiten.
  • Ein Beispiel für die Merkmalsvereinheitlichung wird beschrieben in dem Artikel "The Generalised LR Parser/Compiler V8-4: A software package for practical NL projects", veröffentlicht in Proceedings of the Coling-90, Helsinki 1990, von M. Tomita. Ein Nachteil des dort beschriebenen Verfahrens zur Merkmalsvereinheitlichung ist jedoch die Komplexität der Merkmalsverarbeitung. Obgleich ein Parser auf diese Weise in die Lage versetzt werden kann, komplexere Strukturen zu verarbeiten, ist er für die Nützlichkeit des Parsingverfahrens für praktische Zwecke sehr schädlich, da zu dem Parsingverfahren eine große Anzahl von Zusatzschritten hinzugefügt werden muss.
  • Kurzdarstellung der Erfindung
  • Aufgabe der Erfindung ist es, eine Vorrichtung zur Signalanalyse, die für die oben beschriebenen Anwendungsgebiete geeignet ist, dadurch zu verbessern, dass ein verbesserter und zweckdienlicherer Vereinheitlichungsmechanismus hinzugefügt wird.
  • Das Prinzip der Erfindung beruht in erster Linie auf der Erkenntnis, dass die Vereinheitlichung von Merkmalen effizienter dadurch erreicht werden kann, dass Merkmale gruppenweise in die Grammatik einbezogen werden und dann die Vereinheitlichung an den Merkmalsgruppen durchgeführt wird.
  • In einer Vorrichtung der im Oberbegriff angegebenen Art umfasst die Grammatik erfindungsgemäß zu diesem Zweck einen Satz vordefinierter Merkmale, die in einer geordneten. Reihe angeordnet und in Merkmalsgruppen gesammelt sind, die in Bezug auf die geordnete Reihe codiert sind, wobei Termen der Grammatik Merkmalsgruppen als deklarierte Merkmalsgruppen zugewiesen werden; die Umwandlungseinheit umfasst eine Merkmalsextraktionseinrichtung zum Ableiten von Merkmalen, die in dem Satz vordefinierter Merkmale enthalten sind, aus jedem Grundelement, zum Kombinieren der aus jedem Grundelement abgeleiteten Merkmale, um aktuelle Merkmalsgruppen entsprechend den deklarierten Merkmalsgruppen zu bilden, die zu dem entsprechenden Term aus der Grammatik gehören, und zum Zuweisen der aktuellen Merkmalsgruppe an die normierten Grundelemente, die den Grundelementen entsprechen; die Mustererkennungseinheit umfasst eine Einrichtung zur Vereinheitlichung der codierten aktuellen und deklarierten Merkmalsgruppen, eine Einrichtung zum Zuweisen einer Verletzungswertzahl an die syntaktische Analyse auf der Grundlage der Vereinheitlichung der aktuellen und deklarierten Merkmalsgruppen; und dass die Vorrichtung eine Einrichtung zum Abbrechen des Parsingprozesses aufweist, wenn die Verletzungswertzahl einen Schwellenwert übersteigt, sowie eine Einrichtung zum Anheben des Schwellenwertes, falls die Verletzungswertzahl den Schwellenwert übersteigt, und eine Einrichtung zum Neustarten des Parsingprozesses.
  • Die Verarbeitung von Merkmalen zum Zweck der Vereinheitlichung kann nun wesentlich schneller ausgeführt werden, weil die Merkmale nicht mehr getrennt verarbeitet zu werden brauchen.
  • Außerdem wird die Gruppenverarbeitung von Merkmalen durch einen Verletzungsmechanismus weiter ausgebildet, der Verletzungen der Merkmale aufzeichnet. Wenn der Parser ein Analyseergebnis liefert, ist es auf diese Weise möglich, in der Analyse anzugeben, welche Grundelemente nicht den geforderten Merkmalen genügen.
  • Darüber hinaus wird der Parsingprozess abgebrochen, wenn die Verletzungswertzahl einen gegebenen Schwellenwert übersteigt. Der Schwellenwert wird dann auf einen Wert erhöht, der durch die Summe aus der Verletzungswertzahl und einem konstanten Wert bestimmt ist. Danach beginnt der Parsingprozess erneut. In einer Anzahl von Parsingläufen erhält man folglich ein oder mehrere Analyseergebnisse, die mit einer Verletzungswertzahl versehen sind. Die erhaltenen Analyseergebnisse sind genau diejenigen Analyseergebnisse, die innerhalb einer vorgegebenen Grenze die kleinstmögliche Verletzungswertzahl haben. Diese Schritte führen zu einem adaptiven Schwellenwertmechanismus, so dass die Anwendbarkeit des Parsingmechanismus für die Signalanalyse bedeutend erweitert wird. Die Verletzungen der Merkmale sind bis zu einem wahlweise einstellbaren Ausmaß erlaubt. Zu analysierende Signale können von den grammatischen Regeln abweichen aber dennoch analysiert und erforderlichenfalls korrigiert werden. Das Ausmaß, in dem Abweichungen von der Vorrichtung toleriert werden, ist je nach Zweck der Vorrichtung einstellbar. Der Parsingmechanismus, der seiner Natur nach starr ist, ist infolge dieser Schritte sehr flexibel geworden.
  • Eine weitere Verbesserung der Vorrichtung gemäß der Erfindung wird dadurch erreicht, dass die Vorrichtung eine Korrektureinrichtung aufweist, die aktiviert wird, wenn die Verletzungswertzahl von null verschieden ist.
  • Bei diesem Korrekturschritt kann vorteilhaft von den Verletzungen Gebrauch gemacht werden, die im Analyseergebnis angegeben werden.
  • Eine weitere Verbesserung der Vorrichtung gemäß der Erfindung wird dadurch erreicht, dass Merkmalsgruppen durch eine Binärzahl repräsentiert werden. Die Binärcodierung von Merkmalsgruppen führt zu einer äußerst schnellen Verarbeitung und kompakten Speicherung.
  • Kurzbeschreibung der Zeichnungen
  • Die Erfindung wird nun anhand der Zeichnungen näher beschrieben, in denen zeigen:
  • Fig. 1 ein Blockdiagramm einer Vorrichtung gemäß der Erfindung;
  • Fig. 2 ein Flussdiagramm einer Hauptroutine einer Parsingeinheit;
  • Fig. 3 ein Flussdiagramm einer Parsingroutine;
  • Fig. 4 ein Flussdiagramm einer Aktor-Routine;
  • Fig. 5 ein Flussdiagramm einer Verschiebungsroutine;
  • Fig. 6 ein Flussdiagramm einer Reduktionsroutine;
  • Fig. 7 ein Flussdiagramm einer Vereinheitlichungsroutine;
  • Fig. 8 ein Flussdiagramm eines Verfahrens zum Umwandeln eines Pixelmusters in eine Kette von Grundelementen;
  • Fig. 9a bis 9d Definitionen von Endtermen und Merkmalen, die für Anwendungen im Bereich der Zeichenerkennung geeignet sind, sowie eine Kette von Grundelementen;
  • Fig. 10 eine Kette von Grundelementen; und
  • Fig. 11 ein Flussdiagramm eines Verfahrens zur Ableitung eines Schemas von Merkmalsindikatoren.
  • Beschreibung der Ausführungsformen
  • Fig. 1 zeigt eine Vorrichtung gemäß der Erfindung. Ein zu analysierendes Signal S wird einer Umwandlungseinheit 101 zugeführt. Die Umwandlungseinheit wandelt das Signal S in eine Folge P von Grundelementen und eine Folge L von normierten Grundelementen und aktuellen Merkmalsgruppen um. Diese lexikalisierte Folge L wird dann, erforderlichenfalls zusammen mit der Folge P der Grundelemente der Parsingeinheit 102 zugeführt. Die Parsingeinheit 102 liest jeweils einen Teil der Folge ein und verifiziert, ob der eingelesene Teil, der eine Kette von normierten Grundelementen und aktuellen Merkmalsgruppen enthält, einer Grammatik genügt. Diese Grammatik hat die Form einer Anzahl von Tabellen, die im Speicher 103 gespeichert sind. Wenn die Kette der Grammatik genügt, werden von der Parsingeinheit eine oder mehrere Analyseergebnisse A ausgegeben. Ein Analyseergebnis ist eine strukturelle Beschreibung - wie von der Grammatik zugelassen - des Teils des Inputsignals, der der eingelesenen Kette entspricht. Falls die Verifikation zeigt, dass vorgeschriebene Merkmale verletzt worden sind, erhöht die Parsingeinheit eine Verletzungswertzahl. In einem solchen Fall werden die gefundenen Analyseergebnisse von der Parsingeinheit zusammen mit der zugehörigen Verletzungswertzahl ausgegeben. Die von der Parsingeinheit ausgegebenen Analyseergebnisse sind dann für die weitere Verarbeitung verfügbar, zusammen mit dem ursprünglichen Signal S, der Folge P der Grundelemente und der lexikalisierten Folge L.
  • Eine Modifikation der Vorrichtung erhält man dadurch, dass sie mit einer Korrektureinheit 104 ausgestattet wird, die in Fig. 1 gestrichelt eingezeichnet ist. Wenn die Parsingeinheit keine Lösung liefert oder wenn sie nur Lösungen mit einer von null verschiedenen Verletzungswertzahl liefert und somit festgestellt wurde, dass Merkmale verletzt wurden, wird diese Korrektureinheit aufgerufen, so dass ein Korrekturmechanismus aktiviert wird. Der Korrekturmechanismus kann auf unterschiedliche Weisen aufgebaut sein. Gemäß einer ersten Ausführungsform erfolgt die Korrektur durch Modifikation der von der Parsingeinheit ausgegebenen Analyseergebnisse. Gemäß einer zweiten Ausführungsform werden die Grundelemente anhand von Informationen korrigiert, die von der Parsingeinheit ausgegeben werden und sich auf verletzte Merkmale beziehen: die Vorrichtung liefert dann eine korrigierte Folge P' von Grundelementen. Erforderlichenfalls wird diese korrigierte Folge P' von Grundelementen ihrerseits der Parsingeinheit zugeführt.
  • In einer nachfolgenden Modifikation weist die Vorrichtung auch eine Warneinrichtung 105 auf, die von der Parsingeinheit aktiviert wird. Wenn die Parsingeinheit feststellt, dass das eingegebene Signal S übermäßig von den in der Grammatik spezifizierten Regeln abweicht, so gibt die Warneinrichtung das Signal W aus.
  • Wenn die Vorrichtung als ein optisches Zeichenerkennungssystem aufgebaut ist, so enthält die Umwandlungseinheit 101 auch einen fotoelektrischen Wandler zum Umwandeln des eingegebenen optischen Signals S mit Hilfe eines Abtastmechanismus in ein elektrisches Signal, das dann in die Folge P von Grundelementen zerlegt wird. Die Grundelemente werden auf normierte Grundelemente abgebildet und - mit aktuellen Merkmalsgruppen versehen - der Parsingeinheit zugeführt. Anhand der Grammatik bestimmt die Parsingeinheit, welches Muster von Grundelementen ein bestimmtes Zeichen spezifiziert, und sie exportiert die nacheinander erkannten Zeichen.
  • Wenn die Vorrichtung als ein Prüf- und Korrektursystem für Grammatik aufgebaut ist, so ist das eingegebene Signal eine Folge von Textdaten. Die Umwandlungseinheit 101 zerlegt diese Datenfolge in Wörter und bestimmt dann die normierten Grundelemente (linguistische Kategorien) und aktuellen Merkmalsgruppen (linguistische Eigenschaften). Die Parsingeinheit liest dann die lexikalisierte Folge Satz für Satz ein und überprüft, ob jeder Satz der durch die Grammatik angegebenen Syntax genügt. Im Fall etwaiger Verletzungen modifiziert die Korrektureinheit die Grundelemente anhand der festgestellten Merkmalsverletzungen. Exportiert wird dann die korrigierte Folge P' von Grundelementen.
  • Es ist möglich, das vorbeschriebene optische Spracherkennungssystem dadurch zu verbessern, dass die erkannten Zeichen einer Rechtschreibkorrektureinheit zugeführt werden, die vorteilhafterweise mit dem beschriebenen Prüf- und Korrektursystem für die Grammatik ausgerüstet ist.
  • Es ist zu bemerken, dass die Nützlichkeit der Vorrichtung nicht auf die zur vorbeschriebenen Anwendungsgebiete beschränkt ist. Die Vorrichtung kann mit Vorteil in all jenen Bereichen eingesetzt werden, in denen Signale zur Erkennungs- oder Verifikationszwecken analysiert werden müssen und eine a-Priori- Anforderung darin besteht, dass diese Signale bestimmten Regeln genügen. Das Verfahren der Vorrichtung wird nun unter Bezugnahme auf die Fig. 1 bis 8 er läutert werden.
  • Ein zu analysierendes Signal S wird der Umwandlungseinheit 101 gemäß Figur zugeführt, die das Signal in eine Folge P von Grundelementen und eine Folge L von normierten Grundelementen und aktuellen Merkmalsgruppen umwandelt. Die von der Umwandlungseinheit anzuwendenden Verfahren haben je nach Anwendungsgebiet unterschiedliche Ausgestaltungen. Eine Ausgestaltung für die optische Zeichenerkennung wird nachstehend näher erörtert. Das Verfahren der Parsingeinheit wird nun unter Bezugnahme auf Fig. 2 bis 7 erläutert. Die Hauptroutine der erfindungsgemäßen Parsingeinheit wird im einzelnen unter Bezugnahme auf das Flussdiagramm nach Fig. 2 erläutert. Beginnend mit der Startposition 201 werden in Schritt 202 die Variablen: "result", "threshold" und "new-threshold" auf null initialisiert, und die Variable "delta-threshold" wird initialisiert auf DELTA. In Schritt 203 wird ein Teil der lexikalisierten Folge L eingelesen, die eine Folge normierter, mit aktuellen Merkmalsgruppen versehener Grundelemente enthält, und ein Endsymbol $ an Kette angefügt. Dann wird in Schritt 204 die Parsingroutine aufgerufen. Die Parsingroutine wird nachstehend im einzelnen unter Bezugnahme auf Fig. 3 erläutert werden. Die Parsingroutine verifiziert, ob eine eingelesene Kette der Grammatik genügt, die im Speicher in der Form einer Anzahl von Tabellen gespeichert ist. Wenn dies der Fall ist, werden ein oder mehrere Analyseergebnisse in der Form einer Baumstruktur ausgegeben, wobei jedes Analyseergebnis eine gesonderte Wurzel hat, und die Variable "result" enthält Zeiger auf diese Wurzel-Knoten. Wenn die Parsingroutine kein Analyseergebnis gefunden hat, enthält die Variable "result" den Wert null. In Schritt 205 wird überprüft, ob "result" einen von null verschiedenen. Wert hat. Wenn nicht (N), wird das Verfahren mit Schritt 206 fortgesetzt, in dem überprüft wird, ob die Variablen "threshold" einen Wert hat, der größer ist als ein vorbestimmter Wert MAX. Wenn dies der Fall ist (Y) erreicht die Hauptroutine den Endzustand 207. In diesem Zustand war die Parsingeinheit nicht in der Lage, ein Analyseergebnis zu finden, und das eingegebene Signal muss verworfen werden, weil es nicht den vorgeschriebenen Regeln entspricht, zumindest nicht innerhalb der Grenzen der Anzahl von Verletzungen, die durch den Wert von MAX zugelassen werden. Die Tatsache, dass die Verifikation nicht erfolgreich ist, kann weiter verwendet werden, um zum Beispiel eine Warneinrichtung zu aktivieren. Wenn die Variable "threshold" nicht den Wert MAX übersteigt (N), so wird der Variablen "threshold" in Schritt 208 die Summe aus "new-threshold" und "delta-threshold" zugewiesen. Während der Durchführung der Parsingroutine ist die Verletzungswertzahl der Variablen "new-threshold" zugewiesen worden. "delta-threshold" hat einen voreingestellten Wert. In einer kleinen Anzahl von Schritten in Bezug auf die Situation, in der die variable "threshold" jeweils um denselben Schritt erhöht wird, werden somit Analyseergebnisse mit einer in der gegebenen Situation minimalen Anzahl von Verletzungen und mit einer gewissen Spreizung in der Anzahl von Verletzungen gefunden, wobei diese Spreizung durch den Wert "delta-threshold" bestimmt ist. Nach der Ausführung von Schritt 208 wird die Parsingroutine erneut aufgerufen. Wenn in Schritt 205 die Ergebnisvariable "result" einen von null verschiedenen Wert hat (Y), wird in Schritt 209 überprüft, ob die Verletzungswertzahl gleich null ist. Wenn nicht (N), wird in Schritt 210 eine Korrekturroutine aufgerufen. Die Ausführungsform der Korrekturroutine ist vom Anwendungsgebiet abhängig. Vorteilhafterweise kann die Korrekturroutine von Analyseergebnissen Gebrauch machen, die von der Parsingroutine ausgegeben wurden und die diejenigen Reduktionsschritte angeben, in denen Verletzungen der Regeln gefunden wurden. Die Hauptroutine der Parsingeinheit erreicht dann den Endzustand 211, wonach die erhaltenen Analyseergebnisse und die korrigierten Signale für die weitere Verarbeitung verfügbar sind. Wenn in Schritt 209 die Anzahl von Verletzungen gleich null ist (Y), so wird der Endzustand 211 sofort erreicht.
  • Fig. 3 zeigt eine Ausführungsform der Parsingroutine. Beginnend mit der Startposition 301 werden in Schritt 302 der Grundelementzähler i, der Zähler id, der Verletzungszähler, der graph-strukturierte Stapel G und der Analysebaum T initialisiert, und das Element v0 wird der Menge U0,0:U0,0 {v0} hinzugefügt. Dieses Element v0 erhält den Zustand s = 0. Ebenso wird in diesem Schritt das erste Grundelement, das mit lexikalischen Daten versehen ist (normiertes Grundelement, aktuelle Merkmalsgruppen) aus der Kette gelesen. In Schritt 303 wird dann der Zähler j auf 0 initialisiert, die Mengen R, Re und Q werden als leere Mengen initialisiert, und die Menge A wird gleich U0,0:A = {v0} gemacht. In Schritt 304 wird dann überprüft, ob A eine leere Menge ist. Wenn nicht (N), wird in Schritt 305 die Aktor-Routine aufgerufen. Falls doch (Y), wird in Schritt 306 überprüft, ob R eine leere Menge ist. Wenn nicht (N), wird in Schritt 307 die Reduktionsroutine aufgerufen. Falls doch (Y), wird in Schritt 308 überprüft, ob Re eine leere Menge ist. Wenn nicht, wird die E-Reduktionsroutine aufgerufen. Falls doch, wird Schritt 310 erreicht. Ähnlich wird Schritt 310 nach Ausführung eines der Schritte 305, 307 und 309 erreicht. Die Schritte 305 und 307 sind im einzelnen in Fig. 4 bzw. Fig. 6 gezeigt. Schritt 309, die, E-Reduktionsroutine, ist nicht detailliert dargestellt worden, doch die Modifikationen im Vergleich zum Stand der Technik, die erforderlich sind, um diese Routine für die Anwendung in der Erfindung geeignet zu machen, ähneln den Änderungen an der Reduktionsroutine, die im einzelnen in Fig. 6 dargestellt ist. In Schritt 310 wird überprüft, ob die Mengen A, R und Re alle leer sind. Wenn nicht (N), kehrt das Verfahren zu Schritt 304 zurück. Falls doch (Y), wird in Schritt 311 die Verschiebungsroutine aufgerufen. Nach Ausführung der Verschiebungsroutine wird das Verfahren mit Schritt 312 fortgesetzt, wo der Grundelementzähler i um 1 erhöht wird. Dann wird in Schritt 313 überprüft, ob Ui,j leer ist. Wenn ja (Y), wird der Ergebnisvariablen in Schritt 314 der Wert 0 zugewiesen, und dies bedeutet, dass kein Analyseergebnis gefunden werden kann, wonach die Endposition 315 erreicht ist. Wenn Ui,j nicht leer ist (N), wird in Schritt 316 überprüft, ob ein nachfolgendes Grundelement oder das Endsymbol vorhanden ist. Wenn ja (Y), wird es in Schritt 318 gelesen. Falls dies nicht der Fall ist (N), werden die erhaltenen Analyseergebnisse in Schritt 317 ausgeschrieben. Die Parsingroutine erreicht dann die Endposition 315, wonach das Verfahren mit der Durchführung der Parsingroutine fortfährt.
  • Fig. 4 zeigt eine Ausführungsform der Aktor-Routine. Beginnend mit der Startposition 401 wird in Schritt 402 ein aktueller Scheitelpunkt bestimmt, indem hierzu ein Element aus der Menge A genommen wird. Dann wird in Schritt 403 eine Aktionstabelle konsultiert. Diese Aktionstabelle ist aus der definierten Grammatik abgeleitet und spezifiziert Aktionen, die für einen gegebenen Zustand s und einen in der Grammatik definierten Term gefordert sind. Der Eintrag in der Aktionstabelle bestimmt, welche Aktion zu dem aktuellen Scheitelpunkt vc gehört. In Schritt 404 wird dann die erste für diesen Eintrag spezifizierte Aktion eingelesen. Dann wird in Schritt 405 überprüft, ob die Aktion "akzeptieren" (acc) spezifiziert wurde. Wenn ja (Y), wird vc in Schritt 406 der Variablen r zugewiesen, und die Ergebnisvariable wird um den Wert von id erhöht. Falls nicht (N), wird in Schritt 407 überprüft, ob die Aktion "verschieben s" (sh; shift) spezifiziert wurde. Wenn dies der Fall ist (Y), wird das Element < vc, s, Kategorie, Grundelement> zu der Menge Q hinzugefügt. Wenn nicht (N), wird in Schritt 409 überprüft, ob die Aktion "reduziere p" (re) spezifiziert wurde. Wenn dies der Fall ist (Y), wird in Schritt 410 überprüft, ob die Regel p eine leere Erzeugungsregel ist. Wenn die Regel p in der Tat eine leere Erzeugungsregel ist (Y), wird das Element < vc, p, Kategorie, Grundelement> zu der Menge Re hinzugefügt. Wenn die Regel p keine leere Erzeugungsregel ist (N), wird der Schritt 412 ausgeführt, indem ein Element < vc, x, p, Kategorie, Grundelement> für jeden direkten Nachfolger x von vc in G zu der Menge R hinzugefügt wird. Wenn in Schritt 409 gefunden wurde, dass die Aktion "reduziere p" nicht spezifiziert wurde (N), so wird der Schritt 413 ausgeführt. Ebenso wird Schritt 413 nach den Schritten 406, 408, 411 und 412 ausgeführt. In Schritt 413 wird überprüft, ob in der Aktionstabelle für den in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion spezifiziert ist. Wenn dies der Fall ist (Y), so wird diese Aktion in Schritt 414 eingelesen, wonach das Verfahren mit Schritt 405 fortgesetzt wird. Wenn es nicht der Fall ist (N), wird in Schritt 415 überprüft, ob im Fall des aktuellen Grundelements ein nachfolgender Endterm, d. h. ein nachfolgendes normiertes Grundelement anwendbar ist. Wenn ja (Y), wird dieser nachfolgende Endterm in Schritt 416 gelesen, und das Verfahren wird erneut mit Schritt 403 fortgesetzt. Hierdurch wird die Verarbeitung von zweideutigen Eingangssignalen ermöglicht, d. h. von Grundelementen, denen mehr als eine Kategorie zugewiesen werden kann und die demgemäß auf mehr als ein normiertes Grundelement oder mehr als einen Endterm abgebildet werden können. Wenn in Schritt 415 gefunden wird, dass es im Fall des aktuellen Grundelements keinen nachfolgenden Endterm gibt, so erreicht die Aktor-Routine ihre Endposition 417, und das Verfahren kehrt zu Schritt 305 der Parsingroutine zurück.
  • Fig. 5 zeigt eine Ausführungsform der Verschiebe-Routine. Beginnend mit der Startposition 501 wird die Menge Ui + 1,0 in Schritt 502 als leere Menge initialisiert. Dann wird in Schritt 503 ein Element aus Q genommen. Dieses Element hat einen Zustand, der anschließend mit s bezeichnet wird. In Schritt 504 wird dann der Zähler id um 1 erhöht, und ein Knoten mit der Kennung id wird dem Analysebaum T hinzugefügt. Dann werden in Schritt 505 zwei Knoten w und x zu dem graph-strukturierten Stapel G hinzugefügt, auf der Grundlage des in Schritt 503 aus der Menge Q ausgewählten Elements, wobei der Knoten w das Etikett s und der Knoten x das Etikett id hat, außerdem eine Kante von w nach x und eine Kante von x zu dem Knoten, der in dem aus der Menge Q ausgewählten Element angegeben ist. In Schritt 506 erhält w das Etikett s und wird zu der Menge Ui + 1,0 hinzugefügt. In Schritt 507 wird dann überprüft, ob Q noch ein nachfolgendes Element hat. Wenn ja (Y) wird dieses Element in Schritt 508 ausgewählt, und auf dessen Grundlage werden dann die Schritte 505 und 506 ausgeführt. Wenn Schritt 507 zeigt, dass kein nachfolgendes Element vorhanden ist (N), erreicht die Verschiebe-Routine ihre Endposition 509 und das Verfahren kehrt zu Schritt 311 der Parsingroutine zurück.
  • Fig. 6 zeigt eine Ausführungsfont der Reduktionsroutine gemäß der Erfindung. Beginnend mit der Startposition 601 wird in Schritt 602 ein Element aus der Menge R genommen. Der linke Teil der Regel, die durch das in Schritt 602 bestimmte Element angegeben wird, wird in Schritt 603 der Variablen N zugewiesen. Dann wird in Schritt 604 geprüft, ob die angegebene Regel Merkmale enthält. Dies geschieht durch Abfrage einer Merkmalstabelle, die im Speicher gespeichert ist und aus der Grammatik abgeleitet ist. Wenn dies der Fall ist (Y), wird in Schritt 605 eine Vereinheitlichungsroutine aufgerufen. Nach Durchführung der Vereinheitlichungsroutine, bei der ein Verletzungszähler aktualisiert wird, wird in Schritt 606 überprüft, ob der Verletzungszähler "threshold" übersteigt. Wenn ja (Y), wird in Schritt 607 geprüft, ob die Variablen "threshold" und "new-threshold" gleich sind. Wenn ja (Y), wird in Schritt 609 der Wert des Verletzungszählers der Variablen "new-threshold" zugewiesen, wonach die Endposition 610 erreicht ist. Wenn es nicht der Fall ist (N), wird in Schütt 608 geprüft, ob die Variable "new-threshold" den Verletzungszähler übersteigt. Wenn ja (Y), wird ebenfalls der Schritt 609 ausgeführt, wonach die Endposition 610 erreicht ist. Wenn in Schritt 608 gefunden wird, dass die Variable "new-threshold" den Verletzungszähler (N) nicht übersteigt, so wird die Endposition 610 der Reduktionsroutine direkt erreicht. Bei Erreichen der Endposition 610 der Reduktionsroutine kehrt das Verfahren zu Schritt 307 der Parsingroutine zurück. Da nichts wirklich reduziert worden ist, erreicht auch die Parsingroutine ihre Endposition 315, und da die Menge Ui,j leer ist, wird der Variablen "result" der Wert 0 zugewiesen. Dies führt dazu, dass in der Hauptroutine die Schwellenwerte angehoben werden und die Parsingroutine erneut aufgerufen wird.
  • Wenn in Schritt 604 festgestellt wird, dass die Regel keine Merkmale enthält (N) oder wenn Schritt 606 zeigt, dass der Verletzungszähler nicht die Variable "threshold" übersteigt, so wird die Reduktionsroutine mit Schritt 611 fortgesetzt. Schritt 611 bestimmt all die Knoten in dem graph-strukturierten Stapel G, für die es einen Pfad mit der Länge 2 p - 2 von xc nach y gibt, wobei p die Anzahl von Termen des rechten Teils der Regel p ist. In Schritt 612 wird als erstes y genommen und der Variablen yc zugewiesen. In Schritt 613 wird dann ein Vektor L bestimmt, indem die id's genommen werden, die zu den Termen aus dem rechten Teil der Regel für die Reduktion gehören. Schritt 614 bestimmt dann all die Zustände s, für die es in G einen solchen Knoten w gibt, dass w ein direkter Nachfolger von yc ist und für die der Zustand s auch in dem Eintrag einer "Goto"-Tabelle gefunden werden kann, wobei ein solcher Eintrag bestimmt ist durch den zu w gehörenden Zustand und den Term, der mit dem linken Teil in der aktuellen Regel übereinstimmt. Die "Goto"-Tabelle ist im Speicher abgelegt und aus der Grammatik abgeleitet. In Schritt 615 wird dann ein erster Zustand s genommen und der Variablen sc zugewiesen. In Schritt 616 wird eine Menge W erzeugt, die als Elemente all die Knoten w hat, die in Schritt 614 bestimmt wurden. In Schritt 617 wird dann überprüft, ob die Menge Ui,j ein Element u enthält, das den Zustand sc hat. Wenn ja (Y), überprüft Schritt 619, ob es in dem graph-strukturierten Stapel G bereits eine Kante von u nach z gibt, so dass Elemente aus W direkte Nachfolger von z sind. Wenn dies der Fall ist (Y), wird dann das id, auf das z verweist, in Schritt 620 zu dem Vektor L hinzuaddiert. Wenn die in Schritt 619 aufgestellte Bedingung nicht erfüllt ist (N), wird der Schritt 621 ausgeführt. In Schritt 621 wird der Zähler id um 1 erhöht, ein Knoten, der mit dem in Schritt 605 bestimmten Verletzungszähler und mit Verweisungen auf direkt nachfolgende Knoten versehen ist, wird dem Analysebaum T hinzugefügt, zwei Knoten, ein Knoten u mit dem Etikett sc und ein Knoten z mit dem Etikett id werden G hinzugefügt, sowie eine Kante von u nach z und Kanten von z nach all den Knoten w, die in W angegeben sind. Schritt 622 überprüft dann, ob u mit dem Etikett sc in der Menge A erwähnt wird. Wenn nicht (N), wird Schritt 623 ausgeführt, indem für jedes q, für das die vorliegende Regel keinen leeren rechten Teil hat und für das im Eintrag der Aktionstabelle für den zu u gehörenden Zustand und den zu der Kategorie gehörenden Endterm eine Reduktionsaktion spezifiziert ist, ein Element < u, z, q, Kategorie, Grundelement> zu der Menge R hinzugefügt wird. Falls doch (Y), schreitet das Verfahren mit der Ausführung des Schrittes 624 fort. Dieser Schritt wird auch nach der Ausführung des Schrittes 620 und nach der Ausführung des Schrittes 623 ausgeführt.
  • Wenn die in Schritt 617 aufgestellten Bedingungen nicht erfüllt sind (N), wird Schritt 618 ausgeführt. In Schritt 618 wird der Zähler id um 1 erhöht, ein Knoten mit dem in Schritt 605 bestimmten Verletzungszählwert und mit Verweisungen auf direkt nachfolgende Knoten wird dem Analysebaum T hinzugefügt, zwei Knoten, ein Knoten u mit dem Etikett sc und ein Knoten z mit dem Etikett id, werden G hinzugefügt, und ebenso eine Kante von u nach z und Kanten von z zu all den Knoten w, die in W genannt sind; u wird auch zu A und Ui,j hinzugefügt.
  • Das Verfahren wird dann mit der Ausführung des Schrittes 624 fortgesetzt, bei dem überprüft wird, ob es in Schritt 614 einen nachfolgenden Zustand s gibt. Wenn dies der Fall ist (Y), wird dieser Zustand in Schritt 625 an sc zugewiesen, und das Verfahren schreitet mit der Ausführung des Schrittes 616 fort. Andernfalls (N) überprüft Schritt 626, ob in Schritt 611 ein nachfolgendes y bestimmt wurde. Wenn ja (Y), weist Schritt 627 dieses nachfolgende y an yc zu, und das Verfahren schreitet mit der Ausführung des Schrittes 613 fort. Wenn nicht (N), erreicht die Reduktionsroutine die Endposition 628, und das Verfahren kehrt zu Schritt 307 der Parsingroutine zurück.
  • Fig. 7 zeigt ein Ausführungsbeispiel der erfindungsgemäßen Vereinheitlichungsroutine. Diese Routine wird in Schritt 605 der Reduktionsroutine aufgerufen. Die Routine kann in ähnlicher Weise durch die E-Reduktionsroutine aufgerufen werden (Schritt 309 der Parsingroutine), doch wird dies hier nicht näher dargestellt. Die Vereinheitlichungsroutine benutzt Merkmalstabellen, die im Speicher abgelegt und aus der Grammatik abgeleitet sind. Binärcodierte Merkmalsgruppen werden im folgenden als "Merkmalsindikatoren" bezeichnet werden.
  • Beginnend mit der Startposition 701 bestimmt Schritt 702 validierte Merkmalsindikatoren, indem für jeden deklarierten Merkmalsindikator des rechten Teils der logische Querschnitt des letzteren Merkmalsindikators mit dem entsprechenden aktuellen Merkmalsindikator bestimmt wird. Schritt 702 überprüft dann, ob jeder validierte Merkmalsindikator, der in dem vorhergehenden Schritt erhalten wurde, von 0 verschieden ist. Wenn dies nicht der Fall ist (N), so bedeutet dies, dass in der zugeführten Kette aus Grundelementen, Endtermen und Merkmalen Merkmale fehlen. In diesem Fall wird Schritt 704 ausgeführt, indem der Verletzungszähler um eine bestimmte Zahl erhöht wird, wenn ein validierter Merkmalsindikator gleich null ist. Diese Zahl kann von dem betreffenden Merkmal abhängig sein, was einen gewichteten Verletzungszähler ergibt. Schritt 705 wird dann nach diesem Schritt ausgeführt und ebenso, wenn Schritt 703 zeigt, dass all die validierten Merkmalsindikatoren von null verschieden sind. In Schritt 705 wird für jede Gruppe von identischen deklarierten Merkmalsindikatoren, die im rechten Teil vorhanden sind, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt all der entsprechenden validierten Merkmalsindikatoren genommen wird. Schritt 706 überprüft dann, ob all die vereinheitlichten Merkmalsindikatoren, die so erhalten wurden, von null verschieden sind. Wenn dies nicht der Fall ist (N), so bedeutet dies, dass es keine wechselseitige Übereinstimmung zwischen den Merkmalen in der eingegebenen Kette gibt, obgleich die Regeln dies erfordern. In diesem Fall wird in Schritt 707 der Verletzungszähler für jeden vereinheitlichten Merkmalsindikator, der gleich null ist, um eine bestimmte Zahl erhöht. Auch in diesem Fall ist es möglich, gewichtete Zahlen zu verwenden. Nach Schritt 707 und ebenso, wenn Schritt 706 zeigt, dass all die erhaltenen vereinheitlichten Merkmalsindikatoren von null verschieden sind (Y), wird der Schritt 708 ausgeführt. Schritt 708 bestimmt einen Merkmalsindikator Ftemp1 durch Bestimmung der Kombination all der in Schritt 706 erhaltenen Merkmalsindikatoren zusammen mit validierten Merkmalsindikatoren, die deklarierten Merkmalsindikatoren entsprechen, die einmal auf der rechten Seite auftreten. Schritt 709 bestimmt dann einen Merkmalsindikator Ftemp2, indem die Negation der Kombination all der deklarierten Merkmalsindikatoren auf der rechten Seite genommen wird. Schritt 710 bestimmt dann einen aktuellen Merkmalsindikator für jeden Merkmalsindikator, der auf der linken Seite deklariert ist. Wenn der auf der linken Seite deklarierte Merkmalsindikator auch auf der rechten Seite deklariert ist, so wird der entsprechende aktuelle Merkmalsindikator bestimmt, indem die Kombination aus Ftemp1 und Ftemp2 mit dem deklarierten Merkmalsindikator geschnitten wird. Wenn der auf der linken Seite deklarierten Merkmalsindikator auf der rechten Seite nicht deklariert ist, wird der aktuelle Merkmalsindikator erhalten, indem der Wert des deklarierten Merkmalsindikators übernommen wird. Schritt 711 überprüft dann, ob all die in Schritt 710 erhaltenen Merkmalsindikatoren von null verschieden sind. Wenn dies nicht der Fall ist (N), so bedeutet dies, dass Merkmale nicht in Übereinstimmung mit den Regeln weitergegeben werden können. In diesem Fall wird in Schritt 712 für jeden erhaltenen aktuellen Merkmalsindikator, der gleich null ist, der Verletzungszähler erhöht. Die Vereinheitlichungsroutine erreicht dann die Endposition 713. Wenn Schritt 711 zeigt, dass all die erhaltenen Merkmalsindikatoren von null verschieden sind (Y), so wird die Endposition 713 direkt erreicht, und das Verfahren kehrt zu Schritt 605 der Reduktionsroutine zurück.
  • Die Nützlichkeit des Verfahrens und der Vorrichtung wird nun anhand einer Anzahl von Beispielen erläutert werden.
  • In einem ersten Beispiel werden das Verfahren und die Vorrichtung zur Zeichenerkennung benutzt.
  • Es wird angenommen, dass ein optisches Signal S durch zeilenweises Abtasten eines bildtragenden Mediums mit einer Scanneinrichtung erhalten wird. Das Signal S wird durch einen fotoelektrischen Wandler, der in der Umwandlungseinheit 101 in Fig. 1 enthalten ist, in ein elektrisches Signal umgewandelt. Dieses Signal wird einem Schwellenwertvergleich unterzogen und in der Form eines Pixelmusters in einem Seitenpuffer gespeichert. Dieses Pixelmuster wird dann ausgelesen und in eine Folge P von Grundelementen und eine Folge L von mit Merkmalsgruppen versehenen normierten Grundelementen umgewandelt.
  • Eine mögliche Vorteilhafte Ausführungsform eines Verfahrens, das auszuführen ist, um ein solches Pixelmuster in eine Folge von Grundelementen umzuwandeln und diese Grundelemente zu lexikalisieren, ist in Fig. 8 gezeigt.
  • Beginnend mit der Startposition 801 wird das dem Wandler zugeführte Pixelmuster in Schritt 802 in Zeilen aufgeteilt. In Schritt 803 wird dann jede Zeile in eine Anzahl von Bitmapspalten aufgeteilt, die jeweils ein Pixel breit sind. Jede Bitmapspalte wird null oder mehr Pixelcluster enthalten. Schritt 804 bestimmt für jede Bitmapspalte die Anzahl von Pixelclustern, ihre Länge und ihre Position. In Schritt 805 werden dann die Bitmapspalten auf der Grundlage von Daten, die im vorhergehenden Schritt gewönnen wurden, mit einer Kategorie etikettiert, und zusammenhängende Spalten von derselben Kategorie werden kombiniert. Dabei ist es vorteilhaft, Spalten zu entfernen, die nicht kombiniert werden können, sofern es sich nicht um die Spalten handelt, in denen sich keine Pixelcluster befinden. In Schritt 806 wird dann jeder resultierenden Spalte, im folgenden als Grundelement bezeichnet, ein normiertes Grundelement zugewiesen, das ein Prototyp derjenigen Kategorie ist, auf deren Grundlage das Grundelement etikettiert wurde. Außerdem wird jede Spalte auf der. Grundlage der Geometrie der in jedem Grundelement enthaltenen Pixelcluster näher spezifiziert, durch Zuweisen von Merkmalen, die ebenfalls in der Grammatik enthalten sind. In Schritt 807 werden dann die mit Merkmalen versehenen normierten Grundelemente, wobei die Merkmale kombiniert werden, um Merkmalsgruppen zu bilden, die dann binär codiert werden, zu Ketten kombiniert, und die Ketten werden nacheinander der Parsingeinheit zugeführt, wonach die Endposition 808 erreicht ist.
  • Eine geeignete Auswahl normierter Grundelemente und Merkmale, zusammen mit der Grammatik, trägt wesentlich zur erfolgreichen Ausführung des Verfahrens bei. Eine geeignete Auswahl dieser Art ist in Fig. 9a-9b gezeigt. Es werden sechs Kategorien von Grundelementen unterschieden, entsprechend den folgenden normierten Grundelementen, die in Fig. 9a angegeben sind: leer (blank), vertikaler Balken (vertical bar), horizontaler Balken (horizontal bar), Doppel (double), Triple (triple) und Endzeichen (endmark). Die einem Grundelement zugewiesenen Merkmale werden bestimmt durch die geometrische Konfiguration der Pixelcluster, die in dem Grundelement enthalten sind. Beim Zuweisen der Merkmale wird von einer gedachten Schriftlinie und Grundlinie Gebrauch gemacht (siehe Fig. 9c). Schließlich wird ein Wortzwischenraum auf das abschließende Endzeichen abgebildet, und dies schließt die Kette ab, die der Parsingeinheit zuzuführen ist.
  • Ein Beispiel einer einfachen Grammatik, die zum Verarbeiten einer Anzahl der in Fig. 9a-9b gezeigten Endterme und Merkmale geeignet ist, ist in Tabelle 1 angegeben. Die vorliegende Grammatik ist geeignet zur Erkennung der Buchstaben "a", "h" und "n" und kann auch entscheiden, ob diese Buchstaben normal oder fett gedruckt sind (Gewicht: normal oder fett). Die angegebene Grammatik hat die Eigenschaft, dass sie keine getrennten Zeichen ausgibt, sondern ganze Wörter. Im Zusammenhang mit einer späteren Diskussion des Korrekturmechanismus wird sich zeigen, dass dies ein besonderer Vorteil ist. Tabelle 1
  • In dieser Grammatik sind sieben Merkmale definiert. Die zu den Termen der Grammatik gehörenden Merkmalsgruppen sind in Klammern hinter dem betreffenden Term angegeben. Eine Merkmalsgruppe ist explizit definiert, die Merkmalsgruppen, die nur ein Merkmal enthalten, sind als solche implizit definiert. Die Grammatik ist im Speicher in der Form der Aktionstabelle, der "Goto"-Tabelle und der Merkmalstabelle abgelegt, wie sie in Tabellen 2, 3 und 4 gezeigt sind. Tabelle 2 Tabelle 3 Tabelle 4
  • In Tabelle 4 entsprechen die Zeilen direkt den Regeln aus der in Tabelle 1 gezeigten Grammatik. Ein Klammerpaar entspricht einem Term aus einer grammatischen Regel. Zwischen einem Paar von Klammern befinden sich null, ein oder mehr binärcodierte Merkmalsgruppen, die zu dem betreffenden Term gehören. Die Art und Weise, in der die in der Grammatik definierten Merkmale in binärcodierte Merkmalsgruppen umgewandelt werden, wird später erörtert werden.
  • In dem Beispiel des Verfahrens, das nun im einzelnen dargestellt werden soll, wird angenommen, dass die Umwandlungseinheit der Parsingeinheit die folgende Kette aus mit aktuellen Merkmalsgruppen versehenen normierten Grundelementen zuführt:
  • double (CENTER) triple (CENTER), vbar (CENTER, BOLD) bl vbar (CENTER, BOLD) hbar (HIGH-CENTER) vbar (CENTER, BOLD) bl endmark
  • Die zugehörige Kette von Grundelementen ist in Fig. 9d gezeigt. Aus Gründen der Klarheit sind die Merkmalsgruppen nicht in binärcodierter Form gezeigt. Bei der Diskussion der Vereinheitlichungsroutine wird Binärcodierung verwendet werden.
  • Nach der Initialisierung der Variablen "result", "threshold", "delta-threshold" und "new-threshold" in Schritt 202 (Fig. 2) wird die von der Lexikalisierungseinheit gelieferte Kette eingelesen und in Schritt 203 durch ein Endsymbol $ abgeschlossen.
  • result = 0
  • threshold = 0
  • delta-threshold = 0
  • new-threshold = 0
  • Dann wird in Schritt 205 die Parsingroutine aufgerufen.
  • Beginnend mit der Starposition 301 (Fig. 3) werden die Zähler i, id, der Verletzungszähler der graph-strukturierte Stapel G und der Baum T in Schritt 302 initialisiert, und, das Element v0 wird zu der Menge U0,0 hinzugefügt.
  • i = 0
  • id = 0
  • Verletzungszähler = 0
  • G = 0
  • T = 0
  • U0,0 = {v0}
  • Ein Endterm und Merkmale, die zu dem ersten Grundelement ai gehören, werden ebenfalls in Schritt 302 gelesen.
  • Aktuelles Grundelement a0,
  • aktueller Endterm und Merkmale: double (CENTER)
  • Dann wird in Schritt 303 der Zähler j auf 0 initialisiert, die Mengen R, Re und Q werden als leere Mengen initialisiert, und A wird gleich U0,0 gemacht:
  • J = 0
  • R = Re = Q = {}
  • A = {v0}
  • In Schritt 304 wird überprüft, ob A eine leere Menge ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine aufgerufen wird.
  • Die Aktor-Routine ist in Fig. 4 dargestellt. Beginnend mit der Startposition 401 wird in Schritt 402 ein Element aus A entfernt, und dieses Element wird der aktuelle Knoten vc. In Schritt 403 wird dann die Aktionstabelle für den Endterm "double" und den Zustand 0 gelesen. Die Aktionstabelle, die aus der Grammatik abgeleitet ist, ist in Tabelle 2 gezeigt. Dies ergibt die Aktion "shift 7"(verschieben). In Schritt 405 wird überprüft, ob die Aktion "accept" (akzeptieren) ist. Dies ist nicht der Fall (N), so dass Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist der Fall, so dass in Schritt 408 < v0, 7, double, a0> als ein Element zu der Menge Q hinzugefügt wird.
  • Q = Q{< v0,7 double, a0> }
  • Schritt 413 überprüft dann, ob in dem Eintrag, der in Schritt 403 bestimmt wurde, eine nachfolgende Aktion auftritt. Dies ist nicht der Fall (N), wonach dann in Schritt 415 überprüft wird, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor- Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 der Parsingroutine zurückkehrt.
  • Nachdem nun der Schritt 305 (Fig. 3) abgearbeitet worden ist, fährt das Verfahren mit Schritt 310 fort.
  • Hier wird überprüft, ob die Mengen A, R und Re alle leer sind. Dies ist der Fall (Y), so dass Schritt 311 die Verschiebe-Routine aufruft.
  • Die Verschiebe-Routine ist im einzelnen in Fig. 5 gezeigt. Beginnend mit der Startposition 501 wird in Schritt 502 die Menge U1,0 als leere Menge initialisiert.
  • U1,0 = {}
  • In Schritt 503 wird dann ein Zustand aus einem Tupel aus Q genommen.
  • s = 7 aus dem Element < v0,7 double, a0>
  • In Schritt 504 wird dann der Zähler id um 1 erhöht, und in T wird ein Knoten mit dem Etikett id erzeugt und mit den zu ai gehörenden lexikalischen Daten versehen.
  • id = 1
  • T: 10 (*double [CENTER] a0)
  • In Schritt 505 wird dann folgendes zu G hinzugefügt: ein Knoten w mit dem Etikett s = 7, ein Knoten x mit dem Etikett id = 1, eine Kante von w nach x und eine Kante von x nach v0.
  • G: v0 < - x1 < - w7
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U1,0 hinzugefügt.
  • U1,0 = {w7}
  • In Schritt 507 wird überprüft, ob noch mehr Elemente in Q vorhanden sind. Dies ist nicht der Fall (N), so dass das Verfahren zu der Parsingroutine zurückkehrt und hier mit Schritt 312 (Fig. 3) fortfährt, indem der Zähler i um 1 erhöht wird.
  • i = 1
  • Schritt 313 überprüft dann, ob U1,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob ein nachfolgendes Grundelement vorhanden ist. Dies ist der Fall (Y), so dass in Schritt 318 dieses Grundelement mit Endterm und Merkmalen eingelesen wird.
  • Aktuelles Grundelement: a1
  • aktueller Endterm und Merkmale: (*triple [CENTER])
  • Dann werden in Schritt 303 j, A, R, Re und Q initialisiert.
  • j = 0
  • A = U1,0 = {w7}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob A leer ist. Dies ist nicht der Fall (N), natürlich enthält A das Element w7, so dass die Aktor-Routine in Schritt 305 aufgerufen wird.
  • Beginnend mit der Startposition 401 (Fig. 4) wird dieses Element in Schritt 402 aus A entnommen, und es wird der aktuelle Knoten vc.
  • A = {}
  • vc = w7
  • In Schritt 403 wird dann der Eintrag aus der Aktionstabelle bestimmt, der zu dem aktuellen Endterm und dem zu vc gehörenden Zustand gehört, und die erste Aktion wird aus diesem Eintrag gelesen. Dies ergibt "shift 11". Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), so dass Schritt 407 überprüft, ob die Aktion eine Verschiebe-Aktion ist. Dies ist der Fall, s hat den Wert 11. Das Tupel < w7, 11, triple, a1> wird dann in Schritt 408 zu Q hinzugefügt.
  • s = 11
  • Q = {< w7, 11, triple, a1> }
  • In Schritt 413 wird dann überprüft, ob es in dem in Schritt 403 bestimmten Eintrag eine weitere nachfolgende Aktion gibt. Dies ist nicht der Fall (N), so dass dann in Schritt 415 überprüft wird, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor- Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 (Fig. 3) der Parsingroutine zurückkehrt.
  • Von hier fortschreitend überprüft Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist der Fall (Y), so dass die Verschiebe-Routine in Schritt 311 aufgerufen wird.
  • Beginnend mit der Startposition 501 (Fig. 5) initialisiert Schritt 502 die Menge U2,0 als leere Menge.
  • U2,0 = {}
  • Schritt 504 entnimmt dann einen Zustand aus einem Tupel von Q.
  • s = 11 aus dem Tupel < w7, 11, triple, a1>
  • In Schritt 504 wird dann id um 1 erhöht, und ein Knoten wird zu T hinzugefügt.
  • id = 2
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • In Schritt 505 wird dann folgendes zu G hinzugefügt: ein Knoten w mit dem Etikett s = 11, ein Knoten x mit dem Etikett id = 2, eine Kante von w nach x und eine Kante von x nach w7.
  • G: v0 < - x1 < - w7 < - x2 < - w11
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U2,0 hinzugefügt. U2,0 = {w11}
  • Schritt 507 überprüft, ob mehr Elemente in Q vorhanden sind. Dies ist nicht der Fall (N), so dass das Verfahren zur Parsingroutine zurückkehrt.
  • Das Verfahren wird mit Schritt 312 fortgesetzt, in dem der Zähler i um 1 erhöht wird.
  • i = 2
  • Schritt 313 überprüft dann, ob die Menge U2,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob ein nachfolgendes Grundelement vorhanden ist. Dies ist der Fall (Y), so dass dieses mit dem Endterm und den Merkmalen in Schritt 318 gelesen wird.
  • aktuelles Grundelement: a2
  • aktueller Endterm und Merkmale: (*vbar [CENTER BOLD])
  • Dann werden in Schritt 303 j, A, R, Re und Q initialisiert.
  • j = 0
  • A = U2,0 = {w11}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob die Menge A leer ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine in Schritt 305 aufgerufen wird.
  • Beginnend mit der Startposition 401 wird in Schritt 402 ein Element aus A genommen: vc = w11. In Schritt 403 wird der Eintrag in der Aktionstabelle bestimmt, der zu dem aktuellen Endterm (d. h. vbar) und dem Zustand von vc (d. h. 11) gehört, wonach eine hier vorhandene erste Aktion eingelesen wird. Dies ergibt die Aktion "shift 13". Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), wonach Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist der Fall, so dass in Schritt 408 das Tupel < w11, 13, vbar, a2> als Element zu der Menge Q hinzugefügt wird.
  • Q = {< w11, 13, vbar, a2> }
  • Schritt 413 überprüft dann, ob es in dem in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), wonach dann Schritt 415 überprüft, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 der Parsingroutine zurückkehrt.
  • Fortschreitend von hier überprüft Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist der Fall (Y), so dass die Verschiebe-Routine in Schritt 311 aufgerufen wird.
  • Beginnend mit der Startposition 501 wird in Schritt 502 die Menge U3,0 als leere Menge initialisiert.
  • U3,0 = {}
  • In Schritt 503 wird ein zu einem Element gehörendes s aus Q entnommen:
  • s = 13 aus Element < w11, 13, vbar, a2>
  • Schritt 504 erhöht dann id um 1, und ein Knoten wird zu T hinzugefügt:
  • id = 3
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • Schritt 505 fügt dann folgendes zu G hinzu: einen Knoten w mit dem Etikett s = 13, einem Knoten x mit dem Etikett id = 3, eine Kante von w nach x und eine Kante von x nach w11.
  • G: v0 < - x1 < - w7 < - x2 < - w11 < - x33 < - w13
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U3,0 hinzugefügt.
  • U3,0 = {w13}
  • Schritt 507 überprüft, ob noch mehr Tupel in Q vorhanden sind. Dies ist nicht der Fall (N), so dass das Verfahren zur Parsingroutine zurückkehrt.
  • In der Parsingroutine wird das Verfahren mit Schritt 312 fortgesetzt, indem der Zähler i um 1 erhöht wird.
  • i = 3
  • Schritt 313 überprüft dann, ob die Menge U2,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob ein nachfolgendes Grundelement vorhanden ist. Dies ist der Fall (Y), so dass in Schritt 318 dieses Grundelement mit Endterm und Merkmalen gelesen wird.
  • aktuelles Grundelement: a3
  • aktueller Endterm und Merkmale: (*blank)
  • In Schritt 303 werden j, A, R, Re und Q initialisiert.
  • j = 0
  • A = U3,0 = {w13}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob die Menge A leer ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine in Schritt 305 aufgerufen wird.
  • Beginnend mit der Startposition 401 wird in Schritt 402 ein Element aus A genommen: vc = w13. In Schritt 403 wird der Eintrag in der Aktionstabelle bestimmt, der zu dem aktuellen Endterm (d. h. blank) und dem Zustand von vc (d. h. 13) gehört, wonach eine erste hier vorhandene Aktion eingelesen wird. Dies ergibt die Aktion "shift 15". Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), wonach Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist der Fall, so dass in Schritt 408 das Tupel < w13, 15 *blank, a3> als Element zu der Menge Q hinzugefügt wird:
  • Q = {< w13, 15, *blank, a3> }
  • Schritt 413 überprüft dann, ob es in dem in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), wonach Schritt 415 überprüft, ob dem aktuellen Grundelement eine nachfolgende Kategorie zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 der Parsingroutine zurückkehrt.
  • Fortschreitend von hier überprüft Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist der Fall (Y), so dass die Verschiebe-Routine in Schritt 311 aufgerufen wird.
  • Beginnend mit der Startposition 501 wird in Schritt 502 die Menge U4,0 als leere Menge initialisiert.
  • U4,0 = {}
  • In Schritt 503 wird ein Zustand aus Q vorgenommen:
  • s = 15 aus Tupel < w13, 15, blank, a3>
  • Schritt 504 erhöht dann id um 1, und ein Knoten wird zu T hinzugefügt:
  • id = 4
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • Schritt 505 fügt dann folgendes zu G hinzu: einen Knoten w mit Etikett s = 15, einen Knoten x mit Etikett id = 4, eine Kante von w nach x und eine Kante von x nach w13.
  • G: v0 < - x1 < - w7 < - x2 < - w11 < - x3 < - w13 < - x4 < - w15
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U4,0 hinzugefügt.
  • U4,0 = {w15}
  • Schritt 507 überprüft, ob noch mehr Elemente in Q vorhanden sind. Dies ist nicht der Fall (N), so dass das Verfahren zur Parsingroutine zurückkehrt.
  • Das Verfahren wird mit Schritt 312 fortgesetzt, in dem der Zähler i um 1 erhöht wird.
  • i = 4
  • Schritt 313 überprüft dann, ob die Menge U2,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob ein nachfolgendes Grundelement vorhanden ist. Dies ist der Fall (Y), so dass in Schritt 318 dieses Grundelement mit Endterm und Merkmalen gelesen wird.
  • aktuelles Grundelement: a4
  • aktueller Endterm und Merkmale: (*vbar) [CENTER BOLD]
  • In Schritt 303 werden dann j, A, R, Re und Q initialisiert.
  • j = 0
  • A = U4,0 = {w15}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob die Menge A leer ist. Dies ist nicht der Fall (N), so dass in Schritt 205 die Aktor-Routine aufgerufen wird.
  • Beginnend mit der Startposition 401 wird in Schritt 402 ein Element aus A genommen: vc = w15. In Schritt 403 wird dann der Eintrag in der Aktionstabelle bestimmt, der zu der Kategorie des aktuellen Wortes (d. h. vbar) und dem Zustand von vc (d. h. 15) gehört, wonach eine erste hier vorhandene Aktion eingelesen wird. Dies ergibt die Aktion "reduce 7" (reduzieren). Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), so dass Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist ebenfalls nicht der Fall (N), so dass Schritt 409 überprüft, ob die Aktion "reduce p" ist. Dies ist tatsächlich der Fall (Y). Schritt 410 überprüft dann, ob Regel 7 eine Erzeugungsregel mit einem leeren rechten Teil ist. Dies ist nicht der Fall (N), wonach in Schritt 412 für jeden direkten Nachfolger x von vc in G ein Element der Form < vc, x, p, category, ai> zu der Menge R hinzugefügt wird.
  • R = R {< w15, x4,7, vbar, a4> }
  • Schritt 413 überprüft dann, ob es in dem in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), wonach Schritt 415 überprüft, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endpositionen 317 erreicht und das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt.
  • Ausgehend von Schritt 307 entscheidet Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist nicht der Fall (N), da R nicht leer ist. Schritt 307 wird dann über die Schritte 304 und 306 erreicht. Die Reduktionsroutine wird in Schritt 307 aufgerufen.
  • Beginnend mit der Startposition 601 wird ein Element aus R genommen und in Schritt 602 eingelesen. In Schritt 603 wird der linke Teil von Regel 7 dann der Variablen N zugewiesen.
  • N = a (Weight)
  • Schritt 604 überprüft dann, ob Merkmale in Regel 7 deklariert sind. Dies ist der Fall (Y), so dass die Vereinheitlichungsroutine in Schritt 605 aufgerufen wird.
  • Ausgehend von der Startposition 701 bestimmt Schritt 702 validierte Merkmalsindikatoren, indem für jeden deklarierten Merkmalsindikator aus der rechten Seite der Querschnitt mit dem entsprechenden aktuellen Merkmalsindikator gebildet wird. Die zugehörigen deklarierten Merkmalsindikatoren werden von der Vereinheitlichungsroutine von Regel 7 aus der in Fig. 4 gezeigten Merkmalstabelle ausgelesen. Die aktuellen Merkmalsindikatoren sind hier in binärer Form gezeigt, um das Verfahren zu illustrieren.
  • Schritt 703 überprüft dann, ob die erhaltenen Querschnitte alle nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzung im Hinblick auf die Abwesenheit von Merkmalen gefunden wird. In Schritt 705 wird dann für jede Merkmalsgruppe, die auf der rechten Seite mehr als einmal deklariert ist, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt all der validierten Merkmalsindikatoren bestimmt wird, die zu dieser Gruppe gehören. Im vorliegenden Fall gibt es zwei Gruppen, nämlich die Gruppe "CENTER" und die Gruppe "Weight", und es ist zu bemerken, dass die Gruppe "CENTER" nur ein Merkmal enthält. Auf der rechten Seite gibt es drei Merkmalsindikatoren, die zu der Gruppe "CENTER" gehören, und es gibt einen Merkmalsindikator, der zu der Gruppe "Weight" gehört. Dies ergibt Funified(CENTER) = 1000000. Schritt 706 überprüft dann, ob die in dem vorangehenden Schritt erhaltenen vereinheitlichten Merkmalsindikatoren nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzung hinsichtlich der Konformität zwischen den Merkmalsindikatoren gefunden wird. Das Verfahren wird dann mit Schritt 708 fortgesetzt. In Schritt 708 wird Ftemp1 bestimmt, indem eine logische ODER-Operation an all den vereinheitlichten Merkmalsindikatoren vorgenommen wird, die im vorangehenden Schritt gefunden wurden, zusammen mit einzigen validierten Merkmalsindikatoren, die auf der rechten Seite vorhanden sind. Dies ergibt FCENTER ODER FWeight = 1010000. Dann wird Schritt 709 ausgeführt, in dem der Merkmalsindikator Ftemp2 bestimmt wird, indem die Negation aus der Kombination all der deklarierten Merkmale von der rechten Seite genommen wird.
  • Ftemp2 = NICHT (1000000 ODER 0011000) = 0100111
  • Schritt 710 bestimmt dann aktuelle Merkmalsindikatoren für den linken Teil. Aktuelle Merkmalsindikatoren, die zu einer Gruppe gehören, die auch auf der rechten Seite deklariert ist, werden bestimmt aus:
  • F(Group)act = (Ftemp1 ODER Ftemp2) UND F(Group)decl
  • F(Weight)act = (1010000 ODER 0100111) UND 0011000 = 1110111 UND 0011000 = 0010000
  • Schritt 711 überprüft dann, ob all die aktuellen Merkmalsindikatoren, die für die linke Seite erhalten wurden, nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzungen im Hinblick auf die Übertragung von Merkmalen gefunden werden. Dann wird die Endposition 713 erreicht, und das Verfahren kehrt zu Schritt 505 der Reduktionsroutine zurück.
  • Das Verfahren wird mit der Ausführung des Schrittes 606 fortgesetzt, in dem geprüft wird, ob der Verletzungszähler einen Zählwert hat, der über die Variable THRESHOLD hinausgeht. Dies ist nicht der Fall (N), so dass Schritt 611 ausgeführt wird. In Schritt 611 werden diejenigen y bestimmt, für die es in G einen Pfad der Länge 2*4-2 von xc (d. h. x4) nach y gibt. Dies ergibt y = x1. Ein erstes y wird dann in Schritt 612 genommen und der Variablen yc zugewiesen.
  • yc = x1
  • Schritt 613 bestimmt dann L, indem die id's genommen werden, die zu den Termen aus dem rechten Teil der reduzierten Regel gehören.
  • L, = (1, 2, 3, 4)
  • In Schritt 614 werden die Zustände s bestimmt, für die es ein solches w gibt, das w ein direkter Nachfolger von y und c ist und außerdem der Zustand s in dem Eintrag der "Goto"-Tabelle gefunden wird, der durch den zu w gehörenden Zustand und den dem linken Teil der vorliegenden Regel entsprechenden Term bestimmt ist. Nachschauen in G zeigt, dass es einen direkten Nachfolger von y und c gibt, nämlich v0. Der zugehörige Zustand ist s = 0. Nachschlagen in der "Goto"-Tabelle für den Zustand s = 0 (der zu w gehörende Zustand) und den Term "a" ergibt s = 4. Dieser Zustand wird in Schritt 615 zum aktuellen Zustand sc gemacht.
  • sc = 4
  • Schritt 616 weist dann w = v0 als ein Element der Menge W zu.
  • W = {v0}
  • Schritt 617 überprüft dann, ob es ein u gibt, für das u ein Element aus der Menge U4,0 ist und der zugehörende Zustand sc ist. Dies ist nicht der Fall (N), so dass der Schritt 618 ausgeführt wird. In Schritt 618 wird id um 1 erhöht, und in T wird ein Knoten erzeugt mit einem Etikett id, der linksseitige Term mit Merkmalen und einem Zeiger L auf andere id's, die in Schritt 613 bestimmt wurden.
  • id = 5
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • 5 0 (a [BOLD] (1, 2, 3, 4))
  • In Schritt 618 wird auch von G der Pfad entfernt, der in Schritt 611 für yc bestimmt wurde, und hinzugefügt wird zu G ein Knoten u mit dem Etikett sc = 4, ein Knoten z mit dem Etikett id = 5, eine Kante von u nach z, Kanten von z nach w für alle w in W, und u mit dem Etikett sc = 4 wird zu den Mengen A und U4,0 hinzugefügt.
  • G: v0 < - z5 < - u4
  • A = {u4}
  • U4,0 = {w15 u4}
  • Schritt 624 überprüft dann, ob noch mehr Zustände s in Schritt 614 gefunden wurden. Dies ist nicht der Fall (N), so dass die Routine zu Schritt 626 fortschreitet, wo überprüft wird, ob in Schritt 611 noch mehr y's gefunden wurden. Dies ist ebenfalls nicht der Fall (N), so dass die Endposition 628 erreicht wird, in der das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt.
  • Im Anschluss an Schritt 307 wird der Schritt 310 erreicht, in dem überprüft wird, ob die Mengen A, R und Re leer sind. A ist nicht leer (N), so dass auf die Überprüfung in Schritt 304 (N) der Schritt 305 folgt.
  • In diesem Schritt wird die Aktor-Routine aufgerufen. Ausgehend von der Startposition 401 wird ein Element von A entfernt, und dies wird zum aktuellen Knoten vc.
  • A = {}
  • vc = u4
  • Schritt 403 bestimmt dann den Eintrag für den Endterm, der zu dem aktuellen Grundelement (d. h. *vbar [CENTER, BOLD]) gehört, und für den Zustand, der zu vc (d. h. 4) gehört, und hiervon wird eine erste spezifizierte Aktion gelesen. Dies ergibt die Aktion "reduce 0" (reduzieren). In Schritt 405 wird dann überprüft, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), wonach Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist ebenfalls nicht der Fall (N), so dass Schritt 409 überprüft, ob die Aktion "reduce p" ist. Dies ist tatsächlich der Fall (Y). Dann wird überprüft, ob die Regel 0 eine Erzeugungsregel mit einer leeren rechten Seite ist. Dies ist nicht der Fall (N), wonach Schritt 412 für jeden direkten Nachfolger x von vc in G ein Element in der Form < vc, x, p, cat, ai> zu der Menge R hinzufügt.
  • R = R {< u4, z5,0, *vbar, a4> }
  • Dann überprüft Schritt 413, ob es in dem in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), wonach Schritt 415 überprüft, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), sodass die Aktor-Routine die Endposition 417 erreicht und das Verfahren zum Schritt 307 der Parsingroutine zurückkehrt.
  • Im Anschluss an Schritt 307 entscheidet Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist nicht der Fall (N), da R nicht leer ist. Schritt 307 wird dann über die Schritte 304 und 306 erreicht. Die Reduktionsroutine wird in Schritt 307 aufgerufen.
  • Ausgehend von der Startposition 601 wird in Schritt 602 ein Element aus R genommen und gelesen. In Schritt 603 wird der linke Teil der Regel 0 dann der Variablen N zugewiesen.
  • N = Character (Weight)
  • Schritt 604 überprüft dann, ob in Regel 0 Merkmale deklariert sind. Dies ist der Fall (Y), so dass in Schritt 605 die Vereinheitlichungsroutine aufgerufen wird.
  • Im Anschluss an die Startposition 701 bestimmt Schritt 702 validierte Merkmalsindikatoren, indem für jeden deklarierten Merkmalsindikator auf der rechten Seite der Querschnitt mit dem entsprechenden aktuellen Merkmalsindikator gebildet wird.
  • Schritt 703 überprüft dann, ob die erhaltenen Querschnitte alle nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzung im Hinblick auf die Abwesenheit von Merkmalen gefunden wird. In Schritt 705 wird für jede Merkmalsgruppe, die auf der rechten Seite mehr als einmal deklariert ist, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt all der validierten Merkmalsindikatoren gebildet wird, die zu dieser Gruppe gehören. Im vorliegenden Fall sind sie nicht vorhanden. Schritt 706 überprüft dann, ob die vereinheitlichten Merkmalsindikatoren, die im vorangehenden Schritt erhalten wurden, nicht leer sind. In Abwesenheit solcher Merkmalsindikatoren wird diese Frage mit ja beantwortet, so dass keine Verletzung hinsichtlich der Konformität zwischen den Merkmalsindikatoren gefunden wird. Das Verfahren wird dann mit Schritt 708 fortgesetzt. In Schritt 708 wird Ftemp 1 bestimmt, indem eine logische ODER-Operation an all den vereinheitlichten Merkmalsindikatoren vorgenommen wird, die im vorangehenden Schritt erhalten wurden, zusammen mit einzigen validierten Merkmalsindikatoren, die auf der rechten Seite vorhanden sind. Dies ergibt Ftemp1 = FWeight = 0010000. Dann wird Schritt 709 aufgeführt, in dem der Merkmalsindikator Ftemp2 bestimmt wird, indem die Negation der Kombination aus all den deklarierten Merkmalen von der rechten Seite genommen wird.
  • Ftemp2 = NICHT(0011000) = 1100111
  • Schritt 710 bestimmt dann aktuelle Merkmalsindikatoren für die linke Seite. Aktuelle Merkmalsindikatoren, die zu einer Gruppe gehören, die auch auf der rechten Seite deklariert ist, werden bestimmt aus:
  • F(Group)act = (Ftemp1 ODER Ftemp2) UND F(Group)dec1
  • F(Weight)act = (0010000 ODER 1100111) UND 0011000 = 1110111 UND 0011000 = 0010000
  • Schritt 711 überprüft dann, ob all die für die linke Seite erhaltenen aktuellen Merkmalsindikatoren nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzungen im Hinblick auf die Weiterleitung von Merkmalen festgestellt werden. Dann ist die Endposition 713 erreicht, und das Verfahren kehrt zu Schritt 605 der Reduktionsroutine zurück.
  • Das Verfahren wird fortgesetzt mit der Ausführung des Schrittes 606, in dem überprüft wird, ob der Verletzungszähler einen Zählwert hat, der über die Variable THRESHOLD hinausgeht. Dies ist nicht der Fall (N), so dass der Schritt 611 ausgeführt wird. In Schritt 611 werden diejenigen y bestimmt, für die es in G einen Pfad der Länge 2*1-2 von xc (d. h. z5) nach y gibt. Dies ergibt y = z5. In Schritt 612 wird dann ein erstes y genommen und der Variablen yc zugewiesen.
  • yc = z5
  • Schritt. 613 bestimmt dann L, indem die id's genommen werden, die zu den Termen von der rechten Seite der reduzierten Regel gehören.
  • L = (5)
  • In Schritt 614 werden all die Zustände s bestimmt, für die es ein solches w gibt, das w ein direkter Nachfolger von yc ist und dieser Zustand s auch in dem Eintrag der "Goto"-Tabelle gefunden wird, der durch den zu w gehörenden Zustand und den der linken Seite der vorliegenden Regel entsprechenden Term bestimmt ist. Nachschauen in G zeigt, dass es einen direkten Nachfolger von yc gibt, nämlich v0. Der zugehörige Zustand ist s = 0. Nachschauen in der "Goto"-Tabelle für den Zustand s = 0 (der zu w gehörende Zustand) und den Term "Character" ergibt s = 3. Dieser Zustand wird in Schritt 615 zum aktuellen Zustand sc.
  • sc = 3
  • Schritt 616 weist dann w = v0 als ein Element der Menge W zu.
  • W = {v0}
  • Schritt 617 überprüft dann, ob es ein u gibt, für das u ein Element aus der Menge U4,0 ist und der zu u gehörende Zustand gleich sc ist. Dies ist nicht der Fall (N), so dass Schritt 618 ausgeführt wird. In Schritt 618 wird id um 1 erhöht, und in T wird ein Knoten erzeugt mit einem Etikett id, dem linksseitigen Term mit Merkmalen und einem Zeiger L auf andere id's, die in Schritt 613 bestimmt wurden.
  • id = 5
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • 5 0 (a [BOLD] (1, 2, 3, 4))
  • 6 0 (Character [BOLD] (5))
  • In Schritt 618 wird aus G auch der Pfad entfernt, der in Schritt 611 für yc bestimmt wurde, und hinzugefügt wird zu G ein Knoten u mit dem Etikett sc = 3, ein Knoten z mit dem Etikett id = 6, eine Kante von u nach z, Kanten von z nach w für alle w in W, und u mit dem Etikett sc = 3 wird zu den Mengen A und U4,0 hinzugefügt.
  • G: v0 < - z6 < - u3
  • A = {u3}
  • U4,0 = {w15 u4 u3}
  • Schritt 624 überprüft dann, ob noch mehr Zustände in Schritt 614 gefunden wurden. Dies ist nicht der Fall (N), so dass die Routine zu Schritt 626 fortschreitet, wo überprüft wird, ob in Schritt 611 noch mehr y's gefunden wurden. Auch dies ist nicht der Fall (N), so dass die Endposition 628 erreicht wird, in der das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt.
  • Im Anschluss an Schritt 307 wird der Schritt 310 erreicht, in dem überprüft wird, ob die Mengen A, R und Re leer sind. A ist nicht leer (N), so dass auf die Überprüfung in Schritt 304 (N) der Schritt 305 folgt.
  • In diesem Schritt wird die Aktor-Routine aufgerufen. Im Anschluss an die Startposition 401 wird ein Element aus A entfernt, und dieses Element wird zum aktuellen Knoten.
  • A = {}
  • vc = u3
  • Schritt 403 bestimmt dann den Eintrag für den Endterm, der zu dem aktuellen Grundelement gehört (d. h. *vbar [CENTER, BOLD]) und für den zu vc gehörenden Zustand (d. h. 3), und hieraus wird eine erste spezifizierte Aktion gelesen. Dies ergibt die Aktion "reduce 3". In Schritt 405 wird dann überprüft, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), wonach in Schritt 407 überprüft wird, ob die Aktion "shift s" ist. Auch dies ist nicht der Fall (N), so dass Schritt 409 überprüft, ob die Aktion "reduce p" ist. Dies ist tatsächlich der Fall (Y). Dann wird in Schritt 410 überprüft, ob die Regel 3 eine Erzeugungsregel mit einem leeren rechten Teil ist. Dies ist nicht der Fall (N), wonach der Schritt 412 für jeden direkten Nachfolger x von vc in G ein Element der Form < vc, x, p, cat, ai> zu der Menge R hinzufügt.
  • R = {< u3, z6, 3, vbar, a4> }
  • Schritt 413 überprüft dann, ob es in dem Eintrag, der in Schritt 403 bestimmt wurde, eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), wonach Schritt 415 überprüft, ob dem aktuellen Grundelement ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 der Parsingroutine zurückkehrt.
  • Im Anschluss an Schritt 305 bestimmt dann Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist nicht der Fall (N), da R nicht leer ist. Schritt 307 wird dann über die Schritte 304 und 306 erreicht. Die Reduktionsroutine wird in Schritt 307 aufgerufen. Ausgehend von der Startposition 601 wird ein Element aus R genommen und in Schritt 602 gelesen. In Schritt 603 wird dann die linke Seite von Regel 7 der Variablen N zugewiesen.
  • N = Characters (Weight)
  • Dann überprüft Schritt 604, ob es deklarierte Merkmale in Regel 7 gibt. Dies ist der Fall (Y), so dass in Schritt 605 die Vereinheitlichungsroutine aufgerufen wird.
  • Ausgehend von der Startposition 701 bestimmt Schütt 702 validierte Merkmalsindikatoren, indem für jeden deklarierten Merkmalsindikator auf der rechten Seite der Querschnitt mit dem entsprechenden aktuellen Merkmalsindikator gebildet wird.
  • Schritt 703 überprüft dann, ob die erhaltenen Querschnitte alle nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzung im Hinblick auf die Abwesenheit von Merkmalen festgestellt wird. In Schritt 705 wird für jede Merkmalsgruppe, die auf der rechten Seite mehr als einmal deklariert ist, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt all der validierten Merkmalsindikatoren gebildet wird, die zu der Gruppe gehören. Im vorliegenden Fall sind diese nicht vorhanden. Schritt 706 überprüft dann, ob die im vorangehenden Schritte erhaltenen vereinheitlichten Merkmalsindikatoren nicht leer sind. In Abwesenheit dieser Merkmalsindikatoren ist dies der Fall (Y), so dass keine Verletzung hinsichtlich der Konformität zwischen den Merkmalsindikatoren festgestellt wird. Das Verfahren wird dann mit Schritt 708 fortgesetzt. In Schritt 708 wird Ftemp 1 bestimmt durch Anwendung einer logischen ODER-Operation auf all die im vorangehenden Schritt erhaltenen vereinheitlichten Merkmalsindikatoren zusammen mit einzigen validierten Merkmalsindikatoren, die auf der rechten Seite vorhanden sind. Dies ergibt Ftemp1 = 0010000. Dann wird Schritt 709 ausgeführt, in dem der Merkmalsindikator Ftemp2 bestimmt wird, indem die Negation der Kombination aus all den deklarierten Merkmalen von der rechten Seite gebildet wird.
  • Ftemp2 = NICHT(0011000) = 1100111
  • Schritt 710 bestimmt dann die aktuellen Merkmalsindikatoren für die line Seite. Aktuelle Merkmalsindikatoren, die zu einer Gruppe gehören, die auch auf der rechten Seite deklariert ist, werden bestimmt aus:
  • F(Group)act = (Ftemp1 ODER Ftemp2) UND F(Group)dec1
  • F(Weight)act = (0010000 ODER 1100111) UND 0011000 = 1110111 UND 0011000 = 0010000
  • Dann überprüft Schritt 711, ob all die aktuellen Merkmalsindikatoren, die für die linke Seite erhalten wurden, nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzungen im Hinblick auf die Weitergabe von Merkmalen festgestellt werden. Dann wird die Endposition 713 erreicht, und das Verfahren kehrt zu Schritt 505 der Reduktionsroutine zurück.
  • Das Verfahren schreitet fort mit der Ausführung von Schritt 606, in dem überprüft wird, ob der Verletzungszähler einen Zählwert hat, der über die Variable THRESHOLD hinausgeht. Dies ist nicht der Fall (N), so dass die Schritte 611- 616 ausgeführt werden. Dies ergibt:
  • y = z6
  • L = 6
  • s = 2 mit w = v0
  • W = {v0} Schritt 617 überprüft, ob es ein Element von U4,0 gibt, dessen Zustand gleich 2 ist. Dies ist nicht der Fall (N), wonach die Schritte 618, 624 (N), 626 (N) folgendes ergeben:
  • id = 5
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • 5 0 (a [BOLD] (1, 2, 3, 4))
  • 6 0 (Character [BOLD] (5))
  • 7 0 (Characters [BOLD] (6))
  • G: v0 < - z7 < - u2
  • A = {u2}
  • U4,0 = {w15 u4 u3 u2}
  • Dann ist die Endposition 628 erreicht, wonach das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt.
  • Im Anschluss an Schritt 307 wird der Schritt 310 erreicht, wo überprüft wird, ob die Mengen A, R und Re leer sind. A ist nicht leer (N), so dass nach der Überprüfung in Schütt 304 (N) der Schritt 305 ausgeführt wird.
  • In diesem Schritt wird die Aktor-Routine aufgerufen. Im Anschluss an die Startposition 401 wird ein Element aus A entfernt, und dieses Element wird der aktuelle Knoten vc.
  • A = {}
  • vc = u2
  • In Schritt 403 wird der Eintrag bestimmt für den Endterm, der zu dem aktuellen Grundelement gehört (d. h. *vbar [CENTER, BOLD]) und für den zu vc gehörenden Zustand (d. h. 3), und hieraus wird eine erste spezifizierte Aktion gelesen. Dies ergibt die Aktion "shift 8". Nach Ausführung der Schritte 405 (N) und 407 (Y) wird der Schritt 408 ausgeführt. Das Element < u2, 8, *vbar, a4> wird zu Q hinzugefügt.
  • Q = {< u2, 8, *vbar, a4> }
  • Nach Schritt 413 (N) und Schritt 415 (N) wird die Endposition 417 erreicht, und das Verfahren kehrt zu Schritt 305 der Parsingroutine zurück.
  • Die Überprüfung in Schritt 310 zeigt, dass die Mengen A, R und Re leer sind (Y), so dass der Schritt 311 ausgeführt wird.
  • In Schritt 311 wird die Verschiebe-Routine aufgerufen. Die Verschiebe-Routine hat in dieser Situation das Resultat, dass ein neuer Knoten zu T und zwei neue Knoten zu G hinzugefügt werden:
  • id = 7 + 1 = 8
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • 5 0 (a [BOLD] (1, 2, 3, 4))
  • 6 0 (Character [BOLD] (5))
  • 7 0 (Characters [BOLD] (6))
  • 8 0 (*vbar [CENTER, BOLD] a4)
  • G: v0 < - z7 < - u2 < - x8 < - w2
  • U4,0 = {w15 u4 u3 u2 w2}
  • Das Verfahren wird nun mit dem Lesen eines nachfolgenden Grundelements fortgesetzt. Die nachfolgenden Schritte sind im Prinzip bereits diskutiert worden, so dass nun einfach T angegeben wird, wie es letztlich von der Parsingroutine ausgegeben wird.
  • T: 1 0 (*double [CENTER] a0)
  • 2 0 (*triple [CENTER] a1)
  • 3 0 (*vbar [CENTER, BOLD] a2)
  • 4 0 (*blank a3)
  • 5 0 (a [BOLD] (1, 2, 3, 4))
  • 6 0 (Character [BOLD] (5))
  • 7 0 (Characters [BOLD] (6))
  • 8 0 (*vbar [CENTER, BOLD] a4)
  • 9 0 (*hbar [HIGH CENTER] a5)
  • 10 0 (*vbar [CENTER BOLD] a6)
  • 11 0 (*blank [] a7)
  • 12 0 (n [BOLD] (8 9 10 11))
  • 13 0 (Character [BOLD] (12))
  • 14 0 (Character [BOLD] (7 13))
  • 15 0 (*endmark [] a8)
  • 16 0 (WORD (14 15))
  • Mit Erreichung der Endposition 315 wird dieses erhaltene Analyseergebnis in der Form einer Klammerstruktur niedergeschrieben. Das id, das zu der Wurzel des gefundenen Analyseergebnis gehört, wird der Variablen "result" zugewiesen, und dies ergibt:
  • Mit Abschluss der Parsingroutine kehrt das Verfahren zu Schritt 207 zurück, wo überprüft wird, ob die Parsingroutine ein von null verschiedenes Ergebnis geliefert hat. Dies ist der Fall (Y), so dass dann Schritt 211 überprüft, ob die Anzahl von Verletzungen gleich null ist. Auch dies ist der Fall (Y) so dass das Verfahren in Schritt 214 anhält.
  • Das Verfahren hat nun ein zugeführtes Signal anhand einer Grammatik analysiert und keinerlei Verletzungen gefunden.
  • Die Verarbeitung kann nun fortgesetzt werden mit dem ursprünglichen Signal oder mit dem von der Parsingeinheit gelieferten Analyseergebnis. Im vorliegenden Fall geht es um die erkannten Zeichen, und deshalb werden diese für die weitere Verarbeitung benutzt.
  • Wenn Schritt 211 zeigt, dass die Anzahl von Verletzungen in den erhaltenen Lösungen von null verschieden ist (N), wird in Schritt 212 die Korrektureinheit 104 nach Fig. 1 aufgerufen. Das Verfahren hierfür, das für das vorliegende Anwendungsgebiet der Vorrichtung geeignet ist, d. h. optische Zeichenerkennung, umfasst in einer vorteilhaften Ausführungsform die folgenden Schritte. In einem ersten Schritt werden die Wörter, die für jede Gruppe von Grundelementen erhalten wurden, die der Parsingeinheit zugeführt wurden, nach Verletzungswertzahlen sortiert. Zunächst wird überprüft, ob das Wort mit der niedrigsten Verletzungswertzahl in einen elektronischen lexikalischen Wörterbuch auftritt. Wenn nicht, wird dieses Wort verworfen, und es wird ein nachfolgendes Wort genommen. Wenn nur ein Wort ausgegeben wird und dieses Wort nicht in dem zugehörigen Wörterbuch enthalten ist, wird eine Rechtschreibkorrektur aufgerufen, die eine Anzahl von Varianten des Wortes erzeugt, die nacheinander anhand des Wörterbuches überprüft werden. Wenn das Wort in dem elektronischen Wörterbuch gefunden wird, so wird dieses Wort zusammen mit den zugehörigen lexikalischen Daten in einem Satzpuffer abgelegt. Wenn das Wort gefunden wird, aber es einen Hinweis gibt, dass die Beugung falsch ist, wird das Wort markiert und in einem Puffer abgelegt. Wenn der Satzpuffer einen vollständigen Satz enthält, wird eine Grammatikprüfung aufgerufen, und es wird eine Überprüfung auf fehlerhafte Beugungen vorgenommen und erforderlichenfalls wird eine Beugungskorrektur aufgerufen, wie in der niederländischen Patentanmeldung NL- A9101286 beschrieben wird, die nicht vorveröffentlicht ist. Der vollständige Satz wird dann ausgegeben. Auf diese Weise wird die Kenntnis aus dem linguistischen Bereich für die Zwecke der Zeichenerkennung ausgenutzt.
  • Mit Bezug auf das Verfahren zum Umwandeln eines Pixelmusters in Ketten von Endtermen und Merkmalen, die der Parsingeinheit in Gruppen zuzuführen sind, wie in Fig. 8 gezeigt ist, ist zu bemerken, dass es vorteilhaft ist, einer Pixelspalte in Schritt 805 mehrere Kategorien zuzuweisen, was dazu führt, dass einem Grundelement mehrere Endterme zugeordnet werden. Im Ergebnis können Entscheidungen über die Auswahl einer Kategorie auf eine spätere Phase des Erkennungsprozesses verschoben werden. Diese Variante ist möglich, weil die Parsingeinheit in der Lage ist, einen zweideutigen Input zu verarbeiten.
  • Ebenso ist es vorteilhaft, einem Grundelement in Schritt 806 einander gegenseitig ausschließende Merkmale zuzuordnen. Dies hat den Effekt, dass eine Entscheidung für das eine oder andere Merkmal nicht zum Zeitpunkt der Merkmalszuweisung getroffen werden muss, einem Zeitpunkt, zu dem für die Mehrmalszuweisung keine anderen Daten bekannt sind als einfach die Geometrie der Pixelcluster, und diese Entscheidung kann auf eine spätere Phase verschoben werden. Beide Möglichkeiten sind akzpetabel, so dass die richtige Entscheidung erst in einer späteren Phase getroffen werden kann, z.B. auf der Grundlage der Anzahl von Verletzungen oder auf der Grundlage der linguistischen Überprüfung. Diese Variante ist möglich als Folge der Art und Weise, in der die Parsingeinheit die Merkmale verarbeitet. Eine ähnliche Lösung wird anhand von Fig. 10 erläutert, die eine Anzahl von Grundelementen illustriert. Im Hinblick auf das fünfte Grundelement ist es schwierig zu entscheiden, ob es das Merkmal "descending" (abfallend) oder "ascending" (ansteigend) hat. Da der mittlere Pixelecluster nicht klar unter "ascending" oder "descending" subsumiert werden kann, ist es möglich, wenn dem zu diesem Grundelement gehörenden Endterm nun beide einander ausschließende Merkmale zugewiesen werden, die Entscheidung, ob es sich um ein "s" oder "z" handelt, auf eine spätere Phase zu verschieben. Angenommen, die Parsingeinheit liefert zwei Analyseergebnisse "as" und "az", beide mit der gleichen Anzahl von Verletzungen, so liefert eine Korrekturprozedur, die überprüft, ob die erkannten Wörter in einem elektronischen Wörterbuch auftreten, das Wort "as" (engl. = "wie") als das korrekte Wort.
  • Mit Bezug auf die in Tabelle 1 gezeigte Grammatik ist zu bemerken, dass diese Grammatik den besonderen Vorteil hat, dass die Parsingeinheit keine einzelnen Zeichen, sondern Wörter ausgibt. Im Zusammenhang mit dem Verletzungsmechanismus ist das Verfahren in der Lage, eine Kette von erkannten Wörtern auszugeben, die für eine gegebene Folge von zugeführten Grundelementen mit einer Verletzungswertzahl versehen ist. Es ist vorteilhaft, dass wenn ein oder mehrere Lösungen von der Parsingeinheit ausgegeben werden, diese Lösungen direkt mit linguistischen Hilfsmitteln überprüft werden können. Dies ist nicht möglich, wenn ein Zeichen auf einmal erkannt wird. Auf ein einzelnes Zeichen sind keine linguistischen Regeln anwendbar. In einem solchen Fall, der natürlich mit dem vorliegenden Verfahren ausgeführt werden kann, indem die Grammatik angepasst wird, ist ein zusätzlicher Schritt erforderlich, um die erkannten Zeichen zu Wörtern zu verbinden.
  • Eine Anzahl von Varianten wird nun wieder unter Bezugnahme auf die in Tabelle 1 gezeigte Grammatik diskutiert werden. In einer ersten Variante sind es keine ganzen Wörter, sondern Folgen aus einer festen Anzahl (n) von Zeichen, die von der Parsingeinheit ausgegeben werden und die nachstehend als n-Gramme bezeichnet werden. Der Korrekturmechanismus besteht unter diesen Umständen in einer Überprüfung der ausgegebenen n-Gramme gegen eine Liste von zulässigen n-Grammen. Tabelle 5 zeigt eine Grammatik, die Trigramme ergibt (n = 3) Tabelle 5
  • Eine weitere vorteilhafte Variante der Grammatik umfasst die Einbeziehung von Grammatikregeln, die darauf abzielen, dass zusammenhängende Zeichen nichts desto weniger als getrennte Zeichen erkannt werden sollen. Eine Variante dieser Art ist in Tabelle 6 gezeigt. Auf diese Weise ist es zum Beispiel möglich, dass als Lösung zusätzlich zu einem "d" ein "c" und ein "1" ausgegeben werden. Der Korrekturmechanismus kann dann die korrekte Auswahl treffen. Tabelle 6
  • Es ist auch möglich, in die Grammatik Regeln einzubeziehen, die Hoch- und Tiefstellungen von Zeichen korrekt verarbeiten. Ebenso ist offensichtlich, dass die Erkennung und Weitergabe von Schrifttypen einfach ausgeführt werden kann. Schließlich zeigt Tabelle 7 eine Variante der Grammatik, in der das Zeichen als ein Merkmal in der Lösung angegeben ist. Tabelle 7
  • Eine Variante der erfindungsgemäßen Vorrichtung, die zur optischen Zeichenerkennung benutzt wird, vorteilhafterweise unter Verwendung der Verletzungswertzahlen, erhält man, indem man die Bitmaps der Zeichen speichert, die am besten erkannt werden. Dies ist möglich, indem die Bitmap für jedes zum ersten Mal erkannte Zeichen gespeichert und dann die Bitmap jeweils durch die Bitmap desselben Zeichens ersetzt wird, wenn dieses Zeichen mit einer kleineren Verletzungswertzahl erkannt wird. Es ist dann möglich, das Original mit Hilfe von Bitmaps der erkannten Grundelemente zu rekonstruieren, die am besten erkannt werden.
  • In der folgenden Erörterung des zweiten Beispiels wird die erfindungsgemäße Vorrichtung zur grammatischen Analyse von Sätzen eingesetzt. Die grammatische Analyse von Sätzen ist vorteilhaft in all denjenigen Anwendungen, in denen ein zu erkennendes ursprüngliches Signal linguistische Informationen enthält. In einem anschließenden Schritt eines solchen Prozesses, in dem Wörter ausgegeben werden, ist es durch grammatikalische Analyse möglich, das Signal im Detail zu verifizieren und erforderlichenfalls zu korrigieren. Das Beispiel bezieht sich auf diesen letzten Schritt, für den eine Vorrichtung gemäß der Erfindung verwendet wird. Die benutzte Grammatik ist in Tabelle 8 angegeben. Tabelle 8
  • In diesem Beispiel sind sechs Merkmale definiert: SING1 SING2 SING3 PLU1 PLU2 und PLU3. Diese Merkmale werden zu einer Gruppe kombiniert, der Gruppe Getal ( = Anzahl). Die aus der Grammatik abgeleiteten und im Speicher abgelegten Tabellen, die von dem Verfahren benutzt werden, d. h. die Aktionstabelle, die "Goto"-Tabelle und die Merkmalstabelle sind in Tabelle 9, 10 und 11 angegeben. Tabelle 9 Aktionstabelle Tabelle 10 "Goto"-Tabelle Tabelle 11 Merkmalstabelle
  • Es sei angenommen, dass der Satz, der auf linguistische Korrektheit überprüft werden soll, lautet: "A man works" (Ein Mann arbeitet).
  • Dieser Satz bildet das Signal "S", das der Umwandlungseinheit 101 in Fig. 1 zugeführt wird. Die Umwandlungseinheit wandelt das Signal in eine Form um, die für die Verarbeitung durch die Parsingeinheit 102 geeignet ist. Zu diesem Zweck wird das Signal zunächst in Grundelemente zerlegt. Für diese Anwendung bilden die Wörter die Grundelemente, so dass die Umwandlungseinheit die zugeführte Zeichenkette in Wörter zerlegt. Diese Wörter werden dann mit normierten Grundelementen (Endtermen) und Merkmalen versehen. Die resultierende lexikalisierte Kette wird der Parsingeinheit 102 zugeführt.
  • a1 a (*article [SING3])
  • a2 man (*noun [SING3])
  • a3 works (*verb [SING3])
  • a4 (*endmark [])
  • Das Verfahren der Parsingeinheit wird nun für dieses Beispiel im einzelnen anhand der Fig. 2 bis 7 erläutert. Ausgehend von der Startposition 201 (Fig. 2) wird in Schritt 202 eine Anzahl von Variablen initialisiert.
  • result = 0
  • threshold = 0
  • delta-threshold = 0
  • new-threshold = 0
  • Die Kette wird dann in Schritt 203 gelesen, und ein Abschlußsymbol $ wird an die Kette angehängt. Dann wird in Schritt 204 die Parsingroutine aufgerufen. Die Parsingroutine ist im einzelnen in Fig. 3 dargestellt. Ausgehend von der Startposition 301 (Fig. 3) werden in Schritt 302 die Zähler i, id, der Verletzungszähler, der graph-strukturierte Stapel G und der Baum T initialisiert, und das Element v0 wird der Menge U0,0 hinzugefügt.
  • i = 0
  • id = 0
  • Verletzungszähler = 0
  • G = 0
  • T = 0
  • U0,0 = {v0}
  • In diesem Schritt wird auch das erste mit lexikalischen Daten versehene Grundelement a0 aus der Kette gelesen.
  • erstes Grundelement a0 (*article [SING3])
  • Der Zähler j wird dann in Schritt 303 auf 0 initialisiert, die Mengen R, Re und Q werden als leere Mengen initialisiert, und die Menge A wird gleich U0,0:A = {v0}.
  • j = 0
  • R = Re = Q = {}
  • A = {v0}
  • In Schritt 304 wird dann überprüft, ob A eine leere Menge ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine aufgerufen wird.
  • Die Aktor-Routine ist in Fig. 4 dargestellt. Ausgehend von der Startposition 401 wird in Schritt 402 ein Element aus A entfernt, und dieses Element wird der aktuelle Knoten vc. In Schritt 403 wird dann der Eintrag in der Aktionstabelle bestimmt, der zu dem Endterm "*article" und dem Zustand 0 gehört. Die aus der Grammatik abgeleitete Aktionstabelle ist in Tabelle 9 gezeigt. In Schritt 404 wird dann eine erste Aktion aus diesem Eintrag gelesen. Dies ergibt die Aktion "shift 5". In Schritt 405 wird überprüft, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), so dass Schritt 407 überprüft, ob die Aktion "shift s" ist. Dies ist der Fall, so dass in Schritt 408 < v0,5, *article, a0> als ein Element zu der Menge Q hinzugefügt wird.
  • Q = Q {< v0,5, *article a0> }
  • Nachdem nun der Schritt 305 ausgeführt worden ist, fährt das Verfahren mit Schritt 310 fort (Fig. 3). Hier wird überprüft, ob die Mengen A, R und Re alle leer sind. Dies ist der Fall (Y), so dass Schritt 311 die Verschiebe-Routine aufruft.
  • Die Verschiebe-Routine ist im einzelnen in Fig. 5 gezeigt. Ausgehend von der Startposition 501 wird in Schritt 502 die Menge U1,0 als leere Menge initialisiert.
  • U1,0 = {}
  • In Schritt 503 wird dann ein Zustand aus einem Tupel von Q entnommen.
  • s = 5 aus Element < v0,5, *article, a0>
  • In Schritt 504 wird dann der Zähler id um 1 erhöht, und in T wird ein Knoten erzeugt mit id und mit den lexikalischen Daten, die zu dem nullten Grundelement gehören.
  • id = 1
  • T: 1 0 (*article [SING3 PLU3] a0).
  • In Schritt 505 wird dann folgendes zu G hinzugefügt: ein Knoten w mit dem Etikett s = 5, ein Knoten x mit dem Etikett id = 1, eine Kante von w nach x und eine Kante von x nach v0.
  • G: v0 < - x1 < - w5
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U1,0 hinzugefügt.
  • U1,0 = {w5}
  • In Schritt 507 wird überprüft, ob noch mehr Elemente in Q vorhanden sind. Dies ist nicht der Fall (N), sodass das Verfahren zu der Parsingroutine zurückkehrt und hier mit Schritt 312 fortfährt, in dem der Zähler i um 1 erhöht wird.
  • i = 1
  • Schritt 313 überprüft dann, ob U1,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob es ein nachfolgendes Grundelement gibt. Dies ist der Fall (Y), so dass in Schritt 318 folgendes eingelesen wird:
  • aktuelles Grundelement a1: (*noun [SING3] a1)
  • Dann werden j, A, R, Re and Q in Schritt 303 initialisiert.
  • j = 0
  • A = U1,0 = {w5}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob die Menge A leer ist. Dies ist nicht der Fall (N), denn A enthält natürlich das Element w5, so dass die Aktor-Routine in Schritt 305 aufgerufen wird.
  • Ausgehend von der Startposition 401 wird dieses Element in Schritt 402 aus A entnommen und zum aktuellen Knoten vc gemacht.
  • A = {}
  • vc = w5
  • In Schritt 403 wird dann der Eintrag in der Aktionstabelle bestimmt, der zu dem aktuellen Endterm und den zu vc gehörenden Zustand gehört, und die erste Aktion wird hieraus ausgelesen. Dies ergibt "shift 8". Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), so dass Schritt 407 überprüft, ob die Aktion eine Verschiebe-Aktion ist. Dies ist der Fall, s hat den Wert 8. Das Element < w5, 8, noun, a1> wird dann in Schritt 408 zu Q hinzugefügt.
  • s = 8
  • Q = {< w5, 8, noun, a1> }
  • In Schritt 413 wird dann überprüft, ob es eine weitere nachfolgende Aktion in dem in Schritt 403 bestimmten Eintrag gibt. Dies ist nicht der Fall (N), so dass dann in Schritt 415 überprüft wird, ob dem aktuellen Grundelement noch ein nachfolgender Endterm zugewiesen ist. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endposition 417 erreicht und das Verfahren zu Schritt 305 der Parsingroutine zurückkehrt.
  • Im Anschluss daran überprüft Schritt 310, ob die Mengen A, R und Re leer sind. Dies ist der Fall (Y), so dass in Schritt 311 die Verschiebe-Routine aufgerufen wird.
  • Ausgehend von der Startposition 501 initialisiert Schritt 502 die Menge U2,0 als leere Menge.
  • U2,0 = {}
  • Schritt 504 entnimmt dann einen Zustand aus einem Tupel von Q.
  • s = 8 aus Element < w5,8,noun,a1>
  • Schritt 504 erhöht dann id um 1, und ein Knoten wird zu T zugefügt:
  • id = 2
  • T: 1 0 (*article [SING3 PLU3]a0)
  • 2 0 (*noun [SING3] a1)
  • In Schritt 505 wird dann folgendes zu G hinzugefügt: ein Knoten w mit dem Etikett s = 8, ein Knoten x mit dem Etikett id = 2, eine Kante von w nach x und eine Kante von x nach w5.
  • G: v0 < - x1 < - w5 < - x2 < - w8
  • In Schritt 506 wird dann w mit dem Etikett s zu der Menge U2,0 hinzugefügt.
  • U2,0 = U2,0 {w8}
  • Schritt 507 überprüft, ob noch mehr Elemente in Q vorhanden sind. Dies ist nicht der Fall (N), so dass das Verfahren zur Parsingroutine zurückkehrt.
  • Das Verfahren wird fortgesetzt mit Schritt 312, indem der Zähler i um 1 erhöht wird.
  • i = 2
  • Schritt 313 überprüft dann, ob die Menge U2,0 leer ist. Dies ist nicht der Fall (N), so dass Schritt 316 überprüft, ob es ein nachfolgendes Grundelement gibt.
  • Dies ist der Fall (Y), so dass das Verfahren mit Schritt 317 fortfährt, in dem das nachfolgende Grundelement das aktuelle Grundelement wird.
  • aktuelles Wort: a2 (*verb [SING3] a2)
  • Dann werden in Schritt 303 j, A, R, Re und Q initialisiert.
  • j = 0
  • A = U2,0 = {w8}
  • R = Re = Q = {}
  • Schritt 304 überprüft dann, ob die Menge A leer ist. Dies ist nicht der Fall (N), so dass in Schritt 305 die Aktor-Routine aufgerufen wird.
  • Ausgehend von der Startposition 401 wird in Schritt 402 ein Element aus A genommen: vc = w8. In Schritt 403 wird der Eintrag in der Aktionstabelle bestimmt, der zu dem Endterm des aktuellen Grundelements (d. h. verb) und zu dem Zustand von vc (d. h. 8) zugeführt, wonach eine erste hier vorhandene Aktion eingelesen wird. Dies ergibt die Aktion "reduce 0". Schritt 405 überprüft dann, ob die Aktion "accept" ist. Dies ist nicht der Fall (N), wonach Schritt 404 überprüft, ob die Aktion "shift s" ist. Auch dies ist nicht der Fall, so dass in Schritt 409 überprüft wird, ob die Aktion "reduce p" ist. Dies ist der Fall (Y). Dann wird überprüft, ob die Regel 0 eine Erzeugungsregel mit einer leeren rechten Seite ist. Dies ist nicht der Fall, so dass in Schritt 412 für jeden direkten Nachfolger x von vc in G ein Element in der Form < vc, x, p, cat, a2> zu der Menge R hinzugefügt wird:
  • R = R {< w8,x2,0,verb,a2> }
  • Schritt 413 überprüft dann, ob es in dem in Schritt 403 bestimmten Eintrag eine nachfolgende Aktion gibt. Dies ist nicht der Fall (N), so dass die Aktor-Routine die Endposition 415 erreicht und das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt.
  • Im Anschluss daran überprüft Schritt 310, ob die Mengen A, R und Re leer sind.
  • Dies ist nicht der Fall (N), da R nicht leer ist. Schritt 307 wird dann über die Schritte 304 und 306 erreicht. In Schritt 307 wird die Reduktionsroutine aufgerufen. Ausgehend von der Startposition 601 wird ein Element aus R genommen und in Schritt 602 eingelesen. In Schritt 603 wird dann die linke Seite von Regel 0 der Variablen N zugewiesen.
  • N = NP(Getal)
  • Die Vereinheitlichung der zugehörigen Regel erfolgt in Schritt 605.
  • Ausgehend von der Startposition 701 bestimmt Schritt 702 validierte Merkmalsindikatoren, indem für jeden deklarierten Merkmalsindikator auf der rechten Seite der Querschnitt mit dem entsprechenden aktuellen Merkmalsindikator gebildet wird.
  • NP(Getal): *article(Getal), *noun(Getal)
  • Schritt 703 überprüft dann, ob die erhaltenen Querschnitte alle nicht leer sind. Dies ist der Fall (Y) so dass Schritt 705 ausgeführt wird. In Schritt 705 wird für jede Merkmalsgruppe, die auf der rechten Seite mehr als einmal deklariert ist, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt aus all den validierten Merkmalsindikatoren genommen wird, die zu dieser Gruppe gehören. Im vorliegenden Fall gibt es eine Gruppe, nämlich die Gruppe "Getal". Dies ergibt dann Unified(GETAL) = 001000. Schritt 706 überprüft dann, ob der vereinheitlichte Merkmalsindikator, der im vorangehenden Schritt erhalten wurde, nicht leer ist. Dies ist der Fall (Y), so dass keine Verletzung hinsichtlich der Konformität zwischen den Merkmalsindaktoren festgestellt wird. Das Verfahren wird dann mit Schritt 708 fortgesetzt, in dem Ftemp 1 bestimmt wird, indem eine logische ODER-Operation an all den vereinheitlichten Merkmalsindikatoren vorgenommen wird, die im vorhergehenden Schritt erhalten wurden, zusammen mit einzigen validierten Merkmalsindikatoren, die auf der rechten Seite vorhanden sind. Dies ergibt Ftemp 1 = 001000. Dann wird Schritt 709 ausgeführt, in dem der Merkmalsindikator Ftemp2 bestimmt wird, indem die Negation aus der Kombination all der deklarierten Merkmale von der rechten Seite genommen wird.
  • Ftemp2 = 000000
  • Schritt 710 bestimmt dann aktuelle Merkmalsindikatoren für die linke Seite.
  • F(Getal)act = (001000 ODER 0000) UND 111111 = 001000
  • Schritt 711 überprüft dann, ob all die in Schritt 710 erhaltenen Merkmalsindikatoren nicht leer sind. Dies ist der Fall (Y), so dass keine Verletzungen hinsichtlich der Weitergabe von Merkmalen festgestellt werden. Dann wird die Endposition 713 erreicht, und das Verfahren kehrt zu Schritt 605 der Reuktionsroutine zurück.
  • Das Verfahren schreitet fort mit der Ausführung des Schrittes 606, in dem überprüft wird, ob der Verletzungszähler die Variable "threshold" übersteigt. Dies ist nicht der Fall (N), so dass Schritt 611 ausgeführt wird.
  • In Schritt 611 werden diejenigen y bestimmt, für die es in G einen Pfad der Länge 2*2-2 von xc (d. h. x2) nach y gibt. Dies ergibt y = x1. In Schritt 612 wird dann ein erstes y genommen und der Variablen yc zugewiesen.
  • yc = x1
  • Schritt 613 bestimmt dann L, in dem die id's genommen werden, die zu den Termen von der linken Seite der reduzierten Regel gehören.
  • L = (1,2)
  • In Schritt 614 werden all die Zustände s bestimmt, für die es ein w gibt, so dass w ein direkter Nachfolger von yc ist und auch der Zustand s in dem Eintrag der "Goto"-Tabelle gefunden wird, der durch dem zu w gehörenden Zustand und dem der linken Seite der vorliegenden Regel entsprechenden Term gehört. Nachschlagen in G zeigt, dass es einen direkten Nachfolger von yc gibt, nämlich v0.
  • Der zugehörige Zustand ist s = 0. Nachschlagen in der "Goto"-Tabelle für den Zustand s = 0 (der zu w gehört) und den Term NP ergibt s = 4. Dieser Zustand wird in Schritt 614 zum aktuellen Zustand sc gemacht.
  • sc = 4
  • Schritt 616 weist dann w = v0 als ein Element der Menge W zu.
  • W = {v0}
  • Schritt 617 überprüft dann, ob es ein u gibt, für das u ein Element aus der Menge U2,0 ist und der zu u gehörende Zustand gleich sc ist. Dies ist nicht der Fall (N), so dass Schritt 618 ausgeführt wird. In Schritt 618 wird id um 1 erhöht, und in T wird ein Knoten erzeugt mit einem Etikett id, dem linksseitigen Term mit Merkmalen und einem Zeiger L auf andere id's, die in Schritt 613 bestimmt wurden.
  • id = 3
  • Dann wird aus G der Pfad entfernt, der in Schritt 611 für yc bestimmt wurde, und zu G hinzugefügt werden ein Knoten u mit dem Etikett sc = 4, ein Knoten z mit dem Etikett id = 3, eine Kante von u nach z, Kanten von z nach w für alle w in W, und u mit dem Etikett sc = 4 wird zu den Mengen A und U2,0 hinzugefügt.
  • G: v0 < - z3 < - u4
  • A = {u4}
  • U2,0 = {w8 u4}
  • Schritt 624 überprüft dann, ob noch mehr Zustände s in Schritt 614 gefunden wurden. Dies ist nicht der Fall (N), so dass die Routine zu Schritt 626 fortschreitet, wo überprüft wird, ob in Schritt 611 noch mehr y's gefunden wurden. Auch dies ist nicht der Fall (N), so dass die Endposition 628 erreicht wird, in der das Verfahren zu Schritt 307 der Parsingroutine zurückkehrt. Im Anschluss an Schritt 307 wird der Schritt 310 erreicht, in dem überprüft wird, ob die Mengen A, R und Re leer sind. A ist nicht leer (N), so dass auf die Überprüfung in Schritt 304 (N) der Schritt 305 folgt.
  • In diesem Schritt wird die Aktor-Routine aufgerufen. Ausgehend von der Startposition 401 wird ein Element aus A entfernt, und dieses Element wird zum aktuellen Knoten vc gemacht.
  • A = {}
  • vc = u4
  • Schritt 403 bestimmt dann den Eintrag für den Endterm, der zu dem aktuellen Wort "works" (d. h. verb) gehört, und für den zu vc gehörenden Zustand (d. h. 4), wonach hieraus in Schritt 404 eine erste spezifizierte Aktion ausgelesen wird. Dies ergibt "shift 7". Nachdem die Schritte 405 (N) und 407 (Y) ausgeführt worden sind, wird der Schritt 408 ausgeführt. Das Element < u4, 7, *verb, a2> wird zu Q hinzugefügt.
  • Q = {< u4,7,*verb,a2> }
  • Nach Schritt 413 (N) und Schritt 415 (N) wird die Endposition 417 erreicht, und das Verfahren kehrt zu Schritt 305 der Parsingroutine zurück.
  • Eine Überprüfung in Schritt 310 zeigt, dass die Mengen A, R und Re leer sind (Y), so dass Schritt 311 ausgeführt wird.
  • In Schritt 311 wird die Verschiebe-Routine aufgerufen. In dieser Situation ist das Resultat der Verschiebe-Routine, dass ein neuer Knoten zu T hinzugefügt wird und zwei neue Knoten zu G hinzugefügt werden:
  • id = 4
  • T: 1 0 (*article [SING3 PLU3] a0)
  • 3 0 (NP [SING3](1,2)
  • 4 0 (*verb [SING3] works)
  • G: v0 < - z3 < - u4 < - x4 < - w7
  • U3,0 = {w7}
  • Nach der Verschiebe-Routine wird in Schritt 312 der Zähler i erhöht: i = 3. Dann überprüft Schritt 313, ob U3,0 leer ist. Dies ist nicht der Fall (N), wonach Schritt 316 überprüft, ob es ein nachfolgendes Grundelement gibt. Dies ist der Fall (Y), so dass dieses folgende Grundelement in Schritt 318 übernommen wird: "* endmark". In Schritt 303 wird j wieder auf 0 initialisiert, R, Re und Q werden als leere Mengen initialisiert, und A wird initialisiert auf U3,0, d. h. {w7}. Da A nicht leer ist, wird in Schritt 305 die Aktor-Routine aufgerufen. In der Aktor-Routine wird die Aktionstabelle für das Grundelement "." (*endmark) und den Zustand 7 gelesen. Dies ergibt "reduce 4". In Schritt 410 der Aktor-Routine wird überprüft, ob Regel 4 eine leere Erzeugungsregel ist. Dies ist nicht der Fall (N), so dass dann Schritt 412 ausgeführt wird, in dem R das Element < w7, x4, 4, *endmark, a3> erhält:
  • R = {< w7,x4,4,*endmark,a3> }
  • Da keine nachfolgenden Aktionen spezifiziert sind, kehrt die Aktor-Routine zur Parsingroutine zurück. In der Parsingroutine wird dann die Reduktionsroutine aufgerufen. In der Reduktionsroutine wird in Schritt 603 der linke Teil der Regel 4 bestimmt. Dies ist "VP(GETAL)". In diesen Regeln sind Merkmale deklariert, so dass in Schritt 605 die Vereinheitlichungsroutine aufgerufen wird. Ausgehend von der Startposition 701 werden in Schritt 702 validierte Merkmalsindikatoren auf der rechten Seite bestimmt.
  • Diese sind nicht leer, wie in Schritt 704 festgestellt wird, so dass das Verfahren mit Schritt 705 fortfährt. In diesem Schritt wird für jede Merkmalsgruppe, die auf der rechten Seite mehr als einmal deklariert ist, ein vereinheitlichter Merkmalsindikator bestimmt, indem der Querschnitt all der validierten Merkmalsindikatoren bestimmt wird, die zu dieser Gruppe gehören. Im vorliegenden Fall gibt es eine Gruppe, nämlich die Gruppe "GETAL". Dies ergibt: Unified(GETAL) 001000. Schritt 706 überprüft dann, ob der vereinheitlichte. Merkmalsindikator, der im vorhergehenden Schritt erhalten wurde, nicht leer ist. Dies ist der Fall (Y), so dass keine Verletzung hinsichtlich der Konformitäten zwischen den Merkmalsindikatoren festgestellt wird. Schritt 708 bestimmt dann Ftemp1, indem eine logische ODER-Operation an all den vereinheitlichten Merkmalsindikatoren vorgenommen wird, die in dem vorhergehenden Schritt erhalten wurden, zusammen mit einzigen validierten Merkmalsindikatoren, die auf der rechten Seite vorhanden sind. Dies ergibt Ftemp 1 = 001000. Dann wird Schritt 709 ausgeführt, in dem der Merkmalsindikator Ftemp2 bestimmt wird, in dem die Negation der Kombination all der deklarierten Merkmale auf der rechten Seite genommen wird:
  • Ftemp2 = 000000
  • In Schritt 710 werden aktuelle Merkmalsindikatoren für die linke Seite bestimmt:
  • F(Getal)act = (001000 ODER 000000) UND 111111 = 001000
  • Schritt 711 überprüft dann, ob all die in Schritt 710 erhaltenen Merkmalsindikatoren nicht leer sind. Dies ist tatsächlich der Fall (Y), so dass keine Verletzungen hinsichtlich der Weitergabe von Merkmalen festgestellt werden. Dann wird die Endposition 713 erreicht, und das Verfahren kehrt zu Schritt 605 der Reduktionsroutine zurück.
  • Das Verfahren schreitet fort mit der Ausführung von Schritt 606, der überprüft, ob der Verletzungszähler die Variable "threshold" übersteigt. Dies ist nicht der Fall (N), so dass Schritt 611 ausgeführt wird. In diesem Schritt werden all die y bestimmt, für die es in G einen Pfad der Länge 2 p - 2 = 2 von xc (= x4) nach y gibt. Dies ergibt y = z3. Schritt 613 bestimmt dann die id's, die zu den Symbolen von der rechten Seite der vorliegenden Regel gehören. Dies ergibt L = (4,3). Dann werden die Schritte 614-628 in der bereits beschriebenen Weise ausgeführt, mit dem folgenden Resultat:
  • sc = GOTO(STATE(w),N) = GOTO(0,VP) = 3
  • W = {v0}
  • id = 5
  • T: 1 0 (*article [SING3 PLU3] a1)
  • 2 0 (*noun [SING3] a2)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] a3)
  • 5 0 (VP [SING3](4,3))
  • G: v0 < - 25 < - u3
  • A = {u3}
  • U3,0 = {u3}
  • Das Verfahren kehrt dann zur Parsingroutine zurück, in der in Schritt 305 die Aktor-Routine aufgerufen wird, da A nicht leer ist.
  • Darin wird in Schritt 403 die Aktionstabelle für das Wort "*endmark." und den Zustand 3 konsultiert. Dies ergibt "reduce 1", so dass die Menge R geändert wird in: R = {< u3, z5, 1, *endmark, a3> }. Das Verfahren kehrt dann zur Parsingroutine zurück, wo, da R nicht leer ist, nun die Reduktionsroutine aufgerufen wird. In der Reduktionsroutine wird zunächst der linke Teil der zugehörigen, zu reduzierenden Regel bestimmt. Dieser ist N = S. Schritt 604 überprüft dann, ob in dieser Regel Merkmale deklariert sind. Dies ist der Fall (Y) so dass die Vereinheitlichungsroutine aufgerufen wird. Ausgehend von der Startposition 701 werden in Schritt 702 validierte Merkmalsindikatoren auf der rechten Seite bestimmt.
  • S: VP(GDTAL).
  • Fdecl 111111
  • Fact 001000
  • Funi 001000
  • Diese sind nicht leer, wie in Schritt 703 festgestellt wird, so dass das Verfahren mit Schritt 705 fortfährt. Da es auf der rechten Seite keine mehreren Merkmalsindikatoren gibt, die zu derselben Gruppe gehören, haben die Schritte 705 und 706 keine Auswirkung. Ftemp 1 wird in Schritt 708 bestimmt. Ftemp 1 = 001000. In Schritt 709 wird Ftemp2 bestimmt: Ftemp2 = 000000. In Schritt 610 werden dann die aktuellen Merkmalsindikatoren für die linke Seite bestimmt. Auf der linken Seite sind keine Merkmale deklariert worden, so dass hierfür keine aktuellen Merkmale bestimmt zu werden brauchen und die Schritte 710 und 711 keine Auswirkung haben. Dann wird die Endposition 713 erreicht, und das Verfahren kehrt zur Reduktionsroutine zurück.
  • Hier überprüft Schritt 604, ob der Verletzungszähler den Schwellenwert überschritten hat. Dies ist nicht der Fall, so dass die Routine mit Schritt 611 fortfährt. In diesem Schritt werden all die y bestimmt, für die es in G einen Pfad der Länge 2 p - 2 = 0 von xc ( = z5) nach y gibt. Dies ergibt y = z5. Schritt 613 bestimmt dann die id's, die zu den Symbolen von der rechten Seite der vorliegenden Regel gehören. Dies ergibt L = (5). Dann werden die Schritte 513-529 in der bereits beschriebenen Weise ausgeführt, mit dem folgenden Resultat:
  • sc = GOTO(STATE(w),N) = GOTO(STATE(V0),S) = 2
  • W = {v0}
  • id = 6
  • T: 1 0 (*article [SING3 PLU3] a1)
  • 2 0 (*noun [SING3] a2)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] a3)
  • 5 0 (VP [SING3](4,3))
  • 6 0 (S (5))
  • G: v0 < - z6 < - u2
  • A = {u2}
  • U3,0 = {u2}
  • Das Verfahren kehrt zur Parsingroutine zurück, wo in Schritt 305 die Aktor- Routine aufgerufen wird, da A nicht leer ist.
  • In der Aktor-Routine wird die Aktionstabelle für das Wort "*endmark." und den Zustand 2 konsultiert. Dies ergibt "shift 6", so dass Q = {u2, 6, *endmark, a3}. Das Verfahren kehrt dann von der Aktor-Routine zur Parsingroutine zurück, in der in Schritt 311 die Verschiebe-Routine aufgerufen wird. Darin wird zunächst in Schritt 311 U4,0 als leere Menge initialisiert, wonach die nachfolgenden Schritte 503-509 das folgende Resultat liefern:
  • id = 7
  • T: 1 0 (*article [SING3 PLU3] a1)
  • 2 0 (*noun [SING3] a2)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] a3)
  • 5 0 (VP [SING3](4,3))
  • 6 0 (S (5))
  • 7 0 (*endmark a4)
  • G: v0 < - z6 < - u2 < - x7 < - w6
  • U4, 0 = {w6}
  • Das Verfahren kehrt dann zur Parsingroutine zurück, in deren Schritt 312 der Zähler i um 1 erhöht wird: i = 4. Schritt 313 überprüft dann, ob U4,0 leer ist. Dies ist nicht der Fall (N), wonach Schritt 316 überprüft, ob es ein Grundelement gibt. Das Endsymbol ist noch vorhanden (Y), so dass das Endsymbol, $, in Schritt 318 gelesen wird. In Schritt 303 findet dann eine Anzahl von Initialisierungen statt, unter anderem A = U4,0 = {w6}. Da A nicht leer ist, wird in Schritt 305 die Aktor-Routine aufgerufen. Nach Konsultation der Aktionstabelle in Schritt 403, was "reduce 3" ergibt, wird R in Schritt 412 {< w6, x7, 3 end symbol, a4> }, wonach das Verfahren über Schritt 417 zur Parsingroutine zurückkehrt. Da R nicht leer ist, wird in der letzteren die Reduktionsroutine in Schritt 307 aufgerufen. In Schritt 603 der Reduktionsroutine wird der linke Teil der zugehörigen Regel bestimmt: N = TOP. Die weitere Ausführung der Reduktionsroutine liefert schließlich:
  • id = 8
  • T: 1 0 (*article [SING3 PLU3] a1)
  • 2 0 (*noun [SING3] a2)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] a3)
  • 5 0 (VP [SING3](4,3))
  • 6 0 (S (5))
  • 7 0 (*endmark a4)
  • 8 0 (TOP (6,7))
  • G: v0 < - z6 < - u2 < - z8 < - u1
  • A = {u1}
  • U4,0 = {u1}
  • Das Verfahren kehrt zur Parsingroutine zurück, und dann wird nach Ausführung der Schritte 310, 304 die Aktor-Routine aufgerufen. In Schritt 304 wird die Aktionstabelle für das Endsymbol "$" und den Zustand 1 konsultiert. Dies ergibt die Aktion "accept", und der Knoten u1 wird auch der Variablen r und id 8 der Variablen "result" zugewiesen. Das Verfahren kehrt über die Schritte 413 und 415 zur Parsingroutine zurück. In Schritt 311 der Parsingroutine wird die Verschiebe-Routine aufgerufen. Da jedoch die Menge Q leer ist, hat die Verschiebe- Routine keine Auswirkung, und Schritt 313 wird erreicht. Hier wird überprüft, ob U5,0 leer ist. Dies ist nicht der Fall, wonach Schritt 316 überprüft, ob ein Grundelement oder ein Endsymbol vorhanden ist. Dies ist nicht der Fall (N). In Schritt 317 wird das erhaltene Analyseergebnis in der Form einer Klammerstruktur abgelegt, wobei das zu dem gefundenen Analyseergebnis gehörende id der Variablen "result" zugewiesen ist. Dies ergibt folgendes (wobei aus Gründen der Klarheit die Grundelemente selbst angegeben sind):
  • result = 8
  • Die Parsingroutine erreicht dann die Endposition 315, worauf nach Rückkehr des Verfahrens von der Parsingeinheit der Schritt 205 erreicht wird, in dem überprüft wird, ob die Parsingroutine ein von null verschiedenes Ergebnis geliefert hat. Dies ist der Fall (Y), so dass in Schritt 209 überprüft wird, ob die Anzahl von Verletzungen gleich null ist. Dies ist ebenfalls der Fall (Y), so dass das Verfahren in Schritt 211 anhält.
  • Die anwenderfreundlichen und flexiblen Eigenschaften der Parsingeinheit in Bezug auf den Verletzungsmechanismus werden nun im einzelnen anhand einiger Beispiele erläutert. Die Tatsache, dass sich diese Beispiele auf die Verarbeitung natürlicher Sprache beziehen, hat keine beschränkende Bedeutung, sondern hat lediglich den Grund, dass diese Beispiele einfach zu verstehen sind.
  • In dem folgenden Beispiel wird angenommen, dass die Grammatik gemäß Tabelle 8 Anwendung findet. Es sei angenommen, dass das der Vorrichtung zugeführte Signal durch die Umwandlungseinheit 101 in eine Kette von Grundelementen zerlegt ist, die lautet: "A man work." (Ein Mann arbeiten). Die Verarbeitung ist dann dieselbe wie bei dem vorherigen Beispiel, bei dem die angegebene Kette lautete "A Man works", bis zur Reduktionsregel 4 der Grammatik. Zu diesem Zeitpunkt hat der Baum T die folgende Form (die Grundelement-Variablen ai sind aus Gründen der Klarheit durch die Grundelemente selbst ersetzt worden):
  • T: 1 0 (*article [SING3 PLU3] A)
  • 2 0 (*noun [SING3] man)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] work)
  • In der Reduktionsregel 4 der Grammatik, in der eine Nomen-Phrase (NP) und ein Verb zu einer Verb-Phrase (VP) reduziert werden, stimmen die Anzahlen der zu reduzierenden Terme nicht überein.
  • In dieser Situation werden die Merkmalsindikatoren wie folgt verarbeitet:
  • Die Bestimmung des Querschnitts der validierten Merkmalsindikatoren, die zu derselben Gruppe gehören, ergibt eine Verletzung, da dieser Querschnitt leer ist:
  • Funif(Getal) 000000 -> + 1
  • Es gilbt deshalb eine Verletzung im Hinblick auf die Konformität zwischen den Merkmalen von Termen von der rechten Seite.
  • Die Bestimmung von Ftemp1 ergibt: 000000.
  • Die Bestimmung von Ftemp2 ergibt: 000000.
  • Die Bestimmung von aktuellen Merkmalsindikatoren aus der linken Seite ergibt:
  • Fact(Getal) (000000 ODER 000000) UND 111111 = 000000 -> + 1
  • Es wird nun auch eine Verletzung festgestellt im Hinblick auf die Weitergabe von Merkmalen an den Term von der linken Seite, so dass beim Verlassen der Vereinheitlichungsroutine der Verletzungszähler den Zählwert 2 hat.
  • Das Verfahren kehrt nun wieder zur Reduktionsroutine zurück, und Schritt 606 überprüft, ob der Verletzungszählwert größer ist als die Variable "threshold", die in Schritt 202 auf den Anfangswert null gesetzt wurde. Dies ist der Fall (Y), wonach Schritt 607 überprüft, ob die Variable "new-threshold", die in Schritt 202 ebenfalls auf den Anfangswert null gesetzt wurden, gleich der Variablen "threshold" ist. Auch dies ist der Fall (Y), wonach "new-threshold" in Schritt 609 den Wert 2 erhält. Die Reduktionsroutine wird nicht fortgesetzt, und das Verfahren kehrt zur Parsingroutine zurück und fährt mit Schritt 310 fort. All die Mengen A, R und Re sind leer (Y) so dass in Schritt 311 die Verschiebe-Routine aufgerufen wird. Auch die Menge Q ist leer, da die Aktor-Routine nicht aufgerufen wurde. Folglich wird in der Verschiebe-Routine nur Ui + 1,0 als leere Menge initialisiert, wonach die Endposition 509 direkt erreicht wird. Das Verfahren kehrt zur Parsingroutine zurück, wo dann i in Schritt 312 erhöht wird. Schritt 313 überprüft dann, ob Ui leer ist. Dies ist der Fall (Y). In Schritt 314 wird dann der Variablen "result" der Wert null zugewiesen, wonach die Parsingroutine die Endposition 315 erreicht.
  • Das Verfahren kehrt zur Hauptroutine der Parsingeinheit zurück, wonach Schritt 205 überprüft, ob die Variable "result" einen von null verschiedenen Wert hat. Dies ist nicht der Fall (N), so dass das Verfahren mit Schritt 206 fortgesetzt wird. Schritt 206 überprüft, ob die Variable "threshold" einen Wert hat, der größer ist als ein voreingestellter Wert MAX. Unter der Annahme, dass in der vorliegenden Situation MAX den Wert 20 hat, muss diese Frage verneint werden (N). In Schritt 208 wird dann der Wert der Variablen "threshold" auf 2 + 1 = 3 festgesetzt, und der Wert 3 wird auch der Variablen "new-threshold" zugewiesen. Die Parsingroutine wird dann in Schritt 204 erneut aufgerufen.
  • Die Parsingroutine beginnt dann wieder mit dem Initialisieren von unter anderem G und T und dem Einlesen des ersten Grundelements. Wenn das Verfahren wieder die Reduktionsregel 4 der Grammatik erreicht, so liefert die Vereinheitlichung wieder einen Zählwert von zwei Verletzungen. Schritt 606 der Reduktionsroutine zeigt nun jedoch, dass der Zählwert nicht größer ist als der Schwellenwert (N), so dass das Verfahren mit der Ausführung der Schritte 611-628 der Reduktionsroutine fortfährt. Nach Hinzufügen eines Knotens zu T in Schritt 618 wird auch der Stand des Verletzungszählers angegeben. Dies ergibt:
  • id = 5
  • T: 1 0 (*article [SING3 PLU3] the)
  • 2 0 (*noun [SING3] man)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] work)
  • 5 2 (VP [SING3](4,3))
  • A = {u3}
  • U3,0 = {u3}
  • Das Verfahren kehrt dann zur. Parsingroutine zurück, wo dann in Schritt 305 die Aktor-Routine aufgerufen wird, da A nicht leer ist.
  • Das Verfahren wird fortgesetzt, und die Reduktion von Regel 1 der Grammatik zeigt wieder eine Verletzung, weil der zu VP gehörende aktuelle Merkmalsindikator null ist. Der vom Verletzungszähler angegebene Zählwert wird somit 3. Der Zählwert ist jedoch immer noch nicht größer als der Schwellenwert, was in Schritt 606 überprüft wird (N), so dass das Verfahren fortgesetzt wird. Es treten keine weiteren Regelverletzungen auf, so dass die Parsingroutine schließlich das folgende Analyseergebnis liefert:
  • T: 1 0 (*article [SING3 PLU3] the)
  • 2 0 (*noun [SING3] man)
  • 3 0 (NP [SING3](1,2))
  • 4 0 (*verb [SING3] work)
  • 5 2 (VP [SING3](4,3))
  • 6 3 (S (5))
  • 7 0 (*endmark .)
  • 8 3 (TOP (6,7))
  • In Schritt 317 wird T in der Form einer Klammerstruktur abgelegt, und das zu dem gefundenen Analyseergebnis gehörende id wird der Variablen "result" zugewiesen. Dies ergibt:
  • result = 8
  • Schritt 205 der Hauptroutine der Parsingeinheit überprüft dann, ob die Variable "result" von null verschieden ist. Dies ist der Fall (Y), wonach Schritt 209 überprüft, ob der Verletzungszählwert gleich null ist. Dies ist nicht der Fall (N), so dass das Verfahren mit Schritt 210 fortgesetzt wird, in dem eine Korrekturroutine ausgeführt wird. Im vorliegenden Beispiel, das sich auf die Verarbeitung von natürlicher Sprache bezieht, kann eine Korrekturroutine dieser Art eine Beugungskorrektur umfassen, wie sie in EP-A-0 052 469 beschrieben wird, in Kombination mit der erfindungsgemäßen Parsingroutine. Dabei kann das erhaltene Analyseergebnis vorteilhaft ausgenutzt werden, in dem diejenigen Reduktionsschritte angegeben sind, in denen Regelverletzungen festgestellt wurden. Die Hauptroutine der Parsingeinheit erreicht dann die Endposition 211, wonach die erhaltenen Analyseergebnisse und die korrigierten Signale für die weitere Verarbeitung verfügbar sind.
  • Dieses Beispiel zeigt, dass die Vorrichtung dazu geeignet ist, Signale anhand eines Systems von Regeln zu verifizieren und dann anhand des erhaltenen Analyseergebnisses eine Korrektur auszuführen.
  • Bevor eine Grammatik, d. h. ein System von Regeln, wirklich zum Gebrauch in dem Verfahren geeignet ist, müssen diese Regeln in eine Form gebracht werden, die für das Verfahren geeignet ist, wobei eine solche Form eine Aktionstabelle, eine "Goto"-Tabelle und eine Merkmalstabelle umfasst und die letztere ein Schema aus Merkmalsindikatoren ist, die an die Regeln gekoppelt sind. Die Prozedur, mit der ein Parser für die Verarbeitung spezifischer Signale angepasst wird, besteht üblicherweise darin, dass eine Grammatik in der Form einer Anzahl von Umschreibregeln in Übereinstimmung mit einem bestimmten grammatischen Formalismus aufgeschrieben wird und dann die Grammatik kompiliert wird, d. h., aus der Grammatik wird eine Anzahl von Tabellen abgeleitet, die für die automatische Verarbeitung in einem Computer geeignet sind. Das Ableiten einer Aktionstabelle und einer "Goto"-Tabelle aus einer Grammatik sind im Stand der Technik bekannt. Das Ableiten einer Merkmalstabelle in Übereinstimmung mit der Erfindung wird nun im einzelnen unter Bezugnahme auf das in Fig. 11 illustrierte Verfahren erläutert. Ausgehend von der Startposition 1101 werden in Schritt 1102 all die definierten Merkmale aus der zu verarbeitenden Grammatik eingelesen. Jedes Merkmal erhält dann in Schritt 1103 eine Ordnungszahl. Schritt 1104 bestimmt die Anzahl von N-Bit-Wörtern, die zur Definition des Merkmalsindikators benötigt werden. Diese Anzahl ist bestimmt durch die Gesamtzahl von definierten Merkmalen und durch N. Für eine Implementierung, die in der Programmiersprache C programmiert ist, und unter Verwendung eines Unix-Betriebssystems ist N = 32 eine geeignete Wahl. Die Regel mit der Nummer 0 wird dann in Schritt 1105 gelesen. In Schritt 1106 wird dann die erste Gruppe, die zu dem linksseitigen Term gehört, aus der Regel eingelesen. Der Merkmalsindikator wird dann in Schritt 1107 bestimmt. Wenn dies eine in der Grammatik definierte Gruppe betrifft, so werden die Merkmale, die die Gruppe umfasst, anhand dieser Definition bestimmt. Wenn ein einziges, direkt in der grammatischen Regel angegebenes Merkmal betroffen ist, so umfasst die mit dem Namen dieses einzelnen Merkmals bezeichnete Gruppe nur dieses eine Merkmal. Außerdem ist es zulässig, eine Gruppe in einer grammatischen Regel zu definieren, indem vordefinierte Gruppen und Merkmale hinzugefügt oder abgezogen wer den. Der Merkmalsindikator wird dann gebildet, indem eine Eins in einer Kette von Nullen ersetzt wird, deren Länge der Anzahl von Merkmalen entspricht, wobei jede Null eine Ordnungszahl hat, die einer Ordnungszahl eines enthaltenen Merkmals entspricht. Die erhaltene Kette wird dann auf die Anzahl von N-Bit-Wörtern abgebildet, die in Schritt 1104 erhalten wurde. Schritt 1108 überprüft dann, ob ein identischer Merkmalsindikator bereits auf der rechten Seite bekannt ist. Wenn ja (Y), wird in Schritt 1109 der Abstand von diesem zuvor bestimmten Merkmalsindikator bestimmt. In Schritt 1110 werden die erhaltenen. Daten dann in einer geeigneten Speicherstruktur abgelegt. Schritt 1111 überprüft dann, ob eine weitere Gruppe in dem aktuellen Term vorhanden ist. Wenn ja (Y), wird diese Gruppe in Schritt 1112 eingelesen, und dann schreitet das Verfahren mit Schritt 1107 fort. Falls nicht (N), wird in Schritt 1113 überprüft, ob die aktuelle Regel einen Nachfolgeterm hat. Wenn es einen Nachfolgeterm gibt (Y) fährt das Verfahren mit Schritt 1112 fort. Wenn es keinen Nachfolgeterm gibt (N), überprüft Schritt 1114, ob die Grammatik eine weitere Regel enthält. Wenn ja (Y), wird diese Regel in Schritt 1115 gelesen, und das Verfahren fährt mit Schritt 1106 fort. Falls nicht, erreicht das Verfahren die Endposition 1116. Tabelle 11 zeigt ein Beispiel für eine geeignete Speicherstruktur, die als eine Klammerstruktur wiedergegeben ist, in der die codierten Merkmalsgruppen für jede Umschreibregel gruppiert und in Übereinstimmung mit der Umschreibregel geordnet sind, und in der ein Zeiger zu einer vorhergehenden identisch codierten Merkmalsgruppe, die zu der Grammatik nach Tabelle 8 gehört, hinzugefügt ist. Tabellle 11
  • Die Reihenfolge der Merkmale ist: SING1 SING2 SING3 PLU1 PLU2 PLU3. Dadurch, dass die codierten Merkmalsgruppen mit Zeigern auf identische Gruppen innerhalb desselben rechten Teils versehen sind, wird die Feststellung von Übereinstimmung innerhalb einer Gruppe von identischen Merkmalen beschleunigt. Für den Zeiger wird der in Schritt 1109 bestimmte Abstand genommen.
  • Die Verarbeitung von Merkmalen gemäß der Erfindung bietet beträchtliche Vorteile. Der Entwickler eines Erkennungssystems, das gemäß der Erfindung arbeitet, wird dadurch in die Lage versetzt, genau zu bestimmen, in welchem Ausmaß Signale von den idealen Signalen abweichen dürfen, um dennoch akzeptabel zu sein. Dies ist ein beträchtlicher Vorteil, insbesondere in Situationen, in denen die eintreffenden Signale verstümmelt sind, z.B. aufgrund von Ungenauigkeiten der Sensoreinrichtung, in der die Signale sehr schwach sind, oder wenn die Signale ursprünglich eine beträchtliche Variation haben, wie im Fall von handgeschriebenen Zeichen oder Sprachsignalen.
  • Die Nützlichkeit und Flexibilität einer Grammatik, die in Übereinstimmung mit einem Grammatikformalismus geschrieben ist, der erfindungsgemäß angepasst ist, soweit es die Einführung von Merkmalen in Umschreibregeln betrifft, wird im einzelnen anhand einiger Beispiele erläutert. Die Beispiele beziehen sich auf die in Tabelle 12 gezeigten grammatischen Regeln. Diese Regeln, die nicht miteinander konsistent sind, dienen nur zur Illustration der Nützlichkeit der erfindungsgemäß angewandten formalen Grammatik. Ihre Anwendung ist nicht auf die Verarbeitung von natürlicher Sprache beschränkt. Tabelle 12
  • Regel 0 zeigt, dass eine Merkmalsgruppe durch Addieren von Merkmalen gebildet werden kann. Die Gruppe Getal ist gleich der Gruppe, die bei VP definiert wurde. Dies impliziert, dass bei der Vereinheitlichung eine Überprüfung auf Konformität zwischen den entsprechenden aktuellen Merkmalsindikatoren vorgenommen wird. Wenn eine Konformitätsprüfung vermieden werden soll, ist es möglich, wie in Regel 1 illustriert wird, ein Blindmerkmal (DUMMY) zu der Gruppe Getal hinzuzufügen. Die Gruppe "Getal + Dum" ist nicht gleich der Gruppe "Getal", und folglich wird keine Konformitätsprüfung ausgeführt. In Regel 2 ist NP stets das Merkmal "PLU3" zugewiesen. Auf diese Weise ist es möglich, Merkmale einzuführen, die nicht mehr mit einem Endterm verbunden zu sein brauchen.

Claims (17)

1. Vorrichtung zur syntaktischen Signalanalyse mit:
einer Umwandlungseinheit (101) zum Umwandeln eines eingegebenen Signals in Grundelemente und normierte Grundelemente, die den Grundelementen entsprechen,
einer Mustererkennungseinheit (102), die mit der Umwandlungseinheit verbunden ist, zur syntaktischen Analyse von jeweils einer Kette aus normierten Grundelementen anhand einer Grammatik,
einer Speichereinheit (103) zum Speichern der Grammatik,
wobei die Grammatik Terme enthält, die in Umschreibregeln geordnet sind und die auch Endterme umfassen, die normierten Grundelementen entsprechen,
dadurch gekennzeichnet, dass
- die Grammatik weiterhin einen Satz vordefinierter Merkmale aufweist, die in einer geordneten Reihe angeordnet und in Merkmalsgruppen gesammelt sind, die in Bezug auf die geordnete Reihe codiert sind, wobei Termen der Grammatik Merkmalsgruppen als deklarierte Merkmalsgruppen zugewiesen sind,
- die Umwandlungseinheit eine Extraktionseinrichtung aufweist, zum Ableiten von Merkmalen, die in dem Satz vordefinierter Merkmale enthalten sind, aus jedem Grundelement, zum Kombinieren der aus jedem Grundelement abgeleiteten Merkmale, um aktuelle Merkmalsgruppen entsprechend den deklarierten Merkmalsgruppen zu bilden, die zu dem entsprechenden Term der Grammatik gehören, und zum Zuweisen der aktuellen Merkmalsgruppen zu den normierten Grundelementen, die den Grundelementen entsprechen,
- die Mustererkennungseinheit eine Einrichtung zur Vereinheitlichung der codierten aktuellen und deklarierten Merkmalsgruppen und eine Einrichtung zum Zuweisen einer Verletzungswertzahl zu der syntaktischen Analyse auf der Grundlage einer Vereinheitlichung der aktuellen und deklarierten Merkmalsgruppen aufweist und dass
- die Vorrichtung eine Einrichtung zum Abbrechen des Analysevorgangs, wenn die Verletzungswertzahl einen Schwellenwert übersteigt, eine Einrichtung zum Anheben des Schwellenwertes auf die Summe aus dem Wert der Verletzungswertzahl und einem einstellbaren Wert, wenn die Verletzungswertzahl den Schwellenwert übersteigt, und eine Einrichtung zum Neustarten des Analysevorgangs aufweist.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Vorrichtung eine Korrektureinrichtung aufweist, die aktiviert wird, wenn die Verletzungswertzahl von null verschieden ist.
3. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Vorrichtung auch eine Warneinrichtung aufweist, die in Abhängigkeit von der Verletzungswertzahl aktiviert wird.
4. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass eine Merkmalsgruppe durch eine Binärzahl repräsentiert ist.
5. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Umwandlungseinheit eine Detektoreinrichtung zum Umwandeln des Eingangssignals in ein elektrisches Signal aufweist.
6. Verfahren zur syntaktischen Signalanalyse anhand einer Grammatik, die in einem Speicher gespeichert ist, mit den folgenden Schritten:
- Umwandeln eines eingegebenen Signals in eine Kette von Grundelementen und normierten Grundelementen, die den Grundelementen entsprechen,
- Ausführen der syntaktischen Analyse jeweils an einer Kette von normierten Grundelementen mit Hilfe der Grammatik,
dadurch gekennzeichnet, dass
die Grammatik einen Satz vordefinierter Merkmale aufweist, die in einer geordneten Reihe angeordnet und in Merkmalsgruppen gesammelt sind, die in Bezug auf die geordnete Reihe codiert sind, wobei Termen der Grammatik Merkmalsgruppen als deklarierte Merkmalsgruppen zugewiesen sind, und
dass das Verfahren außerdem die folgenden Schritte aufweist:
- Ableiten aktueller Merkmale aus jedem Grundelement,
- Kombinieren aktueller Merkmale, um aktuelle Merkmalsgruppen in Übereinstimmung mit den deklarierten Merkmalsgruppen zu bilden, die zu dem entsprechenden Term der Grammatik gehören,
- Zuweisen der aktuellen Merkmalsgruppen an die normierten Grundelemente, die den Grundelementen entsprechen,
- Vereinheitlichen der codierten aktuellen und deklarierten Merkmalsgruppen,
- Zuweisen einer Verletzungswertzahl zu der syntaktischen Analyse auf der Grundlage der Vereinheitlichung der aktuellen und deklarierten Merkmalsgruppen,
- wenn die Verletzungswertzahl einen Schwellenwert übersteigt: Abbrechen des Analysevorgangs, Erhöhen des Schwellenwertes auf die Summe aus dem Wert der Verletzungswertzahl und einem einstellbaren Wert und Neustarten des Analysevorgangs für die Kette von normierten Grundelementen.
7. Ver fahren nach Anspruch 6, bei dem die Grammatik Terme aufweist, die in Umschreibregeln geordnet und für jede Umschreibregel auf einen linken Teil und einen rechten Teil verteilt sind, und bei dem der Analysevorgang einen Reduktionsschritt einschließt, zum Reduzieren einer Kette von aktuellen Termen auf einen aktuellen reduzierten Term, durch Umschreibung - in Übereinstimmung mit einer anwendbaren Umschreibregel, die einen der Kette von aktuellen Termen entsprechenden rechten Teil enthält - der Kette von aktuellen Termen, um den Term auf der linken Seite zu bilden,
dadurch gekennzeichnet, dass die deklarierten Merkmalsgruppen den Termen aus der Grammatik zugeordnet sind,
dass die Vereinheitlichung für jeden Reduktionsschritt an den deklarierten und aktuellen Merkmalsgruppen ausgeführt wird, die zu den Termen der anwendbaren Umschreibregel gehören, um die aktuellen Merkmalsgruppen des aktuellen reduzierten Terms zu bestimmen, der im vorliegenden Reduktionsschritt erhalten wurde, und dass die Vereinheitlichung die folgenden Schritte umfasst:
- Bestimmen der Konformität zwischen jeder deklarierten Merkmalsgruppe und der entsprechenden aktuellen Merkmalsgruppe und Erhöhen einer Verletzungswertzahl, wenn keine Konformität festgestellt wird,
- Bestimmen der Konformität zwischen aktuellen Merkmalsgruppen, die identischen Merkmalsgruppen entsprechen, die im rechten Teil deklariert sind, und Erhöhen der Verletzungswertzahl, wenn keine Konformität festgestellt wird, und
- Bestimmen aktueller Merkmalsgruppen für jede Merkmalsgruppe, die im linken Teil deklariert ist, und Erhöhen der Verletzungswertzahl, wenn eine aktuelle Merkmalsgruppe keinerlei Merkmal codiert.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass die Bestimmung von Konformität zwischen jeder deklarierten Merkmalsgruppe und der entsprechenden aktuellen Merkmalsgruppe jeweils die Bestimmung einer validierten Merkmalsgruppe umfasst, durch Bildung des logischen Querschnitts der zugehörigen aktuellen Merkmalsgruppe mit der zugehörigen deklarierten Merkmalsgruppe, dass die Bestimmung von Konformität zwischen aktuellen Merkmalsgruppen und damit paarweise identischen Merkmalsgruppen, die im rechten Teil deklariert sind, jeweils die Bestimmung einer vereinheitlichten Merkmalsgruppe umfasst, durch Bestimmen des logischen Querschnitts all der entsprechenden validierten Merkmalsgruppen, und dass das Verfahren auch die folgenden Schritte umfasst:
a. Codieren aller Merkmale, die nicht zu einem der Terme des rechten Teils der vorliegenden Umschreibregel gehören, in eine Merkmalsgruppe,
b. Bestimmen der logischen Kombination all der vereinheitlichten Merkmalsgruppen zusammen mit validierten Merkmalsgruppen, die deklarierten Merkmalsgruppen entsprechen, die in der zugehörigen Umschreibregel nur einmal auftreten, und
dass die Bestimmung von aktuellen Merkmalsgruppen für jede im linken Teil deklarierte Merkmalsgruppe umfasst:
falls die im linken Teil deklarierte Merkmalsgruppe auch im rechten Teil deklariert ist: Bestimmen des logischen Querschnitts der deklarierten Merkmalsgruppe mit der logischen. Kombination der in Schritt a bestimmten Merkmalsgruppe und dem Ergebnis von Schritt b und
falls die im linken Teil deklarierte Merkmalsgruppe nicht im rechten Teil deklariert ist: Zuweisen der deklarierten Merkmalsgruppe an die aktuelle Merkmalsgruppe.
9. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass das Verfahren auch die folgenden Schritte umfasst:
- wenn die syntaktische Analyse wenigstens zwei Lösungen ergibt, Auswählen der Lösung, die die niedrigste Verletzungswertzahl hat.
10. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass das Verfahren auch den folgenden Schritt aufweist:
- Starten eines Korrekturvorgangs, wenn die Verletzungswertzahl von null verschieden ist.
11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass der Korrekturvorgang die Anpassung eines Grundelements auf der Grundlage des Analyseergebnisses umfasst.
12. Verfahren nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass die Warneinrichtung aktiviert wird, wenn die Analyse kein Ergebnis liefert und auch wenn die Verletzungswertzahl einen einstellbaren Wert übersteigt.
13. Verfahren nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet, dass das Verfahren auch den folgenden Schritt aufweist: Codieren von Merkmalsgruppen zu Binärzahlen.
14. Vorrichtung zur Signalanalyse nach Anspruch 1, dadurch gekennzeichnet, dass
- die Merkmalsextraktionseinrichtung dazu ausgebildet ist, aus einem Grundelement einander ausschließende Merkmale abzuleiten und diese Merkmale in die aktuellen Merkmalsgruppen aufzunehmen, und
- dass die Mustererkennungseinrichtung dazu ausgebildet ist, die in den aktuellen Merkmalsgruppen enthaltenen, einander ausschließenden Merkmale zu verarbeiten.
15. Vorrichtung zur syntaktischen Signalanalyse nach Anspruch 1, anwendbar zur optischen Zeichenerkennung, wobei das von der Mustererkennungseinheit auszugebende syntaktische Analyseergebnis wenigstens ein zu erkennendes Zeichen enthält, dadurch gekennzeichnet, dass
- die Vorrichtung eine Speichereinrichtung zum Speichern eines Zeichenbildes aufweist, das einem erkannten Zeichen zugeordnet ist und durch die Grundelemente gebildet wird, die den normierten Grundelementen aus der zugehörigen eingegebenen Kette entsprechen, zusammen mit der Verletzungswertzahl,
- dass die Vorrichtung eine Einrichtung aufweist zum Vergleich einer gespeicherten Verletzungswertzahl mit einer Verletzungswertzahl, die von der Mustererkennungseinrichtung für dasselbe erkannte Zeichen bestimmt wurde, und zum Überschreiben eines gespeicherten Zeichenbildes mit einem Zeichenbild, das zu demselben erkannten Zeichen gehört, wenn die Vergleichseinrichtung zeigt, dass die gespeicherte Verletzungswertzahl größer ist als die Verletzungswertzahl des erkannten Zeichens.
16. Vorrichtung zur syntaktischen Signalanalyse nach Anspruch 1, 14 oder 15, anwendbar für die optische Zeichenerkennung, bei der das Analyseergebnis wenigstens ein zu erkennendes Zeichen enthält, dadurch gekennzeichnet, dass die Ketten von normierten Grundelementen, die der Mustererkennungseinheit zugeführt werden, jeweils eine Anzahl normierter Grundelemente umfassen, derart, dass die entsprechenden syntaktischen Analyseergebnisse jeweils eine im wesentlichen gleiche Anzahl von zu erkennenden Zeichen umfassen.
17. Vorrichtung nach Anspruch 16, dadurch gekennzeichnet, dass aufeinander folgende Ketten von normierten Grundelementen, die der Mustererkennungseinheit zugeführt werden, einander überlappen.
DE69331044T 1993-02-19 1993-03-29 Vorrichtung und Verfahren zur syntaktischen Signalanalyse Expired - Fee Related DE69331044T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NL9300310A NL9300310A (nl) 1993-02-19 1993-02-19 Inrichting en werkwijze voor syntactische signaal-analyse.

Publications (2)

Publication Number Publication Date
DE69331044D1 DE69331044D1 (de) 2001-12-06
DE69331044T2 true DE69331044T2 (de) 2002-06-06

Family

ID=19862082

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69331044T Expired - Fee Related DE69331044T2 (de) 1993-02-19 1993-03-29 Vorrichtung und Verfahren zur syntaktischen Signalanalyse

Country Status (5)

Country Link
US (2) US5550934A (de)
EP (1) EP0612018B1 (de)
DE (1) DE69331044T2 (de)
NL (1) NL9300310A (de)
TW (1) TW308659B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007006084A1 (de) 2007-02-07 2008-09-25 Jacob, Christian E., Dr. Ing. Verfahren zum zeitnahen Ermitteln der Kennwerte, Harmonischen und Nichtharmonischen von schnell veränderlichen Signalen mit zusätzlicher Ausgabe davon abgeleiteter Muster, Steuersignale, Ereignisstempel für die Nachverarbeitung sowie einer Gewichtung der Ergebnisse

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850476A (en) * 1995-12-14 1998-12-15 Xerox Corporation Automatic method of identifying drop words in a document image without performing character recognition
US5892842A (en) * 1995-12-14 1999-04-06 Xerox Corporation Automatic method of identifying sentence boundaries in a document image
US5848191A (en) * 1995-12-14 1998-12-08 Xerox Corporation Automatic method of generating thematic summaries from a document image without performing character recognition
US5870700A (en) * 1996-04-01 1999-02-09 Dts Software, Inc. Brazilian Portuguese grammar checker
US6236959B1 (en) * 1998-06-23 2001-05-22 Microsoft Corporation System and method for parsing a natural language input span using a candidate list to generate alternative nodes
US20070118358A1 (en) * 2005-11-08 2007-05-24 Tom Alexander S Phrase processor
US9984071B2 (en) 2006-10-10 2018-05-29 Abbyy Production Llc Language ambiguity detection of text
US20080086298A1 (en) * 2006-10-10 2008-04-10 Anisimovich Konstantin Method and system for translating sentences between langauges
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
US9633005B2 (en) 2006-10-10 2017-04-25 Abbyy Infopoisk Llc Exhaustive automatic processing of textual information
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
US9047275B2 (en) 2006-10-10 2015-06-02 Abbyy Infopoisk Llc Methods and systems for alignment of parallel text corpora
US8145473B2 (en) 2006-10-10 2012-03-27 Abbyy Software Ltd. Deep model statistics method for machine translation
US9645993B2 (en) 2006-10-10 2017-05-09 Abbyy Infopoisk Llc Method and system for semantic searching
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
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
US8219407B1 (en) 2007-12-27 2012-07-10 Great Northern Research, LLC Method for processing the output of a speech recognizer
US9262409B2 (en) 2008-08-06 2016-02-16 Abbyy Infopoisk Llc Translation of a selected text fragment of a screen
US9244902B2 (en) 2011-10-20 2016-01-26 Zynga, Inc. Localization framework for dynamic text
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
RU2592395C2 (ru) 2013-12-19 2016-07-20 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Разрешение семантической неоднозначности при помощи статистического анализа
RU2586577C2 (ru) 2014-01-15 2016-06-10 Общество с ограниченной ответственностью "Аби ИнфоПоиск" Фильтрация дуг в синтаксическом графе
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

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4907285A (en) * 1984-08-24 1990-03-06 Hitachi, Ltd. Image understanding system
JPH07107694B2 (ja) * 1984-08-31 1995-11-15 株式会社日立製作所 文書処理装置
US4773099A (en) * 1985-10-10 1988-09-20 The Palantir Corporation Pattern classification means for use in a pattern recognition system
US5060277A (en) * 1985-10-10 1991-10-22 Palantir Corporation Pattern classification means using feature vector regions preconstructed from reference data
US5077807A (en) * 1985-10-10 1991-12-31 Palantir Corp. Preprocessing means for use in a pattern classification system
US5133023A (en) * 1985-10-15 1992-07-21 The Palantir Corporation Means for resolving ambiguities in text based upon character context
US5261009A (en) * 1985-10-15 1993-11-09 Palantir Corporation Means for resolving ambiguities in text passed upon character context
US4754489A (en) * 1985-10-15 1988-06-28 The Palantir Corporation Means for resolving ambiguities in text based upon character context
US4837842A (en) * 1986-09-19 1989-06-06 Holt Arthur W Character and pattern recognition machine and method
US4887212A (en) * 1986-10-29 1989-12-12 International Business Machines Corporation Parser for natural language text
DE68928703T2 (de) * 1988-07-20 1998-12-10 Fujitsu Ltd., Kawasaki, Kanagawa Buchstabenerkennungsvorrichtung
JPH0261763A (ja) * 1988-08-29 1990-03-01 Sharp Corp 機械翻訳装置
EP0361570B1 (de) * 1988-09-15 1997-08-06 Océ-Nederland B.V. System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes
AU624205B2 (en) * 1989-01-23 1992-06-04 General Electric Capital Corporation Variable length string matcher
US5125039A (en) * 1989-06-16 1992-06-23 Hawkins Jeffrey C Object recognition system
US5020112A (en) * 1989-10-31 1991-05-28 At&T Bell Laboratories Image recognition method using two-dimensional stochastic grammars
NL9100849A (nl) * 1991-05-16 1992-12-16 Oce Nederland Bv Werkwijze voor het met behulp van een computersysteem corrigeren van een fout in een, in een natuurlijke taal gestelde zin, alsmede een inrichting geschikt voor het uitvoeren van deze werkwijze.
US5343537A (en) * 1991-10-31 1994-08-30 International Business Machines Corporation Statistical mixture approach to automatic handwriting recognition
US5359673A (en) * 1991-12-27 1994-10-25 Xerox Corporation Method and apparatus for converting bitmap image documents to editable coded data using a standard notation to record document recognition ambiguities
US5317647A (en) * 1992-04-07 1994-05-31 Apple Computer, Inc. Constrained attribute grammars for syntactic pattern recognition

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007006084A1 (de) 2007-02-07 2008-09-25 Jacob, Christian E., Dr. Ing. Verfahren zum zeitnahen Ermitteln der Kennwerte, Harmonischen und Nichtharmonischen von schnell veränderlichen Signalen mit zusätzlicher Ausgabe davon abgeleiteter Muster, Steuersignale, Ereignisstempel für die Nachverarbeitung sowie einer Gewichtung der Ergebnisse

Also Published As

Publication number Publication date
TW308659B (de) 1997-06-21
US5784489A (en) 1998-07-21
EP0612018B1 (de) 2001-10-31
US5550934A (en) 1996-08-27
EP0612018A1 (de) 1994-08-24
DE69331044D1 (de) 2001-12-06
NL9300310A (nl) 1994-09-16

Similar Documents

Publication Publication Date Title
DE69331044T2 (de) Vorrichtung und Verfahren zur syntaktischen Signalanalyse
DE68928230T2 (de) System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes
DE69423254T2 (de) Verfahren und Gerät zur automatischen Spracherkennung von Dokumenten
DE69934371T2 (de) Apparat und Verfahren zum Verarbeiten einer natürlichen Sprache
DE69807699T2 (de) Vorrichtung und verfahren zur syntaxanalyse und transformation von befehlen
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE69527026T2 (de) Maschinelles Übersetzungssystem
DE68928693T2 (de) Verfahren zur Behandlung von digitalen Textdaten
DE69710459T2 (de) Identifizierung von wörtern im japanischem text durch ein rechnersystem
DE69331209T2 (de) Umformung von verwandten Wortformen für Textindexierung und Wiederauffindung mittels endlicher Automaten
DE69818796T2 (de) Maschinenorganisiertes verfahren und vorrichtung zum übersetzen einer wortorganisierten textquelle in einen wortorganisierten zieltext
DE68929038T2 (de) Verfahren zur Verarbeitung von digitalen Textdaten
DE3751276T2 (de) Zergliedergerät für Naturalsprachen.
DE69513369T2 (de) Verfahren und vorrichtung zur zusammenfassung statischer prozesse in eine auf regeln basierende grammatikalisch definierte natuerliche sprache
DE69837979T2 (de) System zum Extrahieren einer mehrsprachigen Terminologie
DE69033471T2 (de) Natürliche Sprache verarbeitendes Gerät
DE69322741T2 (de) Vorrichtung und Methode zur Verwendung im Ausrichten von zweisprachigen Corpora
DE68923981T2 (de) Verfahren zur Bestimmung von Textteilen und Verwendung.
DE69429881T2 (de) Verfahren und vorrichtungen zur verarbeitung einer zweisprachigen datenbank
DE69829074T2 (de) Identifizierung der sprache und des zeichensatzes aus text-repräsentierenden daten
DE3587009T2 (de) Uebersetzungssystem.
DE69427848T2 (de) Unterstützungssystem zur Herstellung von Wörterbüchern
DE202005022113U1 (de) Training für eine Text-Text-Anwendung, die eine Zeichenketten-Baum-Umwandlung zum Training und Decodieren verwendet
DE3789073T3 (de) System zur maschinellen Übersetzung.
DE3616751A1 (de) Uebersetzungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee