DE69400207T2 - Sprachabhängiges textvergleichssystem - Google Patents
Sprachabhängiges textvergleichssystemInfo
- Publication number
- DE69400207T2 DE69400207T2 DE69400207T DE69400207T DE69400207T2 DE 69400207 T2 DE69400207 T2 DE 69400207T2 DE 69400207 T DE69400207 T DE 69400207T DE 69400207 T DE69400207 T DE 69400207T DE 69400207 T2 DE69400207 T2 DE 69400207T2
- Authority
- DE
- Germany
- Prior art keywords
- character
- characters
- comparison
- values
- tertiary
- 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
Links
- 238000000034 method Methods 0.000 claims description 56
- 230000003247 decreasing effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 9
- 241000287436 Turdus merula Species 0.000 description 7
- 241000218225 Trema Species 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 1
- 230000001154 acute effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/02—Indexing scheme relating to groups G06F7/02 - G06F7/026
- G06F2207/025—String search, i.e. pattern matching, e.g. find identical word or best match in a string
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/912—Applications of a database
- Y10S707/917—Text
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Linguistics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Machine Translation (AREA)
- Character Discrimination (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Diese Patentanmeldung enthält urheberrechtlich geschütztes Material, dessen Reproduktion nur als Teil der Patentanmel dung zu informativen Zwecken gestattet ist. Alle anderen Rechte, insbesondere das Recht zur kommerziellen Verwertung derartigen Materials, sind vorbehalten.
- Diese Erfindung betrifft im allgemeinen Verbesserungen in Computersystemen und insbesondere beim sprachsensitiven Textvergleich.
- Für Entwickler von Workstation-Software wird es zunehmend wichtiger, eine flexible Software-Umgebung zu schaffen und gleichzeitig eine Konsistenz in der Anwenderschnittstelle zu gewährleisten. Ein früher Versuch, diese Art Betriebsumgebung zu schaffen&sub1; ist im US-Patent 4.686.522 für Hernandez et al. offenbart. Dieses Patent bespricht ein kombiniertes grafik- und textverarbeitendes System, in welchem ein Anwender an der Stelle des Cursors ein dynamisches Menü aufrufen und eine Vielzahl von Funktionen aus dem Menü aufrufen kann. Diese Art der natürlichen Interaktion mit einem Anwender verbessert die Benutzerschnittstelle und macht diese Anwendung wesentlich intuitiver.
- EP A 0 294 950 offenbart ein Verfahren zur alphabetischen Sortierung von Wörtern, basierend auf Zeichen aus einem mehrsprachigen Alphabet. Dieses Verfahren verwendet ein Codierschema, um die sprachenabhängigen Sortierordnungen der Zeichen zu bestimmen. Zu diesem Zweck werden die sprachenabhängigen Sortierordnungen als Datendateien für jede der unterstützten Sprachen gespeichert. Jede Datendatei besteht aus einer Tabelle mit Ordnungswerten für die im Alphabet der jeweiligen Sprache enthaltenen Zeichen, und aus weiteren Tabellen zur Akzentcodierung und zur Codierung von nichtalphanumerischen Zeichen. Die Zeichen der zu sortierenden Daten dienen als Zeiger zu den Datendateien, um einen alphanumerischen Sortierschlüssel zu definieren, der dann für den Sortiervorgang verwendet wird.
- EP A 0310 283 offenbart ein mehrsprachiges Datenbanksystem, welches die Sortiereinrichtung gemäß EP A 0 294 950 verwendet, um mehrsprachige Sortiervorgänge durch Erhaltung einer Datenbank durchzuführen, die aus allen mehrsprachigen Wörtern besteht, die in der Umgebung anzutreffen sind. Auf die Datenbank wird während eines Sortier- oder Vergleichsvorganges durch einen Sortierschlüsselindex zugegriffen, in welchem sich mindestens ein Sortierschlüssel für jedes Datensegment für jede unterstützte Sprache befindet. Jeder mit einer besonderen Sprache im Zusammenhang stehende Sortierschlüsselsatz wird in Übereinstimmung mit einem vorherbestimmten Sprachenkritenum geordnet, so daß durch den Zugriff auf die Datenbank unter Verwendung des Sortierschlüsselsatzes Wörter in der richtigen Vergleichsordnung für diese Sprache aufgefunden werden. Das Verfahren für den Zugriff auf die Datenbank verwendet Wörter basierend auf Zeichen eines mehrsprachigen Alphabets, welche anfänglich in der Datenbank gespeichert werden. Die Wörter werden danach codiert, um einen Sortierschlüssel für jedes einzelne Wort jeder einzelnen von der Datenbank zu unterstützenden Sprache zu bilden. Die Sortierschlüssel werden dann in sortierter Reihenfolge gemeinsam mit einem Hinweis auf die entsprechende gespeicherte Information im Datenspeicher in einnem Index gespeichert. Somit ist es möglich, eine alphabetische Sortierung durchzuführen, indem einfach auf den Datenspeicher in der Reihenfolge zugegriffen wird, die durch einen Sortierschlüssel für eine bestimmte Sprache vorgegeben wird. Auf ähnliche Weise kann ein mehrsprachiger Vergleich durchgeführt werden&sub1; indem auf den Datenspeicher zugegriffen wird, um zwei unterschiedliche Wörter mit Hilfe eines Sortierschlüssels für zwei unterschiedliche Sprachen wiederaufzufinden.
- Wichtig in diesem System ist, daß alle Wörter, die in der Umgebung gefunden werden, in der Datenbank gespeichert sein müssen. Eine getrennte Datendatei wird für jede einzelne zu unterstützende Sprache geschaffen, und die Datendatei wird verwendet, um die Hauptdatei auf eine vorherbestimmte Art und Weise zu modifizieren. Insbesondere wandelt die Modifizierung jedes einzelne gespeicherte Wort von seiner natürlichen Darstellung in eine Form um, die unabhängig von der internen Interpretation des normalsprachigen Zeichensatzes ist. Nachdem jedes dieser Wörter auf diese vorherbestimmte Art und Weise codiert wurde, kann eine 5ortierung oder ein Vergleich durchgeführt werden, wobei die gespeicherten codierten Werte (die sprachenunabhängig sind) anstelle der uncodierten gespeicherten Wörter (die sprachenabhängig sind) verwendet werden.
- Die bekannten Systeme unterscheiden sich wesentlich von der vorliegenden Erfindung, der zufolge der Vergleich von Textketten Zeichen für Zeichen erfolgt, bis ein unterschied festgestellt wird. Der erfinderische Vorgang beginnt, indem ein Ordnungswert für jedes einzelne Zeichen in einer gegebenen Sprache definiert und der Satz der Ordnungswerte gespeichert wird. Dann werden zwei Textketten miteinander verglicheni indem die Ketten gespeichert werden und der Reihe nach ein Zeichenpaar aus jeweils einer Kette wiederaufgefunden wird. Die Zeichen werden für den Zugang der vordef inierten Datenbank und zum Wiederauff inden der Ordnungswerte für die einzelnen Zeichen verwendet. Die Ordnungswerte werden dann miteinander verglichen, und wenn ein Unterschied gefunden wird, wird dieser Unterschied verwendet, um die Vergleichsordnung der Ketten zu bestimmen.
- Demzufolge ist es ein primäres Ziel der vorliegenden Erfindung, einen sprachsensitiven Textvergleich zu schaffen. Es wird ein erfinderisches System und ein erfinderisches Verfahren zur Durchführung des Vergleichs vorgestellt, welches den Textvergleich beliebiger Unicode-Ketten durchführt. Für jede Sprache wird eine Ordnung basierend auf Merkmalen der Sprache erstellt. Danach wird eine Vergleichsfunktion durchgeführt, um die Beziehung eines Kettenpaares zu bestimmen. Die Kette wird überprüft, und ein Vergleich von einem oder mehreren Zeichen wird basierend auf einer vorherbestimmten Zeichenpriorität gleichzeitig durchgeführt, um zu bestimmen, ob eine Übereinstimmung gefunden wurde.
- Die Erfindung wird gemäß Patentanspruch 1 (System) und Patentanspruch 8 (Verfahren) definiert.
- Figur 1 ist ein Blockdiagramm eines Personal-Computersystems gemäß dem Erfindungsgegenstand;
- Figur 2 zeigt die logische Zusammensetzung der Unicode- Ordnung gemäß dem Erfindungsgegenstand;
- Figur 3 zeigt eine Unicode-Ordnung für Englisch gemäß dem Erfindungsgegenstand;
- Figur 4 zeigt ein Beispiel für Unicode-Strukturen gemäß dem Erfindungsgegenstand;
- Figur 5 stellt eine Datenstruktur für den Kettenvergleich gemäß dem Erfindungsgegenstand dar;
- Figur 6 zeigt den Fluß der Kontrolle und des Gruppierens gemäß dem Erfindungsgegenstand;
- Figur 7 zeigt eine Unicode-Ordnung basierend auf der letzten Unicode-Ordnung gemäß dem Erfindungsgegenstand;
- Figur 8 ist ein Flußdiagramm der detaillierten Logik gemäß dem Erfindungsgegenstand; und
- Figur 9 ist ein Beispiel einer Anzeige gemäß dem Erfindungsgegenstand.
- Die Erfindung wird bevorzugterweise im Zusammenhang mit einem Betriebssystem ausgeführt, welches sich auf einem Personal Computer wie zum Beispiel einem IBM PS/2 oder einem Apple Macintosh Computer befindet. Eine repräsentative Hardware-Umgebung wird in Figur 1 dargestellt, welche eine typische Hardware-Konfiguration einer Workstation gemäß dem Erfindungsgegenstand darstellt, die aus einer zentralen Recheneinheit (CPU) 10, wie zum Beispiel einem herkömmlichen Mikroprozessor, und einer Anzahl anderer Einheiten besteht, die über einen Systembus 12 miteinander verbunden sind. Die in Figur 1 dargestellte Workstation umfaßt einen Direktzugriffsspeicher (RAM) 14, einen Nur-Lese-Speicher (ROM) 16, einen E/A-Adapter 18 zum Anschluß von Peripheriegeräten, wie zum Beispiel Disketteneinheiten 20, am Bus, einen Benutzerschnittstellenadapter 22 zum Anschluß einer Tastatur 24, einer Maus 26, eines Lautsprechers 28, eines Mikrophons 32 und/oder anderer Benutzerschnittstellengeräte, wie zum Beispiel eines Tast-Bildschirms (nicht dargestellt) am Bus, einen Kommunikationsadapter 34 zum Anschluß der Workstation an einem datenverarbeitenden Netzwerk und einen Anzeigenadapter 36 für den Anschluß eines Anzeigegerätes 38 am Bus. Die Workstation umfaßt weiters ein Betriebssystems, wie zum Beispiel das Betriebssystem Apple System/7 .
- Keine Zeichencodierung enthält ausreichend Informationen für eine gute alphabetische Ordnung irgendeiner natürlichen Sprache: beim Macintosh führt der einfache byte-weise Vergleich zur folgenden falschen Ausgabe:
- "A" < "Z" < "a" < "Ñ" < "∅" < " ".
- Textvergleichsklassen umfassen Vorkehrungen für den richtigen Vergleich vieler verschiedener natürlicher Sprachen, und für richtiges natursprachliches Suchen für diese Sprachen.
- Richtiger Vergleich und korrektes Sortieren natursprachlicher Texte erfordert die folgenden Fähigkeiten. Diese Fähigkeiten sind von überaus großer Wichtigkeit für Programmierer, welche Vergleichsobjekte erstellen: auch ein Satz vordef inierter Vergleichsobjekte für unterschiedliche Sprachen wird verfügbar sein.
- Der erste primäre Unterschied in einer Kette bestimmt die darausfolgende Ordnung, unabhängig davon, um welche Zeichen es sich bei den anderen Zeichen handelt.
- cat < dog
- Wenn es keine primären Unterschiede in der Kette gibt, bestimmt der erste sekundäre Unterschied die darausfolgende Ordnung.
- ax < Ax < x < axx
- china < China < chinas
- Einige Sprachen erfordern primäre, sekundäre und tertiäre Ordnungen. Im Tschechischen zum Beispiel stellen Unterschiede in der Groß-/Kleinschreibung tertiäre Unterschiede dar (A vs. a), Akzentunterschiede sind sekundäre Unterschiede (é vs. e) , und unterschiedliche Grundbuchstaben stellen einen primären Unterschied dar (A vs. B) . Wenn es in diesen Sprachen keinen primären und sekundären Unterschied gibt, bestimmt der tertiäre Unterschied in den Ketten die darausfolgende Ordnung.
- ax Ax
- äx Ax
- Bei einigen Sprachen wird beim Vergleich eine Zeichenfolge so behandelt, als würde es sich dabei um einen einzelnen Buchstaben des Alphabets handeln.
- cx < chx < dx
- In einigen Sprachen wird ein einzelnes Zeichen so behandelt, als ob es sich dabei um eine Buchstabenfolge des Alphabets handeln würde.
- aex < æx < aexx
- Bestimmte Zeichen werden beim Vergleich ignoriert. Das heißt, sie sind bedeutungslos, sofern es keine anderen Unterschiede in der restlichen Kette gibt.
- ax < a-x y a-xx
- blackbird < black-bird < blackbirds
- Die spezifischen Zeichen, die dieses Verhalten aufweisen, hängen von der spezifischen Sprache ab: "a" < "ä" ist eine schwache Ordnung im Deutschen, aber nicht im Schwedischen: "ch" ist ein zusammengehöriges Zeichen im Spanischen, aber nicht im Englischen, usw. Ordnungen können jedoch auch innerhalb einer Sprache unterschiedlich sein: Anwender könnten sich zum Beispiel eine modifizierte Ordnung für die andere Norm wünschen, derzufolge "ä" wie ein erweiterndes Zeichen behandelt wird.
- Die folgenden Klassen stehen für Textvergleich und Suche zur Verfügung:
- * TTextOrder
- * TTableBasedTextOrder
- TTextOrder ist eine Klasse auf abstrakter Basis, welche das Protokoll zum Vergleich zweier Textobjekte festlegt. Dessen Unterklassen schaffen einen primitiven Mechanismus, der für das Sortieren oder Suchen von Textobjekten hilfreich ist. Eine TTextOrder ist ein notwendiges Feld am Ort des Anwenders.
- Der Vergleich zweier Textobjekte kann zu folgenden Ergebnissen führen: kSourcePrimaryLess (kQuelleprimärkleiner), kSourcesecondaryless (kQuellesekundär- Kleiner), kSourceTertiaryLess (kQuelleTertiärKleiner), kSourceTertiaryGreater (kQuelleTertiärGrößer), kSourceSecondaryGreater (kQuelleSekundärGrößer) oder kSourcePrimary- Greater (kQuellePrimärGrößer). Zwei Objekte sind nur dann gleich, wenn die Ketten Bit für Bit gleich sind, oder wenn es äquivalente Unicode-Reihen für einen bestimmten Buchstaben gibt. So kann das "ü" zum Beispiel durch das Zeichen "ü" oder durch die Reihe "u" + " " ausgedrückt werden.
- Die tertiären Vergleichsergebnisse ("kSourceTertiaryLess" oder "kSourceTertiaryGreater") werden zurückgegeben, wenn es keine primären oder sekundären Unterschiede in den Ketten gibt, aber wenn es tertiäre Unterschiede in den Ketten gibt (d.h. Unterschiede in der Groß-/Kleinschreibung, wie z.B. in 'a' versus 'A') . Die sekundären Vergleichsergebnisse ("kSourceSecondaryLess" und "kSourceSecondaryGreater") werden zurückgegeben, wenn es einen sekundären Unterschied gibt (d.h. einen Akzentunterschied wie z.B. in vs. ä).
- Die primären Vergleichsergebnisse ("kSourcePrimaryLess" und "kSourcePrimaryGreater") werden zurückgegeben, wenn es einen primären Unterschied in der Kette gibt (d.h. Zeichenunterschiede wie z.B. in a vs. b) . Dies schließt auch den Fall ein, wo es bis zum Ende einer der Ketten keine primären Unterschiede gibt, wo aber die andere Kette zusätzliche, nicht ignorierbare Zeichen enthält.
- Die folgenden Konstanten werden verwendet, um die Ordnungsstärke eines Zeichens zu markieren: kPrimaryDifference (kPrimärUnterschied), kSecondaryDifference (kSekundärUnterschied), kTertiaryDifference (kTertiärUnterschied), und kNoDifference (kKeinUnterschied). Primärunterschied bedeutet, daß ein Zeichen um vieles größer ist als ein anderes (d.h.... 'b' und 'a'); Sekundärunterschied bedeutet, daß das Zeichen "wenig größer" ist (wie z.B. ein Akzentunterschied in 'A' und ' '); Tertiärunterschied bedeutet, daß das Zeichen "sehr wenig größer" ist (wie zum Beispiel aufgrund der Groß-/Kleinschreibung in 'A' und 'a'). Zwei Zeichen werden als "nicht unterschiedlich" angesehen, wenn sie eine äquivalente Unicode-Codierung aufweisen. Der Aufrufer kann entscheiden, einen sekundären, tertiären und ignorierbaren Unterschied durch Aufruf von Se tOnlyUsePrimaryDifference () (EinstellenNurPrimärUnter schiedVerwenden) zu ignorieren. Man würde diese Markierung zum Beispiel auf FALSE (FALSCH) stellen, wenn ein groß/kleinschreibsensitiver Vergleich im Englischen durchgeführt wird. Und der Aufrufer kann einen tertiären Unterschied durch einfaches Aufrufen ignorieren.
- TTableBasedTextOrder leitet sich von TTextOrder ab. Dabei wird ein tabellenorientiertes Verfahren für sprachsensitiven Textvergleich verwendet. Die Tabelle besteht aus einer Liste von TTextOrderValue-Objekten, die durch Unicode- Zeichen indiziert sind. Ein TTextOrderValue (Textordnungswert) umfaßt die vier natursprachlichen Vergleichsmerkmale, die oben beschrieben wurden. Er enthält einen Ordnungswert für das Zeichen und, nach Wahl, Expansions- und Kontraktionsinformationen.
- Momentan wird die Tabelle auf der Basis einer Textspezifikation konstruiert. In der Zukunft wird es ein TUserInterface-Objekt (Benutzerschnittstellenobjekt) geben, welches für die Darstellung und die Bearbeitung der Tabellendaten verantwortlich ist. Eine Reihe von Zeichen in aufsteigender Ordnung kann programmatisch der Tabelle hinzugefügt werden, indem nacheinander der AddComparisonVvalue () (Vergleich-hinzufügen-Wert) aufgerufen wird. Öffentliche Verfahren
- Ein TTableBasedTextOrder-Objekt enthält nicht die Fähigkeit für einen wörterbuchbasierten Vergleich, welche dann erforderlich sein kann, wenn die Vergleichsordnung nicht von den Zeichen im Text abgeleitet werden kann. Die Abkürzung St. zum Beispiel ist zweideutig, und kann entweder als Saint, St. oder Street geordnet werden. Dieses Verhalten kann durch Einrichten von Unterklassen geschaffen werden: für Pink 1.0 ist kein wörterbuchbasierter Vergleich geplant. BEISPIELE GEMÄSS EINER BEVORZUGTEN AUSFÜHRUNGSFORM DER VORLIEGENDEN ERFINDUNG 1. Vergleich zweier Textobjekte:
- Dieser Abschnitt beschreibt die wesentlichen Eigenschaften des Vorgangs, der für einen sprachsensitiven Textvergleich verwendet wird. Der Taligent-Vergleichsvorgang ermöglicht den Vergleich beliebiger Unicode -Ketten. Unicode ist eine Schutzmarke der Fa. Unicode, Inc. Nähere Informationen bezüglich Unicode sind zu finden in: The Unicode Standard: Worldwide Character Encoding, (Die Unicode-Norm: Zeichencodierung weltweit), Version 2.0, Bände 1, 2, von Unicode, Inc., erschienen im Addison-Wesley-Verlag, ISBN 0-201- 56788-1, ISBN 0-201-60845-6. Er kann aber auch für eingeschränktere Zeichensätze angepaßt werden. Die untenstehenden Informationen beschreiben den logischen Vergleichsvorgang.
- Das Macintosh -Vergleichssystem stellt im wesentlichen eine primäre und sekundäre Ordnung auf eine ähnliche Weise zur Verfügung. Dieses Vergleichssystem liefert jedoch weder die zusätzlichen Zeichen, noch schafft es einen modularen, tabellenbasierten Mechanismus für den Zugang zu diesen Informationen. Der La Bonté-Vorgang (siehe "Quand « Z » vient-il avant «a» ? algorithme de tri respectant langues et cultures". Alain La Bonté, Gouvernement du Quebec, Bibliothèque nationale du Quebec, ISBN 2-550-21180) enthält viele Merkmale dieser Ordnung (wie zum Beispiel französische Akzente), aber er erfordert die Umwandlung der gesamten Kette, bietet keinen tabellenbasierten Mechanismus, der auch bei der Suche verwendet werden kann, und bietet auch keine Informationen, um bestimmen zu können, wo in zwei Ketten eine Überprüfung auf eine schwache Identität erfolglos ist. Keiner der beiden Vorgänge schafft unkomplizierte Verfahren zur Konstruktion, und keiner der beiden Vorgänge schafft Verfahren zum Zusammenmischen.
- Eine TUnicodeOrdering (Unicode-Ordnung) enthält jene UnicodeOrder- (UO) Information, die einem Zeichen in der Kette entspricht. Diese Information besteht aus den in Figur 2 dargestellten Feldern (d.h. die logische Zusammensetzung der UnicodeOrder - abhängig vom Gerät können die Felder in eine kleine Menge an Information verpackt werden)
- Das primäre Feld 210 zeigt die grundlegende, stärkste Sortierordnung des Zeichens an. Die sekundäre Ordnung 220 wird nur dann verwendet, wenn die primären Ordnungen der Zeichen in einer Kette dieselben sind. Bei vielen europäischen Sprachen, wie zum Beispiel Franzosisch, entspricht dies dem Unterschied zwischen Akzenten. Die tertiäre Ordnung 230 wird nur dann verwendet, wenn die primäre und die sekundäre Ordnung gleich sind. Bei den meisten europäischen Sprachen entspricht dies einem Unterschied in der Groß/Kleinschreibung. Figur 3 stellt zum Beispiel UnicodeOrders für Englisch dar.
- Wenn es zwischen zwei Ketten x und y einen primären Unterschied basierend auf dem Textvergleich gibt, und der erste primäre Unterschied in x geringer ist als y, sagen wir, daß x primär größer ist als y, und schreiben dies so: x «< y; auf ähnliche Weise kann x sekundär größer sein als y (x « y), oder tertiär größer als y (x < y), oder gleich wie y (x = y). Wenn es keine primären, sekundären oder tertiären Unterschiede zwischen den Ketten gibt, dann sind sie gemäß dem Textvergleich gleich (x=y).
- Es gibt Fälle, wo Zeichen bezüglich der primären Unterschiede vernachlässigt werden sollten. So ist zum Beispiel in englischen Wörtern ein Trennstrich vernachlässigbar: blackbird « black-bird « blackbirds « blackbirds. Dies wird unterschieden, indem der vernachlässigbare Wert (=2) als der primäre Wert verwendet wird. Eine vernachlässigbare UnicodeOrder zählt als sekundärer Unterschied, wenn der sekundäre gleich nicht-Null ist; andernfalls als ein tertiärer Unterschied, wenn der tertiäre Wert gleich nicht-Null ist; andernfalls ist die UnicodeOrder vollständig vernachlässigbar (der Vergleich wird fortgesetzt, als wäre die UnicodeOrder nicht vorhanden)
- Für Unicode gibt es 65534 mögliche primäre UnicodeOrders. Sehr oft jedoch kommt es vor, daß ein Vergleich nicht für alle möglichen Unicodes Werte enthält. So könnte zum Beispiel ein französischer Vergleich keine Werte zum Sortieren von hebräischen Zeichen enthalten. Jedes Zeichen x außerhalb des Vergleichsbereiches wird als 65536 + Unicode(x) verzeichnet. Die primären Werte für Zeichen, welche vom Vergleich abgedeckt werden, können entweder dem niedrigen Bereich (2...65.535) oder dem hohen Bereich (131.072 ... 196.607) zugeordnet werden. Dadurch kann ein Vergleich alle nicht verzeichneten Zeichen als vor den verzeichneten Zeichen oder als danach oder als an irgendeinem Punkt in der Mitte stehend behandeln. Um zum Beispiel alle nicht verzeichneten Zeichen zwischen a und b: zu stellen, würde eine Unicode-Struktur verwendet, wie sie in Figur 4 dargestellt ist.
- Im Französischen funktioniert die Akzentordnung auf besondere Art und Weise. Akzente sind nur dann von Bedeutung, wenn die primären Zeichen identisch sind, so daß sie einen sekundären Unterschied aufweisen. Im Gegensatz zu einem Unterschied in einem primären Zeichen oder in der Groß/Kleinschreibung ist es jedoch der letzte Akzentunterschied, der die Ordnung der zwei Ketten bestimmt. Die folgenden Ketten sind zum Beispiel im Französischen richtig geordnet (achten Sie auf das zweite Zeichen in jeder Kette: der Unterschied zwischen ê und é wird in der ersten Kette nicht gezählt, da es einen späteren Akzentunterschied gibt)
- pêche
- péché
- péche
- pêcher
- Es gibt stets einen sekundären oder tertiären Unterschied. Es kann die französische UnicodeOrder (isSecondaryBackward [istSekundärRückwärts] oder isTertiaryBackward [istTertiärRückwärts]) eingestellt werden. Wenn einer der beiden rückwärts ist, dann tritt der Vergleich jener beiden UnicodeOrders an die erste Stelle vor den vorhergehenden UnicodeOrders dieser Klasse (sekundär oder tertiär)
- Die Situation ist jedoch eigentlich komplizierter, als es die obenstehende Beschreibung erahnen ließe, denn:
- * ein einzelnes Zeichen kann in einer Reihe von UnicodeOrders verzeichnet sein (wird ein gespaltenes Zeichen genannt).
- bezüglich primärer Ordnung wird im Deutschen das ä als ae sortiert.
- * eine Reihe von Zeichen kann in einer einzigen UnicodeOrder verzeichnet sein (werden als gruppierte Zeichen bezeichnet).
- bezüglich primärer Ordnung wird das ch im Spanischen als ein einzelnes Zeichen zwischen c und d sortiert. Im allgemeinen unterstützt der Taligent-Vergleichsvorgang alle Fälle, wo eine Reihe von einem (oder mehreren) Zeichen in einer Reihe von einer (oder mehreren) UnicodeOrders verzeichnet sein kann, was eine Kombination aus gruppierten und gespaltenen Zeichen ist.
- * Abhängig von den Zeichen können die sich daraus ergebenden UnicodeOrders in einer Reihe neu angeordnet werden.
- = a + Oberpunkt + Unterpunkt = a + Unterpunkt + Oberpunkt
- Dieses letzte Merkmal ist auf bestimmte ignorierbare Zeichen (wie zum Beispiel Akzente) zurückzuführen, die in unterschiedlichen Ordnungen aufscheinen. In bestimmten Schriften (wie zum Beispiel Thai) werden die Buchstaben in einer anderen Reihenfolge geschrieben, als sie ausgesprochen oder verglichen werden. Der grundlegende Textvergleichsvorgang bietet keine Möglichkeiten für komplexere Reihenfolgen, wie zum Beispiel jene, die sich in Thai finden, aber er bietet einen Rahmen für die Einteilung von Unterklassen, um ausgeklügeltere, wörterbuchbasierte UnicodeOrders zu ermöglichen, die für solche Sprachen verwendet werden können.
- Logischerweise werden zwei Ketten immer dann, wenn sie miteinander verglichen werden, jeweils in einer Reihenfolge von UnicodeOrders verzeichnet. Diese Verarbeitung erfolgt durch die Verwendung eines CompareTextIterators (VergleichsTextIterator), der durch einen Vergleich und eine Kette geschaffen wird. Jedesmal, wenn das Next-Verfahren aufgerufen wird, wird die nächste UnicodeOrder von der Kette wiederaufgefunden. Wenn die Kette erschöpft ist, wird eine UnicodeOrder zurückgegeben, deren primärer Wert EOF ist. Es ist wichtig, zu wissen, wo der bedeutsame Unterschied beim Vergleichen zweier Ketten auftrat. Der Compare- TextIterator kann angefordert werden, die null-basierte Verschiebung der aktuellen Kette wiederaufzufinden (die Verschiebung am Beginn der Kette ist Null). Dies ist die letzte Verschiebung im Text unmittelbar vor der UnicodeOrder, die soeben wiederaufgefunden wurde. Nehmen wir zum Beispiel an, ein spanischer CompareTextIterator wird in der Kette "achu" dazu aufgerufen, die verschobene Kette wiederaufzufinden, und eine Vergleichsordnung zu erhalten. Dabei werden die folgenden Ergebnisse erhalten (wobei UO(x) die dem x entsprechende UnicodeOrder ist)
- 0, UO(a), 1, UO(ch), 3, UO(u), 4
- Intern verwendet der Iterator den Vergleich, um Zeichen in den UnicodeOrders zu verzeichnen. Für eine einfache 1:1- Übereinstimmung wird das Zeichen in ein Wörterbuch aufgenommen. Diese Verarbeitung ermöglicht bei den meisten Zeichen einen raschen Zugriff. Bei gruppierten oder gespaltenen Zeichen wird ein zweiter Mechanismus verwendet, um einen komplizierten Zugang zu ermöglichen. Nehmen wir an, es läge die folgende Ordnung vor:
- 'E«< a=a/' < ä/e «< b «< c «< ch «< cch «< d «< e
- Diese Ordnung wird durch die in Figur 5 dargestellte Datenstruktur repräsentiert. Darin bezieht sich die Beschriftung 500 auf ', -, auf a, b, d oder e wird zugegriffen, die Verzeichnung ist direkt (der Akut und der Trennstrich sind vernachlässigbare Zeichen). Bei der Beschriftung 510 ist das Zeichen a gespalten, und zwei Teile der Information werden zurückgegeben. Der erste sind die UnicodeOrders des Beginns der Reihe, und der zweite ist eine Reihe aus einem oder mehreren zusätzlichen Zeichen. Bei Beschriftung 520 sind die Zeichen ä ebenfalls gespalten. Die in der Tabelle gespeicherten Informationen können jedoch vorverarbeitet werden, um eine Liste von UnicodeOrders darzustellen. Dies geschieht, indem jene UnicodeOrders nachgeschlagen werden, die den verbleibenden Zeichen entsprechen. Diese Optimierung kann unter zwei Bedingungen geschehen: die Zeichenreihe kann keine neuordnenden Akzente enthalten, und der Textvergleich muß vollständig sein (alle Zeichen müssen über entsprechende UnicodeOrders verfügen). In diesem Fall verfügt ä über eine UnicodeOrder, die tertiär größer ist als a, gefolgt von der UnicodeOrder für ein e).
- In diesem Fall können die zusätzlichen Zeichen, welche die Beschriftung 550 aufweisen, nicht wie in 520 optimiert werden, weil z noch nicht verzeichnet wurde.
- Bei der Beschriftung 530 wird, wenn auf das cch zugegriffen wird, zuerst das c überprüft, wobei ein Zeiger auf ein zweites Wörterbuch gefunden wird. Das zweite Wörterbuch wird auf ein c überprüft, wobei ein Zeiger auf ein drittes Wörterbuch gefunden wird. Das dritte Wörterbuch hat ein h, daher gibt es eine Übereinstimmung, und es wird die UnicodeOrder < 7,0,0> ausgegeben. Wenn die Kette cco enthielt, würde bei der Beschriftung 540 die letzte Übereinstimmung nicht entsprechen, und die Reihe der UnicodeOrders entsprechend dem cc würde zurückgegeben werden. Es ist zu beachten, daß im Nichtübereinstimmungsfall immer jene Reihe enthält, die das Ergebnis geworden wäre, wenn die Reihe nicht existiert hätte, daher ist keine Sicherungskopie notwendig. Schließlich wird bei der Beschriftung 560, wenn ein Zeichen x ohne Übereinstimmung gefunden wird, dessen Wert 64K + Unicode(x),0,0. Die sich ergebenden UnicodeOrders werden intern aufbewahrt und einzeln nacheinander zurückgegeben.
- Bestimmte nichtraumeinnehmende Markierungen (Akzente) können in einer Kette in unterschiedlicher Ordnung auftreten, aber dieselbe Interpretation haben, wenn sie typographisch aufeinander keine Auswirkungen haben. So ist zum Beispiel a + Unterpunkt + Zirkumflex äquivalent mit a + Zirkumflex + Unterpunkt. Jede nichtraumeinnehmende Unicode-Markierung verfügt über eine zugeordnete nichtraumeinnehmende Priorität (raumeinnehmende Markierungen haben eine Null- Priorität). Wenn ein Zeichen gefunden wird, das eine Nicht- Null-Priorität hat, wird ein Neuordnungsvorgang aufgerufen. Im wesentlichen wird jede Reihenfolge von Markierungen mit Nicht-Null-Priorität sortiert, und deren UnicodeOrders werden in dieser sortierten Reihenfolge zurückgegeben. Wenn der Iterator nach der Kettenposition gefragt wird, wird die Position vor der ersten nicht zurückgegebenen UnicodeOrder zurückgegeben.
- a + Unterpunkt + Trema Æ
- a + Trema + Unterpunkt
- a + Trema + Unterpunkt Æ
- a + Trema + Unterpunkt
- Da der Unterpunkt über eine größere nichtraumeinnehmende Priorität verfügt als der Zirkumflex, gibt der Iterator die UnicodeOrder für a zurück, dann für das Trema, dann für den Unterpunkt. Da jedoch Trema und Kürzezeichen dieselbe nichtraumeinnehmende Priorität aufweisen (weil sie typographisch aufeinander Auswirkungen haben), ordnen sie sich nicht neu "-Æ" bedeutet "verzeichnet nicht in"
- a + Kürzezeichen + Trema
- -Æ a + Trema + Kürzezeichen
- a + Trema + Kürzezeichen
- -Æ a + Kürzezeichen + Trema
- Bezüglich des Steuerungsablaufs erfolgt das Gruppieren nach dem Spalten und Neuordnen. Wenn daher das ä ein gruppiertes Zeichen ist (wie dies im Schwedischen der Fall ist) , ergibt sich daraus die in Figur 6 dargestellte Gruppierung.
- Es gibt zwei sehr häufige Fälle beim Vergleich von Ketten: die UnicodeOrders sind vollkommen gleich (primär, sekundär und tertiär), oder vollkommen unterschiedlich (primär unterschiedlich) Im ersten Fall wird der linken Hauptsäule von oben nach unten gefolgt, wenn im zweiten Fall der zweiten Säule auf der linken Seite gefolgt wird. Jn diesen typischen Fällen ist die Anzahl der Vorgänge sehr gering.
- Dieser Steuerungsablauf drückt den logischen Vorgang aus: es gibt eine Reihe von Optimierungen, die ebenfalls in Abhängigkeit von der Maschinenarchitektur ausgeführt werden können. Wenn zum Beispiel die UnicodeOrder richtig konstruiert ist, dann kann die primäre, sekundäre und tertiäre Gleichheitsprüfung mit einem Maschinenbefehl ausgeführt werden.
- Der Anwender kann, abhängig vom erwünschten Stärkegrad für den Vergleich, Optionen für diesen Vorgang festlegen. So kann zum Beispiel der Parameter userMatchStrength ('anwenderÜbereinstimmungsStärke') auf normal gesetzt werden, oder auf primaryAndSecondaryOnly ('nurPrimärUndSekundär') (wobei hier die tertiären Felder nicht übereinstimmen müssen, z.B. wie bei a = A), oder auf primaryMatchOnly ('nurPrimärÜbereinstimmung') (wo die Ketten nur in ihren primären Feldern übereinstimmen müssen, z.B. â = A)
- Sooft eine Verzeichnung hinzugefügt wird, muß die Stärke der Beziehung zwischen jenem Zeichen und dem letzten im Vergleich festgelegt werden: gleich, primär&sekundär gleich, oder primär gleich, oder strikt größer. (Wenn die Verzeichnung die erste im Vergleich ist, dann wird für die "letzte" Verzeichnung (vernachlässigbar, 0, 0> angenommen. Alle diese erstellen eine UnicodeOrder basierend auf der letzten UnicodeOrder im Textvergleich (im folgenden werden primär, sekundär und tertiär jeweils mit p., 5. bzw. t. abgekürzt), wie dies in Figur 7 dargestellt ist.
- Auch die Ausrichtung des tertiären oder sekundären Unterschiedes muß festgelegt werden: normale oder französische Unterschiede. Auf Grund dessen kann der Tabelle eine neue Zeichenverzeichnung hinzugefügt werden, indem eine Alternative von mehreren möglichen hinzugefügt wird.
- a. ein einzelnes Zeichen x&sub1;
- b. ein gruppiertes Zeichen x&sub1;...xn
- c. ein gespaltenes Zeichen x&sub1;/y&sub1;..yn (x&sub1; erweitert sich zu ≥ letztes + y&sub1; .. yn)
- d. ein gruppiertes/gespaltenes Zeichen x&sub1;..xn/y&sub1;..yn (x&sub1;..xn erweitert sich zu ≥ letztes + yn..yn)
- e. nichtverzeichnet (nichtverzeichnete Zeichen hier)
- In den obigen Fällen ist jedesmal dann, wenn x&sub2;..xn oder y&sub1;..yn auftritt, der Vergleich nicht vollständig, bis diese definiert werden. Wenn zum Beispiel x/y&sub1;..yn hinzugefügt wird, erhält x eine neue UnicodeOrder gemäß der obenstehenden Tabelle, aber die anderen y werden gestoppt, bis deren UnicodeOrders definiert werden. Wenn diese definiert sind, dann verzeichnet x in UO(x) + UO(y&sub1;) + ... + UO(yn).
- Nachdem ein Textvergleich gebildet ist, können die sich darin befindlichen Daten durch Wiederholung vom ersten Element bis zum letzten wiederaufgefunden werden.
- Nachdem ein Textvergleich gebildet wurde, legt dieser eine Ordnung auf die Zeichen auf. Ein zweiter Textvergleich kann mit dem ersten vermischt werden, so daß alle Verzeichnungen (ausgenommen nichtverzeichnete Zeichen) im ersten erhalten bleiben, und so viele der neuen Verzeichnungen vom zweiten erhalten bleiben, wie dies möglich ist. Ein Beispiel dafür ist das Zusammenmischen eines französischen Textvergleichs mit einem arabischen Textvergleich. Sämtliche Beziehungen unter den arabischen Zeichen (einschließlich der Zeichen, die beiden Textvergleichen gemein sind, wie zum Beispiel die Zeichensetzung) sollten bewahrt werden; Beziehungen zwischen neuen Zeichen (z.B. Latein), die nicht im arabischen Textvergleich enthalten sind, werden hinzugefügt.
- Erstelle einen dritten Textvergleich TC&sub3; durch Wiederholen durch TC&sub2; auffolgende Art und Weise, wobei jede neue Verzeichnung wie folgt hinzugefügt wird. Für jedes neue Zeichen b ist die Beziehung zur vorhergehenden Verzeichnung mostrecent (unmittelbarvorhergehend) in TC&sub2; zu merken.
- 1. Wenn b bereits in TC&sub1; enthalten ist, überspringe es, und setze mostRecent auf b zurück.
- 2. Wenn ein Zeichen oder eine Unterkette von Zeichen von b bereits in TC&sub1; enthalten ist, überspringe es.
- 3. Andernfalls füge b so "nahe zu" mostrecent wie möglich hinzu, und setze mostrecent auf b zurück. Das heißt, wenn b = mostRecent, füge es hinzu, wenn es unmittelbar danach steht. Wenn b > mostRecent, dann füge b unmittelbar vor dem ersten Element ein, das zumindest tertiär größer ist als mostRecent. Wenn b » most- Recent, dann füge es vor dem ersten Element hinzu, das zumindest primär größer ist als mostRecent.
- Angenommen, der Textvergleich enthält folgendes:
- TC&sub1; : = ... U = v < w « X «< z ..
- Figur 8 ist ein Flußdiagramm der detaillierten Logik gemäß dem Erfindungsgegenstand. Die Verarbeitung beginnt beim Funktionsblock 200, wo das temporäre Ergebnisse auf einen vorherbestimmten Wert initialisiert wird. Dann, beim Eingabeblock 202, werden der nächste Quellenschlüssel und der nächste Zielschlüssel erhalten. Beim Entscheidungsblock 204 wird eine Prüfung durchgeführt, um zu bestimmen, ob der Quellenprimärwert gleich ist wie der Zielprimärwert. Wenn der Quellenprimärwert nicht gleich ist, dann wird beim Entscheidungsblock 214 eine weitere Überprüfung durchgeführt, um zu bestimmen, ob der Quellenprimärwert vernachlässigbar ist. Wenn ja, wird eine weitere überprüfung beim Entscheidungsblock 220 durchgeführt, um zu bestimmen, ob der Suchschlüssel nur eine übereinstimmung des Primärwertes enthalten sollte oder eine zusätzliche sekundäre Information.
- Wenn nur eine primäre übereinstimmung erwünscht ist, dann wurde eine Übereinstimmung abgeschlossen, und die Kontrolle wird zum Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge zum Entscheidungsblock 204 weitergegeben. Wenn es erwünscht ist, daß eine sekundäre Übereinstimmung ebenfalls am Entscheidungsblock 220 erkannt werden soll, dann wird eine Überprüfung beim Entscheidungsblock 230 durchgeführt, um zu bestimmen, ob der Quellensekundärwert vernachlässigbar ist. Wenn der Quellensekundärwert nicht vernachlässigbar ist, dann wird das temporäre Ergebnis aktualisiert, indem die Quellenposition, die Zielposition und die sekundäre Position gleich auf GREATER (GRÖSSER) gesetzt werden. Die Kontrolle wird dann an den Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn der Quellensekundärwert vernachlässigbar ist, wie dies am Entscheidungsblock 230 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 232 durchgeführt, um zu bestimmen, ob nur eine sekundäre Übereinstimmung erwünscht ist, oder ob eine tertiäre Information gespeichert wurde. Wenn dies der Fall ist, wird die Kontrolle an den Entscheidungsblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn nicht, wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und die sekundäre Position gleich auf GREATER (GRÖSSER) gestellt werden. Dann wird die Kontrolle zum Eingabeblock 260 weitergegeben, um den nächsten Quellenschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben.
- Wenn der Quellenprimärwert am Entscheidungsblock 214 nicht vernachlässigbar ist, dann wird eine weitere Überprüfung am Entscheidungsblock 216 durchgeführt, um zu bestimmen, ob der Zielprimärwert vernachlässigbar ist. Wenn dies der Fall ist, wird eine weitere Überprüfung am Entscheidungsblock 222 durchgeführt, um zu bestimmen, ob der Suchschlüssel nur eine Übereinstimmung des primären Wertes oder auch zusätzliche sekundäre Informationen enthalten sollte. Wenn nur eine primäre übereinstimmung erwünscht ist, dann wurde eine Übereinstimmung abgeschlossen, und die Kontrolle wird an den Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie an den Entscheidungsblock 204 weitergegeben. Wenn nicht, wird eine weitere Überprüfung am Entscheidungsblock 234 durchgeführt, um zu bestimmen, ob der Zielsekundärwert vernachlässigbar ist. Wenn dies der Fall ist, wird das temporäre Ergebnis aktualisiert, indem die Quellenposition, die Zielposition und der sekundäre Vergleich gleich auf LESS (KLEINER) gestellt werden. Danach wird die Kontrolle an den Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und daraufhin wird sie an den Entscheidungsblock 204 weitergegeben. Wenn der Zielsekundärwert nicht vernachlässigbar ist, wie dies am Entscheidungsblock 236 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 236 durchgeführt, um zu bestimmen, ob eine sekundäre Übereinstimmung erwünscht ist, oder ob ein gespeicherter tertiärer Wert oder ein Quellentertiärwert gleich vernachlässigbar ist. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben. Wenn nicht, wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und der sekundäre Vergleich gleich auf LESS (KLEINER) gestellt werden. Danach wird die Kontrolle zum Eingabeblock 262 weitergegeben, um den nächsten Zielschlüssel zu erhalten, und in der Folge wird sie zum Entscheidungsblock 204 weitergegeben.
- Wenn der Zielprimärwert am Entscheidungsblock 216 vernachlässigbar ist, dann wird das temporäre Ergebnis aktualisiert, wobei die Quellenposition, die Zielposition und der Primärvergleich gleich auf das Primärvergleichsergebnis gestellt wird, und die Kontrolle wird zum Entscheidungsblock 210 weitergegeben.
- Wenn der Quellenprimärwert dem Zielprimärwert gleicht, wie dies am Entscheidungsblock 204 erkannt wird, dann wird eine weitere Überprüfung am Entscheidungsblock 206 durchgeführt, um zu bestimmen, ob der Quellenprimärwert gleich einem Endoffile-(EOF)-Zeichen (EndeDerDatei-Zeichen) ist. Wenn dies der Fall ist, wird das temporäre Ergebnis am Ausgabeterminal 208 zurückgegeben. Wenn nicht, wird die Kontrolle zum Entscheidungsblock 210 weitergegeben, um zu bestimmen, ob der Quellensekundärwert gleich dem Zielsekundärwert ist. Wenn nicht, wird eine weitere Überprüfung am Entscheidungsblock 224 durchgeführt, um zu bestimmen, ob die Quellenund Zielinformationen gespeichert wurden. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird das temporäre Ergebnis gleich der Quellenposition, der Zielposition und dem Sekundärvergleichsergebnis im Funktionsblock 246 gesetzt, und die Kontrolle wird zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten.
- Wenn der Quellensekundärwert gleich dem Zielsekundärwert ist, wie dies am Entscheidungsblock 210 erkannt wird, dann wird eine weitere überprüfung am Entscheidungsblock 212 durchgeführt, um zu bestimmen, ob der Quellentertiärwert gleich dem Zieltertiärwert ist. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird eine Überprüfung am Entscheidungsblock 226 durchgeführt, um zu bestimmen, ob die Quellen- und Zielinformationen gespeichert wurden oder tertiäre Informationen. Wenn dies der Fall ist, wird die Kontrolle zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten. Wenn nicht, wird das temporäre Ergebnis gleich der Quellenposition, der Zielposition und dem Tertiärvergleichsergebnis im Funktionsblock 246 gesetzt, und die Kontrolle wird zum Eingabeblock 202 weitergegeben, um den nächsten Quellen- und Zielschlüssel zu erhalten.
- Figur 9 ist ein Beispiel einer Anzeige gemäß dem Erfindungsgegenstand. Die Anzeige entspricht einem System, welches es ermöglicht, Sprachattribute jedem xxx zuzuordnen. Mit diesem System kann der Anwender den bevorzugten Textvergleich für eine beliebige Sprache auswählen und den Textvergleich mit unmarkiertem Text (Text ohne Sprachattribut) verbinden. Darüberhinaus kann ein Anwender auch einen neuen Textvergleich erstellen oder einen bereits bestehenden verändern. Während der Bearbeitung wird dem Anwender eine Tabelle zur Verfügung gestellt, wie sie in Figur 9 dargestellt ist, worin Verzeichnungen im Vergleich in aufsteigender Reihenfolge angeführt werden. Wie im Falle einer standardmäßigen Tabellenbearbeitung kann der Anwender eine oder mehrere Verzeichnungen mit der Maus auswählen. Die ausgewählten Punkte können daraufhin gelöscht, ausgeschnitten, kopiert oder durch Ziehen mit der Maus verschoben werden. Es kann auch eine neue Verzeichnung an jedem beliebigen Punkt eingefügt werden.
- Die ganz links befindliche Spalte 900 zeigt die Beziehung der aktuellen Verzeichnung mit der vorhergehenden (oberen) Verzeichnung an. Wenn mit der Maus auf die Spalte geklickt wird, erscheint ein Pop-up-Menü mit einer Auswahl an Symbolen: für primär-größer, sekundär-größer, tertiär-größer, oder gleich; und ein orthogonaler Satz, womit französischsekundär und/oder französisch-tertiär angezeigt wird.
- Es gibt eine spezielle Verzeichnung, die Verzeichnung unverzeichneter Zeichen, welche ein Symbol enthält, das darauf hinweist, daß alle unverzeichneten Zeichen an diesen Punkt gehören. Da es immer genau eine derartige Position im Textvergleich gibt, wird diese Verzeichnung auf spezielle Weise gehandhabt. Wenn sie gelöscht wird, erscheint sie am Ende der Verzeichnung wieder. Wenn eine andere eingefügt wird, wird jede zuvor bestandene Verzeichnung unverzeichneter Zeichen entfernt. Die mittlere Spalte 910 enthält das/die Hauptzeichen in der Verzeichnung; die ganz rechts befindliche Spalte enthält die Expansionszeichen (falls derartige vorhanden sind). Diese können ebenso bearbeitet werden wie jeder andere Text im System.
- Genauso wie implodierende, explodierende, vernachlässigbare, primäre/sekundäre/tertiäre Themen für den Vergleich relevant sind, sind sie auch für die Suche relevant. Wenn zum Beispiel eine Suche im Dänischen durchgeführt wird, muß aa mit å gleichgesetzt werden. Es gibt eine Anzahl von Vorgängen für schnelles (sublineares) Suchen von Text. Keiner dieser Vorgänge kann jedoch diesen sprachsensitiven Anforderungen entsprechen. Um sich nun mit diesen Bereichen zu beschäftigen, verwendet eine bevorzugte Ausführungsform eine Abwandlung des Boyer-Moore-Prozesses (BM), der sowohl sublinear als auch sprachsensitiv ist. Der BM-Prozeß wird im Detail in Boyer, R. & Moore, S., A Fast String Searching Algorithm (Ein schneller Ketten-Suchalgorithmus), Commun. ACM 20, Seite 762-772 (1977) offenbart, der hiermit in seiner Gesamtheit als Referenz aufgenommen wird.
- Die bevorzugte Ausführungsform kann auch dieselben Daten verwenden, die in einem Textvergleich erzeugt werden, so daß Suche und Vergleich synchron gehalten werden. Dies bedeutet auch, daß dieselben Veränderungen, die ein Anwender für die Erstellung eines neuen Textvergleiches vornimmt, auch für die Erstellung einer richtigen sprachsensitiven Suche genügen. Es gibt hier zwei weitere abgeleitete Informationen, die zur Suche benötigt werden, zusätzlich zu dem, was für den Vergleich benötigt wird. Diese Erfordernisse werden unten beschrieben. Manche schnellen Suchprozesse sind nicht in der Lage, in umgekehrter Reihenfolge zu arbeiten; stattdessen überprüfen sie das erste Zeichen nach der Kette, wenn eine Übereinstimmung nicht zustandekommt (z.B. Sunday, D.M., A very fast substring search algorithm (Ein sehr schneller Unterketten-Suchalgorithmus), Commun. ACM 33, 8. Seite 132-142 (Aug. 1990). Diese Technik funktioniert bei sprachsensitiven Vergleichen nicht gut, denn da zwei Ketten unterschiedlicher Länge einander entsprechen können, kann nicht auf zufriedenstellende Weise bestimmt werden, wo sich das "Ende" der Kette im Ziel, welches dem "Ende" des Musters entspricht, befindet. In den folgenden Beispielen werden wir einen einfachen künstlichen Textvergleich verwenden, der eine englische Ordnung für die Buchstaben plus dem folgenden aufweist:
- ^ (nichtraumeinnehmender Zirkumflex, vernachlässigbar)
- a < ä/e
- A < Ä/e
- o < o-/o
- O < O-/o
- z «< å < aa < Å < Aa < AA «< < oe < < Oe < Oe
- Es ist zu beachten, daß für Vergleichszwecke der Unterschied zwischen explodierenden und implodierenden Zeichen wichtig ist, aber für das Suchen im allgemeinen nicht von Bedeutung ist. Das heißt, bei einer Sekundärstärkenübereinstimmung ist es nicht von Bedeutung, ob der Textvergleich a < ä/e oder ae < ä ist: baed und bäd entsprechen einander in beiden Fällen. Sehr wohl von Bedeutung ist der Unterschied jedoch am Ende eines Musters. Das heißt, ba sollte in baed, nicht aber in baad gefunden werden.
- Die folgenden Erweiterungen werden am Textvergleich vorgenommen.
- a. die Datenbank der Verzeichnungen muß auch in der Lage sein, eine Kette in umgekehrter Reihenfolge zu bearbeiten, insbesondere implodierende und explodierende Verzeichnungen in umgekehrter Reihenfolge wiederauf zuf inden.
- das Nachschlagen in der Unicode-Ordnung zuerst für e und dann für o (rückwärtiges Vorgehen) erzeugt o.
- b. jede Folge von Zeichen, die einem kleineren explodierenden Zeichen entsprechen könnte, muß in der Datenbank enthalten sein, mit einer Verzeichnung in der kleineren Breite.
- oo muß nicht enthalten sein, da es dem Produkt von o- entspricht, welches dieselbe Länge aufweist. Jedoch ist es sehr wohl nötig, daß ae enthalten ist, da es dem ä entspricht, welches kürzer ist.
- c. der Textvergleich muß in der Lage sein, die kumulative minimale Übereinstimmungslänge (siehe unten) zurückzugeben, wenn eine Kette bearbeitet wird.
- bei der Bearbeitung von e, dann von a (denken Sie an dessen Rückwärtsverarbeitung) oder ä wird die minimale Übereinstimmungslänge 1 sein.
- Der Prozeß weist die folgende grundlegende Struktur auf:
- Suche nach einer Musterkette innerhalb einer Zielkette.
- Musterkette, Zielkette, Stärke (primär, sekundär, tertiär, bitweise), Textvergleich
- Wie bei Boyer-Moore besteht der erste Schritt darin, die Musterkette mit dem Textvergleich vorzubearbeiten, um eine Indextabelle zu erzeugen (nähere Details siehe nächsten Abschnitt). In der Hauptschleife wird die Musterkette der Reihe nach durch das Ziel verschoben. Bei jeder neuen Position wird die Musterkette vom Ende her bearbeitet, wobei nach Übereinstimmungen Ausschau gehalten wird. Der Textvergleich wird verwendet, um die Zielkette in rückwärtiger Ordnung zu bearbeiten, wobei die Unicode-Ordnungen (UO) nachgeschlagen werden. Wenn eine Übereinstimmung nicht zustande kommt, wird eine Indextabelle verwendet, um die Musterkette um eine festgelegte Größe zu verschieben.
- Mustervorverarbeitung
- Im folgenden wird der Prozeß für die Vorverarbeitung der Muster beschrieben, der den Großteil der Arbeit erledigt. Die Beschreibung ist die logische Reihenfolge, und Optimierungen werden aus Gründen der Verständlichkeit weggelassen. Eine grundlegende Optimierung ist die Schaffung von zwei Indextabellen, da eine bevorzugte Ausführungsform sowohl das Vorwärtssuchen als auch das Rückwärtssuchen unterstützt. Zur Erstellung der Tabellen und der Muster für das Rückwärtssuchen werden entsprechende Änderungen im Prozeß durchgeführt.
- 1. Finde die Unicode-Ordnungen für die Kette (dadurch werden implodierende und explodierende Zeichen normalisiert, und Akzente, wie zum Beispiel der Oberpunkt und der Unterpunkt, neu geordnet).
- 2. Setze die Ordnungen gemäß der Eingabestärke zurück:
- * wenn die Eingabestärke sekundär ist, fülle die tertiären Werte mit Nullen
- * wenn sie primär ist, fülle die sekundären und tertiären Werte mit Nullen
- 3. Entferne alle vernachlässigbaren Unicode-Ordnungen mit Null-Unterschieden (nachdem Schritt 2 ausgeführt wurde).
- * wenn die Eingabestärke tertiär ist, werden dadurch alle vernachlässigbaren mit Null-Unterschieden entfernt (z.B. Links-Rechtsmarkierung).
- * wenn die Eingabestärke sekundär ist, werden dadurch alle vernachlässigbaren mit tertiären oder Null-Unterschieden entfernt.
- * wenn die Eingabestärke primär ist, werden dadurch alle vernachlässigbaren mit sekundären, tertiären oder Null-Unterschieden entfernt (z .B. nichtraumeinnehmende Markierungen)
- 4. Berechne aus den Informationen im Textvergleich die Mindestnachziehübereinstimmungslänge (MTML) für jede einzelne Position im Muster, welche die Mindestlänge ist, die jede Kette, welche den Nachziehelementen am Ende des Musters entspricht, haben kann.
- Bei der Musterordnung verfügt das Muster, welches "baedåf" entspricht, über eine Mindestlänge von 5 (entspricht bädåf). [Mit Vernachlässigbaren könnte es Ketten mit einer Länge von bis zu sieben Zeichen entsprechen (z.B. baedaaf) - ohne Vernachlässigbare könnte es unendlich langen Ketten entsprechen (b^a^e^d^^^^a^af)]
- Die Tabelle mit MTMLs für dieses Muster wäre folgendermaßen (wobei die Buchstaben für die entsprechenden Unicode- Ordnungen stehen)
- 5. Der Boyer-Moore-Prozeß verwendet eine Tabelle, die nach Positionen indexiert ist, und eine Tabelle, die nach Zeichen indexiert ist. In dieser Variante entspricht letzteres dem Indexieren durch die Unicode-Ordnung. Erstelle die Indextabellen für die Musterkette durch Durchqueren der Liste der Unicode-Ordnungen von hinten nach vorne wie in Boyer- Moore, um die folgenden Änderungen durchzuführen:
- Der Index zeigt an allen Positionen, wie weit die verarbeitete Kette an jener Position zu verschieben ist, wenn eine übereinstimmung gegen die Unicode-Ordnung an jener Position nicht zustandegekommen ist. Der Indexwert sollte der zu verschiebende Mindestwert sein (unter Verwendung der MTML- Tabelle), so daß die aktuelle Nachziehunterkette als nächste im Muster gefunden werden könnte.
- beim Muster obaexydbae sieht die Verschiebetabelle wie folgt aus (die Buchstaben stehen hier für die entsprechenden Unicode-Ordnungen)
- Angenommen, es gibt eine Nichtübereinstimmung bei d gegen ein o im Zieltext (") Der Verschiebewert ist 5, weil das am weitesten rechts stehende Auftreten von obae nach einer Nachziehreihe mit einer Länge von 5 (≠) auftritt.
- 6. Es kann eine große Anzahl an Unicode-Ordnungen geben, nicht nur 256, wie in der 8-Bit-Version von Boyer-Moore. Aus Geschwindigkeits- und Speichergründen besteht die durch Unicode-Ordnung indexierte Indextabelle aus einer kleinen Matrix an Integer-Zahlen (z.B. 256 Integer-Zahlen). Wenn ein Verschiebewert der Tabelle für eine gegebene Unicode- Ordnung hinzugefügt wird, wird die Unicode-Ordnung in eine Integer-Zahl innerhalb des von der Matrix bedeckten Bereiches zerkleinert.
- Wenn nur die primären Stärken erwünscht sind, erfolgt dies durch Verwendung eines Modulos mit der Größe der Matrix (wenn hierbei ein Potenz von zwei ausgewählt wird, ist der Modub nur eine Maskierung). Wenn mehr als nur die primäre Stärke erfordert ist, werden die sekundäre oder sowohl die sekundäre als auch die tertiäre eingespeichert, bevor der Modulo verwendet wird.
- Wenn es mehrere Verschiebewerte gibt (aufgrund von Modulo- Kollisionen), wird das Minimum der Werte aufgezeichnet. Dies kann dazu führen, daß es geringer ist als der optimale Wert, aber in der Praxis beeinflußt dies die Gesamtleistung nicht wesentlich.
- Wenn eine Zielkette mit einem verarbeiteten Muster abgeglichen wird, kann der standardmäßige Boyer-Moore-Prozeß mit den folgenden Anderungen verwendet werden, wie sie in der bevorzugten Ausführungsform widergespiegelt werden:
- 1. Beim Wiederauffinden von Zeichen aus dem Zieltext wandle diese in Unicode-Ordnungen um (dies geschieht dann, wenn auf jedes einzelne Zeichen zugegriffen wird; es ist nicht notwendig, den gesamten Zieltext umzuwandeln!). Die Iteration durch den Text erfolgt in umgekehrter Reihenfolge. Es wird dieselbe Normalisierung (Mustervorverarbeitung Punkte 1-3 oben) wie bei der Erzeugung der verarbeiteten Muster verwendet, um die Stärken zurückzusetzen und die Vernachlässigbaren zu entfernen.
- 2. Überprüfe ausdrücklich jede vom Text abgeleitete Unicode-Ordnung mit dem Muster. Wenn es eine Nichtübereinstimmung gibt, verwende die Indextabellen, um den Verschiebewert zu finden.
- 3. Nach dem Finden einer übereinstimmung muß der Prozeß auch nach dem Ende der Kette prüfen. Wenn eine der folgenden Bedingungen auftritt, kommt die Übereinstimmung nicht zustande, und sie wird um 1 verschoben und die Suche wird fortgesetzt:
- * Wenn es Vernachlässigbare nach dem Ende gibt, die stärker sind als die Eingabestärke. Beispiel: das Finden von ba in xxba^xx: wo die Eingabestärke zwischen a und â unterscheidet, sollte diese Übereinstimmung nicht erfolgreich sein.
- * Wenn es ein implodierendes Zeichen gibt, welches sich über das Ende der Kette erstreckt. Beispiel: ba sollte in baed gefunden werden, aber es sollte nicht in baad gefunden werden. (Dies kann zu einer Anwenderoption gemacht werden, um eine bessere Kontrolle zu ermöglichen.)
- Ein weiteres Verfahren zur Konstruktion eines sprachsensitiven Suchers ist die Herstellung einer Zustandsmaschine, die jede der verschiedenen Formen (baed und bad) erkennt, und auch alle vernachlässigbaren Zeichen verwirft. Im allgemeinen erbringt diese Technik jedoch nicht so gute Leistungen wie die Sublinearverfahren, wie zum Beispiel jenes Verfahren, das in Gonnet, G.H. und Baeza-Yates, R., Handbook of Algorithms and Data Structures - In Pascal and C. (Handbuch der Algorithmen und Datenstrukturen - In Pascal und C), zweite Ausgabe, Addison-Wesley, Wokingham, UK, 1991, diskutiert wird. In diesem Zusammenhang beruht eine Schlüsseifrage jedoch auf der Anzahl der Vergleiche, die bei den einzelnen Verfahren benötigt werden, sowie der Nachschlagezeit pro Zeichen in der Zustandstabelle im Vergleich zum Textvergleich. Beim Textvergleich ist die Nachschlagezeit sehr kurz, solange es sich bei dem Zeichen nicht um ein explodierendes oder implodierendes Zeichen handelt; daher hängt die Leistung vom Anteil derartiger Zeichen im Zieltext ab, der im allgemeinen recht gering ist. Durch das Speichern eines Markierungszeichens im Textvergleich, ob die Zielsprache einen großen Anteil derartiger Zeichen aufweist oder nicht, kann während des Durchlaufs eine Auswahl darüber getroffen werden, welche Technik anzuwenden sei.
Claims (14)
1. Ein Computersystem zur Herstellung einer Vergleichsordnung
zwischen einer ersten Textkette und einer zweiten
Textkette, wobei die erste Textkette aus Zeichen einer
ersten Sprache mit einer ersten vorgegebenen
Zeichenpriorität und die zweite Textkette aus Zeichen
einer zweiten Sprache mit einer zweiten vorgegebenen
Zeichenpriorität besteht, mit einem Prozessor (10) und
einem Speicher (14), worin die besagte erste und zweite
Zeichenkette sowie ein vielsprachiges Alphabel in einer
Hauptsortierordnung enthalten sind und worin jedem Zeichen
wenigstens einen Ordnungswert zugeordnet ist, sowie mit
Mitteln zum Wiederauffinden von Informationen im Speicher,
gekennzeichnet durch:
(a) Mittel zur Definition eines primären (204), eines
sekundären (210) und eines tertiären (212)
Ordnungswertes für wenigstens einen Teil der Zeichen,
basierend auf der Zeichenpriorität der ersten und
zweiten Sprache;
(b) Mittel zur Speicherung der primären, sekundären und
tertiären Ordnungswerte im Speicher;
(c) Mittel zum Wiederauffinden von Paaren von Zeichen
(202) im Speicher, die ein erstes Zeichen aus der
besagter ersten Textkette und ein zweites Zeichen
aus besagter zweiten Textkette enthalten;
(d) auf das erste Zeichen und das zweite Zeichen
ansprechende Mittel zum Wiederauff inden der
zugeordneten primären Ordnungswerte und, soweit für
das erste und/oder das zweite Zeichen verfügbar, auch
der zugeordneten sekundären und tertiären
Ordnungswerte (260, 262);
(e) Mittel zur Durchführung eines Vergleichs der
wiederaufgefundenen Werte zur Bestimmung einer
Differenz zwischen besagter ersten und zweiten
Textkette, wobei die Stärke des Vergleichs von
besagtem primären zu besagtem sekundären und zu
besagtem tertiären Ordnungswert abnimmt (220, 222,
224, 226, 232, 236); und
(f) auf die Differenz ansprechende Mittel zur Bestimmung
der Vergleichsordnung (240, 242, 244, 246, 250, 252)
zwischen der ersten Textkette und der zweiten
Textkette.
2. Das Computersystem gemäß Anspruch 1, worin die Mittel zur
Definition der Ordnungswerte Mittel aufweisen zur
Erzeugung einer Tabelle der ausgewählten Zeichen (910) und
ihrer zugeordneten primären, sekundären und tertiären
Ordnungswerte (900), basierend auf der Zeichenpriorität
der ersten und/oder zweiten Sprache; und worin Mittel zur
Speicherung der Tabelle im Speicher (14) vorgesehen sind.
3. Das Computersystem gemäß Anspruch 2, worin die Mittel zur
Erzeugung besagter Tabelle Mittel aufweisen zur Erzeugung
einer Tabelle, die für jeden Satz von Zeichen und ihren
zugeordneten Ordnungswerten darauf bezogene Ordnungswerte
für Erweiterung, Gruppierung, Ignoranz und Sequenz
enthält.
4. Das Computersystem gemäß Anspruch 3, worin die Mittel zur
Erzeugung besagter Tabelle Mittel aufweisen zur Erzeugung
einer Tabelle, die für jeden Satz von Zeichen und ihren
zugeordneten Ordnungswerten darauf bezogene Ordnungswerte
für Erweiterung, Gruppierung, sekundäre Ignoranz, tertiäre
Ignoranz, französisch-sekundär und französisch-tertiär
enthält.
5. Das Computersystem gemäß Anspruch 1, worin die Mittel zur
Definition enthalten:
Mittel zur Definition von wenigstens einem ersten
Ordnungswert (204) für jedes Zeichen, basierend auf der
Zeichenpriorität der ersten Sprache;
Mittel zur Definition von wenigstens einem zweiten
Ordnungswert (204) für jedes Zeichen, basierend auf der
Zeichenpriorität der zweiten Sprache; und
Mittel zum Mischen der ersten und zweiten Ordnungswerte
(240, 242, 244, 246, 250, 252).
6. Das Computersystem gemäß Anspruch 1, worin die Mittel zur
Definition von wenigstens einem Ordnungswert (204) für
jedes Zeichen durch den Benutzer gesteuerte Mittel
enthalten zur Änderung der einem jeden Zeichen
zugeordneten Ordnungswerte in Abhängigkeit vom gewünschten
Vergleichsresultat (900, 910).
7. Das Computersystem gemäß Anspruch 1, enthaltend eine mit
dem Prozessor (10) und dem Speicher (14) verbundene (36,
12) Anzeigevorrichtung (38), die vom Prozessor (10)
gesteuert wird zur Anzeige von im Speicher gespeicherten
Informationen, und worin die Mittel zur Definition Mittel
enthalten zur Erzeugung einer tabellarischen Anzeige zur
Zuordnung der Ordnungswerte zu jedem Zeichen (900, 910).
8. Ein Verfahren zur Herstellung einer Vergleichsordnung
zwischen einer ersten Textkette und einer zweiten
Textkette, wobei die erste Textkette aus Zeichen einer
ersten Sprache mit einer ersten vorgegebenen
Zeichenpriorität und die zweite Textkette aus Zeichen
einer zweiten Sprache mit einer zweiten vorgegebenen
Zeichenpriorität besteht, das Verfahren ist ausführbar in
einem Computersystem, das einen Prozessor (10) und einen
Speicher (14) enthält, und weist die Schritte auf, im
besagten Speicher die besagte erste und zweite
Textkette sowie ein vielsprachiges Alphabets in einer
Hauptsortierordnung zu speichern, worin jedem Zeichen
wenigstens einen Ordnungswert zugeordnet ist, sowie
Informationen im Speicher wiederaufzufinden,
gekennzeichnet durch die Schritte:
(a) Definition eines primären (204) , eines sekundären
(210) und eines tertiären (212) Ordnungswertes für
wenigstens einen Teil der Zeichen, basierend auf der
Zeichenpriorität der ersten und zweiten Sprache;
(b) Speicherung der primären, sekundären und tertiären
Ordnungswerte im Speicher;
(c) Wiederauffinden von Paaren von Zeichen (202) im
Speicher, die ein erstes Zeichen aus der besagter
ersten Textkette und ein zweites Zeichen aus
besagter zweiten Textkette enthalten;
(d) unter Verwendung des ersten Zeichens und des zweiten
Zeichens Wiederauff inden der zugeordneten primären
Ordnungswerte und, soweit für das erste und/oder das
zweite Zeichen verfügbar, auch der zugeordneten
sekundären und tertiären Ordnungswerte (260, 262);
(e) Durchführung eines Vergleichs der wiederaufgefundenen
Werte zur Bestimmung einer Differenz zwischen
besagter ersten und zweiten Textkette, wobei die
Stärke des Vergleichs von besagtem primären zu
besagtem sekundären und zu besagtem tertiären
Ordnungswert abnimmt (220, 222, 224, 226, 232, 236);
und
(f) Bestimmung der Vergleichsordnung (240, 242, 244, 246,
250, 252) zwischen der ersten Textkette und der
zweiten Textkette unter Verwendung der Differenz.
9. Das Verfahren gemäß Anspruch 8, worin der Schritt zur
Definition der Ordnungswerte den Schritt der Erzeugung
einer Tabelle der ausgewählten Zeichen (910) und ihrer
zugeordneten primären, sekundären und tertiären
Ordnungswerte (900), basierend auf der Zeichenpriorität
der ersten und/oder zweiten Sprache; und den Schritt der
Speicherung der Tabelle im Speicher (14) enthält.
10. Das Verfahren gemäß Anspruch 9, worin der Schritt zur
Erzeugung besagter Tabelle den Schritt der Erzeugung einer
Tabelle aufweist, die für jeden Satz von Zeichen und ihren
zugeordneten Ordnungswerten darauf bezogene Ordnungswerte
für Erweiterung, Gruppierung, Ignoranz und Sequenz
enthält.
11. Das Verfahren gemäß Anspruch 10, worin der Schritt zur
zur Erzeugung besagter Tabelle den Schritt der Erzeugung
einer Tabelle aufweist, die für jeden Satz von Zeichen und
ihren zugeordneten Ordnungswerten darauf bezogene
Ordnungswerte für Erweiterung, Gruppierung, sekundäre
Ignoranz, tertiäre Ignoranz, französisch-sekundär und
französisch-tertiär enthält.
12. Das Verfahren gemäß Anspruch 8, worin der Schritt (a) zur
Definition die Schritte enthält:
Definition von wenigstens einem ersten Ordnungswert (204)
für jedes Zeichen, basierend auf der Zeichenpriorität der
ersten Sprache;
Definition von wenigstens einem zweiten Ordnungswert (204)
für jedes Zeichen, basierend auf der Zeichenpriorität der
zweiten Sprache; und
Mischen der ersten und zweiten Ordnungswerte (240, 242,
244, 246, 250, 252).
13. Das Verfahren gemäß Anspruch 8, worin der Schritt (a) zur
Definition den vom Benutzer gesteuerten Schritt zur
Änderung der einem jeden Zeichen zugeordneten
Ordnungswerte in Abhängigkeit vom gewünschten
Vergleichsresultat (900, 910) enthält.
14. Das Verfahren gemäß Anspruch 8, worin das Computersystem
weiter enthält eine mit dem Prozessor (10) und dem
Speicher (14) verbundene (36, 12) Anzeigevorrichtung (38),
die vom Prozessor (10) gesteuert wird zur Anzeige von im
Speicher gespeicherten Informationen, und worin der
Schritt (a) zur Definition weiter den Schritt der
Erzeugung einer tabellarischen Anzeige enthält zur
Zuordnung der Ordnungswerte zu jedem Zeichen (900, 910).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/036,749 US5440482A (en) | 1993-03-25 | 1993-03-25 | Forward and reverse Boyer-Moore string searching of multilingual text having a defined collation order |
PCT/US1994/000006 WO1994022096A1 (en) | 1993-03-25 | 1994-01-03 | Language-sensitive collation system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69400207D1 DE69400207D1 (de) | 1996-06-27 |
DE69400207T2 true DE69400207T2 (de) | 1997-01-16 |
Family
ID=21890421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69400207T Expired - Lifetime DE69400207T2 (de) | 1993-03-25 | 1994-01-03 | Sprachabhängiges textvergleichssystem |
Country Status (7)
Country | Link |
---|---|
US (1) | US5440482A (de) |
EP (1) | EP0672283B1 (de) |
JP (1) | JPH08508123A (de) |
AU (1) | AU6017994A (de) |
CA (1) | CA2145672A1 (de) |
DE (1) | DE69400207T2 (de) |
WO (1) | WO1994022096A1 (de) |
Families Citing this family (176)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5485373A (en) * | 1993-03-25 | 1996-01-16 | Taligent, Inc. | Language-sensitive text searching system with modified Boyer-Moore process |
JP3457061B2 (ja) * | 1994-06-28 | 2003-10-14 | 富士通株式会社 | 属性混在文字列のソート装置及び属性混在文字列のソート方法 |
US5737594A (en) * | 1994-07-05 | 1998-04-07 | Trustus Pty Ltd. | Method for matching elements of two groups |
US5778356A (en) * | 1994-11-10 | 1998-07-07 | Cadis, Inc. | Dynamically selectable language display system for object oriented database management system |
US5687366A (en) * | 1995-05-05 | 1997-11-11 | Apple Computer, Inc. | Crossing locale boundaries to provide services |
US6701428B1 (en) * | 1995-05-05 | 2004-03-02 | Apple Computer, Inc. | Retrieval of services by attribute |
US5675818A (en) * | 1995-06-12 | 1997-10-07 | Borland International, Inc. | System and methods for improved sorting with national language support |
JPH09198398A (ja) * | 1996-01-16 | 1997-07-31 | Fujitsu Ltd | パターン検索装置 |
US5754840A (en) * | 1996-01-23 | 1998-05-19 | Smartpatents, Inc. | System, method, and computer program product for developing and maintaining documents which includes analyzing a patent application with regards to the specification and claims |
US5873111A (en) * | 1996-05-10 | 1999-02-16 | Apple Computer, Inc. | Method and system for collation in a processing system of a variety of distinct sets of information |
US6370498B1 (en) | 1998-06-15 | 2002-04-09 | Maria Ruth Angelica Flores | Apparatus and methods for multi-lingual user access |
US6460015B1 (en) * | 1998-12-15 | 2002-10-01 | International Business Machines Corporation | Method, system and computer program product for automatic character transliteration in a text string object |
US7099876B1 (en) | 1998-12-15 | 2006-08-29 | International Business Machines Corporation | Method, system and computer program product for storing transliteration and/or phonetic spelling information in a text string class |
US6496844B1 (en) | 1998-12-15 | 2002-12-17 | International Business Machines Corporation | Method, system and computer program product for providing a user interface with alternative display language choices |
US6389386B1 (en) | 1998-12-15 | 2002-05-14 | International Business Machines Corporation | Method, system and computer program product for sorting text strings |
US6289513B1 (en) * | 1999-06-01 | 2001-09-11 | Isaac Bentwich | Interactive application generation and text processing |
KR100372582B1 (ko) * | 2000-02-23 | 2003-02-17 | 가부시키가이샤 히타치세이사쿠쇼 | 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체 |
US6618724B1 (en) * | 2000-04-17 | 2003-09-09 | Sun Microsystems, Inc. | Human-natural string compare for filesystems |
US7051278B1 (en) | 2000-07-10 | 2006-05-23 | International Business Machines Corporation | Method of, system for, and computer program product for scoping the conversion of unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets |
US7278100B1 (en) | 2000-07-10 | 2007-10-02 | International Business Machines Corporation | Translating a non-unicode string stored in a constant into unicode, and storing the unicode into the constant |
US6400287B1 (en) | 2000-07-10 | 2002-06-04 | International Business Machines Corporation | Data structure for creating, scoping, and converting to unicode data from single byte character sets, double byte character sets, or mixed character sets comprising both single byte and double byte character sets |
US6754668B2 (en) * | 2000-10-24 | 2004-06-22 | Raytheon Company | Multilingual system having dynamic language selection |
CA2348239C (en) * | 2001-05-18 | 2005-04-19 | Ibm Canada Limited-Ibm Canada Limitee | Culturally correct ordering of keyed records |
US6877003B2 (en) * | 2001-05-31 | 2005-04-05 | Oracle International Corporation | Efficient collation element structure for handling large numbers of characters |
CA2390849A1 (en) * | 2002-06-18 | 2003-12-18 | Ibm Canada Limited-Ibm Canada Limitee | System and method for sorting data |
US7155442B2 (en) * | 2002-06-28 | 2006-12-26 | Microsoft Corporation | Compressed normalized character comparison with inversion |
US7617202B2 (en) * | 2003-06-16 | 2009-11-10 | Microsoft Corporation | Systems and methods that employ a distributional analysis on a query log to improve search results |
US20050005239A1 (en) * | 2003-07-03 | 2005-01-06 | Richards James L. | System and method for automatic insertion of cross references in a document |
CA2453971C (en) * | 2003-12-23 | 2009-08-11 | Daniel A. Rose | On-demand creation of java locale source |
CA2453973A1 (en) * | 2003-12-23 | 2005-06-23 | Daniel A. Rose | On-demand creation of posix locale source |
DE102004037230A1 (de) * | 2004-07-31 | 2006-02-16 | Robert Bosch Gmbh | Verfahren zur Suche von Suchzeichenketten und Einrichtung hierfür |
US20060235662A1 (en) * | 2005-04-15 | 2006-10-19 | Argentar David R | Eliminating redundant patterns in a method using position indices of symbols to discover patterns in sequences of symbols |
US9275019B2 (en) * | 2007-12-21 | 2016-03-01 | Sap Se | System and method for performing Unicode matching |
JP5391583B2 (ja) * | 2008-05-29 | 2014-01-15 | 富士通株式会社 | 検索装置、生成装置、プログラム、検索方法および生成方法 |
US8682644B1 (en) | 2011-06-30 | 2014-03-25 | Google Inc. | Multi-language sorting index |
US9509757B2 (en) | 2011-06-30 | 2016-11-29 | Google Inc. | Parallel sorting key generation |
US20140019718A1 (en) * | 2012-07-10 | 2014-01-16 | Shihjong J. Kuo | Vectorized pattern searching |
US9268567B2 (en) * | 2012-09-30 | 2016-02-23 | Intel Corporation | Instruction and logic for boyer-moore search of text strings |
US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
CN107408405B (zh) | 2015-02-06 | 2021-03-05 | 美光科技公司 | 用于并行写入到多个存储器装置位置的设备及方法 |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
CN107408404B (zh) | 2015-02-06 | 2021-02-12 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
US10522212B2 (en) | 2015-03-10 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
WO2016144726A1 (en) | 2015-03-12 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
US10373666B2 (en) | 2016-11-08 | 2019-08-06 | Micron Technology, Inc. | Apparatuses and methods for compute components formed over an array of memory cells |
US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11256862B2 (en) | 2018-10-23 | 2022-02-22 | International Business Machines Corporation | Cognitive collation configuration for enhancing multilingual data governance and management |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4686522A (en) * | 1985-02-19 | 1987-08-11 | International Business Machines Corporation | Method of editing graphic objects in an interactive draw graphic system using implicit editing actions |
CA1265623A (en) * | 1987-06-11 | 1990-02-06 | Eddy Lee | Method of facilitating computer sorting |
CA1280215C (en) * | 1987-09-28 | 1991-02-12 | Eddy Lee | Multilingual ordered data retrieval system |
US5077669A (en) * | 1989-12-27 | 1991-12-31 | International Business Machines Corporation | Method for quasi-key search within a national language support (nls) data processing system |
US5218700A (en) * | 1990-01-30 | 1993-06-08 | Allen Beechick | Apparatus and method for sorting a list of items |
-
1993
- 1993-03-25 US US08/036,749 patent/US5440482A/en not_active Expired - Lifetime
-
1994
- 1994-01-03 AU AU60179/94A patent/AU6017994A/en not_active Abandoned
- 1994-01-03 CA CA002145672A patent/CA2145672A1/en not_active Abandoned
- 1994-01-03 JP JP6521006A patent/JPH08508123A/ja active Pending
- 1994-01-03 WO PCT/US1994/000006 patent/WO1994022096A1/en active IP Right Grant
- 1994-01-03 DE DE69400207T patent/DE69400207T2/de not_active Expired - Lifetime
- 1994-01-03 EP EP94906488A patent/EP0672283B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH08508123A (ja) | 1996-08-27 |
AU6017994A (en) | 1994-10-11 |
EP0672283A1 (de) | 1995-09-20 |
WO1994022096A1 (en) | 1994-09-29 |
CA2145672A1 (en) | 1994-09-29 |
EP0672283B1 (de) | 1996-05-22 |
US5440482A (en) | 1995-08-08 |
DE69400207D1 (de) | 1996-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69400207T2 (de) | Sprachabhängiges textvergleichssystem | |
DE69400869T2 (de) | System zum transkribieren von texteingaben | |
DE69527331T2 (de) | Datenwiedererfindungssystem, Datenverarbeitungssystem, Datenwiedererfindungsverfahren und Datenverarbeitungsverfahren | |
DE69400276T2 (de) | Zeichensatzsystem für texteingabe | |
DE69719858T2 (de) | Dokumentanzeigesystem und elektronisches Wörterbuch | |
DE3586273T2 (de) | Implizite erzeugung einer superblockstruktur in einem vieldaten-edierungsgeraet. | |
DE69912410T2 (de) | Schnelles zeichenkettensuchen und -indizieren | |
DE68929038T2 (de) | Verfahren zur Verarbeitung von digitalen Textdaten | |
DE3586274T2 (de) | Vieldaten-edierungsgeraet mit gebrauch von attributstroemen fuer textobjekte. | |
DE3586272T2 (de) | Integriertes vieldaten-edierungsgeraet. | |
DE69126805T2 (de) | Datenformatumwandlung | |
DE3852672T2 (de) | Verfahren zur Vereinfachung des Sortierens mit dem Rechner. | |
DE69636761T2 (de) | Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum | |
DE69710458T2 (de) | Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen | |
DE69900854T2 (de) | Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät | |
DE3685671T2 (de) | Aufzeichnungs- und wiederauffindungsverfahren fuer chemische strukturdaten. | |
DE3782447T2 (de) | Dokumentverarbeitungsapparat. | |
DE69229521T2 (de) | Datenbankauffindungssystem | |
DE3587501T3 (de) | Gerät, Verfahren und Struktur zur Umwandlung eines Dokumentes einer Struktur in ein Dokument einer anderen Struktur. | |
DE69602359T2 (de) | Transfer von bilddaten | |
DE60035432T2 (de) | System zur verwaltung der rdbm fragmentierungen | |
DE69026764T2 (de) | Verfahren zur Datenübertragung mit hoher Geschwindigkeit | |
DE3788782T2 (de) | Verfahren zur Herstellung einer Meldungsdatei in einem Computer. | |
JPH05290098A (ja) | データベースからの情報をスケール付きで表示する装置及び方法 | |
DE69934195T2 (de) | Identifikation einer Wortgruppe durch modifizierte Schlüsselwörter, die aus Transformationen von aufeinanderfolgenden Suffixen erzeugt sind |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: OBJECT TECHNOLOGY LICENSING CORP., CUPERTINO, CALI |