DE69712411T2 - Verfahren und System um Datenstrukturen zu vereinigen - Google Patents

Verfahren und System um Datenstrukturen zu vereinigen

Info

Publication number
DE69712411T2
DE69712411T2 DE69712411T DE69712411T DE69712411T2 DE 69712411 T2 DE69712411 T2 DE 69712411T2 DE 69712411 T DE69712411 T DE 69712411T DE 69712411 T DE69712411 T DE 69712411T DE 69712411 T2 DE69712411 T2 DE 69712411T2
Authority
DE
Germany
Prior art keywords
processor
feature
copy
context
feature structure
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 - Lifetime
Application number
DE69712411T
Other languages
English (en)
Other versions
DE69712411D1 (de
Inventor
Ronald M. Kaplan
Maxwell
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.)
Xerox Corp
Original Assignee
Xerox Corp
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 Xerox Corp filed Critical Xerox Corp
Publication of DE69712411D1 publication Critical patent/DE69712411D1/de
Application granted granted Critical
Publication of DE69712411T2 publication Critical patent/DE69712411T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language
    • G06F8/3135Unification or backtracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Machine Translation (AREA)

Description

  • Die vorliegende Erfindung betrifft Techniken für die Vereinigung von Datenstrukturen.
  • Die Explosion von Information hat einen unerfüllten Bedarf für die automatische Verarbeitung natürlicher Sprachdokumente erzeugt. Solch eine Fähigkeit würde natürliche Sprachschnittstellen zu Datenbanken, automatisierte Erzeugung von Auszügen und Zusammenfassungen natürlichsprachiger Texte und automatisierte Übersetzung und Interpretation natürlicher Sprache ermöglichen. Die Entwicklung dieser Technologien wird behindert durch die Zeit, die für die Verarbeitung moderner grammatikalischer Formalismen benötigt wird.
  • Viele moderne grammatikalische Formalismen verwenden rekursive Strukturen, um die syntaktische Struktur natürlichsprachiger Äußerungen zu beschreiben. Merkmalstrukturen haben den Vorteil, leicht verstanden und leicht verwirklicht zu werden, wenn Vereinigungsbasierte Programmiersprachen wie Prolog gegeben sind. Jedoch haben sie den Nachteil, die effiziente Zerlegung der resultierenden grammatikalischen Formalismen schwierig zu machen, sowohl in der Theorie als auch in der Praxis. In der Theorie können grammatikalische Formalismen, die willkürliche rekursive Merkmalstrukturen verwenden, im schlimmsten Fall unentscheidbar sein. Selbst unter geeigneten Einschränkungen, wie etwa die Beschränkung auf Zerlegbarkeit außerhalb des Flusses nach LFG, kann der Formalismus im schlimmsten Fall exponentiell sein. Obgleich in der Praxis die Sorten von Phänomenen selten sind, die dazu führen, für einen Formalismus exponentielle Zeit zu benötigen, benötigen unabgestimmte, Vereinigungs-basierte Zerleger allgemein Minuten, um einen mäßig komplexen Satz zu zerlegen.
  • Godden, K., "Lazy unification", in Proceedings of the 28th Annual Meeting of the ACL, 1990, Seiten 180-187 legt träge Kopierverweise offen als einen anderen Weg der Reduzierung der Verarbeitungszeit, die mit Vereinigung zusammen geht. Wann immer Merkmalstrukturen von Tochterbestandteilen miteinander vereinigt werden, müssen die Merkmalstrukturen kopiert werden, um gegenseitige Beeinflussung zu vermeiden. Dies kommt daher, dass die Tochtermerkmalstrukturen in anderen Analysen des Satzes verwendet werden könnten. Jedoch ist das Kopieren von Merkmalstrukturen sehr aufwendig. Somit schlägt Godden das träge Kopieren der Merkmalstrukturen vor. Bei trägem Kopieren werden zuerst nur die obersten Stufen jeder Merkmalstruktur kopiert. Am Rand des Kopierten weisen standardmäßige Träge-Kopier-Verweise auf das Material zurück, das bisher noch nicht kopiert worden ist.
  • Die mit Kontext versehene Vereinigung, manchmal als disjunktive Vereinigung bezeichnet, ist ein anderes Verfahren der Reduzierung der Verarbeitungszeit, die für Vereinigung benötigt wird. Die mit Kontext versehene Vereinigung führt alternative Merkmalstrukturen durch Annotation der verschiedenen Alternativen mit Vorschlagsvariablen zusammen, welche die Alternativen bezeichnen, von denen sie kommen. Die folgenden Regeln formalisieren die Grundidee der mit Kontext versehenen Vereinigung:
  • 1. φ&sub1; φ&sub2; ist erfüllbar dann und nur dann, wenn ( p → φ&sub1;) ( p → φ&sub2;) erfüllbar ist, wo p eine neue Vorschlagsvariablen ist;
  • 2. Falls φ&sub1; φ&sub2; → φ&sub3; eine Reduktionsregel ist, dann ist (P → φ&sub1;) (Q → φ&sub2;) → (P Q → φ&sub3;) eine mit Kontext versehene Version der Regel, wo P und Q Boolsche Kombinationen der Vorschlagsvariablen sind;
  • 3. Falls P → FALSE ist, dann wird P bestätigt (P wird unbrauchbar (nogood) genannt).
  • Wenn wir an Vereinigung als einer Technik für das effizientere Schreiben von Termen durch Indizierung von Gleichheitsbeziehungen in einem Merkmalbaum denken, dann kann die mit Kontext versehene Vereinigung auf dieselbe Weise angesehen werden, wobei die Propositionsvariablen mit den Gleichheitsbeziehungen indiziert werden, und dann Vereinigung im Licht der obigen Regeln durchgeführt wird. Mit Kontext versehene Vereinigung wird in drei Stufen durchgeführt. Zuerst werden die Disjunktionen unter Verwendung von obiger Regel 1 zu Konjunktionen umgewandelt und als eine Merkmalstruktur dargestellt. Danach werden Merkmalstrukturen vereinigt und Unbrauchbares produziert. Schließlich kann alles Unbrauchbare gesammelt und gelöst werden, um zu bestimmen, welche Kombinationen von Propositionsvariablen gültig sind. Dieser Prozess wurde in US-A-5,438,511 beschrieben.
  • Fig. 1 veranschaulicht ein einfaches Beispiel, wie mit Kontext versehene Vereinigung arbeitet. Die erste Merkmalstruktur 20 ergibt sich aus der Darstellung der Beschränkungen ([A+] [B-]) ([C+]-[C-]). Die zweite Merkmalstruktur 22 ergibt sich aus der Darstellung der Beschränkungen ([A+] [A-]) ([D+]-[D-]). Die Propositionsvariable p, q, rund s wurden eingeführt, um die vier Disjunktionen in den zwei Beschränkungen zu repräsentieren. Die Vereinigung der Merkmalstrukturen 20 und 22 ergibt die Merkmalstruktur 24 und das Unbrauchbare (p r). Um Lösungen für die Merkmalstruktur 24 zu finden, werden alle möglichen Kombinationen der Propositionsvariable berechnet, die mit dem bekannten Unbrauchbaren konsistent sind. In diesem Fall gibt es zwölf mögliche Lösungen:
  • Der Hauptvorteil der mit Kontext versehenen Vereinigung ist die Zurückstellung des Ermittelns des Kreuzprodukts von Alternativen, bis alles Unbrauchbare gefunden worden ist. Dies ist hilfreich aus mindestens zwei Gründen. Zuerst ist das Ermitteln des Kreuzprodukts der Propositionsvariablen billiger als das Ermitteln der Kreuzprodukte der Merkmalstrukturen. Zweitens verhindert mit Kontext versehene Vereinigung das Ermitteln von unnötigen Kreuzprodukten, weil sie nicht ermittelt werden bevor nicht entdeckt worden ist, ob die Vereinigung gültig ist. Kreuzprodukte werden nicht ermittelt, falls die Vereinigung ungültig ist.
  • Konventionelle, mit Kontext versehene Vereinigung, wie auch konventionelle, träge Kopierverweise und andere konventionelle Techniken, können jedoch manchmal exponentiell Zeit beanspruchen; bei Verwendung bei der Zerlegung eines Satzes oder einer Kette durch Analyse für die Bestimmung der unterlegten Bedeutung oder bei sonstiger Verarbeitung natürlichsprachiger Sätze, können diese Techniken Zeit benötigen, die mit der Anzahl der Worte in einem Satz oder einer Kette exponentiell ansteigt. Insbesondere kann exponentiell ansteigende Zeit in gewissen Fällen aufgrund des Bedarfs für das Kopieren von Attributen und Werten von den zu vereinigenden Merkmalstrukturen erforderlich sein. Falls mit Kontext versehene Vereinigung und träge Kopierverweise zusammen verwendet werden, kann dies z. B. vorkommen, falls Kontexte überlappen. Exponentiell ansteigende Zeit kann die Techniken deshalb für einige natürlichsprachige Verarbeitungsanwendungen unpraktisch machen.
  • Die Erfindung sieht Techniken vor, die dieses Problem durch Reduzierung des Risikos lindern, dass exponentiell ansteigend Zeit benötigt wird. Die Techniken nutzen Kontexte, wie in der mit Kontext versehenen Vereinigung, und auch träge Kopierverweise. Diese Techniken wenden einen neuen Typ träger Kopierverweise an, der als mit Kontext versehener, träger Kopierverweis bezeichnet wird, um alternative Werte eines Attributs zu repräsentieren, wodurch die Notwendigkeit Attribute und Werte zu kopieren in einigen Fällen vermieden wird.
  • Mit Kontext versehene, träge Kopierverweise helfen bei der Sicherstellung, dass die für die Vereinigung benötigte Zeit sich mit der dritten Potenz der Anzahl von Worten in einem Satz oder einer Kette verändert. Insbesondere kann Vereinigung in mit der dritten Potenz ansteigender Zeit vorkommen für Teile einer Grammatik, die ein kontextfreies Äquivalent ist, was bedeutet, dass zwei Bestandteile miteinander ohne Rücksicht auf die interne Struktur der zu kombinierenden Bestandteile kombiniert werden können; nach der Verwendung hier kann ein Bestandteil eine beliebige Gruppe von Worten innerhalb einer Kette sein, ob zusammenhängend oder nicht, so dass eine Kette Bestandteile umfassen kann ohne Rücksicht, ob die verwendete Grammatik Bestandteile explizit oder implizit definiert.
  • Bei der Verwendung zusammen mit undurchsichtigen Klauseln sind mit Kontext versehene, träge Kopierverweise sogar noch wirksamer bei der Reduzierung des Risikos, dass exponentiell ansteigende Zeit benötigt wird.
  • Die folgenden Begriffe sind hilfreich bei dem Verständnis der Erfindung:
  • Die Begriffe "Verweis" und "Struktur" sind verwandt und beziehen sich beide auf Datenstükke innerhalb einer Datenstruktur. Ein Verweis ist ein Datenstück, das zwei oder mehr Strukturen miteinander verbindet, und eine Struktur ist ein Datenstück, das mit anderen Strukturen durch einen Verweis verbunden wird.
  • Die Begriffe "Attribut" und "Wert" sind ebenfalls verwandt: ein Attribut ist immer ein Zeichen oder atomares Element, und ein Attribut kann einen Wert annehmen. Ein "Attribut-Wert- Paar" (AV-Paar) ist ein geordnetes Paar, welches ein Attribut und einen Wert umfasst, den es annehmen kann. Der Wert eines Attributs kann selbst ein Zeichen oder atomares Element sein, oder es kann eine Menge von Attribut-Wert-Paaren sein. Bei der Verarbeitung natürlicher Sprache umfassen Beispiele von Attributen grammatikalische Funktionen, wie etwa Subjekt, Objekt, Zahlwort, u. s. w., deren jedes einen Wert für einen Teil eines natürlichsprachigen Textes annehmen kann. Der generische Begriff "Tatsache" deckt sowohl Attribut als auch Werte ab.
  • Eine "Merkmalstruktur" ist eine Struktur, die ein oder mehrere Attribut-Wert-Paare umfasst. Bei der Verarbeitung natürlicher Sprache können Merkmalstrukturen verwendet werden, um oberflächliche grammatikalische Funktionen von Teilen von Ketten zu repräsentieren. Eine Merkmalstruktur wird konventionell als eine Anordnung von Attribut-Wert-Paaren innerhalb rechteckiger Klammern veranschaulicht, wobei jedes einfache Attribut-Wert-Paar auf einer horizontalen Linie liegt. Weil der Wert eines Attributs eine Menge von Attribut-Wert-Paaren sein kann, kann eine Merkmalstruktur eine Hierarchie von Attribut-Wert-Paaren umfassen; solch eine Merkmalstruktur kann als eine "hierarchische" oder "nicht-finite" bezeichnet werden.
  • Ein "Kontext" ist eine aus einer Menge von Alternativen.
  • Ein "Kontext-Identifizierer" ist ein Datenstück, das einen Kontext identifiziert.
  • Ein "mit Kontext versehener Verweis" ist ein Verweis, der einen Kontext-Identifizierer hat, welcher einen Kontext anders als den Kontext bezeichnet, welcher durch den Wert "TRUE" bezeichnet wird.
  • "Vereinigung" oder "Vereinigen" ist eine Operation über Datenstrukturen, die eine vereinigte Datenstruktur produziert, mit der die Datenstrukturen konsistent sind. Im Allgemeinen umfasst eine vereinigte Datenstruktur mehr Information als die Datenstrukturen, die sie vereinigt. Falls die Datenstrukturen inkonsistent sind, bezeichnet die vereinigte Datenstruktur Inkonsistenz. Die Datenstrukturen, über die Vereinigung durchgeführt werden kann, umfassen z. B. Merkmalstrukturen oder andere Strukturen, die Attribut-Wert-Paare und Stellenwertformen von Datenbanken wie etwa Wissensdatenbanken umfassen. Eine Vereinigung, die über Merkmalstrukturen durchgeführt wird, welche Kontext-Identifizierer umfassen, kann als eine "mit Kontext versehene Vereinigung" bezeichnet werden. Eine mit Kontext versehene Vereinigung kann verwendet werden, um Merkmalstrukturen zu vereinigen, die Disjunktionen umfassen, und kann Daten produzieren, die Kontexte bezeichnen, in denen die Merkmalstrukturen inkonsistent sind, welche auch als "unbrauchbar" ("nogood") bezeichnet werden.
  • Ein "Vorwärts-Kopierverweis" ist ein Verweis, auf den von einer Struktur zugegriffen werden kann, und der verwendet werden kann, um auf eine Kopie der Struktur zuzugreifen.
  • Ein "träger Kopierverweis" ist ein Verweis, auf den von einer Kopie einer Struktur zugegriffen werden kann, und der verwendet werden kann, um auf die Struktur zuzugreifen, welche die Quelle der Kopie ist. Eine Merkmalstruktur, die träge Kopierverweise umfasst, ist ein Beispiel einer "unterspezifizierten Merkmalstruktur", weil sie nicht alle Informationen umfasst, die für die Beschreibung ihrer Attribute notwendig sind, sondern statt dessen träge Kopierverweise auf andere Merkmalstrukturen umfasst, um weggelassene Information zu · bezeichnen. Eine unterspezifizierte Merkmalstruktur ist "unterspezifiziert", wenn die einzigen Datenstücke, die sie umfasst, ein oder mehrere träge Kopierverweise auf andere Merkmalstrukturen sind.
  • "Träges Kopieren" bedeutet Kopieren einer hierarchischen Datenstruktur, wie etwa eine hierarchische Merkmalstruktur, durch Kopieren der Hierarchie von der obersten Stufe abwärts unter Verwendung von trägen Kopierverweisen, um Information auf Stufen zu bezeichnen, die noch nicht kopiert worden sind.
  • Ein träger Kopierverweis "interagiert" oder "wird aktiviert", wenn ein Ereignis auftritt, das ein weiteres Kopieren von der Struktur zur Kopie erfordert. "Erweiterung" ist die Operation, welche das weitere Kopieren durchführt und zuvor weggelassene Information hinzufügt, die durch einen oder mehrere träge Kopierverweise bezeichnet wird. Erweiterung braucht nicht alle trägen Kopierverweise zu entfernen, weil sie träge Kopierverweise auf Stufen beibehalten oder hinzufügen kann, welche nicht vollständig erweitert worden sind.
  • Ein "mit Kontext versehener, träger Kopierverweis" ist ein träger Kopierverweis, der einen Kontext-Identifizierer hat, der einen Kontext anders als den NULL-Kontext bezeichnet. Ein mit Kontext versehener, träger Kopierverweis kann durch eine Vereinigung mit einem anderen Datenstück aktiviert werden, weiches einen überlappenden Kontext hat; das andere Datenstück kann ein anderer träger Kopierverweis sein.
  • Eine "Propositionsvariable" ist eine Variable, die einen oder zwei Werte haben kann, die typisch als TRUE oder FALSE bezeichnet werden.
  • Ein "undurchsichtiger Kontext" ist ein Kontext, dessen Komplexität nicht aus seiner Repräsentation sichtbar ist; z. B. kann ein undurchsichtiger Kontext repräsentiert werden durch eine Propositionsvariable, selbst wenn der undurchsichtige Kontext eine Kombination anderer Kontexte ist. Mit anderen Worten: ein undurchsichtiger Kontext, der eine Kombination anderer Kontexte ist, kann unabhängig von den anderen Kontexten gehandhabt werden, welche in der Kombination sind.
  • Ein "Klausel" ist ein Datenstück" das eine Kombination von Kontexten repräsentiert.
  • Eine "undurchsichtige Klausel" ist ein Klausel, die einen undurchsichtigen Kontext repräsentiert.
  • Ein Verfahren für die Vereinigung zweier Rand-Datenstrukturen unter Verwendung von mit Kontext versehenen, trägen Kopierverweisen und einem Prozessor wird im Detail beschrieben. Immer dann, wenn ein mit Kontext versehener, träger Kopierverweis, der einer ersten Rand-Datenstruktur zugeordnet ist, während der Vereinigung aktiviert wird, wird der mit Kontext versehene, träge Kopierverweis erweitert. Zuerst identifiziert der Prozessor das Attribut-Wert-Paar des Ziels des aktivierten, mit Kontext versehenen, trägen Kopierverweises. Als Nächstes kopiert der Prozessor die Attribute des Attribut-Wert-Paars des Ziels in die erste Rand-Datenstruktur. Schließlich fügt der Prozessor einen mit Kontext versehenen, trägen Kopierverweis von dem in die erste Rand-Datenstruktur kopierten Attribut zu dem Wert des Attribut-Wert-Paars des Ziels hinzu.
  • In einem Aspekt der Erfindung wird ein Verfahren der Vereinigung von Datenstrukturen vorgesehen, und das Verfahren umfasst: (a) Kopieren von Information von einer ersten Datenstruktur auf eine zweite Datenstruktur, dadurch gekennzeichnet, dass die Information der ersten Datenstruktur auf die zweite Datenstruktur in einem Kopierkontext kopiert wird; das (a) umfasst: (a1) Bestimmen, ob die erste Merkmalstruktur in der zweiten Merkmalstruktur durch einen Verweis dargestellt werden kann; und (a2) falls das zutrifft, Kopieren der ersten Merkmalstruktur in die zweite Merkmalstruktur durch Hinzufügen eines Verweises von der zweiten Merkmalstruktur zur ersten Merkmalstruktur, wobei der hinzugefügte Verweis einen zugeordneten Kontext-Identifizierer hat, der den Kopierkontext identifiziert.
  • In einem anderen Aspekt der Erfindung wird ein System für die Vereinigung von Datenstrukturen vorgesehen, und das System umfasst: eine Verarbeitungseinrichtung; und Speichereinrichtungen für die Speicherung von Datenstrukturen; wobei die gespeicherten Datenstrukturen die erste und die zweite Merkmalstruktur einschließen; die Verarbeitungseinrichtung bei der Vereinigung von Datenstrukturen Information von der ersten Merkmalstruktur auf die zweite Merkmalstruktur kopiert; dadurch gekennzeichnet, dass die Verarbeitungseinrichtung Information von der ersten Merkmalstruktur auf die zweite Merkmalstruktur in einem Kopierkontext kopiert; die Verarbeitungseinrichtung bestimmt, ob die erste Merkmalstruktur in der zweiten Merkmalstruktur durch einen Verweis dargestellt werden kann; und im Fall des Zutreffens die Verarbeitungseinrichtung die erste Merkmalstruktur in die zweite Merkmalstruktur kopiert durch Hinzufügen eines Verweises von der zweiten Merkmalstruktur zur ersten Merkmalstruktur, wobei der hinzugefügte Verweis einen zugeordneten Kontext-Identifizierer hat, der den Kopierkontext identifiziert.
  • Die Erfindung wird nun beispielsweise und mit Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
  • Fig. 1 ein Beispiel einer mit Kontext versehenen Vereinigung ist;
  • Fig. 2 ein Computersystem veranschaulicht;
  • Fig. 3-6 andere Beispiele von mit Kontext versehener Vereinigung veranschaulichen;
  • Fig. 7 ein Objektdiagramm der Softwareroutinen ist;
  • Fig. 8 ein Flussdiagramm der Hauptroutine in Fig. 7 ist;
  • Fig. 9 ein Flussdiagramm der Routine Verarbeite-Randbeschränkungen in Fig. 7 ist;
  • Fig. 10 ein Flussdiagramm der Routine Kopiere-AV-Paar in Fig. 7 ist;
  • Fig. 11 ein Flussdiagramm der Routine Erweitere trägen-Verweis in Fig. 7 ist;
  • Fig. 12 ein Flussdiagramm der Routine Kopiere-Tatsachen in Fig. 7 ist;
  • Fig. 13 ein Flussdiagramm der Routine Verknüpfe-Klauseln in Fig. 7 ist;
  • Fig. 14 ein Flussdiagramm der Routine Importiere-Klausel in Fig. 7 ist; und
  • Fig. 15 ein Flussdiagramm der Routine Beschaffe-Randlösungen in Fig. 7 ist.
  • Fig. 2 veranschaulicht das Computersystem 30, welches mit Kontext versehene, träge Kopierverfahren enthält. Die Anweisungen 60 ändern die Leistung des Computers 30 und erlauben dem System 30, kontextfreie Datenstrukturen in mit der dritten Potenz ansteigender Zeit zu vereinigen. Kurz beschrieben, reduzieren die Anweisungen 60 die Vereinigungsverarbeitungszeit durch Reduzierung der Informationsmenge während der Vereinigung eines ersten Merkmals mit einer zweiten Merkmalstruktur. Nach dem Verfahren werden alternative Werte eines Attributs durch mit Kontext versehene, träge Kopierverweise repräsentiert, welche die Analyse bezeichnen, der sie zugeordnet sind. Bei der Verwendung in Verbindung mit der mit Kontext versehenen Vereinigung und mit undurchsichtigen Kontexten erlaubt es das vorliegende Verfahren, die Vereinigung mit in der dritten Potenz ansteigender Zeit für die Teile der Grammatik durchzuführen, die kontextfreie Äquivalente sind.
  • Das Computersystem 30 umfasst einen Monitor 32 für die visuelle Darstellung von Information für einen Benutzer des Computers. Das Computersystem 30 gibt auch Information über einen Drucker 33 an den Benutzer aus. Das Computersystem 30 bietet dem Benutzer des Computers vielfache Wege, um Daten einzugeben. Die Tastatur 34 ermöglicht dem Benutzer des Computers die manuelle Eingabe von Daten, wie es auch durch die Maus 35 möglich ist. Der Benutzer des Computers kann auch Information durch Beschreiben einer elektronischen Tafel 36 mit einem Stift 38 eingeben. Alternativ kann der Computer Daten eingeben, die auf einem maschinenleslbaren Medium 40, wie etwa eine Diskette, gespeichert sind, durch Einschieben der Diskette in das Diskettenlaufwerk 42. Die optische Zeichenerkennungseinheit (OCR-Einheit) 44 ermöglicht es, dass der Benutzerschriftliche Dokumente 46 in natürlicher Sprache eingibt, welches er in codierte elektronische Darstellung umwandelt, typisch ASCII-codiert:
  • Der Prozessor 48 steuert und koordiniert den Betrieb des Computersystems 30, um die Kommandos des Benutzers des Computers auszuführen. Als Reaktion auf jedes Kommando bestimmt der Prozessor 48 und führt geeignete Aktionen aus durch Ausführung von Anweisungen, die in einem Speicher elektronisch gespeichert sind, entweder im Speicher 50 oder auf Diskette 40 in dem Diskettenlaufwerk. Typisch sind Betriebsanweisungen für den Prozessor 48 in einem Halbleiterspeicher gespeichert, was häufigen und schnellen Zugriff auf die Anweisungen erlaubt. Der Speicher 50 umfasst auch einen Zwischenspeicher für das Speichern von Klauseln und Beschränkungslösungen. Halbleiterspeicher, die für die Verwirklichung des Speichers 50 verwendet werden können, umfassen Nur-Lese-Speicher (ROM), Speicher mit wahlweisem Zugriff (RAM), dynamische Speicher mit wahlweisem Zugriff (DRAM), programmierbare Nur-Lese-Speicher (PROM), löschbare und programmierbare Nur-Lese-Speicher (EPROM) und elektrisch löschbare und programmierbare Nur-Lese- Speicher (EEPROM), wie etwa Flash-Speicher.
  • Das mit Kontext versehene, träge Kopierverfahren zieht Vorteil aus der Beobachtung, dass Standardansätze zur Zerlegung Vereinigungs-basierter Grammatiken exponentiell anwachsende Zeit benötigen, wenn die linguistischen Phänomene, die modelliert werden, kontextfrei in ihrer Mächtigkeit sind. Das soll ausdrücken, dass selbst dann, wenn die linguistischen Phänomene unter Verwendung einfacher Phrasenstrukturregeln dargestellt werden können, so dass eine Phrasenstrukturzerlegungsroutine höchstens O(n³) Zeit für das Zerlegen eines Satzes benötigt, wo n die Länge des Satzes in Worten ist, eine Vereinigungs-basierte Standardmerkmalstrukturzerlegungsroutine, welche denselben Satz modelliert, O(2n) Zeit benötigt. Das Verständnis dafür, warum das Hinzufügen von Merkmalstrukturen die Zerlegungszeit so dramatisch erhöht, verlangt ein Verständnis dafür, wie eine kontextfreie Grammatik unter Verwendung eines Charts mit einem Zeitbedarf in der dritten Potenz zerlegt werden kann, und warum das Hinzufügen von Merkmalstrukturen das sich ergebende System exponentiell macht, falls Standardansätze verwendet werden.
  • Ein Chart ist einfach eine Datenstruktur für die Zwischenspeicherung der Bestandteile, die durch die Zerlegungsroutine konstruiert worden sind. Der Hauptvorteil der Charts ist, dass die Zerlegungsroutine existierende Bestandteile wieder benutzen kann, wenn sie versucht, den Satz auf unterschiedlichen Wegen zu zerlegen. Falls die Grammatik kontextfrei ist, dann braucht die Zerlegungsroutine nicht zu wissen, wie die Bestandteile konstruiert werden, sondern nur, dass sie konstruierbar sind. Z. B. muss die Zerlegungsroutine wissen, ob es eine NP (noun phrase, Hauptvwort-Phrase) gibt, die vom fünften Wort bis zum zehnten Wort reicht, aber sie muss nicht wissen, ob die NP eine PP (prepositional phrase, Prepositionsphrase) in sich hat. Deswegen gibt es nur O(Cn²) unterschiedliche Bestandteile, die für einen Satz der Längen konstruiert werden können, wobei C die Zahl der unterschiedlichen Kategorien ist, welche die Grammatik erlaubt. Konzeptionell ist der Chart nur ein dreidimensionales Feld von (Kategorie, Linke Position, Rechte Position), die bezeichnet, ob es Bestandteile vom Typ Kategorie gibt, die an der Linken Position beginnen und an der Rechten Position enden, oder nicht. Ein Satz hat eine Zerlegung, falls es eine S-Kategorie gibt, die am Satzanfang beginnt und am Satzende endet. Ein Weg, den Chart zu füllen, ist, mit allen Ein-Wort-Bestandteilen zu beginnen, dann alle Zwei-Wort-Bestandteile zu bilden, dann die Drei-Wort-Bestandteile, u. s. w., wobei jede Stufe auf den Ergebnissen der vorangehenden Stufe aufbaut. Dies wird der CKY-Algorithmus genannt. Der Grund dafür, dass der Algorithmus On³ statt On² ist, liegt darin, dass jeder Bestandteil auf vielfache Weise gebildet werden kann. Im schlimmsten Fall kann ein Bestandteil, der On groß ist, auf On unterschiedliche Weise gebildet werden kann. Um On² Bestandteile auf On Weisen zu bilden, wird On³ Zeit benötigt. Der CKY-Algorithmus verlangt, dass Bestandteile in einer bestimmten Reihenfolge gebildet werden, von kleiner zu größer. Ein flexiblerer Weg der Bildung eines Charts ist, einen Plan von Bestandteilen zu führen, die noch nichtverarbeitet worden sind. Die Bestandteile werden einer zu einer Zeit von dem Plan entfernt, und wie folgt verarbeitet. Jeder Bestandteil sieht zu seiner Linken und zu seiner Rechten nach Bestandteilen, mit denen er kombiniert werden kann. Wenn er einen Bestandteil findet, mit dem er kombiniert werden kann, prüft er den Chart, um zu sehen, ob der sich ergebende Bestandteil bereits im Chart ist. Falls er dort nicht ist, dann wird der Bestandteil zu dem Chart hinzugefügt und auf den Plan gesetzt. Der Prozess wird fortgeführt, bis der Plan leer ist. Der Plan macht die Dinge flexibler, weil Bestandteile vom Plan in jeder Reihenfolge weggenommen werden können. Diese Art der Zerlegung wird eine "aktive-Chart-Zerlegung" genannt.
  • Die obigen Algorithmen bestimmen nur, ob ein Satz zerlegbar ist oder nicht, sie bestimmen nicht, was die gültigen Zerlegungsbäume sind. Jedoch kann diese Information durch einfaches Hinzufügen zu diesen Algorithmen erreicht werden. Immer dann, wenn ein Bestandteil aus den Unterbestandteilen konstruiert wird, wird die Konstruktion als ein lokaler Unterbaum auf dem Bestandteil aufgezeichnet, der konstruiert worden ist. Ein mit solchen Unterbäumen angemerkter Chart wird ein "Zerlegungswald" genannt. Wenn die Zerlegung fertig ist, kann ein bestimmter Zerlegungsbaum ausgelesen werden durch Start an dem S-Bestandteil, der den ganzen Satz überspannt, und durch zufälliges Herausziehen eines Unterbaums. Dann wird für jeden Tochterbestandteil ein Unterbaum zufällig herausgezogen. Dieser Prozess wird weitergeführt, bis der Baum voll spezifiziert ist. Im Allgemeinen kann es exponentiell viele solche vollspezifizierten Bäume geben, aber der Zerlegungswald für sie kann in Zeit zur dritten Potenz produziert werden, weil sie in kompakter Darstellung gespeichert sind.
  • Viele Grammatikformalismen fügen Merkmalstrukturen zu einem Rückgrat von kontextfreien Phrasenstrukturregeln hinzu. Abhängig von der Grammatik können die kontextfreien Regeln explizit oder implizit sein.
  • Ein Standardansatz für die Zerlegung von Merkmalstrukturen ohne Rücksicht darauf, ob die kontextfreien Regeln explizit oder implizit sind, ist, zuerst einen kontextfreien Phrasenstruktur-Chart aufzubauen, und dann einen zweiten Durchlauf durch die Chart-Datenstruktur zu machen und die Merkmalstrukturen von unten nach oben aufzubauen. Zuerst werden Merkmalstrukturen von lexikalischen Stücken nach den gegebenen Merkmalbeschränkungen dargestellt. Falls die lexikalischen Stücke auf irgendeine Weise mehrdeutig sind, werden dadurch vielfache Merkmalstrukturen produziert. Dann werden Merkmalstrukturen für einen Mutterbestandteil konstruiert durch Ermitteln des Kreuzprodukts der Merkmalstrukturen, die zu den Tochterbestandteilen gehören. Das Kreuzprodukt wird ermittelt, um irgendwelche Kombinationen auszufiltern, die inkonsistent sein können. Das Ergebnis ist eine. Menge von Merkmalstrukturen, die zu diesem Punkt konsistent sind. Falls es mehr als einen Weg für die Konstruktion des Mutterbestandteils aus den Tochterbestandteilen gibt, dann werden die Mengen der Merkmalstrukturen, die von allen Analysen produziert wurden, zusammen vereinigt. Dieser Prozess wird von unten nach oben fortgeführt, bis Merkmalstrukturen für alle Bestandteile konstruiert worden sind.
  • Dieser Prozess ist wegen des Kreuzprodukts, das auf jeder Stufe vorkommt, schlimmstenfalls exponentiell. Falls z. B. jedes lexikalische Stück auf zwei Weisen mehrdeutig ist, dann kann es selbst dann, wenn die Phrasenstrukturgrammatik nicht mehrdeutig ist, O(2n) unterschiedliche Merkmalstrukturen für den obersten Bestandteil geben. Falls nur endlich-wertige Merkmale verwendet werden, dann kann eine Zerlegung gemacht werden, um in Zeit der dritten Potenz zu laufen. Dies kommt daher, dass es nur eine endliche Anzahl von möglichen Merkmalstrukturen gibt, und auf jeder Stufe ist nur festzuhalten, welche davon möglich sind, ohne alle Wege zu bewerten, auf denen sie erhalten wurden. Sobald die obere Grenze der Zahl der möglichen Merkmalsstrukturen erreicht wird, dann wächst die Anzahl der Merkmalstrukturen auf jeder Stufe nicht weiter. Falls alle Merkmalwerte binär sind, dann kann der Bestandteil auf höchster Stufe höchstens O(2k) unterschiedliche Merkmalstrukturen haben, wo k die Anzahl unterschiedlicher Merkmale ist. Somit können wir einen Exponenten in der Satzlänge in eine exponentielle Grammatikkonstante nur durch Verwendung endlicher Merkmalgraphen wandeln. Unglücklicherweise kann die Zeit, die für die Zerlegung nichtendlicher Merkmalstrukturen benötigt wird, nicht auf gleiche Weise reduziert werden.
  • Die hier beschriebenen Verfahren reduzieren die Zeit, die für die Vereinigung von Merkmalstrukturen während der Zerlegung und Erzeugung benötigt wird, durch Einführung mit Kontext versehener, träger Kopierverweise. Dieser neue Typ von trägem Kopierverweis erlaubt vielfache, alternative Werte, die durch vielfache, mit Kontext versehene, träge Kopierverweise zu repräsentieren sind, deren jeder mit den Kontexten angereichert ist, in denen er gültig ist. Die Daten, die durch diese mit Kontext versehenen, trägen Kopierverweise repräsentiert werden, werden nicht in eine Graphendatenstruktur kopiert, bis es relevant wird, und werden generell schrittweise erweitert, um sicherzustellen, dass nur notwendige Information kopiert wird. Bei Benutzung in Verbindung mit der mit Kontext versehenen Vereinigung und mit undurchsichtigen Kontexten, reduzieren mit Kontext versehene, träge Kopierverweise die Zeit, die für die Vereinigung von Merkmalstrukturen benötigt wird. Dementsprechend wird das vorliegende Verfahren im Detail hinsichtlich Fig. 11 und 12 und als ein Teil eines Verfahrens für die Vereinigung kontextfreier Merkmalstrukturen mit Zeit in dritter Potenz beschrieben.
  • Ein Beispiel der mit Kontext versehenen Vereinigung mit dem mit Kontext versehenen, trägen Kopieren wird bei der kommenden, detaillierten Beschreibung der Anweisungen 60 für die Durchführung mit Kontext versehener Vereinigung mit den mit Kontext versehenen Kopierverweisen helfen. Dementsprechend ist Fig. 3 zu betrachten, welche den Rand 70 mit seinen zwei Töchtern 72 und 82 veranschaulicht. Die Tochter 72 beginnt mit einem leeren Graphen 74 mit den mit Kontext versehenen, trägen Kopierverweisen, die durch gestrichelte Linien bezeichnet sind, und die auf alternative, voll spezifizierte Graphen 75, 76, 78 und 80 zeigen. Es wird bemerkt, dass jeder träge Kopierverweis mit einem Kontext, p:1, p:2, p:3 und p:4, angereichert ist, deren jeder eine wechselseitig ausschließende Wahlmöglichkeit repräsentiert. Die Situation der Tochter 82 ist analog der Situation der Tochter 72.
  • Die Vereinigung der Graphen 74 und 84 beginnt mit der Erzeugung des leeren Graphen 71 und Bestätigung der mit Kontext versehenen, trägen Kopierverweise von Graph 71 zu den Graphen 74 und 84. Diese mit Kontext versehenen, trägen Kopierverweise sind fett dargestellt, um anzuzeigen, dass eine Interaktion zwischen den trägen Kopierverweisen erkannt worden ist, und dass der Graph 71 zu erweitern sein wird, was wiederum die Erweiterung der Töchtergraphen 74 und 84 verlangt.
  • Fig. 4 veranschaulicht die Graphen 71, 74 und 84 nach der erforderlichen Erweiterung. Der Tochtergraph 84 wurde erweitert durch Kopieren der ersten Stufe der alternativen Graphen 86, 88, 90 und 92. Im Ergebnis ist der Graph 84 nicht mehr leer und enthält nun die Attribute A, C und D. Die Werte für diese Attribute werden über vielfache, mit Kontext versehene, träge Kopierverweise angezeigt, welche auf Werte innerhalb der Merkmalstrukturen 86, 88, 80 und 92 zeigen. Es ist zu bemerken, dass während Attribut C Werte nur in den Kontexten q:1 und q:2 und Attribut D Werte nur in den Kontexten q:3 und q:4 nimmt, ein einziger Graph 84 erzeugt werden kann, der alle diese sich wechselseitig ausschließenden Alternativen enthält. Tochtergraph 74 ist in ähnlicher Weise erweitert. Als Nächstes wird Graph 71 erweitert durch Kopieren in sich hinein der Attribute erster Stufe der Graphen 74 und 84, A, B, C und D, mit den mit Kontext versehenen, trägen Kopierverweisen, die zu den alternativen Werten für jene Attribute zeigen. Die fette Darstellung der mit Kontext versehenen, trägen Kopierverweise, die dem A Attribut zugeordnet sind, zeigen an, dass sie interagieren. Somit muss das A Attribut von Graph 71 erweitert werden, was bedeutet, dass die A Attribute von Graph 74 und 84 ebenfalls erweitert werden müssen.
  • Fig. 5 veranschaulicht die Graphen 71, 74 und 84 nach der Erweiterung ihrer A Attribute. Hinsichtlich Graph 74, ersetzt diese Erweiterung den mit Kontext versehenen, trägen Kopierverweis durch zwei Kontextwertepaare. Das A Attribut nimmt den Wert + an, wenn einer der Kontexte p:1, p:2 oder p:3 TIRUE ist. Andererseits nimmt das A Attribut den Wert - an, wenn der Kontext p:4 TRUE ist. Im Gegensatz zu Graph 74 ergibt die Erweiterung des A Attributs en Graph 84 einen einzigen Wert ohne Kontext, weit das A Attribut denselben Wert in allen, dem Merkmal 84 zugeordneten Kontexten annimmt. Die Vereinigung der A Attribute von den Graphen 74 und 84 ergibt zwei Kontextwertepaare für das A Attribut von Graph 71. Ein Kontextwertepaar stellt fest, dass A = + in allen Kontexten ist, während das andere Kontextwertepaar feststellt, dass A = - in Kontext p:4 ist. Diese zwei Kontextwertepaare ergeben das unbrauchbar p:4, weil Attribut A nicht gleichzeitig die Werte + und - annehmen kann.
  • Nach der Durchführung aller Vereinigungen wird die Unbrauchbar-Datenbank verwendet, die möglichen Lösungen zum Chart zu bestimmen. Wenn die Unbrauchbar naiv kombiniert werden, ergibt sich eine exponentielle Verarbeitungszeit, um Lösungen für den Chart zu finden. Falls ferner Propositionsvariablen von den Töchtern zu ihren Müttern hochkopiert werden, können ferner jene Propositionsvariablen die Struktur des Baums codieren, was die Kontextfreiheit verletzt und exponentielle Verarbeitungszeit verlangt. Um diese Probleme zu vermeiden, werden neue, undurchsichtige Propositionsvariablen auf jeder Stufe eingeführt. Diese Propositionsvariablen werden "undurchsichtig" genannt, weil ihre interne Struktur höheren Stufen nicht zugänglich ist, zu denen sie importiert werden. Der Prozess, eine Propositionsvariable vor ihrem Import undurchsichtig zu machen, wird Einwickeln genannt. Die Unbrauchbar-Datenbank wird dann lokal in Begriffen der undurchsichtigen Variablen gelöst, die von unten importiert werden. Falls die Grammatik ein kontextfreies Äquivalent ist, dann wird die Anzahl der undurchsichtigen Variablen begrenzt sein, was ermöglicht, die Unbrauchbar-Datenbank lokal in Begriffen der undurchsichtigen Variablen zu lösen, die von unten importiert sind.
  • Im Allgemeinen hat jeder Tochterbestandteil eine Menge undurchsichtiger Variablen, die durch einen Unterbaum importiert worden sind, der verwendet wird, um einen Mutterbestandteil zu konstruieren. Lösungen, welche die Werte TRUE oder FALSE zuweisen, können für diese undurchsichtigen Variablen unter Verwendung der Unbrauchbar-Datenbank gefunden werden. Diese Lösungen werden gefunden durch Ermitteln der Kreuzprodukte der Tochterlösungen, die dann durch die lokalen Unbrauchbar gefiltert werden. Falls es vielfache Unterbäume gibt, dann wird der Kontext des lokalen Unterbaums zu jeder Lösung hinzugefügt. Für jede Lösung werden die undurchsichtigen Variablen des Mutterbestandteils ausgewertet, um zu bestimmen, ob die lokale Unterbaumlösung die undurchsichtigen Variablen TRUE oder FALSE macht. Jede solche Zuweisung wird eine Lösung für die undurchsichtigen Variablen der Mutter. Es kann mehrere lokale Lösungen für jede Zuweisung von Werten zu den undurchsichtigen Variablen der Mutter geben. Dies ist analog dazu, dass es vielfache Unterbäume für jeden Bestandteil in einem kontextfreien Zerlegungswald gibt, wo der"Bestandteil" in diesem Fall eine Menge von Merkmalwertekombinationen ist.
  • Fig. 6 veranschaulicht die Lösungi des in Fig. 3 bis 5 diskutierten Chart. Die Tochtermerkmalstrukfur 74 hat zwei undurchsichtige Variablen: O1 und O2. Im Gegensatz dazu hat die Tochtermerkmalstruktur 84 keine undurchsichtigen Variablen, weil keiner ihrer Kontexte exportiert worden ist. Diese Situation erzeugt zwei externe Lösungen für Tochter 74: O1 O2 und O2 O1. Die Lösung O1 O2 repräsentiert drei interne Lösungen: p:1, p:2 und p:3. Die Lösung O2 O1 repräsentiert nur die interne Lösung p:4. Die Tochtermerkmalstruktur 84 erzeugt gerade eine externe Lösung in dem TRUE-Kontext, welche vier interne Lösungen repräsentiert. Lösungen für den Mutterrand 70 werden konstruiert durch Ermitteln des Kreuzprodukts der externen Lösungen, die von den Tochterrändern 72 und 82 importiert werden, und durch Filtern jener Lösungen durch das lokale Unbrauchbare 02. Dies produziert eine interne Lösung, O1 O2, für Rand 70, die der externen Lösung TRUE zugeordnet ist. Die internen Lösungen jeder Mutter werden verwendet, die Spur der Tochterlösungen zu verfolgen, von denen sie sich ableitet, um die Erfassung von Lösungen zu erleichtern.
  • Fig. 7 veranschaulicht schematisch die Anweisungen 60 für die träge, mit Kontext versehene Vereinigung von Merkmalstrukturen während der Zerlegung oder Erzeugung einer Sprachkette. Die Anweisungen 60 können in maschinenlesbarer Form im Halbleiterspeicher 50 oder auf einer Diskette gespeichert sein, welche in das Diskettenlaufwerk 40 eingeschoben ist. Die Instruktionen können in irgendeiner Computersprache, einschließlich Prolog, LISP und C++ verwirklicht sein.
  • Die Anweisungen 60 sind als eine hierarchische Menge von Subroutinen 100, 102, 104, 106, 108, 110, 112 und 116 organisiert. Die Hauptroutine 100 steuert die Zerlegung der Kette durch Aufruf von Verarbeite-Randbeschränkungen 102 und Beschaffe-Randlösungen 104. Verarbeite-Randbeschränkungen 102 nimmt die Beschränkungen, die auf jeden Rand gelegt sind, und erzeugt Rand-Datenstrukturen für jeden Rand. Dabei ruft die Subroutine 102 Kopiere-AV-Paar 106 auf. Die Subroutine 106 handelt das Kopieren von Attribut-Wert- Paaren von einem Graphen zu einem anderen Graphen durch Aufruf der Subroutinen 108 und 110 ab. Erweitere trägen-Verweis 108 erweitert einen mit Kontext versehenen, trägen Kopierverweis durch Hochkopieren von Attributen um eine Stufe und Hinzufügen eines neuen, mit Kontext versehenen, trägen Kopierverweises für jedes kopierte Attribut. Kopiere- Tatsachen 110 kopiert Attribute von einem Graphen in einen anderen. Dabei ruft die Subroutine 110 Verknüpfe-Klauseln 112 auf. Verknüpfe-Klauseln 112 verknüpft zwei Kontexte oder Klauseln miteinander, um eine neue Klausel zu produzieren, die undurchsichtig sein kann, wenn angemessen. Importiere-Klausel 116 erzeugt undurchsichtige Klauseln, wenn eine Klausel in einen Graphen hinein importiert wird. Schließlich nimmt Beschaffe-Randlösungen 104 die Merkmalstrukturen, die durch die Subroutine 102 erzeugt worden sind, und bestimmt mögliche Lösungen für den Wurzel-überspannenden Rand.
  • Die Kenntnis der verwendeten Datenstrukturen, die im Speicher 50 gespeichert sind, sind hilfreich für die kommende, detaillierte Diskussion der Anweisungen 60. Die Anweisungen 60 verwenden vier Klassen von Datenstrukturen: Chart-, Graph-, Clause- und Solution- Datenstruktur. Die Chart-Datenstruktur umfasst die Edge-Datenstruktur und die Subtree- Datenstruktur. Jede Edge-Datenstruktur repräsentiert einen Rand und umfasst die folgende Information:
  • Jede Subtree-Datenstruktur repräsentiert einen Unterbaum in der Chomsky-Normalform und umfasst die folgende Information:
  • Es wird bemerkt, dass jede Subtree-Datenstruktur nur zwei Töchter umfasst, partial und complete, selbst wenn die kontextfreien Regeln konzeptionell eine willkürliche Anzahl von Töchtern pro Unterbaum erlauben. Die Anwendung einer Standardtransformation auf eine Grammatik produziert eine neue Grammatik, in der alle Regeln binär sind. Z. B. werden durch Anwendung dieser Transformation auf die Regel S → NP VP ADV zwei Regeln erzeugt: S → S1 ADV und S1 → NP VP.
  • Die Klasse der Graph-Datenstruktur umfasst drei Typen: Graph, AVPair und CVPair. Jede Graph-Datenstruktur repräsentiert eine Merkmalstruktur und verwandte Information und umfasst die folgende Information:
  • Jede AVPair-Datenstruktur repräsentiert ein mit Kontext versehenes Attribut-Wert-Paar und umfasst folgende Information:
  • Jede CVPair-Datenstruktur repräsentiert ein Kontext-Wert-Paar und umfasst folgende Information:
  • Es gibt zwei Typen von Clause-Datenstrukturen: Clause und Disjunction. Jede Clause- Datenstruktur repräsentiert eine Klausel und hat seinen eigenen Klausel-Zwischenspeicher, welcher eine Liste von Klauseln ist. Eine Clause-Datenstruktur umfasst die folgende Information:
  • Jede Disjunction-Datenstruktur repräsentiert eine Disjunktion und und umfasst die folgende Information:
  • Es gibt drei Typen von Solution-Datenstrukturen: Restriction-Set-, Restricted-Solutions- und Internal-Solution-Datenstruktur. Jeder Graph hat einen Lösungen-Zwischenspeicher innerhalb des Speichers 50, in dem die drei Solution-Datenstrukturen des Graphen gespeichert sind.
  • Jede Restriction-Set-Datenstruktur repräsentiert eine Menge von Klauseln, für die Lösungen gesucht werden, und umfasst die folgende Information:
  • Jede Restricted-Solution-Datenstruktur repräsentiert Lösungen für die Menge der Beschränkungen und umfasst die folgende Information:
  • Jede Internal-Solution-Datenstruktur repräsentiert interne Lösungen für eine Beschränkungsmenge und umfasst die folgende Information:
  • Fig. 8 veranschaulicht in der form eines Flussdiagramms die Anweisungen des Hauptprogramms 100. Kurz beschrieben, baut das Hauptprogramm 100 einen Chart für eine natürlichsprachige Kette auf, verarbeitet die Randbeschränkungen des Chart und bildet Graph- Datenstrukturen für den Chart von unten nach oben. Nach dem Finden der Graphen-Merkmalstruktur für den Wurzel-überspannenden Rand findet der Prozessor 48 Lösungen für den Rand.
  • Nach Empfang einer natürlichsprachigen Zeichenkette beginnt der Prozessor 48 die Ausführung der Anweisungen 100 mit Schritt 120. In Schritt 120 bildet der Prozessor 48 einen kontextfreien Zerlegungswald, einen Chart, für die natürlichsprachiger Zeichenkette. Es werden Standardtechniken, die den Fachleuten wohlbekannt sind, für die Bildung des Chart verwendet. Nach der Konstruktion des Charts verläßt der Prozessor 48 den Schritt 120 und geht zu Schritt 122.
  • Der Prozessor 48 bestimmt in Schritt 122, ob der Chart eine Kette S definiert, welche die gesamte natürlichsprachige Kette überspannt. Falls das nicht zutrifft, dann gibt es keine Lösung und der Prozessor 48 verzweigt zu Schritt 124. Falls der Chart andererseits ein S dellniert, das die gesamte natürlichsprachige Kette überspannt, dann kann der Chart eine Lösung haben. Als Reaktion geht der Prozessor 48 von Schritt 122 zu Schritt 126. In Schritt 126 fügt der Prozessor 48 zum Chart die lexikalischen und grammatikalischen Beschränkungen hinzu, die der verwendeten Grammatik zugeordnet sind. Standardverfahren für das Dekorieren des Chart werden verwendet. Nach dem Dekorieren des Chart verläßt der Prozessor 48 den Schritt 126 und geht zu Schritt 128.
  • Der Prozessor 48 findet Lösungen für den Wurzel-überspannenden Rand des Charts in Schritt 128 durch rekursiven Aufruf von Verarbeite-Randbeschränkungen 102 und Bilden von Graph-Datenstrukturen für den Chart. Diese rekursiven Aufrufe bringen den Prozessor 48 dazu, den Chart hinunter zu wandern, bis ein Blatt erreicht wird, an welchem Punkt der Prozessor 48 beginnt, Graph-Datenstrukturen zu bilden und den Chart zurück aufwärts zu wandern. Die Subroutine Verarbeite-Randbeschränkungen 102 wird später im Detail und mit Blick auf Fig. 9 beschrieben. Nach der Erzeugung der Graph-Datenstrukturen für den Chart geht der Prozessor 48 von Schritt 128 zu Schritt 130 und beginnt den Prozess dem Finden einer Lösung für den Chart. Der Prozessor 48 ruft dazu die Subroutine Beschaffe-Randfösungen 104 auf. Der Prozessor 48 findet Lösungen für den Wurzel-überspannenden Rand durch Abwärtswandern in dem Chart, wobei undurchsichtige Kontexte von Interesse abwärts gereicht werden, bis ein Blatt erreicht wird. An diesem Punkt beginnt der Prozessor 48 die Bestimmung lokaler Lösungen für undurchsichtige Kontexte, die importiert worden sind, und durch Hochreichen dieser Lösungen den Chart aufwärts. Dies wird fortgesetzt, bis Lösungen für den Wurzel-überspannenden Rand des Chart gefunden worden sind.
  • Die Verarbeitung von Randlösungen durch die Anweisungen 104 geschehen in Zeit zur dritten Potenz für kontextfreie Teile der Grammatik. Kontextfreiheit bewirkt, dass lokale Unbrauchbar angenehm herauskommen. Obgleich die Lösungsberechnungszeit exponentiell mit der Zahl undurchsichtiger Variablen, K, ansteigt, hat die Erfahrung gezeigt, dass die Zahl der tatsächlich produzierten Lösungen dazu neigt, niedrig zu sein. Nach der Ausführung der Anweisungen 104 verläßt der Prozessor 48 den Schritt 130 und verzweigt zu Schritt 124, womit die Verarbeitung der natürlichsprachigen Kette abgeschlossen ist.
  • Die in Fig. 9 veranschaulichte Subroutine Verarbeite-Randbeschränkungen 102 ermöglicht es dem Prozessor 48, bei gegebenem Zeiger auf den relevanten Rand eine Graph-Datenstruktur für den Rand zu bilden. Da jede Graph-Datenstruktur alle alternativen Wege repräsentiert, auf denen der Rand konstruiert werden kann, beginnen die Anweisungen 102, kurz beschrieben, in den Schritten 150 bis 188 mit der Erzeugung einer Graph-Datenstruktur für jeden Unterbaum, der dem Rand zugeordnet ist. Um eine Graph-Datenstruktur für einen Rand zu erzeugen, werden in den Schritten 154 bis 164 zuerst Graph-Datenstrukturen für jede Tochter des Unterbaumes erzeugt. Unter deren Verwendung werden in den Schritten 166 bis 186 Graph-Datenstrukturen für jeden Unterbaum erzeugt und mit denen wird schließlich in den Schritten 190 bis 212 eine Graph-Datenstruktur für den Rand erzeugt.
  • Als Reaktion auf den Empfang eines Zeigers auf einen ausgewählten Rand beginnt der Prozessor 48 die Ausführung der Anweisungen 102 mit Schritt 140. In Schritt 140 bestimmt der Prozessor 48 durch Untersuchen des soeben empfangenen Zeigers, ob eine Graph- Datenstruktur konstruiert werden muss. Ein Null-Zeiger zeigt an, dass der ausgewählte Rand nicht existiert, vielleicht weil er von einem Unterbaum stammt, der keinen partiellen Rand hat. Als Reaktion auf einen Null-Randzeiger verzweigt der Prozessor 48 von Schritt 140 zu Schritt 142. In Schritt 142 zeigt der Prozessor 48 an, dass der ausgewählte Rand TRUE ist, d. h., dass er mit einem anderen Rand kombiniert werden kann, durch Setzen des in dem Feld graph der ausgewählten Edge-Datenstruktur gespeicherten Zeigers auf einen Wert von 0. Danach kehrt der Prozessor 48 in Schritt 144 zur aufrufenden Routine zurück.
  • Falls der Randzeiger nicht Null ist, verzweigt der Prozessor 48 von Schritt 140 zu Schritt 150. In Schritt 150 beginnt der Prozessor 48 mit der Bildung einer Graph-Datenstruktur für den ausgewählten Rand. Dazu muss der Prozessor zuerst Graph-Datenstrukturen für jeden der Unterbäume erzeugten, die dem ausgewählten Rand zugeordnet sind. Somit bestimmt der Prozessor 48, ob es irgendwelche Unterbäume gibt, für die eine Graph-Datenstruktur erzeugt werden sollte. Solange, wie es sie gibt, geht der Prozessor 48 von Schritt 150 zu Schritt 152.
  • Der Prozessor 48 wählt in Schritt 152 einen der verbliebenen Unterbäume als den ausgewählten Unterbaum aus und geht dann zu Schritt 154. Der Prozessor wird eine Graph- Datenstruktur für den ausgewählten Unterbaum erzeugen, indem er Graph-Datenstrukturen sowohl für die linke Tochter als auch für die rechte Tochter erzeugt. Somit erzeugt der Prozessor 48 in Schritt 154 eine Graph-Datenstruktur für die linke Tochter des ausgewählten Unterbaums durch einen rekursiven Aufruf auf Verarbeite-Randbeschränkungen 102 und Bezeichnen der linken Tochter als ausgewählten Rand. Nach der Erzeugung einer Graph- Datenstruktur für die linke Tochter des ausgewählten Unterbaums verläßt der Prozessor 48 Schritt 154 und geht zu Schritt 156.
  • In Schritt 156 bestimmt der Prozessor 48, ob der Graph für die linke Tochter unbrauchbar ist. Der Prozessor 48 macht diese Bestimmung durch Prüfung des Felds nogood der Graph- Datenstruktur für die linke Tochter oder ob der Zeiger auf den Graphen einen Wert Unbrauchbar hat; d. h. 1 ist. Falls der Graph unbrauchbar ist, dann geht der Prozessor 48 zu Schritt 160 und generiert einen unbrauchbare Graph-Datenstruktur für den ausgewählten Unterbaum. Danach kehrt der Prozessor 48 zu Schritt 150 zurück. Falls andererseits der Graph für die linke Tochter nicht unbrauchbar ist, dann verläßt der Prozessor 48 den Schritt 156 und geht zu Schritt 162.
  • Der Prozessor 48 beginnt nun in Schritt 162 die Erzeugung einer Graph-Datenstruktur für die rechte Tochter des ausgewählten Unterbaums. Der Prozessor 48 führt diese Aufgabe durch mit dem Aufruf der Subroutine Verarbeite Randbeschränkungen 102 und Bezeichnen, dass die rechte Tochter der ausgewählte Rand ist. Danach bestimmt der Prozessor in Schritt 164, ob die Graph-Datenstruktur unbrauchbar ist. Falls das zutrifft, kehrt der Prozessor 48 zu Schritt 160 zurück. Falls das nicht zutrifft, verläßt der Prozessor den Schritt 164 und geht zu Schritt 166.
  • Nach der Erzeugung von Graph-Datenstrukturen sowohl für die linke Tochter als auch für die rechte Tochter des ausgewählten Unterbaums beginnt der Prozessor 48 in Schritt 166 den Prozess der Konstruktion einer Graph-Datenstruktur für den ausgewählten Unterbaum. Dabei ist die erste Aufgabe, irgendwelche grammatikalischen Beschränkungen, die dem ausgewählten Unterbaum zugeordnet sind, in eine Graph-Datenstruktur umzuwandeln. Als Nächstes speichert der Prozessor 48 in Schritt 168 einen Zeiger auf die gerade erzeugte Graph-Datenstruktur in dem Feld graph der Subtree-Datenstruktur des ausgewählten Unterbaums. Dann geht der Prozessor 48 zu Schritt 180.
  • In Schritt 180 beginnt der Prozessor 48 mit dem Einbeziehen von Beschränkungen in den ausgewählten Unterbaum, welche durch seine linke Tochter gesetzt werden. Dazu ruft der Prozessor 48 die Subroutine Kopiere-AV-Paar 106 auf, welche ein AV-Paar zu einem Zeitpunkt kopiert und später im Detail beschrieben wird. Danach bestimmt der Prozessor in Schritt 182, ob dies dazu führt, dass die Graph-Datenstruktur des ausgewählten Unterbaums unbrauchbar wird. Falls das zutrifft, kehrt der Prozessor 48 zu Schritt 150 zurück. Falls das nicht zutrifft, verläßt der Prozessor 48 den Schritt 182 und geht zu Schritt 184.
  • In Schritt 184 bezieht der Prozessor 48 in den ausgewählten Unterbaum Beschränkungen ein, die durch seine rechte Tochter gesetzt werden. Dazu ruft der Prozessor 48 erneut die Subroutine Kopiere-AV-Paar 106 auf. Der Prozessor bestimmt in Schritt 186, ob diese Beschränkungen den Graphen des ausgewählten Unterbaums unbrauchbar machen. Falls der Unterbaum unbrauchbar geworden ist, kehrt der Prozessor 48 von Schritt 186 zu Schritt 150 zurück.
  • Der Prozessor 48 durchläuft die Schritte 150 bis 186 solange, wie es zu erzeugende Graph- Datenstrukturen für Unterbäume gibt, die dem ausgewählten Rand zugeordnet sind. Nachdem alle Subtree-Datenstrukturen erzeugt worden sind, verläßt der Prozessor 48 den Schritt 150 und geht zu Schritt 188, um den Prozess der Erzeugung einer einzigen Graph-Datenstruktur für den ausgewählten Rand zu beginnen, der jeden seiner unbrauchbaren Unterbäume repräsentiert. Der Prozessor 48 zählt zuerst in Schritt 188 die Anzahl der dem ausgewählten Rand zugeordneten Unterbäume, die keine unbrauchbaren (d. h. die brauchbare) Graphen haben. Als Nächstes bestimmt der Prozessar in Schritt 190, ob die Zahl der Unterbäume mit brauchbaren Graphen größer oder gleich zwei ist. Falls die Zahl kleiner als zwei ist, bestimmt der Prozessor 48 in Schritt 192, ob es mindestens einen Unterbaum mit einem brauchbaren Graphen gibt. Falls es einen Unterbaum mit einem brauchbaren Graphen gibt, geht der Prozessor 48 zu Schritt 193 und speichert einen Zeiger auf die Graph-Datenstruktur für den brauchbaren Unterbaum in das Feld graph der Edge-Datenstruktur des ausgewählten Rands. Falls es andererseits nicht mindestens einen Unterbaum mit einem brauchbaren Graphen gibt, dann verläßt der Prozessor 48 den Schritt 192 und geht zu Schritt 194. Dann verwendet der Prozessor 48 das Feld graph der ausgewählten Edge-Datenstruktur, um anzuzeigen, dass der Rand unbrauchbar ist, indem er einen Zeiger mit einem Zeigerwert 1 speichert. Nach Abschluss der Konstruktion einer Graph-Datenstruktur für den ausgewählten Rand in den Schritten 194 oder 193 geht der Prozessor 48 zu Schritt 144.
  • Der Prozessor 48 geht zu Schritt 196, wenn die Anzahl der Unterbäume mit brauchbaren Graphen gleich oder größer 2 ist. In diesem Fall wird die Graph-Datenstruktur des ausgewählten Rands ein OR-Typ sein, weil sie vielfache, alternative Unterbäume repräsentiert. Somit markiert der Prozessor in Schritt 196 den Graphen als OR-Typ durch geeignetes Setzen des Felds disjunctive der ausgewählten Edge-Datenstruktur. Danach verläßt der Prozessor 48 den Schritt 196 und geht zu Schritt 198.
  • In Schritt 198 bildet der Prozessor 48 Disjunction-Datenstrukturen für die soeben in Schritt 196 erzeugte OR-Klausel. Der Prozessor 48 setzt das Feld count der Disjunetion-Datenstruktur auf die Zahl der brauchbaren Graphen, die im Schritt 188 gezählt wurde. Dann vervollständigt der Prozessor 48 die Konstruktion der Disjunction-Datenstruktur, welche mit Kontext versehene Variablen produziert, um jeden der dem ausgewählten Rand zugeordneten, brauchbaren Unterbäume zu repräsentieren. Anschließend, geht der Prozessor 48 zu Schritt 200.
  • Mit Schritt 200 beginnt der Prozessor 48, Information von den Unterbäumen in die Graph- Datenstruktur für den ausgewählten Rand einzubeziehen. Der Prozessor 48 durchläuft die Schritte 200, 210 und 212, bis die information von allen brauchbaren Unterbäumen in die Graph-Datenstruktur des ausgewählten Rands einbezogen worden ist. In Schritt 210 wählt der Prozessor 48 einen der Unterbäume mit einem brauchbaren Graphen aus und findet den diesem Unterbaum zugeordneten Kontext durch die Disjunction-Datenstruktur. Der Prozessor 48 kopiert dann in Schritt 212 Information von dem ausgewählten Unterbaum in die ausgewählte Edge-Datenstruktur hoch durch Aufruf der Subroutine Kopiere-AV-Paar 106 und Bezeichnen der ausgewählten Klausel. Danach kehrt der Prozessor 48 zu Schritt 200 zurück. Nach dem Kopieren der Information von allen Unterbäumen mit brauchbaren Graphen in die Graph-Datenstruktur für den ausgewählten Rand kehrt der Prozessor 48 zu Schritt 144 zurück.
  • Die Subroutine Kopiere-AV-Paar 106, die in Fig. 10 veranschaulicht ist, ermöglicht es dem Prozessor 48, Information von einer Quell-AV-Paar-Datenstruktur in eine Ziel-AV-Paar- Datenstruktur zu kopieren. Die Anweisungen 106 werden verwendet, um Information von Töchtern in ihre Mutter zu kopieren, und auch, um Information von Unterbäumen in den ihnen zugeordneten Rand zu kopieren. Kurz beschrieben, versuchen die Anweisungen 106, das Kopieren von Information zu vermeiden durch Hinzufügen von mit Kontext versehenen, trägen Kopierverweisen zu den Ziel-AV-Paar, welche zu dem Quell-AV-Paar zurückverweisen. Falls die relevante Information durch einen mit Kontext versehenen Kopierverweis repräsentiert wird, dann kopiert der Prozessor 48 die erste Stufe von Information von der Quell- zum Ziel-AV-Paar über einen Aufruf der Subroutinen Erweitere trägen-Verweis 108 und Kopiere-Tatsachen 110.
  • Der Prozessor 48 beginnt die Ausführung der Anweisungen 106 als Reaktion auf einen Zeiger zum Quell-AV-Paar, zum Ziel-AV-Paar und auf eine ausgewählte Klausel. In Schritt 230 bestimmt der Prozessor 48, ob es bereits einen mit Kontext versehenen Kopierverweis zwischen den zwei AV-Paaren für die ausgewählte Klausel gibt. Der Prozessor 48 macht diese Bestimmung durch Prüfung der Felder copies sowohl des Quell- als auch des Ziel-AV- Paars. Falls ein Kopierverweis mit der ausgewählten Klausel entweder in der Quelle oder im Ziel gefunden wird, dann braucht nichts unternommen zu werden, und der Prozessor 48 reagiert durch eine Verzweigung zu Schritt 244. Falls andererseits kein mit Kontext versehener Kopierverweis mit der ausgewählten Klausel zwischen dem Quell- und dem Ziel-AV- Paar existiert, dann verläßt der Prozessor 48 den Schritt 230 und geht zu Schritt 232.
  • In Schritt 232 beginnt der Prozessor 48 die Bestimmung, ob er das Quell-AV-Paar in dem Ziel-AV-Paar über einen mit Kontext versehenen, trägen Kopierverweis repräsentieren kann. Das hängt teilweise davon ab, ob die anderen trägen Kopierverweise des Ziels bereits erweitert worden sind. Der Prozessor 48 bestimmt, ob das zutrifft, durch Prüfung des Felds expanded des Ziel-AV-Paars. Falls das Feld anzeigt, dass träge Kopierverweise noch nicht erweitert worden sind, kann Prozessor 48 in der Lage sein, das Quell-AV-Paar unter Verwendung eines mit Kontext versehenen Kopierverweises zu repräsentieren, falls der Verweis der einzige träge Kopierverweis des Ziel-AV-Paars in einem überlappenden Kontext ist. Der Prozessor 48 bestimmt in Schritt 234, ob das Ziel-AV-Paar bereits andere, mit Kontext versehene, träge Kopierverweise innerhalb des Kontextes umfasst, der als ein Argument an die Subroutine Kopiere-AV-Paar gegeben wurde, durch Zählen der trägen Kopierverweise, die in dem Feld copies des AV-Paars sind, und durch Verknüpfen seines Kontextes mit dem ausgewählten Kontext für jeden trägen Kopierverweis. Falls alle Konjunktionen unbrauchbar sind, dann geht der Prozessor 48 zu Schritt 236. In Schritt 236 fügt der Prozessor 48 einen mit Kontext versehenen, trägen Kopierverweis von dem Ziel-AV-Paar zu dem Quell-AV-Paar hinzu; der Kontext des hinzugefügten Verweises ist der ausgewählte Kontext. Falls andererseits irgendeiner der verknüpften Kontexte unbrauchbar ist, dann geht der Prozessor 48 zu Schritt 238.
  • Der Prozessor 48 geht von Schritt 234 zu Schritt 238, wenn alle trägen Kopierverweise, die dem Ziel-AV-Paar zugeordnet sind, noch zu erweitern sind. Der Prozessor 48 erweitert in Schritt 238 jene trägen Kopierverweise durch Aufruf der Subroutine Erweitere trägen-Verweis 108. Danach geht der Prozessor 48 zu Schritt 240.
  • Der Prozessor 48 erreicht Schritt 240, wenn das Quell-AV-Paar in dem Ziel-AV-Paar nicht - durch einen trägen Kopierverweis repräsentiert werden kann. Um in dem Quell-AV-Paar anzuzeigen, dass es in das Ziel-AV-Paar kopiert wurde, fügt der Prozessor 48 zum Feld copies des Quell-AV-Paars einen Vorwärts-Kopierverweis hinzu, der auf das Ziel zeigt. In · Schritt 242 kopiert der Prozessor 48 dann die Beschränkungen des Quell-AV-Paars in das Ziel-AV-Paar durch Aufruf der Subroutine Kopiere-Tatsachen 110. Danach verläßt der Prozessor 48 den Schritt 242 und geht zu Schritt 244.
  • Die in Fig. 11 veranschaulichte Subroutine Erweitere trägen-Verweis 108 ermöglicht es dem Prozessor 48, einen mit Kontext versehenen, trägen Kopierverweis mit einer Stufe größerem Detail zu ersetzen, und, wenn erforderlich, andere mit Kontext versehene, träge Kopierverweise. Nach dem Hinzufügen von Vorwärts-Kopierverweisen in der Quelle, um die Erweiterung eines trägen Kopierverweises aufzuzeichnen, kopiert der Prozessor 48 die relevante Information durch Aufruf der Subroutine Kopiere-Tatsachen 110.
  • Der Prozessor 48 beginnt die Ausführung der Anweisungen 108 mit Schritt 260 als Reaktion auf den Empfang eines Zeigers auf das ausgewählte AV-Paar, dessen träge Kopierverweise zu erweitern sind. In Schritt 260 bestimmt der Prozessor 48, ob die mit Kontext versehenen, trägen Kopierverweise des ausgewählten AV-Paares bereits erweitert worden sind, durch Prüfung des Felds expanded. Falls das Feld anzeigt, dass die mit Kontext versehenen, trägen Kopierverweise, die dem ausgewählten AV-Paar zugeordnet sind, bereits erweitert worden sind, geht der Prozessor 48 zu Schritt 276. Falls andererseits die mit Kontext versehenen, trägen Kopierverweise nach nicht erweitert worden sind, geht der Prozessor 48 von Schritt 260 zu Schritt 262.
  • Der Prozessor 48 beginnt die Erweiterung der mit Kontext versehenen, trägen Kopierverweise des ausgewählten AV-Paares durch Setzen des Wertes des Felds expanded, um die Erweiterung anzuzeigen. Danach geht der Prozessor 48 zu Schritt 264, um die Erweiterung der mit Kontext versehenen, trägen Kopierverweise zu beginnen, einen mit Kontext versehenen, trägen Kopierverweis zu einen Zeitpunkt. Solange wie irgendein mit Kontext versehener, träger Kopierverweis zu erweitern bleibt, geht der Prozessor 48 von Schritt 264 zu Schritt 266. In Schritt 266 wählt der Prozessor 48 einen der verbliebenen, mit Kontext versehenen, trägen Kopierverweise in dem Feld copies für Erweiterung aus. Dann geht der 1 Prozessor 48 zu Schritt 270.
  • Häufig wird das Ziel-AV-Paar, auf das durch den ausgewählten, mit Kontext versehenen, trägen Kopierverweis gezeigt wird, durch träge Kopierverweise repräsentiert, die auch eine Erweiterung verlangen. In Erwartung einer solchen Situation ruft der Prozessor 48 in Schritt 270 die Subroutine Erweitere trägen-Verweis 108 auf, um die trägen Kopierverweise zu erweitern, auf die durch den ausgewählten, mit Kontext versehenen, trägen Kopierverweis gezeigt wird. In Schritt 272 fügt der Prozessor 48 einen Vorwärts-Kopiervermreis hinzu, der von dem Ziel-AV-Paar auf das ausgewählte AV-Paar zeigt. Der Prozessor 48 geht dann von Schritt 272 zu Schritt 274.
  • Nach der Erweiterung des Ziel-AV-Paars kann der Prozessor 48 nun den ausgewählten, trägen Kopierverweis durch Kopieren einer Stufe von Information von dem Ziel-AV-Paar in das ausgewählte AV-Paar erweitern. Dazu ruft der Prozessor 48 die Subroutine Kopiere- Tatsachen 110 auf. Danach kehrt der Prozessor 48 zu Schritt 264 zurück und durchläuft die Schritte 266, 270, 272, 274, und 264, bis jeder mit Kontext versehene, träge Kopierverweis mit dem ausgewählten AV-Paar erweitert worden ist.
  • Fig. 12 veranschaulicht in der Form eines Flussdiagramms die Anweisungen der Subroutine Kopiere-Tatsachen 110. Kurz gesagt, ermöglichen die Anweisungen 110 dem Prozessor 48, Information von einem Quell-Attribut-Wert-Paar in ein Ziel-Attribut-Wert-Paar zu kopieren. Jedes Attribut Wert-Paar kann eine Anzahl von Attributen enthalten, wie auch eine Anzahl mit Kontext versehener Werte, denen das Attribut-Wert-Paar gleichwertig ist. Die Anweisungen 110 verwenden analoge Mittel, um sowohl Attribut in den Schritten 292 bis 302 als auch mit Kontext versehenen Wert in den Schritten 304 bis 312 zu kopieren; konsequenterweise werden nur die Schritte 292 bis 302 hier im Detail beschrieben.
  • Der Prozessor 48 beginnt die Ausführung der Anweisungen 110 mit Schritt 290 als Reaktion auf den Empfang von Zeigern auf das Quell-AV-Paar und das Ziel-AV-Paar, wie auch einer ausgewählten Klausel, die dem Ziel zugeordnet ist. Der Prozessor 48 beginnt in Schritt 290 durch Bestimmung, ob irgendwelche Tatsachen zu kopieren sind. Tatsachen müssen nicht kopiert werden, falls sie einer unbrauchbaren Klausel zugeordnet sind. Somit prüft der Prozessor 48 das Feld nogood der Klausel, und falls die ausgewählte Klausel unbrauchbar ist; verläßt der Prozessor den Schritt 290 und geht zu Schritt 292.
  • Mit dem Schritt 292 beginnt der Prozessor 48, die Attribute, die dem Quell-AV-Paar zugeordnet sind, in das Ziel-AV-Paar zu kopieren. Falls irgendwelche Attribute zu kopieren bleiben, wählt der Prozessor 48 in Schritt 294 eines der verbleibenden Attribute aus. Als Nächstes verknüpft der Prozessor in Schritt 296 die ausgewählte Klausel mit der Klausel, die dem ausgewählten Attribut zugeordnet ist. Dazu ruft der Prozessor 48 die Subroutine Verknüpfe-Klauseln 112 auf, welche die sich ergebende Klausel zurückgibt. Falls die sich ergebende Klausel nicht unbrauchbar ist, geht der Prozessor 48 von Schritt 298 zu Schritt 300.
  • In Schritt 300 erzeugt der Prozessor 48 eine AVPair-Datenstruktur für das Ziel, die zu dem Quell-AV-Paar zurück zeigt, falls dort nicht bereits eine ist, und fügt einen Zeiger auf dieses neue AV-Paar im Feld attrs des Ziel-AV-Paars hinzu. Nach der Erzeugung einer Datenstruktur, in die hinein Information kopiert werden kann, geht der Prozessor 48 zu Schritt 302 und ruft die Subroutine Kopiere-AV-Paar auf. Die Subroutine Kopiere-AV-Paar kann Information von dem Quell-AV-Paar kopieren, muss es aber nicht, abhängig davon, ob es eine Interaktion zwischen den mit Kontext versehenen, trägen Kopierverweisen gibt. Danach verläßt der Prozessor 48 den Schritt 302 und kehrt zu Schritt 292 zurück.
  • Der Prozessor 48 durchläuft die Schritte 292 bis 302, bis die Subroutine Kopiere-AV-Paar für jedes relevante Attribut des Quell-AV-Paars aufgerufen worden ist. Wenn das eintritt, verläßt der Prozessor 48 den Schritt 292 und geht zu Schritt 304, um das Kopieren von Werten des Quell-AV-Paars in clas Ziel-AV-Paar in im Wesentlichen gleicher Weise zu be = ginnen, wie Attribute kopiert worden sind. Nach dem Kopieren aller mit Kontext versehenen Werte, die dem Quell-AV-Paar zugeordnet sind, geht der Prozessor 48 zu Schritt 320. In Schritt 320 prüft der Prozessor 48 die neuen Beschränkungen, die dem Ziel-AV-Paar auferlegt wurden, und leitet neue lokale Unbrauchbare ab, falls möglich. Danach kehrt der Prozessor 48 zu der aufrufenden Routine zurück.
  • Die Anweisungen 60 verknüpfen zwei Klauseln miteinander, um eine neue Klausel zu produzieren, die in dem Klausel-Zwischenspeicher des Speichers 50 zwischengespeichert wird. Dies wird in den meisten Fällen standardmäßig durchgeführt. Falls die Klauseln disjunktiv sind, dann wird jedes Paar von Disjunkten verknüpft, und die verknüpften Disjunkte werden dann entknüpft. Falls die zwei Klauseln konjunktiv sind, dann werden alle Paare von Könjunkten verknüpft und geprüft, um zu sehen, ob die sich ergebenden verknüpften Konjunkte unbrauchbar sind. Falls keines der verknüpften Konjunkte unbrauchbar ist, dann werden sie zusammengeführt, während redundante Konjunkte beseitigt werden.
  • Zwei Unterschiede existieren zwischen dem, wie die Anweisungen 60 Klauseln verknüpfen, I und dem Standardansatz. Zuerst sucht der Prozessor 48 vor dem Start der Verknüpfung von zwei Klauseln den Klausel-Zwischenspeicher nach einem Eintrag ab, der dieselben zwei Klauseln betrifft. Der Prozessor 48 beginnt solch eine Suche durch Prüfen des Felds cache der Clause-Datenstruktur mit der höheren ID, um nach gewünschter Operation und Operand zu suchen. Falls solch ein Eintrag gefunden wird, dann kann das zuvor gespeicherte Ergebnis ohne Durchführung einer Verknüpfung verwendet werden, was Verarbeitungszeit spart.
  • Der zweite Unterschied zu dem Standardansatz für die Verknüpfung von Klauseln ist die Verwendung der undurchsichtigen Klauseln. Das Flussdiagramm von Fig. 13 veranschaulicht jene Abschnitte von der Subroutine Verknüpfe-Klauseln 112, die undurchsichtige Klauseln behandeln, um die Verarbeitungszeit für Vereinigung zu reduzieren. Kurz beschrieben, wenn zwei Klauseln von demselben Graphen importiert werden, dann werden die zwei undurchsichtigen Klauseln ausgewickelt, miteinander verknüpft, um eine neue Klausel zu produzieren, die neue Klausel wird eingewickelt, um eine neue undurchsichtige Klausel zu produzieren, welche dann importiert wird. Die undurchsichtige Klauseln könnten ursprünglich durch Aufrufe der Subroutine Importiere-Klausel 116 erzeugt worden sein.
  • Der Prozessor 48 beginnt die Ausführung der Anweisungen 112 mit Schritt 360. Der Prozessor 48 ist in der Lage, die Anzahl der Propositionsvariablen, die zwischen Graphen importiert werden, zu reduzieren, wenn die zwei undurchsichtigen Klauseln derselben Graph- Datenstruktur zugeordnet sind. Der Prozessor prüft diese Möglichkeit in Schritt 360 durch Prüfen der Felder graph der zwei zu verknüpfenden Clause-Datenstrukturen, Klausel 1 und I Klausel 2. Falls beide Klauseln demselben Graphen zugeordnet sind, verläßt der Prozessor 48 Schritt 360 und verzweigt zu Schritt 362.
  • Weil die Möglichkeit, dass die Verknüpfung der zwei undurchsichtigen Klauseln zu einer einfacheren Klausel, wie etwa TRUE oder unbrauchbar, führt, wickelt der Prozessor 48 in Schritt 362 sowohl Klausel 1 als auch Klausel 2 aus. Der Prozessor 48 wickelt die undurchsichtigen Klauseln aus durch Ermitteln der Felds imported einer jeden undurchsichtigen Klausel. Der Prozessor 48 prüft die sich ergebende Klausel in Schritt 366, um zu bestimmen, ob sie unbrauchbar ist. Falls sie unbrauchbar ist, geht der Prozessor 48 zu Schritt 368 und gibt einen Zeiger zurück, der anzeigt, dass die sich ergebende Klausel unbrauchbar ist. Falls andererseits die sich ergebende Klausel nicht unbrauchbar ist, verzweigt der Prozessor 48 von Schritt 366 zu Schritt 370.
  • In Schritt 370 wickelt der Prozessor 48 die sich ergebende Klausel ein und importiert dann die neue undurchsichtige Klausel durch Aufruf der Subroutine Importiere-Klausel 116. Der Prozessor 48 geht dann von Schritt 370 zu Schritt 372.
  • Um den weiteren Verbrauch von Verarbeitungszeit bei der Verknüpfung von Klausel 1 und Klausel 2 zu vermeiden, speichert der Prozessor 48 in Schritt 372 das Ergebnis der Verknüpfung von Klausel 1 und Klausel 2 im Klausel-Zwischenspeicher des Speichers 50 zwischen. Vorzugsweise werden die Klauseln innerhalb des Klausel-Zwischenspeichers entsprechend der Klausel mit der höchsten ID indiziert, und die gespeicherte Information besteht aus dem Tripel: Operator, Operand und Ergebnisklausel. In diesem Fall würde das Tripel sein: Verknüpfung, Klausel 2, Ergebnisklausel. Danach speichert der Prozessor 48 einen Zeiger auf diesen Eintrag in dem Klausel-Zwischenspeicher in dem Feld cache der Clause-Datenstruktur für die Klausel mit der höchsten ID. Der Prozessor führt den Schritt 372 immer dann aus, wenn zwei Klauseln verknüpft oder entknüpft werden, unabhängig davon, ob sie undurchsichtig sind. Das Zwischenspeichern der Ergebnisse aller Operationen mit Klauseln hilft dabei, die Verarbeitungszeit für die Vereinigung von Graph-Datenstrukturen zu reduzieren.
  • Fig. 14 veranschaulicht in der Form eines Flussdiagramms die Anweisungen 116 für das importieren einer Klausel in einen Graphen. Dabei erzeugt der Prozessor 48 eine neue undurchsichtige Clause-Datenstruktur, um die zu importierende Klausel einzuwickeln. Dies stellt sicher, dass der für den Wurzel-überspannenden Rand erzeugte Graph möglichst ein kontextfreies Äquivalent ist, durch Ersetzen vielfacher Propositionsvariablen durch eine einzelne Propositionsvariable.
  • Der Prozessor 48 beginnt die Ausführung der Anweisungen 116 in Schritt 400 mit der Bestimmung, ob die ausgewählte Klausel, diejenige, die zu importieren ist, bereits in den ausgewählten Graphen importiert worden ist. Dazu durchsucht der Prozessor 48 den Klausel- Zwischenspeicher nach einem Eintrag, dessen Ergebnisklausel identisch mit der ausgewählten Klausel ist. Falls der Prozessor 48 solch einen Eintrag findet, dann ist die ausgewählte Klausel bereits in den ausgewählten Graphen exportiert worden, was den Bedarf dafür beseitigt. Als Reaktion verzweigt der Prozessor 48 von Schritt 400 zu Schritt 402 und gibt die importierte Klausel zurück. Falls andererseits der Klausel-Zwischenspeicher nicht anzeigt, dass die ausgewählte Klausel bereits exportiert worden ist, dann verzweigt der Prozessor 48 von Schritt 400 zu Schritt 404.
  • In Schritt 404 erzeugt der Prozessor 48 eine neue undurchsichtige Clause-Datenstruktur und speichert die ausgewählte Klausel in dem Feld imported. Anschließend zeichnet der Prozessor 48 in Schritt 406 in dem Feld imported auf, dass die undurchsichtige Klausel exportiert worden ist, und zeigt an, in welchen Graphen sie exportiert wurde, durch Speichern eines Zeigers auf den ausgewählten Graphen in dem Feld graph. Schließlich speichert der Prozessor 48 in Schritt 408 das Ergebnis dieser Operation in dem Klausel-Zwischenspeicher des Speichers 50 zwischen durch Speichern der Tripels: ausgewählte Klausel, undurchsichtig, neue undurchsichtige Klausel. Nach dem Import der neuen undurchsichtigen Klausel kehrt der Prozessor 48 von Schritt 408 zu Schritt 402 zurück.
  • Fig. 15 veranschaulicht in der Form eines Flussdiagramms die Anweisungen 104 für die Ermittlung von Lösungen für einen ausgewählten Rand, wenn die Klauseln gegeben sind, für die Lösungen gesucht werden, welche eine Beschränkungsmenge genannt werden, weil Lösungen nicht für alle Klauseln gesucht werden müssen, die dem ausgewählten Rand zugeordnet sind. Ein Zeiger auf den ausgewählten Rand, dem die Beschränkungsmenge zugeordnet ist, wird ebenfalls den Anweisungen 104 übergeben. Kurz beschrieben, erzeugt die Subroutine Beschaffe-Randlösungen 104 Lösungen für den ausgewählten Rand durch Herausfinden, welche Kombinationen von Klauseln der Beschränkungsmenge Lösungen haben. Der Prozessor 48 identifiziert mögliche interne Lösungen für einen Unterbaum zu einem Zeitpunkt durch Finden von Lösungen für die linke und die rechte Tochter des ausgewählten Unterbaums als erste Maßnahme. Der Prozessor 48 bewertet dann die Gültigkeit der möglichen internen Lösungen unter Verwendung der lokalen Unbrauchbaren. Wenn interne Lösungen der ausgewähllten Beschränkungsmenge nicht ungültig sind, bestimmt der Prozessor 48 dann, welche von ihnen, falls TRUE, dazu führen, dass Klauseln der ausgewählten Beschränkungsmenge als TRUE zu bewerten sind. Diese Klauseln der Beschränkungsmenge, die als TRUE bewertet werden, bilden dann eine Beschränkungslösung.
  • Die Ausführung der Anweisungen 1104 beginnt mit Schritt 450, in dem der Prozessor 48 nach offensichtlichen Lösungen für den ausgewählten Rand sucht. Es gibt davon drei. Zuerst prüft der Prozessor 48 den Zeiger auf den ausgewählten Rand. Falls der Zeiger Null ist, bedeutet dies, dass der ausgewählte Rand mit einem anderen Rand erfolgreich kombiniert werden kann. Als Reaktion auf solch eine Entdeckung geht der Prozessor 48 zu Schritt 452 und zeigt an, dass die Lösung für den ausgewählten Rand TRUE ist. Dann kehrt der Prozessor 48 zu Schritt 454 zurück. Falls andererseits der Zeiger auf den ausgewählten Rand nicht Null ist, verzweigt der Prozessor 48 zu Schritt 460, um andere offensichtliche Lösungen für den ausgewählten Rand zu prüfen. In Schritt 460 prüft der Prozessor 48 das Feld nogood des Graphen der ausgevuälhlten Edge-Datenstruktur, um zu bestimmen, ob der aus- · gewählte Rand unbrauchbar ist. Falls der ausgewählte Rand unbrauchbar ist, setzt der Prozessor 48 in Schritt 462 die Lösung für den ausgewählten Rand zu Null und kehrt zu Schritt 454 zurück. Wenn der ausgewählte Rand nicht als unbrauchbar kategorisiert ist, verläßt der Prozessor 48 den Schritt 460, um die letzte der offensichtlichen Lösungen zu prüfen. In Schritt 464 durchsucht der Prozessor 48 den Lösungen-Zwischenspeicher des Graphen, um zu sehen, ob diese Beschränkungsmenge bereits gelöst worden ist. Falls diese Beschränkungsmenge bereits gelöst worden ist, gibt der Prozessor 48 in Schritt 466 einen Zeiger auf die Lösungen zurück, falls vorhanden.
  • Wenn die Suche nach offensichtliche und leichten Lösungen erfolglos bleibt, verläßt der Prozessor 48 den Schritt 464 und geht zu Schritt 468. Der Prozessor 48 erzeugt eine Restriction-Solution-Datenstruktur für die ausgewählten Klauseln in dem Lösungen-Zwischenspeicher, wobei alle Felder auf Null gesetzt werden. Danach geht der Prozessor 48 zu Schritt 470, um die Suche nach Lösungen für die ausgewählte, beschränkte Menge zu finden, einen Unterbaum zu einem Zeitpunkt. In Schritt 472 wählt der Prozessor 48 einen der Unterbäume aus, die noch einer Lösung bedürfen. Als Nächstes bestimmt der Prozessor 48, ob der ausgewählte Unterbaum unbrauchbar ist, durch Prüfen des Felds nogood der Graph-Datenstruktur für den ausgewählten Unterbaum. Falls der ausgewählte Unterbaum unbrauchbar ist, wendet sich der Prozessor 48 anderen Unterbäumen zu, indem er zu Schritt 470 zurückkehrt. Falls andererseits der Graph für den ausgewählten Unterbaum nicht unbrauchbar ist, geht der Prozessor 48 von Schritt 474 zu Schritt 476.
  • Das Herausfinden von Lösungen für den ausgewählten Unterbaum verlangt zuerst das Herausfinden von Lösungen für die linke und die rechte Tochter des ausgewählten Unterbaums. Dies geschieht in den Schritten 476 bis 486. Zuerst bestimmt der Prozessor 48, welche der Klauseln des Unterbaums von seiner linken Tochter importiert worden sind, was eine neue, beschränkte Menge definiert. Der Prozessor 48 verwendet diese Information in Schritt 478, um Lösungen für die linke Tochter zu finden durch Aufruf der Subroutine Beschaffe-Randlösungen 104. Falls es keine Lösungen für die linke Tochter gibt, kann es keine Lösung für den ausgewählten Unterbaum geben. Der Prozessor 48 reagiert auf diese Situation durch Verzweigen von Schritt 480 zu Schritt 470, um sich einem anderen Unterbaum zuzuwenden. Falls andererseits die linke Tochter eine Lösung hat, dann kann der ausgewählte Unterbaum eine Lösung haben. Als Reaktion verzweigt der Prozessor 48 von Schritt 480 zu Schritt 482, um Lösungen für die rechte Tochter des ausgewählten Unterbaums zu identifizieren. Der Prozessor 48 beginnt mit der Identifizierung, welche der Klauseln des Subtree-Graphen von der rechten Tochter importiert worden sind. Dies definiert eine neue, beschränkte Menge, welche der Prozessor 48 verwendet, wenn er in Schritt 484 die Subroutine Beschaffe-Randlösungen 104 aufruft. Der Prozessor 48 reagiert auf die Entdeckung, dass die rechte Tochter keine Lösung hat, indem er von Schritt 486 zu Schritt 470 zurückkehrt. Falls andererseits die rechte Tochter eine Lösung hat, dann verzweigt der Prozessor 48 von Schritt 486 zu Schritt 490.
  • Wenn Lösungen für die linke Tochter und für die rechte Tochter gegeben sind, beginnt der Prozessor 48 in Schritt 490 damit, Lösungen für den ausgewählten Rand zu identifizieren. Diese Lösungen werden durch eine Restriction-Set-Datenstruktur repräsentiert. In Schritt 490 erzeugt der Prozessor 48 lokale Lösungen auf der Basis der Disjunktionen, die eingeführt wurden, als die lokalen Lösungen dargestellt wurden. Der Prozessor 48 ermittelt dann das Kreuzprodukt der lokalen Lösungen und der Lösungen für die linke und die rechte Tochter, um eine Anzahl von kandidierenden internen Lösungen für den ausgewählten Rand zu produzieren. Der Prozessor 48 prüft diese kandidierenden internen Lösungen eine zu einem Zeitpunkt in aufeinanderfolgenden Schritten.
  • In den Schritten 500 bis 506 wählt der Prozessor 48 eine der kandidierenden internen Lösungen für die Auswertung aus und wertet ihn aus unter Verwendung lokaler unbrauchbarer Klauseln, um die Gültigkeit der kandidierenden internen Lösung zu bestimmen. Falls der Prozessor 48 in Schritt 506 bestimmt, dass die kandidierende interne Lösung nicht gültig ist, kehrt der Prozessor 48 zu Schritt 500 zurück, um die Auswertung einer anderen kandidierenden internen Lösung zu beginnen. Falls andererseits die kandidierende interne Lösung gültig ist, geht der Prozessor 48 zu Schritt 508. In Schritt 508 wird jede der Klauseln in der kandidierenden internen Lösung als TRUE angenommen, und die Klauseln de ausgewählten, beschränkten Menge werden geprüft, ob sie zu TRUE auswerten. Der Prozessor 48 stellt in Schritt 510 die Klauseln der beschränkten Menge fest, deren Auswertung TRUE ergibt, und vergleicht sie mit denen, die in dem Feld clauses der Restricted-Solution- Datenstrukturen aufgelistet sind, die der ausgewählten beschränkten Menge zugeordnet sind. Falls in Schritt 512 bestimmt wird, dass sie noch nicht in die Lösungen für die Beschränkungsmenge einbezogen sind, erzeugt der Prozessor 48 in Schritt 514 eine neue Beschränkungslösung mit der festgestellten Klausel und fügt sie zu den Lösungen für die Beschränkungsmenge hinzu. Schließlich fügt der Prozessor 48 in Schritt 516 einen Zeiger auf die Datenstruktur für die ausgewählten kandidierenden internen Lösungen zum Feld map der Restriction-Solution-Datenstruktur hinzu.
  • Nach Vollendung der Auswertung einer kandidierenden Lösung kehrt der Prozessor 48 zu Schritt 500 zurück, um die Prüfung der kandidierenden internen Lösungen fortzusetzen, wie in den Schritten 502 bis 516 beschrieben. Nach der Prüfung der kandidierenden internen Lösungen für den ausgewählten Unterbaum verzweigt der Prozessor 48 von Schritt 500 zu Schritt 470. Nach der Verarbeitung aller Unterbäume, die dem ausgewählten Rand zugeordnet sind, kehrt der Prozessor 48 zu Schritt 454 zurück und gibt gefundene Lösungen für die Beschränkungsmenge zurück.

Claims (10)

1. Verfahren der Vereinigung von Datenstrukturen, das die folgenden Schritte umfasst:
- (a) Kopieren von Information der ersten Datenstruktur auf eine zweite Datenstruktur, dadurch gekennzeichnet, dass die Information der ersten Datenstruktur auf die zweite Datenstruktur in einem Kopierkontext kopiert wird; das
- (a) umfasst:
- (a1) Bestimmen, ob die erste Merkmalstruktur in der zweiten Merkmalstruktur durch eine Verkettung dargestellt werden kann; und
- (a2) falls das zutrifft, Kopieren der ersten Merkmalstruktur in die zweite Merkmalstruktur durch Hinzufügen einer Verkettung von der zweiten Merkmalstruktur zur ersten Merkmalstruktur, wobei die hinzugefügte Verkettung einen zugeordneten Kontext-identifizierer hat, der den Kopierkontext identifiziert.
2. Verfahren nach Anspruch 1, bei dem die zweite Merkmalstruktur eine leere Merkmalstruktur ist.
3. Verfahren nach Anspruch 11 oder 2, das ferner umfasst:
- (b) falls die hinzugefügte Verkettung aktiviert wird, Erweitern der zweiten Merkmalstruktur durch Erweitern der hinzugefügten Verkettung.
4. Verfahren nach Anspruch 3, bei dem (b) umfasst:
(b1) Auswählen der hinzugefügten Verkettung aus den Verkettungen, die der zweiten Graphendatenstruktur zugeordnet sind;
(b2) Auswählen eines ausgewählten Attributs aus der ersten Merkmalstruktur, wobei das ausgewählte Attribut einen ausgewählten Attributwert hat;
- (b3) Anfertigen einer Kopie des ausgewählten Attributs und Speichern der Kopie des ausgewählten Attributs in der zweiten Merkmalstruktur als ein kopiertes Attribut; und
- (b4) Hinzufügen einer zusätzlichen Verkettung von dem kopierten Attribut zu dem ausgewählten Attributwert.
5. Verfahren nach irgendeinem der vorstehenden Ansprüche, bei dem das Verfahren erste und zweite Randdatenstrukturen vereinigt, und die ersten und zweiten Merkmalstrukturen in der ersten Randdatenstruktur sind.
6. Verfahren nach Anspruch 5, bei dem die ersten und zweiten Merkmalstrukturen Graphendatenstrukturen sind.
7. Verfahren nach Anspruch 6, bei dem die erste Randdatenstruktur zwei oder mehrere zugeordnete Unterbäume hat, und die erste Merkmalstruktur eine Unterbaum-Graphendatenstruktur ist, die einem der zugeordneten Unterbäume zugeordnet ist.
8. Verfahren nach irgendeinem der vorstehenden Ansprüche, bei dem (a1) umfasst: Bestimmen, ob Verkettungen der zweiten Merkmalstruktur erweitert worden sind.
9. Verfahren nach irgendeinem der vorstehenden Ansprüche, bei dem (a1) umfasst: Bestimmen, ob die zweite Datenstruktur irgendeine Verkettung mit einem Kontext hat, der den Kopierkontext überlappt.
10. System (30) für die Vereinigung von Datenstrukturen, und das System umfasst:
- eine Verarbeitungseinrichtung (48); und
- Speichereinrichtungen (40, 42, 50) für die Speicherung von Datenstrukturen; wobei die gespeicherten Datenstrukturen die erste und zweite Merkmalstruktur einschließt;
- die Verarbeitungseinrichtung bei der Vereinigung von Datenstrukturen Information von der ersten Merkmalstruktur auf die zweite Merkmalstruktur kopiert; dadurch gekennzeichnet, dass die Verarbeitungseinrichtung Information von der ersten Merkmalstruktur auf die zweite Merkmalstruktur in einem Kopierkontext kopiert; die Verarbeitungseinrichtung bestimmt, ob die erste Merkmalstruktur in der zweiten Merkmalstruktur durch eine Verkettung dargestellt werden kann; und im Fall des Zutreffens die Verarbeitungseinrichtung die erste Merkmalstruktur in die zweite Merkmalstruktur kopiert durch Hinzufügen einer Verkettung von der zweiten Merkmalstruktur zur ersten Merkmalstruktur, wobei die hinzugefügte Verkettung einen zugeordneten Kontext-Identifizierer hat, der den Kopierkontext identifiziert.
DE69712411T 1996-06-21 1997-06-19 Verfahren und System um Datenstrukturen zu vereinigen Expired - Lifetime DE69712411T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/668,988 US5819210A (en) 1996-06-21 1996-06-21 Method of lazy contexted copying during unification

Publications (2)

Publication Number Publication Date
DE69712411D1 DE69712411D1 (de) 2002-06-13
DE69712411T2 true DE69712411T2 (de) 2002-08-29

Family

ID=24684568

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69712411T Expired - Lifetime DE69712411T2 (de) 1996-06-21 1997-06-19 Verfahren und System um Datenstrukturen zu vereinigen

Country Status (4)

Country Link
US (2) US5819210A (de)
EP (1) EP0814418B1 (de)
JP (1) JP4413286B2 (de)
DE (1) DE69712411T2 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903860A (en) * 1996-06-21 1999-05-11 Xerox Corporation Method of conjoining clauses during unification using opaque clauses
US5836771A (en) 1996-12-02 1998-11-17 Ho; Chi Fai Learning method and system based on questioning
US6498921B1 (en) * 1999-09-01 2002-12-24 Chi Fai Ho Method and system to answer a natural-language question
US6138098A (en) * 1997-06-30 2000-10-24 Lernout & Hauspie Speech Products N.V. Command parsing and rewrite system
US6330530B1 (en) * 1999-10-18 2001-12-11 Sony Corporation Method and system for transforming a source language linguistic structure into a target language linguistic structure based on example linguistic feature structures
DE19952070A1 (de) * 1999-10-28 2001-06-28 Kiwi Interaktive Medien Gmbh Verfahren zur Erweiterung einer Datenbank
US6704728B1 (en) * 2000-05-02 2004-03-09 Iphase.Com, Inc. Accessing information from a collection of data
US8478732B1 (en) 2000-05-02 2013-07-02 International Business Machines Corporation Database aliasing in information access system
US6711561B1 (en) 2000-05-02 2004-03-23 Iphrase.Com, Inc. Prose feedback in information access system
US6714905B1 (en) * 2000-05-02 2004-03-30 Iphrase.Com, Inc. Parsing ambiguous grammar
US6408277B1 (en) 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
US8290768B1 (en) 2000-06-21 2012-10-16 International Business Machines Corporation System and method for determining a set of attributes based on content of communications
US9699129B1 (en) 2000-06-21 2017-07-04 International Business Machines Corporation System and method for increasing email productivity
US7644057B2 (en) 2001-01-03 2010-01-05 International Business Machines Corporation System and method for electronic communication management
US7136846B2 (en) 2001-04-06 2006-11-14 2005 Keel Company, Inc. Wireless information retrieval
US7165055B2 (en) * 2002-02-14 2007-01-16 Xerox Corporation Systems and methods for solving nogood databases
US7225121B2 (en) * 2002-02-20 2007-05-29 Palo Alto Research Center Incorporated Generating with Lexical Functional Grammars
US7302382B2 (en) * 2002-02-20 2007-11-27 Xerox Corporation Generating with lexical functional grammars
US7343372B2 (en) * 2002-02-22 2008-03-11 International Business Machines Corporation Direct navigation for information retrieval
US20040167870A1 (en) * 2002-12-06 2004-08-26 Attensity Corporation Systems and methods for providing a mixed data integration service
US7203668B2 (en) * 2002-12-19 2007-04-10 Xerox Corporation Systems and methods for efficient ambiguous meaning assembly
US7171403B2 (en) 2003-01-09 2007-01-30 Palo Alto Research Center Incorporated Systems and methods for efficient conjunction of Boolean variables
US20050187913A1 (en) 2003-05-06 2005-08-25 Yoram Nelken Web-based customer service interface
US8495002B2 (en) 2003-05-06 2013-07-23 International Business Machines Corporation Software tool for training and testing a knowledge base
US20040230415A1 (en) * 2003-05-12 2004-11-18 Stefan Riezler Systems and methods for grammatical text condensation
US7657420B2 (en) * 2003-12-19 2010-02-02 Palo Alto Research Center Incorporated Systems and methods for the generation of alternate phrases from packed meaning
US8244689B2 (en) 2006-02-17 2012-08-14 Google Inc. Attribute entropy as a signal in object normalization
US7769579B2 (en) 2005-05-31 2010-08-03 Google Inc. Learning facts from semi-structured text
US7392258B2 (en) * 2005-02-25 2008-06-24 International Business Machines Corporation Method and computer program product for dynamic weighting of an ontological data model
US7809754B2 (en) * 2005-02-28 2010-10-05 International Business Machines Corporation Method and computer program product for generating a lightweight ontological data model
US7587387B2 (en) 2005-03-31 2009-09-08 Google Inc. User interface for facts query engine with snippets from information sources that include query terms and answer terms
US9208229B2 (en) 2005-03-31 2015-12-08 Google Inc. Anchor text summarization for corroboration
US8682913B1 (en) 2005-03-31 2014-03-25 Google Inc. Corroborating facts extracted from multiple sources
US7831545B1 (en) 2005-05-31 2010-11-09 Google Inc. Identifying the unifying subject of a set of facts
US8996470B1 (en) * 2005-05-31 2015-03-31 Google Inc. System for ensuring the internal consistency of a fact repository
US8046348B1 (en) * 2005-06-10 2011-10-25 NetBase Solutions, Inc. Method and apparatus for concept-based searching of natural language discourse
US7606776B1 (en) 2005-09-28 2009-10-20 Actenum Corporation Flexible constraint propagation engine for combinatorial optimization applications
US7991797B2 (en) 2006-02-17 2011-08-02 Google Inc. ID persistence through normalization
US8260785B2 (en) 2006-02-17 2012-09-04 Google Inc. Automatic object reference identification and linking in a browseable fact repository
US8700568B2 (en) 2006-02-17 2014-04-15 Google Inc. Entity normalization via name normalization
WO2008024800A2 (en) * 2006-08-21 2008-02-28 Western Slope Utilities, Inc. Systems and methods for swab transport in pipeline rehabilitation
US8122026B1 (en) 2006-10-20 2012-02-21 Google Inc. Finding and disambiguating references to entities on web pages
US8347202B1 (en) 2007-03-14 2013-01-01 Google Inc. Determining geographic locations for place names in a fact repository
US8239350B1 (en) 2007-05-08 2012-08-07 Google Inc. Date ambiguity resolution
US7966291B1 (en) 2007-06-26 2011-06-21 Google Inc. Fact-based object merging
US7970766B1 (en) 2007-07-23 2011-06-28 Google Inc. Entity type assignment
US8738643B1 (en) 2007-08-02 2014-05-27 Google Inc. Learning synonymous object names from anchor texts
US8812435B1 (en) 2007-11-16 2014-08-19 Google Inc. Learning objects and facts from documents
US8676737B2 (en) * 2009-10-05 2014-03-18 International Business Machines Corporation Detecting missing cases in business rules
US9317595B2 (en) * 2010-12-06 2016-04-19 Yahoo! Inc. Fast title/summary extraction from long descriptions
US8819078B2 (en) * 2012-07-13 2014-08-26 Hewlett-Packard Development Company, L. P. Event processing for graph-structured data
US10657180B2 (en) * 2015-11-04 2020-05-19 International Business Machines Corporation Building and reusing solution cache for constraint satisfaction problems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438511A (en) * 1988-10-19 1995-08-01 Xerox Corporation Disjunctive unification
US5727222A (en) * 1995-12-14 1998-03-10 Xerox Corporation Method of parsing unification based grammars using disjunctive lazy copy links

Also Published As

Publication number Publication date
JPH1078959A (ja) 1998-03-24
EP0814418B1 (de) 2002-05-08
DE69712411D1 (de) 2002-06-13
EP0814418A1 (de) 1997-12-29
US5819210A (en) 1998-10-06
US6064953A (en) 2000-05-16
JP4413286B2 (ja) 2010-02-10

Similar Documents

Publication Publication Date Title
DE69712411T2 (de) Verfahren und System um Datenstrukturen zu vereinigen
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE68928693T2 (de) Verfahren zur Behandlung von digitalen Textdaten
DE69516891T2 (de) Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere
DE69032921T2 (de) Direkte Manipulationsschnittstelle zum Abrufen von logischen Informationen
DE68929038T2 (de) Verfahren zur Verarbeitung von digitalen Textdaten
DE69429866T2 (de) Verfahren und gerät zur modellierung und abfrage von datenbankenstrukturen mit natürlichen sprachartigen konstruktionen
DE68928775T2 (de) Verfahren und Vorrichtung zur Herstellung einer Zusammenfassung eines Dokumentes
DE3650417T2 (de) Informationsaufzeichnungs- und Wiederauffindungssystem.
DE68927086T2 (de) Datenvereinheitlichungssystem und -methode
DE68928230T2 (de) System zur grammatikalischen Verarbeitung eines aus natürlicher Sprache zusammengesetzten Satzes
DE69812162T2 (de) Vorrichtung zur Verwendung bei der Identifizierung semantischer Mehrdeutigkeiten
DE69022842T2 (de) Verwendung von Befehlsähnlichkeiten in einem intelligenten Hilfssystem.
DE69726339T2 (de) Verfahren und Apparat zur Sprachübersetzung
DE69622875T2 (de) System und verfahren zum generieren von anwendungsprogrammen und deren dokumentation
DE69229204T2 (de) Iteratives Verfahren zum Suchen von Satzteilen und Informationsauffindungssystem, welches dieses benützt
DE69230814T2 (de) Datenbankauffindungssystem zur Beantwortung natursprachlicher Fragen mit dazugehörigen Tabellen
DE68928231T2 (de) Verfahren und Vorrichtung zur Maschinenübersetzung
DE69807699T2 (de) Vorrichtung und verfahren zur syntaxanalyse und transformation von befehlen
DE60213409T2 (de) Erstellung von strukturierten daten aus unformatiertem text
DE69428490T2 (de) Verfahren und Vorrichtung zum Spezifizieren des Layouts von strukturierten Dokumenten
DE69325420T2 (de) Speichern von Bäumen in durchsteuerbarer Form
DE69030815T2 (de) Apparat und verfahren zur erzeugung von dokumenten
DE69026885T2 (de) Dynamische Selektion von Datenformaten für rekursiv geschachtelte logische Elemente
DE69715525T2 (de) Verfahren und System um Datenstrukturen zu vereinigen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition