DE69631457T2 - Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung - Google Patents

Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung Download PDF

Info

Publication number
DE69631457T2
DE69631457T2 DE69631457T DE69631457T DE69631457T2 DE 69631457 T2 DE69631457 T2 DE 69631457T2 DE 69631457 T DE69631457 T DE 69631457T DE 69631457 T DE69631457 T DE 69631457T DE 69631457 T2 DE69631457 T2 DE 69631457T2
Authority
DE
Germany
Prior art keywords
page
gram
entry
index
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69631457T
Other languages
English (en)
Other versions
DE69631457D1 (de
Inventor
Vijayakumar Rangarajan
Natarajan Vijayanagar RAVICHANDRAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rebus Technology Inc
Original Assignee
Rebus Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Rebus Technology Inc filed Critical Rebus Technology Inc
Publication of DE69631457D1 publication Critical patent/DE69631457D1/de
Application granted granted Critical
Publication of DE69631457T2 publication Critical patent/DE69631457T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/26Techniques for post-processing, e.g. correcting the recognition result
    • G06V30/262Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
    • G06V30/268Lexical context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/416Extracting the logical structure, e.g. chapters, sections or page numbers; Identifying elements of the document, e.g. authors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Hintergrund
  • Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet der Dokumentverarbeitung mit optischen Scannern und die optische Zeichenerkennung und insbesondere Systeme und Verfahren, bei welchen Worte in einem Dokument für eine nachfolgende Suche und ein nachfolgendes Abrufen indexiert werden.
  • Hintergrund der Erfindung
  • Die optische Zeichenerkennung (OCR) wird in großem Umfang verwendet, um gedruckte oder handgeschriebene Dokumente in einer computerlesbaren Form zu erfassen, wodurch es möglich wird, die Dokumente nachfolgend unter Verwendung von Informationsrückgewinnungssystemen zu durchsuchen und wiederzuerhalten. Bei typischen Informationsrückgewinnungssystemen mit der Kapazität zur Rückgewinnung des gesamten Textes wird jedes bedeutungsvolle Wort in einem Dokument, das in das System eingegeben wird, indexiert, wobei für jedes Wort in dem Index eine Liste von Identifizierungsmerkmalen davon erstellt wird, wo das Wort auftritt. Dies erfolgt typischerweise entsprechend dem Dokument, der Seite und einer bestimmten Art eines Wortversatzes oder einer ähnlichen Art einer Verknüpfung. Dokumente werden in Antwort auf eine eingegebene Suchanfrage wiedererhalten, indem die Worte in der Suchanfrage exakt mit Worten im Index abgeglichen werden und die mit den Worten gekoppelten Dokumente wiedergewonnen werden. Typischerweise werden Boolesche Suchoperatoren verwendet, um komplexe Suchanfragen zu ermöglichen.
  • Dementsprechend ist eine genaue Wiedergewinnung von Eingabedokumenten primär auf eine genaue Eingabe und OCR-Analyse angewiesen. OCR-Systeme reagieren im allgemeinen sehr empfindlich auf Abstandsunterschiede zwischen Zeichen, die Fontart, die Fontgröße, das Seitenlayout, die Bildauflösung und die Bildqualität. Daher wird selbst von hochgenauen OCR-Systemen mit Genauigkeitsraten von ungefähr 99% eines von jeweils 100 Zeichen fehlinterpretiert, woraus sich Buchstabenvertauschungen, fehlende Buchstaben oder ähnliche Recht schreibfehler ergeben. Im Ergebnis weist ein typisches mit OCR verarbeitetes Dokument zwischen 3 und 8 oder mehr Rechtschreibfehler oder Fehler pro Seite auf. Nicht umfaßt davon sind typographische Fehler, die bereits ursprünglich im Dokument vorhanden waren. Ein weiteres Problem besteht darin, daß OCR-Systeme getrennte Worte zusammenführen bzw. miteinander verbinden.
  • Ein falsch geschriebenes Wort wird dann nicht richtig indexiert und wird somit in Antwort auf eine Suchanfrage, die das richtig geschriebene Wort umfaßt, nicht wiedergewonnen. In ähnlicher Weise werden einzelne Worte in einer zusammengeführten Wortkette überhaupt nicht, sondern nur als Teil der gesamten Wortkette indexiert. Daher wird ein Dokument, das eines der einzelnen Worte in der Wortkette enthält in Antwort auf eine Suchanfrage, in der solche Worte auftreten, nicht wiedergewonnen.
  • XP000039810 A. C. MELTZER ET AL: „Text searching using a inversion data Base consisting of Trigramms", China, 23.–27. Juni 1987 offenbart ein Suchverfahren mit einer Inversion von Trigrammen, wobei für jedes neue Dokument dessen Worte in Trigramme umgewandelt werden und einige davon eingetragen werden, d. h. ein Eintrag in einer Liste vorgenommen wird. Wenn eine Anfrage eingegeben wird, wandelt das System die Anfrage in ihre Trigramm-Komponenten um, die mit jenen der gespeicherten Dokumente verglichen werden. Man erhält eine resultierende Referenzliste mit Dokumenten, welche die Anfrage erfüllen. Diese Dokumente werden dann zum Nutzer gesandt. Es wird keine weitere Verarbeitung der rückgewonnenen Dokumente oder der übereinstimmenden Trigramme offenbart.
  • XP0000576194 R. E. KIMBRELL: „Searching for text? Send an N-Gramm" BYTE, Mai 1988, USA, Vol. 13, Nr. 5, ISSN 0360–5280, Seiten 297–312 offenbart ein ähnliches auf N-Grammen basierendes Suchverfahren mit Anfragen in einem Dokument, offenbart jedoch ebenfalls keine weitere Verarbeitung der zurückgewonnenen Dokumente.
  • Ein ähnliches N-Gramm-Suchverfahren wird in der FR-A-2 694 984 offenbart.
  • Typische Lösungen für die Rechtschreibprobleme sind auf Thesauri oder ähnliche Mittel angewiesen, um allgemeine Rechtschreibfehler mit ihren korrekt geschriebenen Quellen zu koppeln. Ein Problem bei dieser Methode besteht darin, daß ungewöhnlichen Rechtschreibefehlern keine Rechnung getragen werden kann. Auch wird bei diesen Methoden der Umfang des Index beträchtlich vergößert, was zu einem anderen Gesichtspunkt beim Entwurf von Informationsrückgewinnungssystem führt.
  • Ein zweiter wesentlicher Gesichtspunkt bei Informationsrückgewinnungssystemen ist die Leistungsfähigkeit und die Zeit, die erforderlich sind, um einen Index zu generieren und zu führen. Typischerweise wird ein invertierter Index als eine einzelne Datenstruktur aus einem Stück, wie beispielsweise eine doppelt verknüpfte Liste oder Baumstruktur, geführt. Immer wenn ein neues Dokument zum System hinzugefügt wird, was bei Online-Datenbanken täglich der Fall sein kann, muß der gesamte Index angepaßt werden und jeder Worteintrag im Index, der in den eingegebenen Dokumenten auftritt, muß in den für die eingegebenen Dokumente relevanten Daten aktualisiert werden. Dies macht die Online-Indexierung für große Systeme ungeeignet, so daß die Indexierung offline durchgeführt wird, wodurch die Geschwindigkeit, mit der die hinzugefügten Dokumente durchsucht werden können, beschränkt wird. Zusätzlich ist der Indexierungsprozeß umso zeitintensiver, je detaillierter der Index ist. Jedoch hat ein detaillierter Index den Vorteil reduzierter Suchzeiten. Daher besteht ein Kompromiss zwischen der Indexierungszeit und der Suchzeit.
  • Schließlich bestehen bei Informationssystemen weitere Bedenken bezüglich der Möglichkeit indexierte Dokumente für eine Verwendung in angeschlossenen oder Client-Systemen auszutauschen. Momentan sind viele Softwareanwendungen und insbesondere Datenbanken und Informationssysteme Client-Server basiert. Zusätzlich existiert eine fortlaufend wachsende Anzahl tragbarer Computer. Aufgrund dieser Umstände besteht der Wunsch, ein Indexierungssystem bereitzustellen, das es ermöglicht, indexierte Dokumente ohne wesentlichen Aufwand für eine Reindexierung effizient zum Suchsystem hinzuzufügen oder davon zu entfernen. Bei herkömmlichen Informationsrückgewinnungssystemen wird ein invertierter Index aus einem Stück verwendet, der nicht übertragbar ist, da der Index viele Megabytes oder sogar Gigabytes umfassen kann und zehntausende von Dokumentseiten indexiert werden können. Ein Index dieser Größe oder Komplexität kann nicht in geeigneter Weise auf entfernte Clients, tragbare Recheneinrichtungen oder transportable Speichermedien übertragen werden.
  • Entsprechend ist es erstrebenswert, ein Indexierungssystem bereitzustellen, mit dem aus der OCR-Analyse stammende oder auf andere Weise hervorgerufene Fehler im eingegebenen Dokument kompensiert werden können und eine schnelle Indexierung und eine genaue Rückgewinnung von Dokumenten, die Rechtschreibfehler oder andere typogafische Fehler enthal ten, ermöglicht wird. Es ist des weiteren wünschenswert ein System bereitzustellen, das eine schnelle Indexierung ohne ein beträchtliches Anwachsen der Suchzeiten zulässt und des weiteren die Übertragbarkeit indexierter Dokumente unterstützt.
  • Abriß der Erfindung
  • Ein verbessertes Indexierungs- und Rückgewinnungsverfahren und -system überwindet die Beschränkungen bestehender Informationsrückgewinnungssysteme durch Zerlegen jedes Wortes in eine Anzahl von „N-Grammen" oder Wortuntereinheiten. Ein N-Gramm ist eine geordnete lineare Kombination von N Zeichen, so wie diese in einem gegebenen Wort auftreten, insbesondere von Buchstaben und Zahlen, wie beispielsweise „cho", „thi", „ment". Im allgemeinen umfaßt ein N-Gramm einen N-Gramm-Parameter Np, welcher die Anzahl von Zeichen im N-Gramm dargestellt. Ein N-Gramm mit einem N-Gramm-Parameter Np von drei wird zweckmäßigerweise „Trigramm" genannt. Beispielsweise ist das Wort „houseboat" gebildet aus den Trigrammen "hou", "ous", "seb", "ebo", "boa", "oat". Man beachte daß weder „tbh" noch „hbt" ein Trigramm von „houseboat" dargestellt, obwohl alle Buchstaben im Wort vorkommen, da die Reihenfolge und der Bezug der Buchstaben zueinander, wie diese im Wort auftreten, von Bedeutung ist.
  • Bei der vorliegenden Erfindung werden die Nicht-Stop-Worte auf jeder Seite eines Dokumentes in ihre N-Gramme zerlegt, die indexiert und gespeichert werden. Durch Indexieren von Worten durch N-Gramme anstelle von vollständigen Worten, können Rechtschreibfehler, Teilworte oder Worte, die in Wortketten eingebettet sind, durch Suchen nach Übereinstimmungen zwischen den N-Grammen von Anfrageworten und N-Grammen in den Dokumenten eher identifiziert werden als durch Suchen nach Übereinstimmungen zwischen ganzen Worten. Es werde beispielsweise angenommen, daß das Wort „factory" in einem Dokument falsch als „factor" geschrieben ist. Seine N-Gramme sind gespeichert als „fac", „act", „cto", „tor" und „ori". Diese werden mit den N-Grammen des Suchanfragewortes „factory" verglichen, das korrekt geschrieben ist: „fac", „act", „cto", „tor", „ory". Es stimmen vier der fünf N-Gramme überein und das Wort kann wiedergewonnen werden. Ähnlich wären die N-Gramme immer noch „act", „cto", „tor" und „ory", wenn der erste Buchstabe aufgrund von Problemen bei der OCR-Analyse ausgelassen worden wäre. Es würden dabei immer noch vier der fünf N-Gramme übereinstimmen, so daß das Wort wiedergewonnen werden kann. Es ist verständ lich, daß N-Gramme für Worte in einer Kette zusammengeführter Worte in ähnlicher Weise identifizierbar sind und getrennt abgeglichen werden können.
  • Dementsprechend wird zur Suche und Wiedergewinnung von Dokumenten eine Suchanfrage eingegeben und die Worte in der Suchanfrage werden in ähnlicher Weise in ihre N-Gramme zerlegt. Die N-Gramme des Anfragewortes werden dann mit den N-Grammen von Worten auf den Seiten verschiedener Dokumente verglichen. Dort, wo bestimmte N-Gramme des Anfragewortes mit bestimmten Wort-N-Grammen auf einer Seite übereinstimmen, wird die Seite wiedergewonnen und die N-Gramme des Anfragewortes werden weiter mit jedem Wort-N-Gramm verglichen. Dies ermöglicht eine Bestimmung der Präzision der Übereinstimmung zwischen den Anfrageworten und den Worten auf der Seite. Das Dokument, das die Seite enthält kann dann wiedererhalten werden und dem Nutzer angezeigt werden. Es kann auch eine Boolesche Suche ausgeführt werden, sobald eine Bestimmung einer Übereinstimmung zwischen Anfrageworten und Dokumentworten ausgeführt wurde.
  • Im Vorhergehenden wurde die grundlegende Idee der Zerlegung mit N-Grammen und des Indexierungsprozesses beschrieben. Es können viele verschiedene Systeme zur Verwendung der N-Gramme, um Worte oder Dokumente zu analysieren, entwickelt werden. Es ist jedoch erstrebenswert, eine Zerlegung mit N-Grammen in einem System zu verwenden, das eine effiziente Indexierung und eine schnelle Suche mit hoher Genauigkeit gewährleistet und das des weiteren eine Übertragbarkeit von Indizes und Dokumenten sicherstellt. Demgemäß ist ein separater und weiterer Gesichtspunkt der Erfindung die Verwendung eines hierarchischen Indexierungsschemas, bei dem die Daten, die Dokumente darstellen, in einer Anzahl von Schubladen gespeichert werden, wobei jede Schublade Dokumente mit Textseiten und Bilddaten enthält. Die Seiten werden in einer Anzahl von Speicherbanken in einer Schublade aufgelistet. Die Zerlegung mit N-Grammen und die Indexierung wird für diskrete Seiten ausgeführt und nicht auf ganze Dokumente.
  • Jede Schublade enthält eine Anzahl von Speicherbanken. Für jede Speicherbank existiert ein Speicherbankindex. Mit dem Speicherbankindex werden Daten gespeichert, welche die N-Gramme darstellen, die tatsächlich auf jeder Seite der zugeordneten Speicherbank auftreten. Da eine feste Anzahl von N-Grammen einer gegebenen Größe bekannt ist, umfaßt jeder Bankindex des weiteren eine Eintragskarte, die für jedes mögliche N-Gramm angibt, ob das N-Gramm auf irgendeiner der in der Speicherbank aufgelisteten Seiten auftritt. Für jedes N- Gramm, das auf irgendeiner Seite in der Speicherbank auftritt, sieht die Eintragskarte einen Zugriff auf eine weitere Seitenkarte vor, die jede Seite in der Speicherbank, die das N-Gramm enthält, speziell identifiziert. Diese Art von Speicherstruktur ermöglicht eine sehr kompakte, effiziente Verwendung von Speicher bei der Indexierung und Rückgewinnung.
  • Die Speicherbanken und Bankindizes gewährleisten ein schnelles Rückgewinnungssystem. Wenn eine Anfrage eingegeben wird, werden die N-Gramme der Anfrageworte bestimmt. Jedes N-Gramm in den Anfrageworten wird zuerst mit der Eintragskarte verglichen, um zu bestimmen, ob bestimmte N-Gramme auf bestimmten Seiten der Speicherbank auftreten. Wo die Eintragskarte anzeigt, daß bestimmte Seiten die N-Gramme enthalten, werden die Seitenkarten durchsucht, um genau zu bestimmen, welche Seiten weiterverarbeitet werden müssen. Mit Hilfe dieser Anfangsvorverarbeitung können sehr rasch jene Seiten bestimmt werden, bei welchen eine weitere Suche nach einem gegebenen Anfragewort notwendig ist, wobei Seiten, die keine N-Gramme der Anfrageworte enthalten, nicht weiter betrachtet werden.
  • In einer zweiten Verarbeitungsstufe wird dann nur auf die Seiten in der Speicherbank zugegriffen, die Teile der Anfrage enthalten. Für jede derartige Seite werden dann die N-Gramme auf der Seite, die im Speicherbankindex gespeichert sind, mit den N-Grammen des Anfragewortes verglichen. Falls ein ausreichender Prozentsatz davon mit den N-Grammen eines Anfragwortes übereinstimmt, wird das mit der Seite in Beziehung stehende Dokument für eine Rückgewinnung gekennzeichnet.
  • Diese Organisation von Dokumenten und Indizes gewährleistet eine Übertragbarkeit der Dokumente, da eine gesamte Schublade, einschließlich ihrer Schubladen, Dokumente, Speicherbanken und Bankindizes vom Computersystem, in dem das Dokument indexiert wurde, zu einem anderen Computersystem übertragen und dort durchsucht werden kann, ohne daß es notwendig ist, die Dokumente in der Schublade erneut zu indexieren.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Systems zum Indexieren und Rückgewinnen von Dokumenten unter Verwendung einer Zerlegung in N-Gramme.
  • 2a ist ein Blockdiagramm der Speicherelemente des Systems, das die Verbindungen zwischen den Schubladen, Ordnern, Dokumenten, Speicherbanken, Banklisten, Bankindizes, der Freiliste und Dokumentliste zeigt.
  • 2b ist eine Darstellung dieser Speicherelemente aus der Perspektive des Nutzers.
  • 3 ist eine Darstellung des Aufbaus der Dokumentliste.
  • 4 ist eine Darstellung des Aufbaus einer Speicherbank.
  • 5 ist eine Darstellung des Ausbaus eines Speicherbankindex.
  • 6 ist eine Darstellung eines Beispiels der Beziehung zwischen einer Speicherbank und einem Speicherbankindex.
  • 7 ist ein Ablaufdiagramm des gesamten Verfahrens zum Indexieren und Suchen von Dokumenten.
  • 8 ist ein Ablaufdiagramm des Indexierungsprozesses für ein Dokument.
  • 9 ist ein Ablaufdiagramm des Prozesses zum Indexieren einer Seite in einem Dokument.
  • 10 ist ein Ablaufdiagramm des Prozesses zur Generierung von Stichworten auf einer Seite zum Speichern im Speicherbankindex.
  • 11 ist ein Ablaufdiagramm des Suchprozesses.
  • 12 ist ein Ablaufdiagramm des Vorverarbeitungsvorgangs bei einer Speicherbank.
  • 13 ist ein Ablaufdiagramm des Prozesses zum Suchen ausgewählter Seiten einer Speicherbank, der auf die Vorverarbeitung folgt.
  • 14 ist ein Ablaufdiagramm des Prozesses eines Abgleichens von N-Grammen von Anfrageworten mit N-Grammen eines Wortes auf einer Seite.
  • Detaillierte Beschreibung der Erfindung
  • Systemarchitektur
  • Im folgenden wird auf 1 Bezug genommen. Dort ist ein System zum Gebrauch des verbesserten Dokumentindexierungs- und Rückgewinnungssystems der vorliegenden Erfindung gezeigt. Das System 100 umfaßt einen Computer 101 mit einem Sekundärspeicher 107 für eine Langzeitspeicherung gescannter Dokumente, einer Eingabevorrichtung 109 und einer Ausgabevorrichtung 116 zum Empfangen und Ausgeben von Befehlen und Daten und einem adressierbaren Speicher 13 zum Speichern der verschiedenen Codemodule zur Abarbeitung durch einen Prozessor 111.
  • Die Eingabevorrichtungen 109 umfassen einen Scanner 115, mit dem eingegebene Dokumente gescannt und Grauton-, bitonale oder Farb-Bitmap-Dateien für die eingegebenen Dokumente hergestellt werden können. Der Scanner 115 hat vorzugsweise eine Auflösung von 200 dpi. Die Eingabevorrichtungen 109 umfassen des weiteren eine Tastatur 149 zum Eingeben von Befehlen und Daten. Die Ausgabevorrichtungen 116 umfassen einen Drucker 117 zum Drucken von Dokumenten einschließlich der gescannten Dokumente oder anderer Dokumente, die sich im System 100 befinden. Die Ausgabevorrichtungen 116 umfassen ebenso eine Bildanzeige 151 zur Anzeige einer Nutzerschnittstelle des Systems und von Suchergebnissen und andere Informationen für den Nutzer.
  • Der adressierbare Speicher 113 umfaßt eine Anzahl von Codemodulen, die zusammen eine ausführbare Anwendung beinhalten, die das System 100 gemäß der vorliegenden Erfindung verwaltet. Insbesondere umfaßt der adressierbare Speicher 113 ein Anwendungsablaufteil 119, ein Indexablaufteil 121, ein Sucheablaufteil 123, ein Dokumentreferenzmodul 125, ein Seitenindexierungsmodul 127, ein Sucheausführungsmodul 129, ein Suchlistenmodul 131 und ein optisches Zeichenerkennungsmodul 133. Die Betriebsweise dieser verschiedenen Module wird nachfolgend nach einer Beschreibung der Speicherelemente, mit denen die übertragbare Dokumentindexierung unterstützt wird, beschrieben. Ein Index-/Suchepufferspeicher 143 wird verwendet, um Daten, die während der Indexierungs- und Suchstufen erzeugt werden, temporär zu speichern. Ein Seitenpufferspeicher 145 wird verwendet, um temporär Daten von Dokumenten während der Suche zu speichern. Eine Stop-Wort-Datei 135 enthält eine Liste von Worten, die von einer Indexierung angeschlossen sind. Die Stop-Wort-Datei 135 ist im System 100 vorgesehen und kann durch den Nutzer modifiziert werden.
  • Auf das System 100 kann über das Anwendungsablaufteil 119 zugegriffen werden, das auf der Bildanzeige 151 eine geeignete Nutzerschnittstelle zur Verfügung stellt, womit dem Nutzer ermöglicht wird, über den Scanner 115 oder eine andere Quelle, wie beispielsweise existierende Textdateien, Bilddateien, Grafikdateien und dergleichen, Dokumente in das System 100 einzugeben, um Suchanfragen, die Kombinationen von Worten, allgemeine Zeichen und Boolesche oder SQL-Operatoren enthalten, einzugeben und um die Ergebnisse von Suchanfragen auf den Ausgabevorrichtungen, wie beispielsweise der Bildanziege 151 oder dem Drucker 117 zu überprüfen.
  • Der adressierbare Speicher 113 umfaßt des weiteren eine Datenbank 141 mit Speicherstrukturen, die zur Implementierung der Indexierung mit einer Zerlegung in N-Gramme gemäß der vorliegenden Erfindung nützlich sind. Im folgenden wird auf 2a Bezug genommen. Dort ist ein Blockdiagramm dieser Speicherstrukturen im adressierbaren Speicher 113 gezeigt. 2b veranschaulicht diese Speicherstrukturen aus der Perspektive des Nutzers.
  • Der adressierbare Speicher 113 umfaßt eine oder mehrere Schubladen bzw. Einschübe 201. Jede Schublade 201 hat vorzugsweise einen Schubladennamen, einen logischen Namen und umfasst einen Medientyp, d. h. ob es sich um übertragbare oder um feste Medien handelt. Dieses letzte Attribut ermöglicht es, Schubladen 201 zu verschiedenen Rechenvorrichtungen auf übertragbaren Speichermedien zu übertragen.
  • Jede Schublade 201 umfaßt des weiteren eine hierarchische Liste von null oder mehr Ordnern 203. Jeder Ordner 203 hat einen Ordnernamen und umfaßt null oder mehr Dokumente 205 oder weitere Ordner 203.
  • Jedes Dokument 205 hat vorzugsweise einen Dokumentnamen zur Erkennung durch den Nutzer und eine eindeutige Dokumentnummer, die vom System 100 verwendet wird. Ein Dokument 205 umfaßt zumindest eine Textdatei 207. Zusätzlich kann ein Dokument 205 eine Bilddatei 209, eine Symboldatei 213 und eine Dokumentdateistruktur-(DFS)-Datei 211 umfassen. Die Textdatei 207 enthält die Textdaten des Dokumentes im ASCII-Format oder einem ähnlichen Format. Die Textdaten werden im allgemeinen aus der OCR-Bearbeitung der Bilddaten erzeugt. Die Textdaten können jedoch auch direkt aus den Eingaben eines Nutzers generiert werden. Die Textdaten können beispielsweise eingegeben werden, indem das Dokument 205 in ein Bitmapformat oder eine Vektorgrafikdatei gebracht wird, wobei ein Kommentar oder eine Beschreibung der Datei für Indexierungszwecke mit umfaßt ist, wenn der Nutzer dies wünscht. Die Daten der Textdatei 207 sind auf einer oder mehreren Seiten 215 enthalten. Jede Seite ist durch ihre Seitennummer, ihren Seitennamen, Ordnernamen und Schubladennamen identifiziert.
  • Die Bilddatei 209 ist eine bitonale Datei, eine Graustufen- oder Farbbitmapdatei, die durch Scannen und Digitalisieren eines entsprechenden eingegebenen Dokumentes erhalten wird oder aus einer ähnlichen Verarbeitung stammt. Die Daten in der Bilddatei 209 werden in ähnlicher Weise auf Seiten 215 gespeichert.
  • Die DFS-Datei 211 bildet die Textdateidaten auf die Bilddateidaten ab. Die DFS-Datei 211 enthält für jede Textzeile in der Textdatei 207 eine Abbildung auf eine Bildseite 215 und ein grafisches Begrenzungsrechteck (bounding rectangle), das durch Pixelkoordinaten (vorzugsweise eine obere linke und eine untere rechte Ecke) des Ortes, an dem die Textzeile auf der Seite 215 erscheint, definiert ist. Diese Abbildung ermöglicht, daß der Nutzer auf die Textdaten auf einer Bildseite zugreifen kann, wenn er das Bild auf der Seite sieht. Die DFS-Datei 211 enthält vorzugsweise ebenfalls einen Seitenzähler für die Anzahl von Text- und Bildseiten im Dokument 205. Die DFS-Datei 211 enthält des weiteren Referenzdaten für jede Seite 215 im Dokument 205 einschließlich einer Seitenzahl, Dokumentnummer und eines Namens, eines vollständigen Pfadnamens und Symboldateinamens.
  • Die Symboldatei 213 enthält Miniaturbilder im Bitmapformat jeder Seite des Dokumentes 205. Die Miniaturbilder werden dem Nutzer während der Such- und Rückgewinnungsoperationen angezeigt, oder während der Nutzer auf das Dokument 205 zugreift. Bei der bevorzugten Ausführungsform, bei der das Dokument nur Textdaten enthält, die ohne Scannen oder dergleichen produziert werden, ist keine begleitende Bilddatei 209 oder Symboldatei 213 vorgesehen.
  • Jeder Schublade 201 ist eine Dokumentliste 225 zugeordnet. Die Dokumentliste ist ein Index aller Dokumente 205 in der Schublade 201. 3 veranschaulicht die Struktur der Dokumentliste 225. In der Dokumentliste 225 ist eine variable Anzahl von Einträgen 311 bis zu einer maximalen Grenze Dmax gespeichert. Bei der bevorzugten Ausführungsform ist Dmax durch die Anzahl der Gesamtseiten in allen Dokumenten in der Schublade 201 begrenzt, wobei in jeder Schublade 1 044 480 Seiten behandelt werden können. Jeder Eintrag 311 umfaßt den gesamten Pfadnamen jedes Dokumentes 205 in der Schublade 201. Jedes Dokument 205 hat in Folge seines Offsets in der Dokumentliste 225 eine eindeutige Dokumentnummer 301 in der Dokumentliste 225. Vorzugsweise wird ein Statuswert 303 geführt, um für jeden Eintrag 311 anzuzeigen, ob er zur Speicherung eines Dokumentes verfügbar ist. Die Dokumentliste 225 führt einen Zählwert der Anzahl 307 von Dokumenteinträgen 311 und einen Zählwert der Anzahl 309 ungenutzter Einträge, die generiert werden, wenn bestehende Dokumente entfernt werden.
  • Das System 100 umfaßt des weiteren zumindest eine Speicherbank 217. 4 ist eine Darstellung der Struktur einer Speicherbank 217. Jede Speicherbank 217 umfaßt eine Liste der Seiten verschiedener Dokumente im System 100 bis zu einer vorbestimmten Anzahl Pmax von Einträgen 413. Bei der bevorzugten Ausführungsform umfaßt eine Speicherbank 217 bis zu 255 Einträge oder Seitenreferenzen. Bei anderen Ausführungsformen kann Pmax höher sein, was zu einer Indexierung von mehr Seiten führt. Pmax kann bei weniger indexierbaren Seiten niedriger sein. Dies erfordert dann weniger Speicher. Die Dokumentseiten werden mit ihrer Dokumentnummer 301 aus der Dokumentliste 225 für die Schublade 201 und durch eine Seitennummer 403 im Dokument 205 aufgelistet. Für jeden Eintrag 413 wird vorzugsweise ein Statuswert 405 geführt, der anzeigt, ob im Eintrag auf eine Seite Bezug genommen wird. Jede Seite 413 weist des weiteren einen zugeordneten Speicherbankoffset 411 auf, wobei es sich um den Offset des Eintrags 413 in der Speicherbank 217 handelt. Der Speicherbankoffset 411 wird nicht tatsächlich im Eintrag 413 gespeichert. Jede Speicherbank 217 führt vorzugsweise eine Anzahl 407 ungenutzter Einträge, die aktualisiert wird, wenn neue Seiten referenziert werden und die Referenzierung anderer Seiten in der Speicherbank 217 aufgehoben wird. Bei einer bevorzugten Ausführungsform kann eine Schublade 201 eine Zahl von 4 096 Speicherbanken 217 umfassen, woraus bis zu 1 044 480 Seiten indexierter Daten für jede Schublade 201 resultieren. Jede Speicherbank 217 hat eine Speicherbanknummer 409, die sie eindeutig in der Schublade 201 und der Speicherbankliste 219 identifiziert. Die Speicherbanknummer 409 kann in der Speicherbank 217 selbst gespeichert werden oder kann durch den Dateinamen 217 identifiziert sein. Eine Speicherbanknummer 409 und ein Speicherbankoffset 411 bilden zusammen eine Speicherbankreferenz für eine Seite.
  • Jede Speicherbank 217 ist einem Speicherbankindex 223 und einer Freiliste 221 zugeordnet. Jeder Speicherbankindex 223 identifiziert die N-Gramme, die in einem jeweiligen Seiteneintrag 413 in einer Speicherbank 217 angetroffen werden. In 5, auf die im folgenden Bezug genommen wird, ist die bevorzugte Struktur des Bankindex 223 gezeigt. Bei der bevorzugten Ausführungsform umfaßt der Speicherbankindex 223 nicht direkt eine Liste aller N-Gramme als Daten. Vielmehr ist jedem N-Gramm eine eindeutige Nummer zugeteilt, die verwendet wird, um eine feste Anzahl von N-Gramm-Eintragskarten 505 zu indexieren.
  • Zuerst wird der Zeichensatz und der Zeichenbereich, der durch das Indexierungssystem 100 indexiert werden kann, ausgewählt. Die Gesamtzahl der indexierbaren Zeichen wird Cmax genannt. Die gesamte Anzahl L von N-Grammen ist dann: L = [Cmax]N.
  • Bei der bevorzugten Ausführungsform sind die indexierbaren Zeichen „A"–„Z", „0"–„9". Die gesamte Interpunktion und spezielle Zeichen, die typischerweise nicht verwendet werden, um nach Daten zu suchen, werden vorzugsweise auf ein einziges Zeichen, wie beispielsweise „~" abgebildet. Dies ermöglicht ein Indexieren von Worten, wie beispielsweise von „AT&T" als „AT~T" und von Zahlen, wie beispielsweise „3,1415926" als „31415926". Zusätzlich kann „~" dann verwendet werden, wenn eine Anzahl mehrerer letzter Zeichen eines Wortes allein für ein N-Gramm nicht ausreichend ist, um das N-Gramm zu vervollständigen. Beispielsweise wäre das Trigramm von „at" „at~". Internationale Zeichen können auf entsprechende englische Äquivalente abgebildet werden. Zeichen in Kleinschrift werden in ihre Werte in Großschrift konvertiert. Dies führt bei der bevorzugten Ausführungsform zu 37 verschiedenen Zeichen für jede Position im N-Gramm. Bei der bevorzugten Ausführungsform gibt es somit 50 563 (373) Trigramme. Die 37 Zeichen können in jeder verwendbaren Weise, wie beispielsweise ihrem entsprechenden ASCII-Wert oder auf andere Weise angeordnet werden. Die möglichen N-Gramme werden dann aufgelistet und seriell mit einer N-Gramm-Nummer nummeriert. Beispielsweise wäre unter der Annahme von Zahlzeichen an erster Stelle, dann von Buchstaben, und dann von „~", die Reihenfolge „000", „001 ", ... „00A", ... „00Z", „00~", ... „~~~". Bei einer bevorzugten Ausführungsform kann die N-Gramm-Nummer wie folgt berechnet werden.
  • Figure 00120001
  • Dabei ist die N-Gramm Buchstabennummer die Ordnungszahl des Buchstaben entsprechend seinem Auftreten im N-Gramm, N der N-Gramm-Parameter Np, und max_char gleich Cmax. Bei der bevorzugten Ausführungsform ist Cmax 37 und der N-Gramm-Parameter Np 3, so daß sich diese Gleichung reduziert auf: Trigramm-Nummer = (1. Trigramm Buchstabennummer)*372 + (2. Trigramm Buchstabennummer)*37 + (3. Trigramm Buchstabennummer).
  • Bei einer alternativen Ausführungsform werden die N-Gramme in einer Look-Up-Tabelle 227 gespeichert und der Offset eines gegebenen N-Gramms in der Tabelle ist dessen N-Gramm-Nummer.
  • Jeder Speicherbankindex 223 umfaßt eine feste Zahl von N-Gramm-Eintragskarten 505, deren Zahl gleich der Gesamtzahl L der verwendeten N-Gramme ist. Jede N-Gramm-Eintragskarte 505 führt einen Indexwert zu einer Indexseitenkarte 507, falls dem N-Gramm, das dem N-Gramm-Eintrag 505 zugeordnet ist, eine Indexseitenkarte 507 zugewiesen wurde. Jede Indexwerteinheit stellt die Gesamtzahl von Elementen in einer Indexseitenkarte 507 dar. In einem Indexoffset 501 ist die Adresse der ersten Indexseitenkarte 507 gespeichert. Zum Indexoffset 501 wird der (Indexwert – 1) in einer N-Gramm-Eintragskarte 505 hinzugefügt, um zur Indexseitenkarte 507 zu gelangen, die der N-Gramm-Eintragskarte 505 zugeordnet ist. Da viele N-Gramme möglicherweise nicht in einem der Seiteneinträge 413 in der Speicherbank 217 auftreten, ermöglichen es die N-Gramm-Eintragskarten 505, daß das System 100 schnell bestimmen kann, welche N-Gramme tatsächlich auf der Seite auftreten und daß somit die tatsächlichen Indexseitenkarten 507 während der Suche weiter analysiert werden können.
  • Für jede N-Gramm-Eintragskarte 505, bei der der Indexwert nicht Null ist, gibt es eine Indexseitenkarte 507. Jede Indexseitenkarte 507 enthält Daten, die anzeigen, welche Seiten 403 in der Speicherbank 217 das N-Gramm enthalten. Die Indexseitenkarte 507 enthält ein Bit für jeden möglichen Seiteneintrag 413 in der Speicherbank 217. Bei der bevorzugten Ausführungsform entspricht die Anzahl von Bits in jeder Karte 507 der maximalen Anzahl von Einträgen Pmax in der Speicherbank 217. Die Bitposition in der Indexseitenkarte 507 entspricht dem Speicherbankoffset 411 eines Seiteneintrags 413 in der Speicherbank 217. Das Bit wird gesetzt, falls der Seiteneintrag 413 das N-Gramm enthält, das der Indexseitenkarte 507 zugeordnet ist und wird auf Null gesetzt, falls dies nicht der Fall ist. Bei der bevorzugten Ausführungsform mit 255 Seiteneinträgen 413 in einer Speicherbank 217 enthält jede Indexseitenkarte 507 32 Byte (256 Bit), um die N-Gramme auf die Seiteneinträge 413 abzubilden. Bei anderen Ausführungsformen können andere Formen zur Abbildung verwendet werden, wie beispielsweise eine Liste von Zeigern. Das Aktualisieren der Indexseitenkarten 507 wird im Nachfolgenden in Einzelheiten beschrieben.
  • 6 ist ein Beispiel einer Indexierungsbeziehung zwischen einer Speicherbank 217 und einem Speicherbankindex 223. In 6 ist ein Teil einer Speicherbank 217 gezeigt, der verschiedene Seiteneinträge 413af enthält, wobei die Gesamtzahl der Einträge Pb ist. Mehrere Einträge sind mit „verwendet" in ihrem Statuswert 405 markiert und jeder derartige Eintrag 413 umfaßt eine Dokumentnummer 303, die anzeigt, zu welchem Dokument in der Dokumentliste 225 (nicht gezeigt) er gehört, und eine Seitennummer 403, die angibt, zu welcher Seite im Dokument. Man beachte, daß die Einträge 413 von vielen verschiedenen Dokumenten stammen und daß selbst Einträge aus demselben Dokument, wie beispielsweise die Einträge 413b, c, nur ausgewählte Seiten des Dokumentes sind. Der Speicherbankoffset 411 für jeden Eintrag 413 ist angegeben.
  • Der Speicherbankindex 223 umfaßt einen Teil der kompletten Auflistung der N-Gramm-Eintragskarten 505af. Jede dieser N-Gramm-Eintragskarten 505af umfaßt einen Indexwert 601, der angibt, welche Indexseitenkarte 507af, falls eine solche vorhanden ist, dem N-Gramm, das mit der N-Gramm-Eintragskarte verknüpft ist, zugeteilt ist. Somit umfaßt die erste (gemäß ihrem Auftreten in der Darstellung; es kann sich um die n-te im Speicherbankindex 223 handeln) N-Gramm-Eintragskarte 505a einen Indexwert 601, der gleich Null ist, der angibt, daß das N-Gramm, das mit der Karte verknüpft ist, auf keiner Seite der Speicherkarte 217 auftritt. Somit wird der N-Gramm-Eintragskarte 505 keine Indexseitenkarte 507 zugeordnet. Ähnlich verhält es sich mit der dritten N-Gramm-Eintragskarte 505c.
  • Die zweite N-Gramm-Eintragskarte 505b umfaßt jedoch einen Indexwert, der gleich 2 ist, der einen Index zur zweiten Indexseitenkarte 507b darstellt. Dort existiert zumindest eine Seite in der Speicherbank 217, in der das N-Gramm auftritt, das der N-Gramm-Eintragskarte 505b zugeordnet ist, wie auch immer dieses N-Gramm aussieht. Ähnlich indexiert die vierte N-Gramm-Eintragskarte 505d die vierte Indexseitenkarte 507d, die N-Gramm-Eintragskarte 505e die dritte Indexseitenkarte 507c und die N-Gramm-Eintragskarte 505f die erste Indexseitenkarte 507a.
  • Jede Indexseitenkarte 507 umfaßt eine Gruppe von Bits, die eine Abbildung auf die Einträge 413 in der Speicherbank 217 darstellen. Der Wert eines m-ten Bits in einer Indexseitenkarte 507 gibt an, ob das N-Gramm, das mit der N-Gramm-Eintragskarte 505 für diese Indexseitenkarte 507 verknüpft ist, auf der Seite auftritt, die durch den m-ten Eintrag 413 dargestellt ist. Das erste Bit in jeder Indexeintragskarte 507 ist eine Abbildung auf den ersten Eintrag 413a, das zweite eine Abbildung auf den zweiten Eintrag 413b und so weiter.
  • Beispielsweise sind im Kasten 603 die Abbildungen für den vierten Eintrag 413d in der Speicherbank 217 gezeigt. Sowohl in der ersten als auch in der zweiten Indexseitenkarte 505a, b, ist das Bit, das dem Eintrag 413d entspricht, nicht gesetzt. Dies zeigt an, daß die N-Gramme, die mit den N-Gramm-Eintragskarten 505b und 505f verknüpft sind, auf der Seite 87 des Dokuments mit der Nummer 711 nicht auftreten. Jedoch sind die Bits auf den Indexseitenkarten 507c, d gesetzt, so daß die N-Gramme, die mit den N-Gramm-Eintragskarten 505d, e verknüpft sind, auf dieser Seite auftreten. Ähnlich gibt das (Pmax)-te Bit der Indexseitenkarte 507b an, daß das mit dieser Karte verknüpfte N-Gramm auf Seite 93 des Dokuments mit der Nummer 818 auftritt.
  • Im folgenden wiederum unter Bezugnahme auf 5 sind im Speicherbankindex 223 des weiteren Daten gespeichert, die die N-Gramme darstellen, die auf den Seiten auftreten, die durch die Seiteneinträge 413 in der Speicherbank 317 identifiziert sind. Dies ist der Bereich des Speicherbankindex 223, in dem die momentane Suche durchgeführt wird, um Dokumente zu lokalisieren, die mit einer eingegebenen Anfrage übereinstimmen. Diese Daten werden in einer Tabelle 517 mit einer variablen Länge von Seitenschlüsseln 509, wobei jeweils einer für jeden Seiteneintrag 413 vorgesehen ist, gespeichert. Ein Seitenschlüssel 509 ist ein Feld mit variabler Länge der folgenden Form:
    [ki, n-Gramm i1, n-Gramm i2, ... n-Gramm ik]
    [k(i+1), n-Gramm (i + 1)1, n-Gramm (i + 1)2 ... n-Gramm (i + 1)k] ...
    wobei ki die Anzahl von N-Grammen im i-ten Wort auf der Seite ist und N-Gramm i(1...k) die Liste der N-Gramm-Nummern im i-ten Wort ist. Jede Gruppe von Werten [k] [n-Gramm 1, n-Gramm 2, ... n-Gramm k] wird „Wortschlüssel" genannt. Die Gruppe von Wortschlüsseln für alle Worte auf einer Seite ist der Seitenschlüssel 509. Man beachte, daß die N-Gramme selbst bei der bevorzugten Ausführungsform nicht gespeichert werden, sondern vielmehr eine N-Gramm-Nummer, die jedes N-Gramm eindeutig identifiziert, das im Seitenschlüssel 509 ge speichert ist. Die Verwendung von N-Gramm-Nummern anstelle der N-Gramme selbst führt zu einer Einsparung von Speicherplatz. Jedes N-Gramm erfordert 1 Byte für jedes Zeichen, so daß ein Trigramm 3 Byte umfaßt. Jedoch erfordert jede N-Gramm-Nummer lediglich:
  • Figure 00160001
  • Bit. Somit erfordert ein Trigramm lediglich 15,6 Bit oder 2 Byte.
  • Unter der Annahme einer maximalen Textdatengröße von 32k für eine Seite ist die maximale Größe eines Seitenschlüssels 509 bei der bevorzugten Ausführung nur 128k. In der Praxis beträgt die mittlere Größe jeder Seite ungefähr 2k und daher umfaßt jeder Seitenschlüssel 509 ungefähr 8k.
  • Um auf individuelle Seitenschlüssel 509 zuzugreifen, wird eine Seitenoffsettabelle 515 mit fester Größe vorgesehen. Jeder Eintrag in dieser umfaßt einen Seitenschlüsseloffset 511 und eine Seitenschlüsselgröße 513 für jeden Seitenschlüssel 509. Bei der bevorzugten Ausführungsform gibt es einen Eintrag für jeden Seiteneintrag 413 in der Speicherbank 217. Der Seitenschlüsseloffset 511 ist ein Offset im Verhältnis zum Beginn des Seitenschlüssels 509 mit variabler Länge, der dem Tabelleneintrag entspricht. Die Seitenschlüsselgröße 513 ist die Gesamtzahl von Bytes im entsprechenden Seitenschlüssel 509 einschließlich aller Einträge für N-Gramme und k-Werte. Die Beibehaltung der Seitenschlüsselgröße 513 ermöglicht es dem System 100 indexierte Seiten aus dem System zu löschen und dennoch über Informationen über den verfügbaren Platz zum Hinzufügen und Indexieren einer neuen Seite zu verfügen, wodurch eine Verschwendung von Speicherplatz vermieden wird.
  • Eine Freiliste 221 ist jeder Speicherbank 217 zugeordnet und in ihr werden Informationen gespeichert, welche Seiteneinträge 413 in der Speicherbank 217 für eine Indexierung verfügbar sind, einschließlich davon, wo ein zuvor indexierter Seiteneintrag 413 gelöscht wurde. Wenn ein Seiteneintrag 413 aus einer Speicherbank 217 gelöscht wird, werden der Seitenschlüsseloffset 511 und die Seitenschlüsselgröße 513 im Speicherbankindex 223 in der Freiliste 221 gespeichert und dann wird der Seitenschlüsseloffset 511 im Bankindex 223 auf Null gesetzt.
  • Eine Speicherbankliste 219 enthält Daten für alle Speicherbanken 217 in einer Schublade 201. Die Speicherbankliste 219 führt für jede Speicherbank 217 einen Zählwert der Anzahl freier Einträge 413 in der Speicherbank 217. Diese Werte werden aktualisiert, wenn neue Seiten zu den Speicherbanken 217 hinzugefügt werden oder alte gelöscht werden. Bei der bevorzugten Ausführungsform umfaßt die Speicherbankliste 219 einen Zählwert freier Einträge für bis zu 4 096 Speicherbanken 217 gemäß ihrer Speicherbanknummer. Die Tabelle 1 veranschaulicht die Struktur der Speicherbankliste 219:
  • Tabelle 1
    Figure 00170001
  • Wiederum Bezug nehmend auf die DFS-Datei 211 enthält diese bei der bevorzugten Ausführungsform für jede Seite 215 des ihr zugeordneten Dokuments 205 die Speicherbanknummer der Speicherbank 217, die die Seite 215 enthält, eingeordnet in die Speicherbankliste 219, den Speicherbankoffset 411 in der Speicherbank 217, die Seitennummer 403 des Dokuments und die Dokumentnummer 301 in der Dokumentliste 225.
  • Betriebsweise des Systems
  • I. Gesamtprozeßablauf
  • Das System 100 gewährleistet ein verbessertes Verfahren zum Indexieren und Suchen von Dokumenten in einem Informationsspeicher und Informations-Rückgewinnungssystem. Das Verfahren umfaßt zwei grundlegende Prozesse: Indexieren eines Dokumentes und Suchen nach einem Dokument unter Verwendung einer Suchanfrage.
  • Im folgenden wird auf 7 Bezug genommen. Dort ist ein Ablaufdiagramm des Gesamtverfahrens der vorliegenden Erfindung gezeigt. Ein Dokument oder eine Gruppe von Dokumenten wird in das System 100 eingegeben 701. Bei gedruckten Dokumenten oder Bildern können die Dokumente in herkömmlicher Weise mit dem Scanner gescannt werden und dann durch das OCR-Modul 133 verarbeitet werden, um die Textdaten der Textdatei 207 zu erzeu gen. Oder es kann ein Dokument mit einer Bilddatei 209 aus anderen Systemen importiert werden, wie beispielsweise ein Faksimilebild, und durch das OCR-Modul 133 verarbeitet werden. Alternativ kann das Dokument direkt als Textdaten in die Textdatei 207 eingegeben werden oder das Dokument kann ein Bild sein, für das der Nutzer zusätzliche Textinformation in der Textdatei 207 bereitgestellt hat. Dort, wo ein Dokument direkt als Textdaten empfangen wird, wird in der DFS-Datei 211 keine Abbildung zwischen der Textdatei 207 und der Bilddatei 209 vorgesehen. Alternativ können die Textdaten, wenn sie direkt empfangen werden, in eine Bilddatei unter Verwendung herkömmlicher Abbildungstechniken übertragen werden und die DFS-Datei 211 kann dann aktualisiert werden, so daß sie die Text-Bild-Abbildeinformation beinhaltet. Der Nutzer wird vorzugsweise durch das Anwendungsablaufteil 119 dazu veranlasst, eine Schublade 201 und einen Ordner 203 auszuwählen/zu generieren, in dem das (die) eingegebene(n) Dokumente) gespeichert werden soll(en).
  • Nachdem die Textdaten eines eingegebenen Dokuments erhalten wurden, wird das eingegebene Dokument dann indexiert 703. Das Indexieren wird durch das Indexablaufteil 121 verwaltet. Das Indexieren wird vorzugsweise Seite für Seite ausgeführt, falls das Dokument während der Eingabestufe 701 gescannt wird. Dies kann auch Dokument für Dokument erfolgen, oder in einem Batchmodus oder in einem zeitversetzten Modus, falls dies gewünscht wird, um große Mengen von Dokumenten zweckmäßig zu behandeln. Durch das Indexieren werden alle N-Gramme auf jeder Seite des Dokuments identifiziert, der verfügbare Raum in einer oder mehreren Speicherbanken 217 der vom Nutzer ausgewählten Schublade und des Ordners lokalisiert, und die Speicherbank 217, der Speicherbankindex 223, die Speicherbankliste 219 und die Freiliste 221 entsprechend aktualisiert.
  • Sobald die Indexierung abgeschlossen ist, kann der Nutzer entscheiden, ob eine gesamte Schublade 201 indexierter Dokumente 205 zu einem anderen Computer entweder direkt über eine Netzverbindung oder über ein tragbares Speichermedium transferiert werden soll 705. Dies würde ermöglichen, daß die Dokumente 205 in der Schublade 201 in einem anderen Rechner durchsucht werden, ohne die Dokumente neu indexieren zu müssen 703. Alternativ kann der Nutzer entscheiden, eines oder mehrere Dokumente 205 oder Ordner 203 zu übertragen. Ein erneutes Indexieren ist nur erforderlich, wenn die Dokumente zwischen Schubladen 201 transferiert werden.
  • Das System 100 ist dazu geeignet, jede Art von indexierten Schubladen 201 zu durchsuchen. Das Anwendungsablaufteil 119 veranlasst den Nutzer, eine oder mehrere Schubladen 201, einen oder mehrere Ordner 203 oder eines oder mehrere Dokumente 201 für eine Suche auszuwählen 709. Der Nutzer gibt eine Suchanfrage ein 707, in der die gewünschten Worte und Boolesche Operatoren bestimmt sind. Der Nutzer bestimmt auch einen Abgleichparameter E, der den Prozentsatz der Genauigkeit zwischen der Suchanfrage und den in einem bestimmten Dokument auftretenden Worten beschreibt. Bei einer bevorzugten Ausführungsform ist E auf einen zweckmäßigen Bereich wie etwa (20%–100%) beschränkt.
  • Mit der eingegebenen Suchanfrage verwaltet das Suchablaufteil 123 den Suchprozeß 709. Mit wenigen Worten beschrieben, umfaßt das Suchen das Umwandeln der Anfrageworte in N-Gramme und dann das Vergleichen dieser Anfragewort-N-Gramme mit den N-Grammen in den Bankindizes 223. Übereinstimmende N-Gramme werden dann analysiert und mit dem Abgleichparameter gewichtet, um den Grad einer Übereinstimmung zu bestimmen. Dokumente mit Übereinstimmungen, die die Suchanfrage erfüllen und der Übereinstimmungsparameter werden dann wiedergewonnen und dem Nutzer angezeigt 711. Der Nutzer kann zusätzliche Suchvorgänge durchführen, Suchergebnisse speichern, die Dokumente ausdrucken, Abschnitte der Dokumente in eine andere Anwendungssoftware zur Verwendung in dieser kopieren oder das Suchen beenden.
  • II. Dokumentindexierung
  • Im folgenden wird auf 8 Bezug genommen. Dort ist ein Ablaufdiagramm des Prozesses 703 der Indexierung eines Dokuments in das System 100 gezeigt, die durch das Indexablaufteil 121 verwaltet wird. Das Indexablaufteil 121 führt eine Reihe von Operationen aus, um jedes N-Gramm auf jeder Seite 215 des (der) Dokuments (Dokumente) 205, die durch den Nutzer eingegeben wurden, zu indexieren und um die entsprechende Speicherbank 217, die Bankliste 219, die Freiliste 221 und den Speicherbankindex 223 zu aktualisieren.
  • Das Indexablaufteil 121 teilt Speicher für den Indexierungsprozeß zu 801. Dies umfaßt das Löschen der Pufferspeicher 143, 145 und das Vorsehen bestimmter anderer zusätzlicher Speicherressourcen, die ausreichend sind, um ein Indexieren einer großen Anzahl von Seiten zu ermöglichen.
  • Das Indexablaufteil 121 ruft das Dokumentreferenzmodul 125 auf, um eine Dokumentnummer 301 für das Dokument 205, das indexiert wird, zu erhalten 803. Das Indexablaufteil 121 versieht das Dokumentreferenzmodul 125 mit einem Ursprungsknoten der Schublade 201, die das bestimmte Dokument 205 enthält und einem Dokumentnamen des Dokuments 205, der durch den Nutzer während der Eingabestufe 701 vorgesehen wurde. Das Dokumentreferenzmodul 125 öffnet die Dokumentliste 225 für die Schublade 201 und bestimmt aus der Anzahl 309 nicht genutzter Einträge, ob dort Raum für ein neues Dokument in der bestehenden Liste von Einträgen 311 verfügbar ist. Falls nicht, wird ein neuer Eintrag 311 am Ende der Liste von Einträgen in der Dokumentliste 225 generiert. Der Statuswert 303 wird gesetzt und der vollständige Pfadname 305 des Dokuments wird gespeichert. Falls ein ungenutzter Eintrag 311 in der Liste existiert, scannt das Dokumentreferenzmodul 125 die Listen ab und lokalisiert den ersten Eintrag 311 mit einem nicht gesetzten Statuswert 303. Der Statuswert 303 wird gesetzt und der vollständige Pfadname wird gespeichert. In jedem Fall gibt das Dokumentreferenzmodul 125 die Dokumentnummer 301, welche den Offset des aktualisierten/neuen Eintrags 311 in der Dokumentliste 225 darstellt, zurück.
  • Das Indexablaufteil 121 ruft dann das Seitenindexierungsmodul 127 auf, um jede Seite des Dokuments 205 zu indexieren und die resultierenden Daten in einem Bankindex 223 zu speichern 805. Das Seitenindexierungsmodul 127 führt die tatsächliche Generierung der N-Gramm-Nummer für jede Seite des Dokuments durch. Mit Bezug auf 9 ist dort ein Ablaufdiagramm des Indexierungsprozesses einer Seite gezeigt. Dieser Prozeß wird für jede Seite des Dokuments wiederholt.
  • Das Seitenindexierungsmodul 127 erhält zuerst einen Speicherbankoffset 411 für die Seite in einer bestimmten Speicherbank 217. Dies ordnet die Seite, die indexiert wird, einer Position in einer bestimmten Speicherbank 217 in der vom Nutzer ausgewählten Schublade 201 zu. Ferner wird ermöglicht, daß jede Seite des Dokuments in einer unterschiedlichen Speicherbank 217 gespeichert werden kann. Dies wird wie folgt ausgeführt:
  • Das Seitenindexierungsmodul 127 liest 901 die Speicherbankliste 219 und identifiziert die erste darin aufgelistete Speicherbank 217, die nicht voll ist, durch Lesen 903 des Zählwertes freier Einträge 217, bis ein Wert erreicht wird, der nicht Null ist. Das Seitenindexierungsmodul 127 dekrementiert 905 diesen Zählwert freier Einträge und öffnet die zugeordnete Speicherbank 217.
  • Das Seitenindexierungsmodul 127 prüft 909 die Anzahl 407 nicht verwendeter Einträge in der Bank 217. Dieser Wert gibt wieder an, wo Seiten, die zuvor indexiert wurden und in die Bank 217 einbezogen waren, entfernt wurden. Falls dieser Wert nicht Null ist, überträgt 911 das Seitenindexierungsmodul 127 die Einträge in der Speicherbank 217 und identifiziert den ersten Eintrag mit einem Statuswert 405, der einen leeren Eintrag angibt. Falls die Zahl 407 ungenutzter Einträge Null ist, generiert 913 das Seitenindexierungsmodul 127 einen neuen Eintrag am Ende der Speicherbank 217 unter Verwendung der Anzahl 401 von Einträgen in der Speicherbank 217, um den letzten Eintrag mit einem Offset zu versetzen.
  • In jedem Fall setzt 915 das Seitenindexierungsmodul 127 diesen Statuswert 405, so daß damit ein momentaner Eintrag gekennzeichnet wird, und speichert die Dokumentnummer 301 aus der Dokumentliste 225 im Eintrag und die Seitennummer 403 des Dokuments. Es inkrementiert 917 dann die Zahl 401 von Einträgen in der Speicherbank 217 und erhält 918 die Speicherbanknummer der Speicherbank 217 und den Speicherbankoffset 411 in der Speicherbank 217.
  • Das Seitenindexierungsmodul 127 lädt 919 dann die Stop-Wort-Datei 135 um Stopworte herauszufiltern, die nicht von generierten Wortschlüsseln für die Seite umfaßt sein sollten. Das Seitenindexierungsmodul 127 erzeugt 921 dann die Wortschlüssel für die Seite. Die Wortschlüssel werden im Seitenschlüssel 509 für die Seite im Speicherbankindex 223 gespeichert, der der Speicherbank 217 zugeordnet ist, die die Seite enthält. Die Wortschlüssel für den Seitenschlüssel 509 werden alle zuerst erzeugt und dann nachfolgend im Seitenschlüssel 509 gespeichert, da die Seitenschlüsselgröße 513 für den Seitenschlüssel 509 vor der tatsächlichen Speicherung bestimmt wird. Die Wortschlüssel werden wie folgt erzeugt.
  • Im folgenden wird auf 10 Bezug genommen. Dort ist ein Ablaufdiagramm des Prozesses der Erzeugung der Wortschlüssel gezeigt, die den Seitenschlüssel 509 einer gegebenen Seite bilden. Die Seitenschlüsselgröße 513 wird mit Null initialisiert 1001 und die Pufferspeicher 143, 145 werden geleert. Der Indexpufferspeicher 145 wird dazu verwendet, den Seitenschlüssel 509 zu speichern, wenn er generiert ist. Der Seitenpufferspeicher 145 wird dazu verwendet, die Textdaten der Seite festzuhalten. Die Seite, die indexiert wurde, wird in den Seitenpufferspeicher 145 geladen 1002. Das Seitenindexierungsmodul 127 durchschleift 1003 alle Worte auf der Seite, die im Seitenpufferspeicher 145 gespeichert sind. Das Seitenindexie rungsmodul 127 bestimmt 1005, ob das momentane Wort ein Dateiende ist. Falls das momentane Wort nicht das Dateiende ist, überprüft es 1007, ob das Wort ein Stop-Wort in der Stop-Wort-Datei 135 ist. Dies kann durch Hashing oder andere herkömmliche Techniken erfolgen. Falls das momentane Wort ein Stop-Wort ist, wird die Schleife 1003 fortgesetzt.
  • Falls das momentane Wort kein Stop-Wort ist, überprüft 1009 das Seitenindexierungsmodul 127 die Länge des Wortes 1009, wobei „~" zum Wort hinzugefügt wird, bis seine Länge gleich der N-Gramm-Länge ist. Beispielsweise werden bei der bevorzugten Ausführungsform Worte mit zwei Buchstaben mit „~" erweitert, um daraus drei Buchstaben zu machen. Des weiteren wird bevorzugt, daß Worte mit einem Buchstaben nicht erweitert werden, da sie nur sehr wenige identifizierbare Daten zur Suche beitragen.
  • Das Seitenidexierungsmodul 127 erzeugt dann den Wortschlüssel für das Wort. Dies umfaßt ein Bestimmen 1011 der Anzahl k von N-Grammen für das Wort. Die Anzahl k von N-Grammen für den Wortschlüssel beträgt (Länge des Wortes – 2).
  • Das Wort wird dann in seine N-Gramme zerlegt und jedes N-Gramm wird dann aus dem Wort beginnend mit dem ersten Zeichen gelesen und wobei die Anzahl der Zeichen gelesen wird, die notwendig ist, um das N-Gramm zu generieren. Die N-Gramm-Nummer wird für jedes N-Gramm bestimmt 1013. Dies kann durch Nachschauen der N-Gramm-Nummer in der N-Gramm-Lookup-Tabelle 227 erfolgen oder durch direktes Berechnen der N-Gramm-Nummer, wie es oben der Fall ist.
  • In jedem Fall ist das Ergebnis der Schritte 1011 und 1013 der Wortschlüssel für das Wort umfassend die Zahl k und die individuellen N-Gramm-Nummern für jedes N-Gramm im Wort. Der Wortschlüssel wird an den Pufferspeicher 143 angefügt. Die Seitenschlüsselgröße 513 wird aktualisiert 1014, um die Größe des Wortschlüssels zu akkumulieren. Die neue Größe 513 des Wortschlüssels ist: Größe des Wortschlüssels = Größe des Wortschlüssels + (1 + k*Größe der (N-Gramm-Nummer)).
  • In der „Größe-der"-Funktion wird die Anzahl von Bytes verwendet, die zur Speicherung der N-Gramm-Nummer benötigt wird. Bei Trigrammen sind dies zwei Byte, jedoch ist diese Zahl bei größeren N-Grammen höher. Dieser Ausdruck wird mit k, der Zahl von N-Grammen, multipliziert. Ein extra Element wird zur Speicherung von k hinzugefügt.
  • Für jede so generierte und im Wortschlüssel umfaßte N-Gramm-Nummer, müssen die N-Gramm-Eintragskarte 505 und die Indexseitenkarte 507 aktualisiert werden. Die N-Gramm-Nummer wird als ein Index zu den N-Gramm-Eintragskarten 505 verwendet. Der Indexwert in der N-Gramm-Eintragskarte 505 wird erhalten 1015 und überprüft 1017. Falls der Indexwert Null ist, bedeutet dies, daß das N-Gramm keine frühere Referenz in der Bank 217 hat und eine neue Indexseitenkarte 507 erzeugt werden muss. Falls der Indexwert nicht Null ist, bedeutet dies, daß das N-Gramm zuvor auf einer Seite in der Speicherbank 217 gefunden wurde und daß dort bereits eine Indexseitenkarte 507 für das N-Gramm existiert. Der (Indexwert – 1) von der N-Gramm-Eintragskarte 505 wird dann zum Indexoffset 501 hinzugefügt, um die korrekte Indexseitenkarte 507 zu erreichen.
  • Dementsprechend wird eine weitere Indexseitenkarte 507 am Ende des momentanen Satzes von Indexseitenkarten 507 hinzugefügt 1019, falls der Indexwert der N-Gramm-Eintragskarte 505 Null ist. Der Indexwert der N-Gramm-Eintragskarte 505, auf den durch die N-Gramm-Nummer Bezug genommen wird, wird mit der Position der neuen Indexseitenkarte 507 aktualisiert 1021, so daß auf die letztere direkt unter Verwendung der N-Gramm-Eintragskarte 505 zugegriffen werden kann, wenn eine weitere Referenz zum N-Gramm generiert wird (während des Indexierens) oder identifiziert wird (während der Suche). Somit wird für das erste N-Gramm der ersten Seite, die in einer Bank 217 beinhaltet sein soll, dieses N-Gramm (unabhängig von seiner N-Gramm-Nummer) eine Indexnummer von 1 in der N-Gramm-Eintragskarte 505 haben und die erste Indexseitenkarte 507 wird damit verknüpft sein. Das nächste N-Gramm hat wiederum unabhängig von seiner N-Gramm-Nummer, oder wie „weit" es vom ersten N-Gramm entfernt ist, den Indexwert 2 in seiner N-Gramm-Eintragskarte 505 und wird der zweiten Indexseitenkarte 507 zugeordnet.
  • Falls der Indexwert in der N-Gramm-Eintragskarte 505 nicht Null ist, verwendet das Seitenindexierungsmodul 127 den (Indexwert – 1), um die Indexseitenkarte 507 für das N-Gramm zu erreichen 1023.
  • Das Seitenindexierungsmodul 127 setzt 1025 das (Speicherbankoffset 411)-te Bit in der Indexseitenkarte 507 für das N-Gramm. Dies zeigt an, daß der (Speicherbank-Offset 411)-te Eintrag in der Speicherbank 217 eine Referenz zum N-Gramm aufweist. Dies ist die Seite, die momentan indexiert wird.
  • Diese Aktualisierung wird für jedes N-Gramm im Wortschlüssel wiederholt (1013). Das Seitenindexierungsmodul 127 fährt mit dem nächsten verfügbaren Wort auf der Seite fort (1003).
  • Sobald alle Wortschlüssel für die Seite in der Schleife 1003 absolviert sind, bildet der gesamte Satz von Wortschlüsseln für die Seite den vollständigen Seitenschlüssel 509. Die Größe 513 des Seitenschlüssels ist die Größe des gesamten Seitenschlüssels 509 und liegt im Pufferspeicher 143 vor. Übrig bleibt nun lediglich diesen Seitenschlüssel 509 an einem geeigneten Ort in der Seitenschlüsseltabelle 517 des Speicherbankindex 223 zu speichern.
  • Das Seitenindexierungsmodul 127 durchläuft 1027 die Freiliste 221 für die Speicherbank 217, um den Seitenschlüssel-Offset 511 des ersten verfügbaren Seitenschlüssels 509 mit einer Seitenschlüsselgröße 513 größer als oder gleich der Größe des Seitenschlüssels des gerade vervollständigten Seitenschlüssels zu bestimmen 1029. Wie oben erläutert führt die Freiliste 221 die Offsets 511 für Seitenschlüssel 509 für Seiten, die gelöscht wurden, und deren Platz nun zum Speichern eines weiteren Seitenschlüssels 509 für eine weitere Seite verfügbar ist.
  • Falls ein derartiger Seitenschlüsseloffset 511 festgestellt wurde, wird der neu generierte Seitenschlüssel in den Eintrag des Seitenschlüssels 509 in der Seitenschlüsseltabelle 517 geschrieben 1031. Falls kein Zwischeneintrag ausreichender Größe gefunden wird, wird der Seitenschlüssel hinter den letzten bestehenden Eintrag in der Seitenschlüsseltabelle 517 geschrieben 1033. In jedem Fall werden der Seitenschlüsseloffset 511 und die Seitenschlüsselgröße 513 aktualisiert.
  • Wiederum Bezug nehmend auf 9 entlädt 923 das Seitenindexierungsmodul 127 dann die Stop-Wort-Datei 135 und gibt die Kontrolle zum Indexablaufteilmodul 121 zurück 925.
  • Wiederum Bezug nehmend auf 8 aktualisiert das Indexablaufteil 121 die DFS-Datei 211 mit der Speicherbankreferenz (Speicherbanknummer 409 und Speicherbankoffset 411) der indexierten Seite 807, wobei die Speicherbankreferenz dem speziellen Bild und der Textseite für die indexierte Seite zugeordnet wird. Dies ermöglicht es, daß das System 100 die Indexinformation für die Seite während des Suchens und wenn das Bild der Seite betrachtet wird und auf die Textdaten für einen Zugriff durch den Nutzer abgebildet wird, wiedergewinnen kann. Ähnlich aktualisiert 809 das Indexablaufteil 121 die DFS-Datei 211 mit der Dokumentnummer 301 aus der Dokumentliste 225, was es wiederum ermöglicht, daß das System 100 das Dokument wiedergewinnen kann. Schließlich gibt das Indexablaufteil 121 die zugeteilten Speicherressourcen frei 811. Das Indexablaufteil 121 gibt dann die Kontrolle zum Anwendungsablaufteil 119 zurück, um ein zusätzliches Indexieren, Übertragen 705 von Indizes und Dokumenten oder Suchen 709 zu ermöglichen.
  • III. Dokumentsuche
  • Wiederum unter Bezugnahme auf 7 kann der Nutzer ebenfalls irgendeine Anzahl von Schubladen nach Dokumenten durchsuchen 709, die mit einer eingegebenen Suchanfrage übereinstimmen. Im allgemeinen umfaßt das Suchen ein Zerlegen jedes Wortes in der Suchanfrage in seine N-Gramme, das Bestimmen, welche Dokumentseiten welche N-Gramme umfassen und dann das Durchführen bestimmter Boolescher oder anderer Arbeitsschritte auf die sich ergebenden Übereinstimmungen. Insbesondere wird jede Speicherbank durchsucht, um zu bestimmen, ob bestimmte N-Gramme der Suchworte auf irgendeiner Seite in der Speicherbank auftreten. Diese Seiten werden vermerkt. Dann werden für jede Seite die N-Gramme der Anfrageworte mit jedem N-Gramm in jedem Wortschlüssel in jedem Seitenschlüssel auf der Seite verglichen. Damit wird die Genauigkeit der Übereinstimmung zwischen den Anfrageworten und den Worten auf jeder Seite bestimmt.
  • Im folgenden wird auf 11 Bezug genommen. Dort ist ein Ablaufdiagramm des Prozesses 709 des Durchsuchens des Systems 100 mit einer eingegebenen Suchanfrage gezeigt, das durch das Sucheablaufteil 123 verwaltet wird.
  • Das Sucheablaufteil 123 beginnt mit einem Zuteilen 1101 ausreichender Speicherressourcen zur Verwendung während der Suche. Dies umfaßt das Entleeren des Seitenpufferspeichers 145 und des Suchepufferspeichers 143. Typischerweise werden zum Durchsuchen einer Schublade, die 16 000 Dokumente enthält ungefähr 700k zugeteilt. Zusätzlich initialisiert das Sucheablaufteil 123 einen Ergebnispufferspeicher, der für jede Speicherbank verfolgt, welcher Seiteneintrag 413 (durch einen Speicherbankoffset 411) einen Treffer für die Anfrageworte beinhaltet.
  • Das Suchablaufteil 123 beginnt dann eine Schleife 1103 über alle Schubladen 201, die für die Suche ausgewählt wurden, und dann eine zweite Schleife 1105 für alle Speicherbanken 217 in jeder Schublade 201.
  • Das Sucheablaufteil 123 rückgewinnt den Speicherbankindex 223 für die momentane Speicherbank 217 und ruft dann das Sucheausführungsmodul 129 auf, um einen Vorverarbeitungsschritt 1109 auszuführen. Bei der Vorverarbeitung 1109 werden jene Seiten in der momentanen Speicherbank 217 identifiziert, die mit irgendwelchen N-Grammen in den Suchanfrageworten übereinstimmen, die die Übereinstimmungsparameter erfüllen. Die Vorverarbeitung ist somit ein erster Filterungsschritt, mit dem weitere Suchseiten eliminiert werden, die keine N-Gramme der Suchworte enthalten. 12 ist ein Ablaufdiagramm des Vorverarbeitungsschrittes.
  • Das Sucheausführungsmodul 129 initialisiert ein Seitenflaglistenarray, mit dem für jede Seite in der Bank 217 verfolgt wird, ob die Seite einen Treffer für irgendein N-Gramm irgendeines Anfragewortes umfaßt, wodurch die Seite für eine weitere Verarbeitung geeignet ist. Bei der bevorzugten Ausführungsform ist das Seitenflaglistenarray ein 1-D-Array mit einem Eintrag für jede Seite in der Speicherbank 217 entsprechend ihrem Speicherbankoffset 411. Das ist die Seitenflagliste [Pmax], wobei Pmax die maximale Anzahl von Seiten in der Speicherbank 217 ist.
  • Das Sucheausführungsmodul 129 beginnt dann eine Schleife 1203 für jedes Wort Q in der Suchanfrage. Das Sucheausführungsmodul 129 initialisiert 1204 ebenfalls ein N-Gramm-Übereinstimmungszählerarray G. Mit dem N-Gramm-Übereinstimmungszählerarray G wird für eine Seite die Anzahl von Häufigkeiten verfolgt, mit der irgendein N-Gramm eines Anfragewortes in der Seite gefunden wird. Das bedeutet, G[P] ist die Anzahl der Auftritte eines N-Gramms irgendeines Anfragewortes auf der Seite P der Speicherbank 217. Eine weitere Schleife 1205 wird für jedes N-Gramm im momentanen Anfragewort Q begonnen. Die N-Gramme für das momentane Anfragewort Q werden während des Indexierens, wie oben beschrieben, bestimmt.
  • Das Sucheausführungsmodul 129 bestimmt 1207, ob das momentane N-Gramm von Q auf irgendeiner Seite in der Speicherbank 217 vorhanden ist, indem die N-Gramm-Nummer des N-Gramms herangezogen wird und der Indexwert der N-Gramm-Eintragskarte 505 für diese N-Gramm-Nummer im Speicherbankindex 223 überprüft wird. Wie oben beschrieben, gibt die N-Gramm-Eintragskarte 505 für eine gegebene N-Gramm-Nummer und somit für ein N-Gramm an, ob das N-Gramm in der Speicherbank 217 überhaupt auftritt.
  • Falls der Indexwert Null ist, bedeutet dies, daß dieses N-Gramm des Anfragewortes Q für diese Speicherbank 217 auf keiner Seite aufgetreten ist. In diesem Fall wird die Schleife 1205 fortgesetzt.
  • Falls der Indexwert nicht Null ist, bedeutet dies, daß das N-Gramm des Anfragewortes Q auf einer bestimmten Seite in der Speicherbank 217 zumindest einmal vorgekommen ist und der Indexwert gibt den Index zu der Indexseitenkarte 507 an, die die Seite(n) in der Speicherbank 217, in der das N-Gramm vorgekommen ist, identifiziert. Entsprechend durchläuft das Sucheausführungsmodul 129 die Indexseitenkarte 507 (unter Hinzufügung des (Indexwertes – 1) zum Indexoffset 501 für den Speicherbankindex 223).
  • Das Sucheausführungsmodul 129 durchschleift 1209 dann die Indexseitenkarte 507, wobei jedes Bit B in der Seitenkarte gelesen wird. Das Sucheausführungsmodul 129 stellt fest 1211, ob das Bit für jede Seite gesetzt ist. Falls das nicht der Fall ist, wird die Schleife 1209 fortgesetzt.
  • Falls das Bit gesetzt ist, zeigt dies an, daß die Seite das N-Gramm des Anfragewortes Q irgendwo in seinen Textdaten beinhaltet. Das Sucheausführungsmodul 129 inkrementiert 1213 den N-Gramm-Übereinstimmungszähler G[P]. Dies zeigt an, das ein N-Gramm des Anfragewortes Q auf der Seite P der Speicherbank 217 auftritt.
  • Das Sucheausführungsmodul 129 testet dann 1215, ob der inkrementierte Zählwert G[P] ausreichend ist, um davon ausgehen zu können, daß die Seite einen Treffer für das momentane Anfragewort Q enthält. Dieser Test, ob G[P] gleich oder größer ist als die Anzahl von N-Grammen im Anfragewort Q wird mit dem Übereinstimmungsparameter E gewichtet, der vom Nutzer eingegeben wird. Falls der Nutzer eine exakte Übereinstimmung zwischen einem Anfragewort Q und einem Wort auf einer Seite wünscht, muß jedes N-Gramm im Anfragewort Q auf der Seite vorhanden sein und somit muß ein Bit für die Seite in jeder Indexseitenkarte 507 für jedes N-Gramm des Anfragewortes Q gesetzt sein. Beispielsweise, falls das Anfragewort „doorknob" ist, gibt es sechs N-Gramme und dasselbe Seitenbit muß auf den sechs Indexseitenkarten 507 für die N-Gramme von „doorknob" gesetzt sein. Falls der Nutzer eine weniger exakte Übereinstimmung wünscht, müssen weniger (einige Prozent) der Indexseitenkarten 507 gesetzt sein. Entsprechend ist der Test 1215:
    Figure 00280001
    wobei KQ die Anzahl von N-Grammen in Q ist und E der Übereinstimmungsparameter ist. E ist vorzugsweise ein Wert innerhalb eines zweckmäßigen unteren Grenzbereichs, wie beispielsweise zwischen 20 und 100.
  • Falls dieser Test 1215 erfolgreich ist, wird das Seiten-Flag-Listenarray aktualisiert 1217, so daß es anzeigt, daß diese Seite einen Treffer für das Anfragewort Q beinhaltet. D. h., das Seitenlistenarray wird auf [Q, B] eingestellt, wobei B der Index der momentanen Seite ist, der durch die Schleife 1209 gesteuert wird. Die Bearbeitung wird fortgesetzt, bis die Schleife 1209 abgearbeitet ist. Sobald alle Schleifen beendet sind, ist die Vorverarbeitung 1109 ( 11) ausgeführt.
  • Wiederum unter Bezugnahme auf 11 erzeugt die Vorverarbeitung 1109 somit das Seitenlistenarray, das für jedes Anfragewort Q anzeigt, auf welcher Seite in der Speicherbank 217, die momentan bearbeitet wird, das Anfragewort vorkommt. Dies gibt jedoch nicht an, wo auf der Seite die Übereinstimmung zwischen dem Anfragewort Q und einem bestimmten Wort besteht. Nun kann jede Seite in der Speicherbank 217 bearbeitet werden 1111, um die exakten Übereinstimmungen zwischen den Anfrageworten und Worten auf einer Seite weiter zu bestimmen, und ob sie bestimmten Booleschen Operatoren genügt.
  • Bezug nehmend auf 13 ist dort ein Flußdiagramm der Bearbeitung 1111 einer Speicherbank 217 gezeigt. In dieser Phase werden nur jene Seiten weiter bearbeitet, die während der Vorverarbeitung 1109 ausgewählt wurden. Das Sucheausführungsmodul 129 beginnt eine Schleife 1301 für jeden Seiteneintrag 413 in der Speicherbank 217, wobei eine Iteration über die Speicherbankoffsetwerte 411 erfolgt. Eine zweite Schleife 1303 wird für jedes Wort Q in der Suchanfrage begonnen.
  • Das Sucheausführungsmodul überprüft 1305, ob das Anfragewort Q auf der Seite vorkommt. Dies wird vorzugsweise durch Prüfen des Seitenlistenarrays bei [Q, Speicherbankoffset 411] durchgeführt. Dieser Wert wird während der Vorverarbeitung 1109 gesetzt, falls das Anfragewort Q auf der Seite aufgetreten ist, wie in der Indexseitenkarte 507 festgestellt ist. Falls die Seite nicht als eine solche angegeben wurde, wird die Schleife 1303 fortgesetzt.
  • Ansonsten wird der Seitenschlüssel 509 für die Seite in den Seitenpufferspeicher 143 geladen 1307. Dies wird unter Verwendung des Speicherbankoffsets 411 ausgeführt, um auf die Seitenschlüsseloffsettabelle 515 zu indexieren, und um den momentanen Seitenschlüsseloffset 511 zum korrekten Seitenschlüssel 509 zu erhalten. Der Seitenschlüssel 509 wird dann bearbeitet 1309, um zu bestimmen, wie viele N-Gramme auf der Seite mit den Anfrageworten übereinstimmen. 14 ist ein Flußdiagramm dieses Prozesses 1309.
  • Das Sucheausführungsmodul 129 startet einen Wortschlüsselübereinstimmungzähler für jeden Wortschlüssel W im Seitenschlüssel 509 bezüglich jedes Anfragewortes Q. Dabei handelt es sich vorzugsweise um ein 2D-Array [Qn, Wn], wobei Qn die Anzahl von Anfrageworten Q und Wn die Anzahl von Wortschlüsseln W im Seitenschlüssel 509 ist.
  • Das Sucheausführungsmodul 129 startet eine Reihe von Schleifen. Eine äußere Schleife 1403 iteriert über jedes N-Gramm in einem momentanen Anfragewort Q (dies wird durch die Schleife 1303 gesteuert, siehe 13). Die N-Gramme werden wie oben zusammen mit der N-Gramm-Nummer bestimmt, die momentan bei den Vergleichen verwendet wird. Eine zweite Schleife 1405 iteriert über jeden Wortschlüssel W im Seitenschlüssel 509 für die Seite. Wie oben beschrieben erzeugt während eines Indexierens jedes Wort einen Wortschlüssel mit allen N-Grammen für das Wort. Durch diese Schleife wird jeder Wortschlüssel (und somit jedes Wort) mit jedem Anfragewort verglichen. In einer abschließenden Schleife 1407 wird über jedes N-Gramm in einem Wortschlüssel iteriert.
  • Im Kern dieser Schleifen vergleicht 1409 das Sucheausführungsmodul 129 das momentane N-Gramm des Anfrageworts Q mit dem momentanen N-Gramm des Wortschlüssels. Falls sie gleich sind, wird der Wortschlüsselübereinstimmungszähler inkrementiert 1411 (d. h. das Wortschlüsselübereinstimmungszählerarray [Q, W] wird für die momentanen Iterationen von Q und W inkrementiert). Das bedeutet, daß ein N-Gramm des Anfragewortes Q mit einem N- Gramm eines Wortes auf der Seite übereinstimmt. Der Zähler verfolgt die Anzahl dieser Übereinstimmungen.
  • Das Sucheausführungsmodul 129 bestimmt 1413 dann, ob ausreichende Übereinstimmungen bestehen (unter Verwendung des Wertes des Wortschlüsselübereinstimmungszählerarrays [Q, W]), um die Übereinstimmung zwischen dem Anfragewort Q selbst und dem Wort selbst anzuzeigen. Wiederum basiert dieser Test auf dem Übereinstimmungsparameter E. Somit muß, falls eine exakte Übereinstimmung erforderlich ist (E = 100), jedes N-Gramm im Wortschlüssel W mit jedem N-Gramm im Anfragewort Q übereinstimmen. D. h.: Wortschlüsselübereinstimmungszählerarray [Q, W] = KQ,wobei KQ die Anzahl von N-Grammen im Anfragewort Q ist. Falls eine exakte Übereinstimmung nicht erforderlich ist (E < 100), müssen einige Prozent übereinstimmen. Im allgemeinen:
  • Figure 00300001
  • Falls dieser Test erfüllt ist, setzt 1414 das Sucheausführungsmodul 129 den Ergebnispufferspeicher für die Speicherbank und den Seiteneintrag 411 so, daß ein Treffer für die Suchanfrage angezeigt wird. Die innere Schleife 1407 muß nicht abgeschlossen werden, da genügend N-Gramme übereinstimmen.
  • Das Sucheausführungsmodul 129 fährt dann fort, die Schleifen 1405 und 1403 abzuarbeiten, wobei die oben dargestellte Auswertung für jedes Wort im Wortschlüssel W und für jeden Wortschlüssel W im momentanen Seitenschlüssel 509 (gesteuert durch die Schleife 1301, siehe 13) abgeschlossen wird.
  • Wieder mit Bezug auf 13 wird der momentane Seiteneintrag 413 für jedes Anfragewort Q bearbeitet 1309. Sobald alle Anfrageworte in der beschriebenen Weise analysiert wurden, bestimmt 1313 das Sucheausführungsmodul 129, ob die Suchanfrage irgendwelche Boolesche Operationen beinhaltet. Falls eine Boolesche Operation gewünscht ist, führt 1315 das Sucheausführungsmodul 129 die Boolesche Bearbeitung aus. Die Boolesche Bearbeitung 1315 kann in herkömmlicher Weise ausgeführt werden, da an diesem Punkt das Sucheausführungsmodul 129 bereits identifiziert hat, ob das Anfragewort Q für die momentane Seite einen Treffer hat. In den Ergebnispufferspeichern müssen nur falsche Bedingungen identifiziert werden, da Seiten, die die Boolesche Anfrage erfüllen, zum Nutzer zurückgegeben werden. Die Boolesche Bearbeitung 1315 ist im allgemeinen wie folgt:
  • Falls das Anfragewort Q ein Argument für eine AND-Operation ist und das Anfragewort Q auf der Seite nicht auftritt (was durch den Wortschlüsselübereinstimmungszähler bestimmt wird), wird die Seite als abgelehnt markiert.
  • Falls das Anfragewort Q ein Argument für eine NOT-Operation ist und das Anfragewort Q auf der Seite vorkommt, wird die Seite als abgelehnt markiert.
  • Falls irgendein Paar von Anfrageworten Q1, Q2 Argumente für eine XOR-Operation sind und falls entweder nur beide oder keines davon auf der Seite gefunden wird, wird die Seite als abgelehnt markiert.
  • Falls das Anfragewort Q ein Satz ist (eine Folge von Worten in Anführungszeichen) und dieselbe Sequenz nicht gefunden wird, wird die Seite als abgelehnt markiert.
  • Nach der Booleschen Bearbeitung 1315 setzt das Sucheausführungsmodul 129 seine Tätigkeit fort.
  • Falls eine Boolesche Bearbeitung 1315 nicht erforderlich ist, setzt das Sucheausführungsmodul 129 die Abarbeitung der Schleife 1301 fort und geht zum nächsten Seiteneintrag 413 in der Speicherbank 217. Wenn dies ausgeführt ist, gibt das Sucheausführungsmodul 129 die Steuerung zum Sucheablaufteil 123 zurück.
  • Wiederum mit Bezug auf 11 ruft das Sucheablaufteil 123 dann das Suchlistenmodul 131 auf, um die Ergebnisse der Suchprozesse zusammenzuführen 1113. Die Zusammenführung der Suchergebnisse ist zweckmäßig, da die Seiten eines gegebenen Dokuments sich in mehreren Speicherbanken 217 befinden können. Das Suchlistenmodul 131 überprüft den Ergebnispufferspeicher und identifiziert die gerade bearbeitete Speicherbank 217. Der Seiteneintrag 413 entsprechend der Speicherbank 217 und dem Speicherbankoffset 411 jedes Treffers wird dann bestimmt und das Suchlistenmodul 131 greift auf die Dokumentnummer 403 zu, um das Dokument zu erhalten, das den Seiteneintrag 413 enthält. Von dort kann auf die DFS-Datei 211 zugegriffen werden und es wird auf die restlichen Seiten des Dokuments zugegriffen und diese werden zusammengeführt. Die zusammengeführte Liste der Dokumente, die mit der Suchanfrage übereinstimmen, wird zum Sucheablaufteil 123 zurückgegeben.
  • Das Sucheablaufteil 123 arbeitet dann die Schleifen 1105, 1103 für jede Speicherbank und jede Schublade ab 1115, wobei die entsprechenden Schubladen und Speicherbanken geschlossen werden. Die Ergebnisse für alle Speicherbanken und Schubladen werden in ähnlicher Weise zusammengeführt und es wird dann eine endgültige Liste mit Dokumenten, die mit der Suchanfrage übereinstimmen, zur Auswertung durch den Nutzer erstellt 1117 und angezeigt 711 (7). Das Sucheablaufteil 123 hebt dann die Zuordnung des während der Suche verwendeten Speichers auf und gibt die Steuerung an das Anwendungsablaufteil 119 zurück 1119.
  • Das N-Gramm-Zerlegeverfahren der vorliegenden Erfindung wurde mit Bezug auf Informations- und Rückgewinnungssysteme beschrieben. Jedoch sind viele andere Verwendungen einer N-Gramm-Zerlegung vom Umfang der vorliegenden Erfindung gemäß den Ansprüchen umfaßt. Eine N-Gramm-Zerlegung kann in Verbindung mit anderen Textverarbeitungsverfahren oder -systemen zur Verbesserung ihrer Leistungsfähigkeit verwendet werden. Beispielsweise könnte eine N-Gramm-Zerlegung mit einem Rechtschreibprüfungsprogramm entweder Batch-weise oder interaktiv angewandt werden, um falsch geschriebene Worte zu identifizieren und um eine genauere Liste möglicher Ersetzungen für jedes falsch geschriebene Wort anzugeben. Ähnlich können N-Gramme bei computerbasierten Wörterbüchern oder Thesauri verwendet werden, um Wortstämme zu identifizieren und um die entsprechende Definition oder Synonyme, Antonyme oder dergleichen nachzuschlagen. Auch können N-Gramme auf ähnliche Weise in Verbindung mit Grammatikprüfprogrammen verwendet werden, um Worte vor einer Grammatikalischen Analyse zu identifizieren. Diese und andere Verwendungsmöglichkeiten einer N-Gramm-Zerlegung, um Textdaten zu verarbeiten, liegen allesamt innerhalb des Umfangs der vorliegenden Erfindung gemäß den Ansprüchen.

Claims (11)

  1. Ein computerlesbarer Speicher, der eine Speicherstruktur zum Indexieren von Dokumenten (205) durch n-Gramme umfaßt, wobei jedes Dokument (205) eine Dokumentnummer und einen Dokumentnamen und zumindest eine Seite (215) aufweist, wobei jede Seite (215) eine Seitennummer aufweist, umfassend: eine Bank (217), die eine Liste von Seiteneinträgen (413) aufweist, wobei jeder Seiteneintrag (413) eine Seite (215) durch die Dokumentnummer des Dokuments (205), das die Seite (215) enthält, und eine Seitennummer im Dokument (205) identifiziert; und einen Bankindex (223), der der Bank (217) zugeordnet ist, umfassend: i) eine Mehrzahl von n-Gramm-Eintragskarten (505), wobei jede n-Gramm-Eintragskarte (505) einem einzelnen n-Gramm zugeordnet ist, wobei zumindest eine n-Gramm-Eintragskarte (505) einen Index zu einer Indexeintragskarte (507) aufweist, wobei zumindest eine Seite (215), die in der Bank (217) identifiziert ist, das n-Gramm beinhaltet, das der n-Gramm-Eintragskarte (505) zugeordnet ist; ii) eine Mehrzahl von Indexeintragskarten (507), wobei jede Indexeintragskarte (507) durch eine der n-Gramm-Eintragskarten (505) indexiert ist, wobei jede Indexeintragskarte (507) eine Mehrzahl von Positionen aufweist, wobei jede Position einem Seiteneintrag (413) in der Bank (217) entspricht und jede Position anzeigt, ob der entsprechende Seiteneintrag (413) in der Bank (217) eine Seite (215) identifiziert oder nicht, die das n-Gramm enthält, das der n-Gramm-Eintragskarte (505) zugeordnet ist, die die Indexeintragskarte (507) indexiert.
  2. Computerlesbarer Speicher nach Anspruch 1, wobei: a) jeder Seiteneintrag (413) in die Bank (217) einen Offset (411) aufweist; b) jede Indexeintragskarte (507) eine Mehrzahl von Bitpositionen beinhaltet, wobei jede Bitposition einem Seiteneintrag (413) in der Bank (217) zugeordnet ist, wobei jede Bitposition einen ersten Wert aufweist, wobei die Seite (215), die im Seiteneintrag (413) identifiziert ist, der der Bitposition zugeordnet ist, das n-Gramm beinhaltet, das der n-Gramm-Eintragskarte (505) zugeordnet ist, die die Indexeintragskarte (507) indexiert, und einen zweiten Wert aufweist, wobei die Seite (215), die im Seiteneintrag (413) identifiziert ist, der der Bitposition zugeordnet ist, das n-Gramm nicht beinhaltet, das der n-Gramm-Eintragskarte (505) zugeordnet ist, die die Indexeintragskarte (507) indexiert.
  3. Computerlesbarer Speicher nach Anspruch 1 oder 2, welcher des weiteren umfaßt: a) einen Einschub (201), der beinhaltet: i) eine Liste von Dokumenten (225), wobei jedes Dokument (205) eindeutig in der Liste identifiziert ist; ii) eine Mehrzahl von Banken (217) und zugeordneten Bankindizies (223); und iii) eine Bankliste (219), die für jede der Mehrzahl von Banken (217) einen Zählwert einer Anzahl leerer Seiteneinträge (413) in der Bank (217) beinhaltet.
  4. Computerlesbarer Speicher nach einem der Ansprüche 1 bis 3, wobei jede Bank (217) des weiteren aufweist: a) eine Seitenschlüsseltabelle (517), die zumindest einen Seitenschlüssel (509) beinhaltet, wobei jeder Seitenschlüssel (509) eindeutig einem Seiteneintrag (413) in der Bank (217) zugeordnet ist, und umfaßt: b) für jedes Wort auf der Seite (215) eine Liste der n-Gramme in dem Wort.
  5. Computerimplementiertes Verfahren zum Wiedergewinnen eines Dokuments (205), umfassend: a) Speichern der Speicherstruktur nach Anspruch 1 in einem computerlesbaren Speicher; b) Empfangen eines Anfrageterms; c) für jede einer Anzahl von n-Grammen in dem Anfrageterm: i) Bestimmen aus der n-Gramm-Eintragskarte (505) im Bankindex, der dem n-Gramm des Anfrageterms zugeordnet ist, ob eine Indexeintragskarte (507) für das n-Gramm existiert; ii) in Reaktion auf eine bestehende Indexeintragskarte (507), Bestimmen jedes Seiteneintrags (513) in der Bank (217) aus der Indexeintragskarte (507), der eine Seite (215) identifiziert, welche das n-Gramm enthält, das der Indexeintragskarte (507) zugeordnet ist; und iii) Inkrementieren eines n-Gramm-Zählers für jede Seite (215), die das n-Gramm enthält; d) Bestimmen für jede Seite (215) in der Bank (217), ob der n-Gramm-Zähler für die Seite (215) ausreichend nahe an der Anzahl von n-Grammen in dem Anfrageterm ist, um anzuzeigen, daß die Seite (215) den Anfrageterm enthält; und e) in Reaktion auf den n-Gramm-Zähler für eine Seite (215), der ausreichend nahe an der Anzahl von n-Grammen im Anfrageterm ist, Wiedergewinnen des Dokuments (205), das die Seite (215) enthält, für eine nachfolgende Anfrageanalyse.
  6. Computerimplementiertes Verfahren nach Anspruch 5, wobei der n-Gramm-Zähler für die Seite (215) ausreichend nahe an der Anzahl von n-Grammen in dem Anfrageterm ist, wenn:
    Figure 00350001
    wobei P die Seite (215) ist; G der n-Gramm-Übereinstimmungszähler für die Seite P ist; K die Anzahl von n-Grammen in dem Anfrageterm ist; und E ein ausgewählter Übereinstimmungsparameter ist, um den Prozentsatz von Übereinstimmungen von G und K zu Steuern.
  7. Computerimplementiertes Verfahren zum Indexieren einer Mehrzahl gespeicherter Dokumente durch n-Gramme, wobei das Verfahren umfaßt: a) Speichern der Speicherstruktur nach Anspruch 1 in einem computerlesbaren Speicher; b) Empfangen einer momentanen Seite, die indexiert werden soll; c) Erzeugen eines Eintrags für die momentane Seite in der Liste indexierter Seiten; d) Speichern einer Liste von n-Grammen in dem Wort für jedes Nicht-Stop-Wort der momentanen Seite; und e) Aktualisieren des Eintrags für die momentane Seite in der Indexeintragskarte (507), die dem n-Gramm zugeordnet ist, um anzuzeigen, daß die momentane Seite das n-Gramm beinhaltet, für jedes n-Gramm.
  8. Verfahren nach Anspruch 7, welches ein Speichern einer Liste von n-Grammen in dem Wort für ein Nicht-Stop-Wort der momentanen Seite umfaßt, durch: iii.1) Bestimmen einer n-Gramm-Nummer für jedes n-Gramm in dem Wort; iii.2) Speichern der n-Gramm-Nummer für jedes n-Gramm in dem Wort; und iii.3) Zuordnen der gespeicherten n-Gramm-Nummern zur momentanen Seite.
  9. Verfahren nach Anspruch 7, wobei das Verfahren umfaßt: Empfangen eines Anfrageterms, und für jedes einer Anzahl von n-Grammen in dem Anfrageterm: Bestimmen, ob es dort eine Indexeintragskarte (507) gibt, die dem n-Gramm zugeordnet ist; und in Reaktion auf eine bestehende Indexeintragskarte (507), Bestimmen jeder Seite (215) in der Liste indexierter Seiten, die das n-Gramm enthält, das der Karte zugeordnet ist, aus der Indexeintragskarte (507); Bestimmen, ob die Seite (215) eine ausreichende Anzahl der n-Gramme in dem Anfrageterm enthält für jede Seite (215) in der Liste indexierter Seiten, um anzuzeigen, daß die Seite (215) den Anfrageterm enthält; und Wiedergewinnen des Dokuments (205), das die Seite (215) enthält, für eine nachfolgende Anfrageanalyse in Reaktion auf eine Seite (215), die den Anfrageterm enthält.
  10. Verfahren nach Anspruch 9, das ein Bestimmen umfaßt, ob eine Seite (215) eine ausreichende Anzahl des n-Gramms in dem Anfrageterm enthält, durch die Gleichung:
    Figure 00360001
    wobei: P die Seite (215) ist; G die Anzahl von n-Grammen in dem Anfrageterm ist, die in der Seite P enthalten sind; K die Anzahl von n-Grammen in dem Anfrageterm ist; und E ein Übereinstimmungsparameter ist, der ausgewählt wurde, um den Prozentsatz von Übereinstimmungen von G und K zu steuern.
  11. Computerlesbarer Speicher, der darin ein Computerprogramm beinhaltet, das einen Prozessor konfiguriert und steuert, um die Schritte nach einem der Ansprüche 5 bis 10 auszuführen.
DE69631457T 1995-04-10 1996-04-10 Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung Expired - Lifetime DE69631457T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US419126 1995-04-10
US08/419,126 US5706365A (en) 1995-04-10 1995-04-10 System and method for portable document indexing using n-gram word decomposition
PCT/US1996/004945 WO1996032686A1 (en) 1995-04-10 1996-04-10 System and method for portable document indexing using n-gram word decomposition

Publications (2)

Publication Number Publication Date
DE69631457D1 DE69631457D1 (de) 2004-03-11
DE69631457T2 true DE69631457T2 (de) 2004-09-16

Family

ID=23660908

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69631457T Expired - Lifetime DE69631457T2 (de) 1995-04-10 1996-04-10 Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung

Country Status (10)

Country Link
US (1) US5706365A (de)
EP (1) EP0764305B1 (de)
JP (2) JP4162711B2 (de)
AU (1) AU713572B2 (de)
BR (1) BR9606306A (de)
DE (1) DE69631457T2 (de)
ES (1) ES2214535T3 (de)
NO (1) NO965254L (de)
NZ (1) NZ306268A (de)
WO (1) WO1996032686A1 (de)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415307B2 (en) * 1994-10-24 2002-07-02 P2I Limited Publication file conversion and display
US6243172B1 (en) * 1995-01-18 2001-06-05 Varis Corporation Method and system for merging variable text and images into bitmaps defined by a page description language
US5729665A (en) * 1995-01-18 1998-03-17 Varis Corporation Method of utilizing variable data fields with a page description language
US5875443A (en) * 1996-01-30 1999-02-23 Sun Microsystems, Inc. Internet-based spelling checker dictionary system with automatic updating
US5864630A (en) * 1996-11-20 1999-01-26 At&T Corp Multi-modal method for locating objects in images
US5852822A (en) * 1996-12-09 1998-12-22 Oracle Corporation Index-only tables with nested group keys
GB9701866D0 (en) * 1997-01-30 1997-03-19 British Telecomm Information retrieval
US5809496A (en) * 1997-02-20 1998-09-15 International Business Machines Corporation Hybrid search
JP3554459B2 (ja) * 1997-02-26 2004-08-18 株式会社日立製作所 テキストデータ登録検索方法
US5978797A (en) * 1997-07-09 1999-11-02 Nec Research Institute, Inc. Multistage intelligent string comparison method
US6016546A (en) * 1997-07-10 2000-01-18 International Business Machines Corporation Efficient detection of computer viruses and other data traits
US6487568B1 (en) * 1997-07-18 2002-11-26 Tesseron, Ltd. Method and system for flowing data to an arbitrary path defined by a page description language
US6118887A (en) * 1997-10-10 2000-09-12 At&T Corp. Robust multi-modal method for recognizing objects
BE1012981A3 (nl) * 1998-04-22 2001-07-03 Het Babbage Inst Voor Kennis E Werkwijze en systeem voor het weervinden van documenten via een elektronisch databestand.
US5991714A (en) * 1998-04-22 1999-11-23 The United States Of America As Represented By The National Security Agency Method of identifying data type and locating in a file
WO2000007123A1 (en) * 1998-07-28 2000-02-10 Triada, Ltd. Methods of deleting information in n-gram tree structures
US6169969B1 (en) * 1998-08-07 2001-01-02 The United States Of America As Represented By The Director Of The National Security Agency Device and method for full-text large-dictionary string matching using n-gram hashing
JP3696745B2 (ja) 1999-02-09 2005-09-21 株式会社日立製作所 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US7031985B1 (en) * 1999-03-08 2006-04-18 Oracle International Corporation Lexical cache
US6516329B1 (en) * 1999-04-26 2003-02-04 Gateway, Inc. Method of maintaining search results pages
FR2797067B1 (fr) * 1999-06-09 2005-07-29 Ricoh Kk Procede, dispositif et support lisible par ordinateur pour effectuer une recherche de document
US20020023123A1 (en) * 1999-07-26 2002-02-21 Justin P. Madison Geographic data locator
JP4115048B2 (ja) * 1999-08-17 2008-07-09 株式会社リコー 文書検索システム
US6785810B1 (en) * 1999-08-31 2004-08-31 Espoc, Inc. System and method for providing secure transmission, search, and storage of data
AU784194B2 (en) 1999-11-10 2006-02-16 Pandora Media, Inc. Internet radio and broadcast method
US7454509B2 (en) * 1999-11-10 2008-11-18 Yahoo! Inc. Online playback system with community bias
US6859805B1 (en) * 1999-11-29 2005-02-22 Actuate Corporation Method and apparatus for generating page-level security in a computer generated report
US6772156B1 (en) 1999-11-29 2004-08-03 Actuate Corporation Method and apparatus for creating and displaying a table of content for a computer-generated report having page-level security
US6389467B1 (en) 2000-01-24 2002-05-14 Friskit, Inc. Streaming media search and continuous playback system of media resources located by multiple network addresses
CN1411586A (zh) * 2000-03-06 2003-04-16 埃阿凯福斯公司 包括指定文档位置处字的多个译码的用于创建扫描文档搜索字索引的***和方法
US6950553B1 (en) * 2000-03-23 2005-09-27 Cardiff Software, Inc. Method and system for searching form features for form identification
US7251665B1 (en) * 2000-05-03 2007-07-31 Yahoo! Inc. Determining a known character string equivalent to a query string
US8352331B2 (en) 2000-05-03 2013-01-08 Yahoo! Inc. Relationship discovery engine
US7162482B1 (en) * 2000-05-03 2007-01-09 Musicmatch, Inc. Information retrieval engine
US7024485B2 (en) * 2000-05-03 2006-04-04 Yahoo! Inc. System for controlling and enforcing playback restrictions for a media file by splitting the media file into usable and unusable portions for playback
US6556990B1 (en) * 2000-05-16 2003-04-29 Sun Microsystems, Inc. Method and apparatus for facilitating wildcard searches within a relational database
KR100406671B1 (ko) * 2000-07-24 2003-11-21 주식회사 유니마이다스 문장 표절 및 도용 검색 방법
JP5033277B2 (ja) * 2000-09-12 2012-09-26 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置および画像処理方法並びにコンピュータ読み取り可能な記録媒体
DE10048478C2 (de) * 2000-09-29 2003-05-28 Siemens Ag Verfahren zum Zugriff auf eine Speichereinheit bei der Suche nach Teilzeichenfolgen
US8271333B1 (en) 2000-11-02 2012-09-18 Yahoo! Inc. Content-related wallpaper
US7406529B2 (en) * 2001-02-09 2008-07-29 Yahoo! Inc. System and method for detecting and verifying digitized content over a computer network
US20020156809A1 (en) * 2001-03-07 2002-10-24 O'brien Thomas A. Apparatus and method for locating and presenting electronic content
US7574513B2 (en) 2001-04-30 2009-08-11 Yahoo! Inc. Controllable track-skipping
SG103289A1 (en) * 2001-05-25 2004-04-29 Meng Soon Cheo System for indexing textual and non-textual files
EP1407386A2 (de) * 2001-06-21 2004-04-14 ISC, Inc. Datenbankindizierungsverfahren und vorrichtung
JP4342753B2 (ja) 2001-08-10 2009-10-14 株式会社リコー 文書検索装置、文書検索方法、プログラム及びコンピュータに読み取り可能な記憶媒体
US6925475B2 (en) * 2001-10-12 2005-08-02 Commissariat A L'energie Atomique Process and apparatus for management of multimedia databases
US7031910B2 (en) * 2001-10-16 2006-04-18 Xerox Corporation Method and system for encoding and accessing linguistic frequency data
US20030149566A1 (en) * 2002-01-02 2003-08-07 Esther Levin System and method for a spoken language interface to a large database of changing records
US7707221B1 (en) 2002-04-03 2010-04-27 Yahoo! Inc. Associating and linking compact disc metadata
US7305483B2 (en) 2002-04-25 2007-12-04 Yahoo! Inc. Method for the real-time distribution of streaming data on a network
US7370271B2 (en) * 2002-10-30 2008-05-06 Actuate Corporation Methods and apparatus for generating a spreadsheet report template
US7743061B2 (en) * 2002-11-12 2010-06-22 Proximate Technologies, Llc Document search method with interactively employed distance graphics display
US7284009B2 (en) * 2002-12-13 2007-10-16 Sun Microsystems, Inc. System and method for command line prediction
US20050004799A1 (en) * 2002-12-31 2005-01-06 Yevgenly Lyudovyk System and method for a spoken language interface to a large database of changing records
US6990224B2 (en) * 2003-05-15 2006-01-24 Federal Reserve Bank Of Atlanta Method and system for communicating and matching electronic files for financial transactions
US7672873B2 (en) * 2003-09-10 2010-03-02 Yahoo! Inc. Music purchasing and playing system and method
US7644076B1 (en) * 2003-09-12 2010-01-05 Teradata Us, Inc. Clustering strings using N-grams
US7325013B2 (en) * 2004-04-15 2008-01-29 Id3Man, Inc. Database with efficient fuzzy matching
US8874504B2 (en) * 2004-12-03 2014-10-28 Google Inc. Processing techniques for visual capture data from a rendered document
US8131674B2 (en) 2004-06-25 2012-03-06 Apple Inc. Methods and systems for managing data
US7730012B2 (en) * 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7693856B2 (en) * 2004-06-25 2010-04-06 Apple Inc. Methods and systems for managing data
US7305385B1 (en) * 2004-09-10 2007-12-04 Aol Llc N-gram based text searching
US7925658B2 (en) * 2004-09-17 2011-04-12 Actuate Corporation Methods and apparatus for mapping a hierarchical data structure to a flat data structure for use in generating a report
US7478081B2 (en) * 2004-11-05 2009-01-13 International Business Machines Corporation Selection of a set of optimal n-grams for indexing string data in a DBMS system under space constraints introduced by the system
JP4314204B2 (ja) * 2005-03-11 2009-08-12 株式会社東芝 文書管理方法、システム及びプログラム
US7870480B1 (en) 2005-03-14 2011-01-11 Actuate Corporation Methods and apparatus for storing and retrieving annotations accessible by a plurality of reports
KR100622129B1 (ko) 2005-04-14 2006-09-19 한국전자통신연구원 동적으로 변화하는 웹 페이지의 변조 점검 시스템 및 방법
US7991767B2 (en) * 2005-04-29 2011-08-02 International Business Machines Corporation Method for providing a shared search index in a peer to peer network
US7685106B2 (en) * 2005-04-29 2010-03-23 International Business Machines Corporation Sharing of full text index entries across application boundaries
US8700404B1 (en) * 2005-08-27 2014-04-15 At&T Intellectual Property Ii, L.P. System and method for using semantic and syntactic graphs for utterance classification
US7805430B2 (en) * 2005-12-22 2010-09-28 Sap Ag Evaluation of name prefix and suffix during a search
US8307276B2 (en) * 2006-05-19 2012-11-06 Symantec Corporation Distributed content verification and indexing
US20080155399A1 (en) * 2006-12-20 2008-06-26 Yahoo! Inc. System and method for indexing a document that includes a misspelled word
US8583419B2 (en) * 2007-04-02 2013-11-12 Syed Yasin Latent metonymical analysis and indexing (LMAI)
JP5224851B2 (ja) * 2008-02-27 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索エンジン、検索システム、検索方法およびプログラム
KR101615164B1 (ko) * 2009-03-20 2016-04-26 삼성전자주식회사 엔-그램 기반의 질의 처리 장치 및 그 방법
US20100306203A1 (en) * 2009-06-02 2010-12-02 Index Logic, Llc Systematic presentation of the contents of one or more documents
DE102009031872A1 (de) 2009-07-06 2011-01-13 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur automatischen Suche nach Dokumenten in einem Datenspeicher
US8761512B1 (en) * 2009-12-03 2014-06-24 Google Inc. Query by image
JP5418218B2 (ja) * 2009-12-25 2014-02-19 富士通株式会社 情報処理プログラム、情報検索プログラム、情報処理装置、および情報検索装置
JP5083367B2 (ja) * 2010-04-27 2012-11-28 カシオ計算機株式会社 検索装置、検索方法、ならびに、コンピュータプログラム
JP5708117B2 (ja) * 2011-03-24 2015-04-30 カシオ計算機株式会社 Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム
EP2706466A4 (de) * 2011-05-02 2015-06-17 Fujitsu Ltd Extraktionsverfahren, informationsverarbeitungsverfahren, extraktionsprogramm, informationsverarbeitungsprogramm, extraktionsvorrichtung und informationsverarbeitungsvorrichtung
US8694474B2 (en) * 2011-07-06 2014-04-08 Microsoft Corporation Block entropy encoding for word compression
JP5802924B2 (ja) * 2011-07-29 2015-11-04 アーカイブ技術研究所株式会社 文書検索システムおよび文書検索プログラム
US9218411B2 (en) 2012-08-07 2015-12-22 International Business Machines Corporation Incremental dynamic document index generation
US9026522B2 (en) * 2012-10-09 2015-05-05 Verisign, Inc. Searchable web whois
US10318523B2 (en) 2014-02-06 2019-06-11 The Johns Hopkins University Apparatus and method for aligning token sequences with block permutations
US11282091B2 (en) 2016-09-30 2022-03-22 Transitiv, Inc. Systems, methods, and devices for dynamic page feed management
JP2018121133A (ja) * 2017-01-23 2018-08-02 京セラドキュメントソリューションズ株式会社 ファクシミリ装置
US11030151B2 (en) * 2017-03-29 2021-06-08 AVAST Software s.r.o. Constructing an inverted index
US10459999B1 (en) * 2018-07-20 2019-10-29 Scrappycito, Llc System and method for concise display of query results via thumbnails with indicative images and differentiating terms
JP2023023191A (ja) * 2021-08-04 2023-02-16 シャープ株式会社 記憶方法、記憶システム、読取装置、及び画像処理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4495566A (en) * 1981-09-30 1985-01-22 System Development Corporation Method and means using digital data processing means for locating representations in a stored textual data base
US5469354A (en) * 1989-06-14 1995-11-21 Hitachi, Ltd. Document data processing method and apparatus for document retrieval
US5062143A (en) * 1990-02-23 1991-10-29 Harris Corporation Trigram-based method of language identification
US5062142A (en) * 1990-12-14 1991-10-29 General Electric Company Data processor producing a medial axis representation of an extended region
US5265065A (en) * 1991-10-08 1993-11-23 West Publishing Company Method and apparatus for information retrieval from a database by replacing domain specific stemmed phases in a natural language to create a search query
US5375235A (en) * 1991-11-05 1994-12-20 Northern Telecom Limited Method of indexing keywords for searching in a database recorded on an information recording medium
GB9220404D0 (en) * 1992-08-20 1992-11-11 Nat Security Agency Method of identifying,retrieving and sorting documents
US5412807A (en) * 1992-08-20 1995-05-02 Microsoft Corporation System and method for text searching using an n-ary search tree
JP2990000B2 (ja) * 1993-09-01 1999-12-13 北海道日本電気ソフトウェア株式会社 検索システム

Also Published As

Publication number Publication date
JP2006155657A (ja) 2006-06-15
WO1996032686A1 (en) 1996-10-17
JP4559371B2 (ja) 2010-10-06
NZ306268A (en) 1998-05-27
ES2214535T3 (es) 2004-09-16
JPH10501912A (ja) 1998-02-17
DE69631457D1 (de) 2004-03-11
EP0764305A1 (de) 1997-03-26
BR9606306A (pt) 1997-09-09
US5706365A (en) 1998-01-06
NO965254D0 (no) 1996-12-09
JP4162711B2 (ja) 2008-10-08
AU5449696A (en) 1996-10-30
EP0764305B1 (de) 2004-02-04
NO965254L (no) 1997-02-06
AU713572B2 (en) 1999-12-02

Similar Documents

Publication Publication Date Title
DE69631457T2 (de) Vorrichtung und verfahren zum übertragbaren indexieren von dokumenten gemäss einer n-gram-wortzerlegung
DE69032712T2 (de) Hierarchischer vorsuch-typ dokument suchverfahren, vorrichtung dazu, sowie eine magnetische plattenanordnung für diese vorrichtung
DE69900854T2 (de) Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät
DE69526168T2 (de) Verfahren und Gerät zur Klassifikation von Dokumentinformationen
DE69426541T2 (de) Dokumentdetektionssystem mit Darstellung des Detektionsresultats zur Erleichterung des Verständnis des Benutzers
DE69131941T2 (de) System und verfahren für informationsauffindung
DE69229521T2 (de) Datenbankauffindungssystem
DE69432575T2 (de) Dokumentenerkennungssystem mit verbesserter Wirksamkeit der Dokumentenerkennung
DE3852341T2 (de) Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung.
DE3650736T2 (de) Informationswiederauffindungsverfahren
DE69804495T2 (de) Informationsmanagement und wiedergewinnung von schlüsselbegriffen
DE69811066T2 (de) Datenzusammenfassungsgerät.
DE69028592T2 (de) Gerät zur automatischen Generierung eines Index
DE3853894T2 (de) Auf Paradigmen basierende morphologische Textanalyse für natürliche Sprachen.
DE69425607T2 (de) Selektive Einrichtung und Verfahren zur Dokumentenwiederauffindung.
DE69226611T2 (de) Verfahren und Gerät zur Verarbeitung eines Dokumentbildes
DE69430081T2 (de) Dokumentensurrogate
DE69911842T2 (de) Verfahren und Vorrichtung zum Wiederauffinden von Information und entsprechendes Speichermedium
DE112007000053T5 (de) System und Verfahren zur intelligenten Informationsgewinnung und -verarbeitung
DE69710309T2 (de) System für betriebliche veröffentlichung und speicherung
DE60118399T2 (de) System und verfahren zur automatischen aufbereitung und suche von abgetasteten dokumenten
DE69934195T2 (de) Identifikation einer Wortgruppe durch modifizierte Schlüsselwörter, die aus Transformationen von aufeinanderfolgenden Suffixen erzeugt sind
DE112018001165T5 (de) Automatisierte dokumentenanalyse für unterschiedliche natürliche sprachen
DE69426046T2 (de) Auf vom Menschen erzeugten Bildern basierender Datenzugriff
DE112018002047T5 (de) Dokumentenanalyse mit mehreren faktoren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition