DE3751421T2 - Verfahren und Vorrichtung zur Textkomprimierung und -expandierung. - Google Patents

Verfahren und Vorrichtung zur Textkomprimierung und -expandierung.

Info

Publication number
DE3751421T2
DE3751421T2 DE3751421T DE3751421T DE3751421T2 DE 3751421 T2 DE3751421 T2 DE 3751421T2 DE 3751421 T DE3751421 T DE 3751421T DE 3751421 T DE3751421 T DE 3751421T DE 3751421 T2 DE3751421 T2 DE 3751421T2
Authority
DE
Germany
Prior art keywords
byte
word
compression
dictionary
compressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3751421T
Other languages
English (en)
Other versions
DE3751421D1 (de
Inventor
Ronald Jay Lisle
Eual Aaron Moss
John Hoyt Ryder
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3751421D1 publication Critical patent/DE3751421D1/de
Application granted granted Critical
Publication of DE3751421T2 publication Critical patent/DE3751421T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Document Processing Apparatus (AREA)

Description

    Gebiet der Erfindung
  • Diese Erfindung bezieht sich auf Textkomprimierungs- und -dekomprimierungsverfahren und -vorrichtungen
  • Stand der Technik
  • Auf diesem Gebiet existiert eine große Vielzahl von früheren Patentschriften und Veröffentlichungen. Die US-Patentschrift 4 545 032 behandelt beispielsweise eine der grundlegenden Technologien einer Verzeichnis- oder tabellarischen Konvertierung, bei der für den grundlegenden Wortschatz der englischen Sprache numerische Codes verwendet werden. Die Wörter werden jedoch in Vorsilben, Nachsilben und Wortstämme aufgegliedert, und es hat nicht den Anschein, daß ein gewichtetes Einordnen der Verzeichniseinträge oder Tabelleneinträge betrachtet oder angewandt wurde. Es hat auch nicht den Anschein, daß insgesamt der Entwurf so angelegt war, daß zwischen verschiedenen Tabellen oder Verzeichnissen auf der Grundlage von Verwendungsgebieten umgeschaltet werden könnte.
  • Die US-Patentschrift 4 597 057 zeigt ein weiteres typisches Beispiel einer Komprimierungstechnologie, bei der ASCII-codierter Standardtext in Alpha-, numerische und Interpunktionselemente als "Wörter" unterteilt werden können, wobei die "Wörter" in Vorsilben, Nachsilben und Wortstämme unterteilt werden. Die Vorsilben, Nachsilben und Wortstämme benutzten eine numerische Codierung in der Art, wie sie der vorstehend erwähnten Patentschrift 4 545 032 gleicht.
  • Die US-Patentschrift 4 295 124 ist ein frühes Beispiel einer Konvertierungsart mit Verzeichnis- oder Tabellensuche zur Anwendung numerischer Codes auf englische Textzeichen. Die eingegebenen ASCII-codierten Textwörter werden dazu benutzt, durch Anwendung eines Hash-Codes einen zweiten Darstellungscode zu erzeugen. Dieser Code kann als Speicheradresse zum Vergleich mit einem vorgeordneten Verzeichnis oder Speicher von Textwörtern benutzt werden. Wenn eine Übereinstimmung gefunden wurde, wird die Hash-Code-Adresse als Identifikator abgeschickt. Wenn keine Übereinstimmung gefunden wurde, wird ein Hilfsverzeichnis aufgebaut, aber das Wort wird bei seinem erstmaligen Auftreten unkomprimiert übertragen. Wenn das gleiche Wort das nächste Mal auftritt, werden beide Verzeichnisse überprüft, und wenn das Wort im zweiten gebildeten Verzeichnis gefunden wird, wird seine Hash-Code-Adresse abgeschickt. Obgleich diese Beschreibung eine wirksame und nützliche Technologie zu sein scheint, nutzt sie die Flexibilität der zahlreichen Verzeichnisse nicht, die für das Einsatzgebiet des Textes sorgfältig ausgewählt werden können, und sie scheint auch keine gewichtete Bewertungszahl zum Zuordnen von Einträgen in die Verzeichnisse zu benutzen.
  • Die US-Patentschrift 4 386 416 gleicht der vorstehend erwähnten Patentschrift 4 295 124, benutzt aber eine Codeumschaltung um anzuzeigen, ob ein Code aus einer Speicherbibliotheksadresse oder eine unterschiedlich codierte Darstellung von in der Bibliothek nicht gefundenen Wörtern benutzt werden. Wieder hat es den Anschein, daß für die Verzeichniseinträge keine gewichteten Bewertungszahlen benutzt worden sind, noch gibt es Anzeichen dafür, daß die Technologie des Einsatzes einer Einleitung oder eines Vorsatzes zur Identifizierung der einzelnen Untermenge der Verzeichnisse angewendet wurde, die bei einer gegebenen Textkomprimierung benutzt wurden.
  • Die grundlegende Codiertechnologie, die Verzeichnisse für Vorsilben, Nachsilben und Wortstämme benutzt, ist in zahlreichen Quellen zu finden, wie etwa in den Proceedings of the IEEE, Bd. 55, Nr. 3 vom März 1967, S. 390 bis 396, in einem Artikel von H.E. White mit dem Titel "Printed English Compression by Dictionary Encoding". In diesem Artikel ist eine Komprimierung von nur eins zu zwei zu finden, und es stellt sich heraus, daß er im allgemeinen den ersten beiden oben erwähnten Patentschriften gleicht.
  • Die eigentliche Verwendung von mehrfachen Tabellen oder Verzeichnissen ist nicht ganz neu. Ein Beispiel kann man in dem Artikel von J. Pike "Text Compression Using A Four-Bit Coding Scheme" finden, der im Computer Journal Bd. 24, Nr. 4, 1981, S. 324 bis 330, erschienen ist. Der Artikel läßt jedoch nicht erkennen, daß ein wirklich flexibles System unter Verwendung einer Vielzahl von Verzeichnis sen und einem Vorsatz oder einem Vorwort in dem komprimierten Text benutzt werden könnte, mit dem angezeigt wird, welche Auswahl von Verzeichnissen für die gegebene Komprimierung vorgenommen wurde. Weiterhin ist nirgendwo die Verwendung von gewichteten Einträgen zur Auswahl der Wörter beschrieben, welche die gegebenen Verzeichnisse umfassen sollen.
  • Auch Dokument WO-A-8 501 814 beschreibt die Verwendungen von zwei Verzeichnis sen zur Durchführung von Textkomprimierung, einem Ein-Byte-Verzeichnis für die am häufigsten benutzten Wörter und einem Zwei-Byte-Verzeichnis für die verbleibenden Wörter.
  • Ein früher Artikel mit dem Titel "Experiments in Text Eile Compression" von Rubin, der in den Communication of the ACM vom November 1976, Bd. 19, Nr. 11, S. 617 bis 623 erschienen ist, behandelt den Gegenstand der gewichteten Häufigkeit des Auftretens als Bewertungszahl für die Einordnung von Wörtern beim Aufbau von Verzeichnissen zur Textkomprimierung. Aufgrund der von diesem Autor durchgeführten Versuche wurde jedoch geschlußfolgert, daß die Häufigkeit das beste Verfahren für maximale Einsparungen bei der Auswahl von Eingabegruppen war, d. h. von Verzeichniseinträgen. Dadurch wurde die Möglichkeit nicht in Betracht gezogen, daß in unterschiedlichen Verzeichnissen für das gleiche Wort unterschiedliche Rangordnungen vorkommen könnten und daß die Umschaltung zwischen Verzeichnis sen, die für einen gegebenen Text besser geeignet sind, eine Möglichkeit insgesamt ist.
  • Eine frühe Veröffentlichung, welche die Verwendung von Codeumschaltzeichen zeigt, um die Größe eines Verzeichnisses effektiv auszudehnen oder um von der Verwendung eines Verzeichnisses zu einem anderen zu wechseln, ist der Artikel mit dem Titel "A New Technique for Compression and Data Storage" von Hahn, der in den Communication of the ACM vom August 1974, Bd. 17, Nr. 8, S. 434 bis 436, erschienen ist. Dieser Artikel zeigt auch das dynamische Verfahren der Hinzufügung auftretender neuer oder unbekannter Symbole oder Wörter zu dem Verzeichnis. Es werden jedoch Zeichengruppen anstatt Wörter benutzt, und der Autor merkt an, daß die Versuche mit der Technologie einen etwas geringeren Komprimierungsgrad aufwiesen als Wortcodes für die Komprimierung englischen Textes.
  • Eine Übersichtsveröffentlichung, die verschiedene Verfahren behandelt, aber weder die Verwendung von Technologien einer gewichteten Worthäufigkeit noch den Einsatz eines Vorwortes oder Vorsatzes zum Anzeigen der Verwendung mehrfacher Verzeichnisse beschreibt, findet sich in den IEEE Transactions on Software Engineering, Bd. SE6, Nr. 4 vom Juli 1980, S. 340 bis 347 in einem Artikel mit dem Titel "Overhead Storage Considerations and a Multi-Linear Method for Data File Compression" von Young et al. Ein ähnlicher Überblick ist in der Computer publication vom April 1981, S. 71 bis 75 in einem Artikel mit dem Titel "An Overview of Data Compression Techniques" von Reghbati zu finden.
  • Abschließend stellt ein Artikel von Weiss et al., erschienen im Journal of Library Automation, Bd. 11, Nr. 2 vom Juni 1978, S. 97 bis 105, ein begrenztes Verzeichnisschema dar, das eine Codeumschaltung oder einen Verzeichnisanzeigecode benutzt, um dem Dekomprimierungssystem zu zeigen, wenn ein komprimiertes Wort aus einer Verzeichnisdatei entnommen wurde, und um durch sein Fehlen anzuzeigen, daß das Wort nicht komprimiert wurde und in gewöhnlichen ASCII- oder EBCDIC-Zeichen übertragen wird. Zeiger für Codeumschaltzeichen identifizieren sich selbst als Zeiger und geben den Verzeichniseintrag für das Wort an, das sie darstellen. Quellendateien des mit EBCDIC oder ASCII codierten Textes werden wortweise gelesen, und die Wörter werden mit dem Verzeichnis verglichen. Wenn das Wort nicht gefunden wird, werden das Wort und jedes beliebige abschließende Begrenzungszeichen, wie etwa Interpunktionszeichen oder Leerzeichen unverändert in die komprimierte Datei geschrieben. Wenn das Wort gefunden wird, wird in die komprimierte Datei ein Zeiger eingeschrieben, der anzeigt, daß das Wort im Verzeichnis gefunden wurde und der auf den Verzeichnisstandort zeigt. Dies ist im wesentlichen die gleiche Technologie wie die vorstehend erwähnte US-Patentschrift 4 386 416, die sich nur in der Terminologie unterscheidet, die zur Beschreibung des Verfahrens verwendet wird. Die Verwendung mehrfacher Verzeichnisse und eines Zuordnungsverfahrens gewichteter Häufigkeit des Auftretens zu Einträgen sind in diesem Artikel nicht beschrieben.
  • Insgesamt ergibt sich aus dem Vorstehenden, daß in der Forschung bisher der Einsatz von mehrfachen geräumigen Verzeichnissen vermieden wurde, obwohl an Textkomprimierungsverfahren, -technologien und -systemen viel gearbeitet worden ist. Dies mag seine Ursache darin haben, daß die Handhabung der Datenspeicherungserfordernisse und die Umschaltung zwischen den Verzeichnissen kompliziert ist. Zusätzlich wurde bei frühen Studien zum Zuordnungsverfahren der gewichteten Häufigkeit des Auftretens zu Einträgen in die Verzeichnisse herausgefunden, daß im Gegensatz zu den Erkenntnissen der vorliegenden Erfindung die gewichtete Verwendungshäufigkeit für Verzeichniseinträge nicht so günstig ist wie die reine Häufigkeit des Auftretens. Die besten bekannten Komprimierungsverhältnisse beim vorstehend angemerkten Stand der Technik scheinen im Bereich von vier oder fünf zu eins zu liegen, aber wir haben unerwarteterweise herausgefunden, daß durch den Einsatz von mehrfachen Verzeichnissen und die Auswahl deren Einträge auf der Grundlage einer bewerteten Verwendungshäufigkeit Komprimierungsverhältnisse in der Größenordnung von mehr als sechs zu eins bis zu einer Größe von acht zu eins üblicherweise erreichbar sind.
  • Aufgaben der Erfindung
  • Angesichts der Unzulänglichkeiten des vorstehend erwähnten Standes der Technik ist es Aufgabe dieser Erfindung, ein verbessertes Textkomprimierungs- und -dekomprimierungssystem zur Verfügung zu stellen, bei dem gemäß dem speziellen Einsatzgebiet des zu komprimierenden Textes mehrfache Verzeichnisse benutzt werden und in dem bei der Komprimierung ein Vorwort oder Vorsatz benutzt wird, um damit anzuzeigen, welche Auswahl von Verzeichnissen für die anspruchsgemäße Komprimierung vorgenommen worden ist.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine schematische Darstellung eines Textkomprimierungs- und Dekomprimierungssystems gemäß der Erfindung.
  • Fig. 2 ist eine schematische Darstellung der Zuordnung von Speicherplatz zu Segmenten, welche die benutzten aktuellen Verzeichnisse enthalten, eines Index für jedes Verzeichnissegment und von Verzeichnissegmentabbildungen sowie Steuertabellen für die Verwendung bei der Komprimierung und Dekomprimierung.
  • Fig. 3 erläutert schematisch den logischen Ablauf der Dekomprimierung, wie er vom Prozessor in Fig. 1 realisiert wird.
  • Fig. 4 erläutert ein Flußdiagramm einer vollständig erweiterten Komprimierungsroutine, wie sie im Mikroprozessor der Fig. 1 zur Komprimierung von Text realisiert ist.
  • Fig. 5 erläutert ein typisches Beispiel für das Format einer komprimierten Zeichenfolge, bei dem die Technologien der vorliegenden Erfindung eingesetzt wurden.
  • Fig. 6 ist eine schematische Darstellung, welche die Zuordnung von Bitadressen im Vorsatz- oder Vorwortteil eines komprimierten Datensatzes erläutert, mit dem die Interpretierung durch den Empfänger oder das Textdekomprimierungssystem ermöglicht wird, um die geeigneten Verzeichnisse und Steuertabellen für die Dekomprimierung des komprimierten Textes auszuwählen.
  • Kurze Zusammenfassung der Erfindung
  • In der vorliegenden Erfindung werden die vorstehenden Aufgaben dadurch erfüllt, daß eine Vielzahl von für den Sprachgebrauch spezifischen Verzeichnissen zur Verfügung gestellt wird, deren Wörtereinträge in einer gewichteten Reihenfolge der Benutzungshäufigkeit geordnet sind, die auf statistischen Untersuchungen der Verwendungsgebiete beruht. Beispielsweise werden Wörter wie etwa "Gerichtsurteilsliste" oder "gegen" oder "Fall" in Gesetzestexten viel häufiger als im normalen englischen Sprachgebrauch auftreten. Ähnliche Fachausdrücke finden sich ebenso auch auf anderen Gebieten, wobei Technik, Kommerz, Buchführung, Medizin, Landwirtschaft, Petrochemie usw., usw. Möglichkeiten bis zum Unendlichen bieten. In der vorliegenden Erfindung baut der Benutzer eines Textkomprimierungs- und -dekomprimierungssystems Verzeichnisse auf, die kundengebunden auf das Anwendungsgebiet zugeschnitten sind. Dies erfolgt dadurch, daß eine Abtast- und Analysentechnologie benutzt wird, die das Zählen sowohl der Zeichenanzahl in jedem eindeutigen Wort wie der Anzahl des Auftretens des Wortes innerhalb des allgemeinen Sprachgebrauchs im Rahmen einer Probe von Texten aus der Benutzerumgebung umfaßt. Es können mehrere solche Verzeichnisse aufgebaut und mit maximaler vorteilhafter Wirkung angewandt werden, um für einen einzelnen Benutzer einen hohen Komprimierungsgrad zu erreichen. Im komprimierten Text wird ein Vorwort oder Vorsatz gebildet, um die Auswahl des Benutzers hinsichtlich der geeigneten Verzeichnisse anzuzeigen, die bei der Komprimierung der Eingabe einer vorhandenen Textquelle aktuell benutzt werden. Der Vorsatz wird dazu benutzt, den Empfänger darüber zu informieren, welche Verzeichnisse und Steuertabellen zur Verwendung in der Dekomprimierungsroutine in den Speicher zu laden sind. Einfache Einzelbyte- Einträge in einer Steuertabelle können dazu benutzt werden, im komprimierten Text die Quelle jedes einzelnen Wortes oder jeder einzelnen Gruppe von Wörtern anzuzeigen, wenn die Wörter außerhalb der Einzelbyte-Steuertabelle aufgefunden werden. Eine Verzeichnishierarchie, die von der Einzelbyte-Steuertabelle, welche die Steuercodes und die Segmentindikatoren der Verzeichnisse ebenso wie eine Liste von irgendwo zwischen 80 und 224 häufig auftretenden Wörtern enthält, ist das Verzeichnis mit der höchsten Priorität für die Suche zur Komprimierung oder Dekomprimierung. Mit zwei oder drei Byte codierte Verzeichniseinträge, bei denen das erste Byte ein spezielles Verzeichnissegment im Speicher anzeigt, und das zweite Byte einen Richtungszeiger oder eine Speicheradressenposition innerhalb des Segmentes anzeigt, werden ebenfalls benutzt. Das System kann in einem typischen Computersystem mit Mikroprozessor realisiert werden, das einen Massenspeicher, wie etwa Platten oder Kassetten, und einen normal großen Arbeits-Schreib-/Lesespeicher hat, in dem die verschiedenen Steuertabellen und Verzeichnisse zum Gebrauch zusammengestellt werden können, indem sie aus dem Massenspeichermechanismus ausgelesen werden. Typische Flußdiagramme für die Komprimierung und Dekomprimierung sind beigefügt und werden ausführlicher beschrieben.
  • Ausführliche Beschreibung
  • Die Komprimierungstechnologie der vorliegenden Erfindung ermöglicht es, daß auf einem gegebenen Medium mehr Daten gespeichert werden können und/oder sie ermöglicht es, daß mehr Daten in weniger Zeit über eine Übertragungsstrecke zwischen zwei beliebigen Orten geschickt werden können. Das erzielte normale Komprimierungsverhältnis kann bis zu 6 und sogar bis 8 gehen, wenn die Wirkung des Hinzufügens der Vorsatz- und Verzeichnisindikatoren in die Übertragung mit einbezogen wird, vermindert sich das Gesamtverhältnis der Komprimierung leicht. In einer Datenverarbeitungsorganisation ist der Verzug für die Dokumentation der gedruckten Maschinenausgabe außerordentlich kostenaufwendig. An vielen derartigen Stellen resultiert der Bedarf nach gemeinsamer Nutzung großer Mengen von Information zwischen entfernten Stellen in einer Investition in kostspieligen Kommunikationsnetzen.
  • Das Anwachsen der Netze und die größeren Kosten für die benutzten Organisationsvorgänge sind ein Faktor, der die Notwendigkeit der Entwicklung wirtschaftlicher Textkomprimierungs- und -dekomprimierungsverfahren und -systeme diktiert. Zusätzlich haben sich die Bildschirmgeräte und Tischrechner vervielfacht, und ein größerer Teil der verarbeiteten Information besteht aus Textdaten, die auf dem Bildschirm dargestellt werden. Daher wird jegliche wirtschaftliche Komprimierungstechnologie von größerem Nutzen sein, mit welcher der Betrag an verwendetem Speicherplatz und/oder Übertragungsmedium minimiert werden kann. Wie schon vorstehend im Abschnitt dieser Anmeldung über den Stand der Technik erläutert, sind zahlreiche Komprimierungstechnologien entwickelt worden, und die meisten dieser Technologien führen zu einem Gesamtkomprimierungsfaktor in der Größenordnung von 1,5 oder 2 zu 1.
  • Die vorliegende Textkomprimierungstechnologie in der zu handhabenden Erfindung ist so, daß sie den Grad des wiederholten Auftretens und die Länge gewisser Wörter in der grundlegenden Sprache der Personen adressiert, die den Text erzeugen und benutzen. Es stehen viele Optionen zur Verfügung. Die Optionen können auf spezielle Umgebungen und auf spezifische Dokumente an sich zugeschnitten sein, indem sie den benutzten Verzeichnisgrundtyp auswählen. Entweder ein vorherdefiniertes existierendes Verzeichnis oder Verzeichnisse, die speziell für die Textkomprimierung erzeugt worden sind, oder Verzeichnisse, die für den einzelnen Text an sich on-line erzeugt werden, können in Kombination oder getrennt benutzt werden. Zur Vereinfachung der Verarbeitung werden die Verzeichnisse auf Adressenbegrenzungen mit Bytebreite angeordnet. Diejenigen Verzeichnisse, die eine Einzelbyte-Adresse haben, benutzen den höchsten Komprimierungsgrad, sind aber auch in ihrer Länge begrenzt, da bei einem gegebenen Byte zu 8 Bit nur 256 verschiedene Einträge existieren können. Wortverzeichnisse mit Zwei-Byte-Komprimierung lassen einen viel größeren Bereich von zu definierenden Wörtern zu, d. h. 65.536 Wörter oder Eintragadressen zu zwei Byte sind möglich. Die Erweiterung auf eine Adresse zu drei Byte ermöglicht das Maximum von 16.777.216 Einträgen, was weit über den Umfang aller in der englischen Sprache enthaltenen Wörter hinausgeht. Verzeichnisse für graphische Bildschirmdarstellungen und Tonplayback sind ebenfalls zulässig, da diese nur digitale Darstellungen von speziellen Signalen für die Ausgabe durch graphische oder tontechnische Geräte sind. Natürlich ist die Technologie nicht auf die englische Sprache beschränkt. Durch unsere Verfahren kann wahrscheinlich jede zeichenbuchstabierte Sprache gleichermaßen behandelt werden. Bei der Erklärung unserer Erfindung ist Englisch nur der Einfachheit halber hier verwendet worden.
  • Die grundlegende Verfahrensweise der bevorzugten Textkomprimierungstechnologie besteht im Ersatz von in einem gegebenen Dokument gefundenen aktuellen englischen Wörtern durch ein Adressenmuster zu 1, 2 oder 3 Byte. Das Wort "Dokument", wie es hier verwendet ist, wird zur Definition von codierten Textdaten, graphischen Daten oder Tondaten benutzt, die von menschlichen Bedienern erzeugt oder verwendet werden. Einträge durch Tastenbetätigungen können auf einer Platte, einem Band oder ähnlichem aufgezeichnet oder in einem Speicher als ein Quellentext der typischen englischen Sprache gespeichert werden. Solch ein Quellentext ist tatsächlich eine Reihe von ASCII-codierten alphanumerischen Zeichen, Leerzeichen, Interpunktionszeichen, Steuerzeichen, wie etwa Großschreibung, Umschaltung, Zeilenvorschub und ähnlichem usw. Die Zuordnung der Wortverzeichniseinträge beruht auf deren relativem gewichtetem Wert gemäß ihrer Verwendungshäufigkeit und Länge. Die relative gewichtete Bewertung basiert auf der Länge jedes Wortes und der Häufigkeit seines Auftretens in einem speziellen Dokument oder in einer speziellen Umgebung, wie etwa Justiz, Technik, Medizin oder ähnlichem. Die Begrenzung der komprimierten Bitmuster auf Längen von 1, 2 oder 3 Bytes, die 8, 16 oder 24 Bits entsprechen würden, erleichtert die Realisierung dieser Technologien bei den heute verfügbaren byteorientierten Rechnern sehr stark.
  • Die grundlegende Komprimierungstechnologie wird mindestens ein und gewöhnlich mehrere Verzeichnisse benutzen. Das zumeist grundlegende und kompakte Verzeichnis ist die Einzelbyte-Komprimierungstabelle mit 256 Einträgen. Diese Tabelle wird erzeugt, damit sie die Steuermuster enthält, die zur Decodierung der Anzeigen erforderlich sind, mit denen bekanntgegeben wird, welche Verzeichnisse in einer gegeben Komprimierung benutzt werden sollen, was die am häufigsten vorkommenden Wörter in der betreffenden Umgebung sind und welche beliebigen Steuermuster oder Signale erforderlich sind. Komprimierung mit Einzelbyte-Adresse ist bei 8-Bit-Bytes offensichtlich auf 256 eindeutige binäre Muster beschränkt. Einige dieser Muster müssen für Steuerfolgen und für die Definitionen der einzelnen Verzeichnissegmente reserviert werden, die in einer gegebenen Komprimierung benutzt werden. Die Einzelbyte-Komprimierungstabelle oder der -speicher werden damit auf Wörter beschränkt, welche die höchste relative Bewertung haben und die in die 256 möglichen Muster minus der Anzahl der reservierten Steuermuster hineinpassen. Diese Vorgehensweise kann für kleine Dokumente mit großem Vorteil benutzt werden. Kleine Dokumente sind solche, die beispielsweise nur aus 2 oder 3 Seiten bestehen.
  • Wenn ein Komprimierungsverzeichnis oder -speicher zu 2 Byte aufgebaut wird, dann wird er ein mögliches Maximum von 65.536 definierten Einträgen haben. Ein Bit muß jedoch reserviert bleiben, um damit anzuzeigen, daß ein Zwei-Byte-Muster verwendet wird, so sind dann nur 32.768 tatsächliche Verzeichniseinträge möglich. Anders gesehen können 128 Segmente, jedes zu 256 Wörtern, codiert werden. In vielen Fällen würde jedoch der normale Wortschatz, der für eine spezifische Gruppe im konstanten Gebrauch ist, wie etwa in einem Buchprüfungs- oder Rechtsanwaltsbüro, nur wenige tausend Wörter umfassen. Wenn die maximale Größe des Grundverzeichnisses zu 2 Bytes oder zu 65.536 möglichen Einträgen gewählt wurde, dann müßte wenigstens ein Bit des ersten Byte dazu benutzt werden, die Tatsache zu kennzeichnen, daß ein Codiermuster zu 2 Bytes benutzt wird, weil die Dekomprimierungsroutine wissen muß, wie die komprimierten Bytes entweder einzeln in 2ern oder 3ern zu gruppieren sind. Damit bleiben anstatt der 256 Möglichkeiten für das erste Byte nur 128 Muster allein im ersten Byte übrig, und eine Gesamtsumme von 128 Teilbereichen von 256 Mustern kann jeweils tatsächlich ausgewählt werden. Einhundertachtundzwanzig 8-Bit-Muster müssen in der Steuertabelle reserviert werden, mit denen angezeigt wird, welches 256-Wort- Segment des 2-Byte-Verzeichnisses in jedem Falle benutzt wird. Somit wird das erste "Byte" der 2-Byte-Adresse aus der Steuertabelle entnommen. Dadurch bleiben von den ursprünglichen 256 möglichen Mustern in der Einzelbyte-Steuertabelle 128 Muster übrig, die für Steuerfolgen, Wörter mit hoher relativer Bewertung und ähnliches benutzt werden können.
  • Wenn die Größe des Grundverzeichnisses von 32.768 willkürlich auf nur die Hälfte dieser Zahl, d. h. 16.384, beschränkt wird, dann bleiben in der Einzelbyte-Tabelle für die Steuerfolgen und Wörter mit hoher relativer Bewertung 192 Bitmuster verfügbar. Wenn eine Größe von nur 8.192 Mustern für das grundlegende 2-Byte-Verzeichnis gewählt wird, was eine angemessene und nützliche Wahl ist, dann bleiben in der Einzelbyte-Tabelle für die Steuertabellen, die Codierformatanzeiger und die Wörter mit hoher relativer Bewertung 224 Bitmuster übrig.
  • Im allgemeinen wird die Anzahl der Bitmuster, die in einer Einzelbyte-Steuertabelle von den ursprünglich möglichen 256 übrig bleibt, 256 minus der Größe des Grundverzeichnisses sein, das dafür ausgewählt wurde, die Wörter in den 2-Byte- oder 3-Byte- Verzeichnissen aufzunehmen, die benutzt werden könnten, geteilt durch 256. Das heißt, die Art und Weise der Datencodierung in dieser Erfindung erfolgt durch direkte Tabelleneinträge, aber in dem komprimierten Text müssen Anzeigen angebracht werden, mit denen angezeigt wird, welche Tabelle benutzt wird. Eine grundlegende Steuertabelle mit 256 möglichen Einträgen muß in sich Muster für alle 256 Einträge in den 2-Byte-Verzeichnissen, die benutzt werden können, und ein Muster für alle 65.536 Einträge in jedem benutzten Drei-Byte-Verzeichnis reserviert haben. Diese werden als "Verzeichnissegmente" bezeichnet, und in der Steuertabelle wird ein eindeutiges Identifikationsmuster für jedes Segment jedes benutzten Verzeichnisses in jedem Textkomprimierungsbeispiel reserviert. Natürlich könnte die Steuertabelle so erweitert werden, daß sie eine 2-Byte-Tabelle ist, aber das würde eine negative Wirkung auf das gesamte Komprimierungsverhältnis haben. In den meisten Fällen können höhere Komprimierungsfaktoren erzielt werden, indem eine kleinere Anzahl von Einträgen für die Größe des grundlegenden Wortverzeichnisses gewählt wird. Viele Büros oder Organisationen haben einen tatsächlichen Arbeitswortschatz von nur wenigen tausend Wörtern. Daher kann der Komprimierungsfaktor dadurch optimiert werden, daß ein grundlegendes Verzeichnis des Arbeitswortschatzes im Bereich von 8192 Wörtern (1/4 der möglichen Größe eines Verzeichnisses im 2-Byte-Muster) gewählt wird. Dies wird nur 32 reservierte Bitmuster für die Einzelbyte-Steuertabelle erfordern, da 32 mal 256 gleich 8.192 ist. In dem gerade angegebenen Beispiel würden von den ursprünglich in einer Einzelbyte-Steuertabelle verfügbaren 256 noch 224 mögliche Einträge übrigbleiben. Die 224 Einträge könnten vorteilhafterweise Wörtern mit hoher Benutzungshäufigkeit, Steuerzeichen und, falls erwünscht, alphanumerischen Zeichen zugeordnet werden.
  • Diese kurze Beschreibung der mit der vorliegenden Erfindung verbundenen Flexibilität führt zu einer Betrachtung, wie der komplexe Satz von möglichen Verzeichnissen, der für eine gegebene Textkomprimierung ausgewählt wurde, mit dem Benutzer der Dekomprimierung oder Erweiterung verbunden werden kann. Dies wird in der vorliegenden Erfindung dadurch bewerkstelligt, daß ein Vorwort oder ein Vorsatz zu dem komprimierten Text verwendet wird.
  • Fig. 6 erläutert schematisch das Codierformat des Vorsatzes, das in der vorliegenden Erfindung benutzt wird. Zeile A erläutert den Beginn des Vorsatzes, der mit Byte 0 identifiziert wird. Bits AA werden in der vorliegenden Erfindung dazu benutzt, die Art der Einzelbyte-Komprimierungstabelle zu definieren, die benutzt wird. Zwei Arten sind möglich. Entweder wird eine existierende Einzelbyte-Komprimierungstabelle mit Standardwert benutzt, die aus einen vorher angeordneten Satz von Zuordnungen für die 256 möglichen Muster in einer Einzelbyte-Tabelle besteht, oder es soll eine alternative existierende Einzelbyte- Komprimierungstabelle benutzt werden, und diese kann auf einem vorher definierten externen Speichermedium zu finden sein. Andernfalls kann innerhalb der Bytekette des komprimierten Textes eine Einzelbyte-Komprimierungstabelle aktuell zur Verfügung gestellt werden, oder ein Verzeichnis mit einer Größe von zwei oder drei Adressenbytes könnte übertragen werden. Diese vier möglichen Alternativen werden codiert, indem der Wert der Bits AA wie folgt festgelegt wird: Wenn die Bits AA gleich 00 sind, wird in dem Rest der Textkomprimierungskette, die dem Vorsatz bis zum Erscheinen eines neuen Vorsatzes folgt, eine Standardtabelle für die Einzelbyte-Komprimierung verwendet. Wenn die Bitwerte für AA gleich 01 sind, wird eine reservierte nicht zugeordnete Alternative benutzt. Dieses Muster könnte zum Anzeigen benutzt werden, daß das Verzeichnis, das benutzt werden soll, in dem komprimierten Text übertragen wird. Die Bits 10 für AA definieren, daß eine existierende Einzelbyte-Komprimierungstabelle benutzt werden soll, die vom Benutzer auf einem vorher definierten externen Speichermedium gefunden werden soll, wie etwa einer Platte oder einem Band. Beispielsweise könnte es so sein, daß eine Einzelbyte-Komprimierungstabelle, die beispielsweise für Krebsspezialisten in der Medizin optimiert worden ist, für eine gegebene Textkomprimierung benutzt werden soll. Die abschließende Alternative, bei der die Bits AA gleich 11 sind, wird zum Anzeigen benutzt, daß aktuell eine Einzelbyte-Komprimierungstabelle erzeugt worden ist und innerhalb der folgenden Komprimierungskette zur Verfügung gestellt wird. Der Rest der Bits B bis G in Byte 0, Zeile A, Fig. 6 wird als Anzeiger benutzt, mit denen definiert wird, welche Arten oder Wahlmöglichkeiten von anderen Wortverzeichnissen in der Komprimierungsroutine für den gegebenen Strom von komprimiertem Text benutzt werden, der dem Vorsatz folgt.
  • Bit B ist beispielsweise in der vorliegenden Erfindung so definiert, daß es der Anzeiger für ein erweitertes 3 Byte breites Adressenverzeichnis ist. Wenn der Wert von Bit B gleich 0 ist, dann wird kein 3-Byte-Verzeichnis benutzt, und wenn er 1 ist, dann wird ein beliebiges definierbares 3-Byte-Verzeichnis benutzt. Die Definition, welches der 3-Byte-Verzeichnisse, falls vorhanden, benutzt werden soll, wird später im Vorsatzformat behandelt, wo es offensichtlich wird.
  • Bit C bis Bit G sind jeweils individuelle Bitanzeiger, die auf die gleiche Weise wie Bit B verwendet werden, aber statt dessen die Verwendung von alternativen 2 Byte breiten Adressenverzeichnissen anzuzeigen haben. In dem dargestellten Beispiel könnten möglicherweise fünf verschiedene 2 Byte breite Adressenverzeichnisse benutzt werden.
  • Die restlichen Bytes im Vorsatz und die Art ihrer Verwendung im Zusammenhang mit den Anzeigebits in Byte 0 soll nun dargestellt werden.
  • Byte 1 wird entweder der Beginn des komprimierten Textes sein oder es wird als eine Steuertabellennummer interpretiert, wenn eine individuelle Steuertabelle im Unterschied zur Standard- Steuertabelle benutzt werden soll. Byte 1 soll Null sein, wenn Bits AA in Byte 0 entweder 00 oder 11 sind. Wenn Bits AA gleich 10 sind, dann wird in Byte 1 eine Steuertabellennummer mit 8 Bits Breite erscheinen, um eine spezielle Steuertabelle zu identifizieren, auf die durch das Dekomprimierungssystem aus einem beliebigen externen Speichermedium zugegriffen werden soll. Wenn Bits AA gleich 11 sind, dann wird Byte 1 tatsächlich der Beginn einer bereitgestellten Steuertabelle im komprimierten Textstrom sein, und Byte 1 bis Byte n wird die bereitgestellte Steuertabelle sein, die aus der Summe der Länge aller bereitgestellten Wörter, die in der Steuertabelle zugeordnet werden sollen, plus 1.024 zusätzlichen Bytes bestehen wird. Eintausendvierundzwanzig ist gleich 256 mal 4, wobei 256 Vier-Byte-Muster geschrieben werden. Byte 1 jeder Gruppe von 4 Bytes ist ein Längenanzeiger einer möglichen 256-Byte-Folge. Die nächsten 3 Bytes in jeder Gruppe von 4 Bytes sind die Folgenummer des Wortes in einer bereitgestellten Verzeichniskette. Damit wird, falls zutreffend, die von Byte 1 bis n zur Verfügung gestellte Steuertabelle erstens alle bereitgestellten Worteinträge und zweitens deren Zuordnung innerhalb des 256-Byte-Gebietes einer 1-Byte- Steuertabellenanordnung enthalten. Jede Zuordnung erfordert 4 Bytes, wobei das erste Byte aus einer Gruppe von 4 die Längen in Bytes des Eintrags bis zu einer Länge von 256 Bytes anzeigt und die nächsten 3 Bytes aus einer Gruppe von 4 die Folgenummer des aktuellen Wortes anzeigen, das mit dem Tabelleneintrag verbunden werden sollte, wenn das Wort in der Verzeichniskette zur Verfügung gestellt wird, die dem Definitionsteil der Steuertabelle folgt.
  • In Fig. 6, Zeile B, beginnen die Definitionssegmente der 3-Byte-Verzeichnistabellen für den Vorsatz. Bei Byte n+1 treten die 3-Byte-Verzeichnisdefinitionen auf, die darauf beruhen, ob Bit B von Byte 0 eine 0 oder eine 1 war. Wenn beispielsweise Bit B von Byte 0 gleich 0 war, dann sind die Felder BA, BB und BC in den Bytes n+1 und n+2 in Fig. 6, Zeile B gleich Null, d. h. es sind keine Bits vorhanden, da kein 3-Byte-Verzeichnis benutzt wird, das ausführlicher definiert werden muß. Wenn jedoch Bit B in Byte 0 gleich einer 1 war, dann ist das Feld BA 1 Bit breit, und Feld BB in Byte n+1 ist 7 Bits breit. Byte BB wird als die Anzahl von 65 536 Wortsegmenten eines 3-Byte-Verzeichnisses interpretiert, die benutzt werden. Feld BC, das Byte n+2 ist, wird die Zahl sein, mit der angezeigt wird, welches 3-Byte-Verzeichnis benutzt wurde. Feld BA definiert, ob die Felder BB und BC überhaupt erforderlich sind. Wenn Feld BA gleich 0 ist, dann ist BC gleich Null oder ohne Bits, da kein spezielles 3-Byte-Verzeichnis definiert werden muß, d. h. eine Standardbedingung oder ein vorher angeordnetes 3-Byte-Verzeichnis wird benutzt werden. Wenn jedoch Feld BA auf 1 gesetzt wird, dann wird Feld BC die Identifikationsnummer eines ausgewählten 3-Byte-Verzeichnisses sein, das benutzt werden soll.
  • In Fortsetzung der Vereinbarung zum Erstellen des Vorsatzformates ist Byte n+3 ein Definitionsteil für das erste mögliche 2-Byte-Hilfsverzeichnis, das verwendet werden kann oder auch nicht. Byte 0, Bit C definiert, ob ein 2-Byte-Verzeichnis eines Typs benutzt werden soll oder nicht. Wenn Byte 0 Bit C gleich 0 ist, dann werden die Felder CA, CB und CC in Bytes n+3 und n+4 alle gleich 0 gesetzt, da keine weitere Definition erforderlich ist. Wenn jedoch Byte 0 Bit C eine 1 ist, dann werden Feld CA 1 Bit und Feld CB 7 Bits breit sein. Bit CA ist ein Anzeiger, mit dem definiert wird, ob ein standardmäßiges 2-Byte-Verzeichnis oder ein speziell zu definierendes 2-Byte-Verzeichnis verwendet worden ist. Wenn CA auf 0 gesetzt wird, dann wird die Standardbedingung oder ein vorher angeordnetes 2-Byte-Verzeichnis benutzt, und Byte n+4 Feld CC, das normalerweise die spezielle Zahl für ein gegebenes 2-Byte-Verzeichnis sein würde, braucht überhaupt nicht vorhanden zu sein, da die Standardbedingung aufgerufen wurde. Wenn jedoch Feld CA gleich 1 ist, dann ist Feld CD die Anzahl der 256 Wörter langen Segmente, die für das erste 2-Byte-Verzeichnis benutzt worden sind, das definiert wurde, und Feld CC ist die Identifikationszahl für dieses 2-Byte-Verzeichnis.
  • Dieses Format oder diese Übereinkunft wird auf die gleiche Weise für Byte n+5 bis Byte n+12 fortgesetzt, wie es in den Zeilen B, C und D der Fig. 6 in Übereinstimmung mit dem Status der Bits D, E, F und G in Byte 0, Zeile A der Fig. 6 beschreibungsgemäß dargestellt ist. Wenn alle fünf möglichen Anzeiger für 2-Byte- Verzeichnisse in Byte 0 verwendet worden sind, dann wird der Beginn des tatsächlichen komprimierten Textes nicht vor Byte n+13 in Zeile D der Fig. 6 erfolgen, und der Text wird eine unbestimmte Anzahl von Bytes fortgesetzt werden, bis bei Byte n+n in Zeile D der Fig. 6 das Ende des Textes erreicht ist.
  • Mehrere einleuchtende Beispiele des ersten Bytes, Byte 0, in einem gegebenen Vorsatz sollen nun beschrieben werden. Fall 1: es soll angenommen werden, daß Byte 0 des Vorsatzes insgesamt auf 0 gesetzt worden ist. Unter Bezugnahme auf Fig. 6 und die dafür gegebene Beschreibung ist eine Einzelbyte-Komprimierungstechnologie zur Verwendung definiert worden, da keines der 2- oder 3- Byte-Anzeigebits B bis G auf eine 1 gesetzt wurde. Zusätzlich ist, da beide Bits AA auf 0 gesetzt wurden, eine standardmäßige Einzelbyte-Komprimierungstabelle verwendet worden, und da dies der Standardtabelle entspricht, ist sie vereinbarungsgemäß schon im Adressenraum für das Dekomprimierungsprogramm beim Empfänger oder am Benutzerende existent. Dies impliziert, daß der Empfänger und der Absender vorher über Kommunikation vereinbart haben, ihre Standardtabellenwerte zu erstellen und sie in ihre jeweiligen Systeme einzugeben. Da dies eine 1 Byte breite Tabelle ist, gibt es 256 mögliche Einträge. Einige Einträge werden Steuerfolgen zugeordnet werden, einige sind für Sonderzeichen und einige für Buchstaben und Ziffern. Die Masse der Einträge wird jedoch für Wörter mit einer hohen relativen Bewertungszahl reserviert sein, wie sie in einem speziellen Wortschatz einer Benutzerinstallation vorhanden sind.
  • Die tatsächliche Anzahl von Steuerfolgen, Sonderzeichen, Buchstaben oder Ziffern und Worten mit hoher relativer Bewertungszahl werden vom jeweiligen Benutzer auf der Grundlage seiner eigenen Vorzugswerte und Erfahrung gewählt. Ein Verfahren der typischen Zuordnung dieser Muster würde für den Benutzer darin bestehen, eine repräsentative Vielfalt von Texten aus seiner oder ihrer Umgebung dahingehend zu durchsuchen, um die Wörter mit den höchsten relativen Bewertungszahlen so statistisch zu isolieren, wie sie im Arbeitswortschatz ihrer Installation vorkommen. Ein Beispiel für die Durchführung einer solchen Technologie tritt später in dieser Beschreibung in Erscheinung. Es müssen jedoch einige der 256 möglichen Muster für die normalerweise auftretenden Steuerungen zugeordnet werden, die vorhanden sind. Beispielsweise sind ein Leerzeichen und alle mit und ohne Umschalttaste auftretenden alphanumerischen Zeichen üblicherweise durch getrennte Einträge definiert. Steuercodes für das Zeilenende und das Dokumentenende müssen in jedem Falle reserviert werden, und zusätzlich ist ein Code für ein Mehrfachleerzeichen nützlich. Kombinationen aus Komma und Leerzeichen oder Punkt und Leerzeichen sind ebenso übliche Definitionen, wie es beliebig genutzte Umschaltzeichen sind, mit denen die Veränderung der Codiertechnologie oder ähnliches angezeigt werden. Ein Bytemuster zur Tabellenumschaltanzeige sollte auch reserviert werden, das vereinbarungsgemäß dazu benutzt werden kann, um damit an zuzeigen, daß das Byte in dem Text, der dem Auftreten dieses speziellen Bytemusters folgt, eine Tabellennummer sein wird, die dann anstelle der aktuell benutzten Tabelle verwendet werden soll.
  • Im oben dargestellten Beispiel, in dem das Byte 0 nur aus Nullen besteht, wird der komprimierte Text bei Byte 1 in der Bytekette des komprimierten Textes beginnen, und der Vorsatz selbst besteht aus einem einzelnen Byte, Byte 0. Bei der Übereinkunft hinsichtlich Benennung und Format, wie sie in Fig. 6 beschrieben wird, ist das erste Byte, Byte 0, des Vorsatzes das Steuerbyte, das den spezifischen Bereich und die Art der Verzeichnisse definiert, die benutzt worden sind, und das restliche Format der Vorsatzfelder definiert die spezifischen individuellen Längen und Identitäten der Hilfsverzeichnisse, die bei der gegebenen Komprimierung des zu codierenden Textes benutzt worden sind.
  • Fall 2: Es soll angenommen werden, daß Byte 2 auf 1 und siebenmal 0 gesetzt wird. Dies ist gemäß der Vereinbarung, wie sie für Fig. 6 in diesem Beispiel getroffen wurde, eine Anzeige dafür, daß an sich eine Einzelbyte-Komprimierungstechnologie verwendet worden ist, aber eine nicht standardmäßig vorgegebene oder Hilfstabelle der Einzelbyte-Definition durch den Dekomprimierungsalgorithmus benutzt werden soll, der auf diese Tabelle zugreifen muß, die sich auf einem beliebigen externen Speichermedium befindet. Die Tabelle wird normalerweise vom Benutzer mit einem Namen versehen worden sein, der aus einem durch die Installation gewählten Vorsatz besteht, wie etwa BASTAB, gefolgt von einem Anhang des beispielsweise in Byte 1 enthaltenen numerischen Wertes in der Vorsatzkette. Eine Namensvereinbarung für Einzelbyte-Komprimierungstabellen auf einem externen Speichermedium könnte beispielsweise "BASTAB.0" sein, was ein Standardtabellenwert sein würde, oder "BASTAB.1", was eine innerhalb einer Bytekette komprimierten Textes bereitgestellte Tabelle sein könnte, und so weiter. "BASTAB.n" wäre eine zusätzliche auf einem externen Speichermedium vorhandene Tabelle, wobei n einen beliebigen Wert zwischen 2 und 255 annehmen könnte. In einem solchen Schema würde die aktuelle komprimierte Zeichenfolge dann an der relativen Byteposition 2 innerhalb der Bytekette des komprimierten Textes beginnen. Während der auf das Lesen von Byte 0 folgenden Dekomprimierung würde das Dekomprimierungsprogramm auf die identifizierte Einzelbyte-Komprimierungstabelle auf dem externen Speichermedium zugreifen und sie in den Adressenplatz des Dekomprimierungsprogramms in den Schreib-/Lesespeicher des Prozessors einlesen.
  • Wie vorstehend angemerkt, wird normalerweise eins der Bitmuster innerhalb einer Einzelbyte-Komprimierungstabelle für ein Anzeigebyte zur Tabellenumschaltung reserviert. Dieses würde dazu benutzt, von einer Einzelbyte-Komprimierungstabelle zu einer anderen umzuschalten. Jedesmal, wenn in der komprimierten Bytekette ein Tabellenumschaltmuster angetroffen wird, würde vereinbarungsgemäß das nächste Byte dahingehend codiert und interpretiert, daß es die Tabellennummer der als nächstes zu benutzenden Tabelle enthält. Die neue Tabelle würde dann aus dem externen Speichermedium gelesen und in dem adressierbaren Speicherbereich des Dekomprimierungsprogramms untergebracht, wenn sie darin nicht schon vorhanden sein sollte.
  • Fall 3: Es soll angenommen werden, daß Byte 0 auf 11000000 gesetzt wird. Diese Übereinkunft in Bezug auf die Beschreibung der Fig. 6 zeigt an, daß eine Einzelbyte-Komprimierungstabelle verwendet worden ist und daß die für die Dekomprimierung des Textes zu verwendende Anfangstabelle eine derartige sein wird, wie sie aktuell innerhalb einer Bytekette komprimierten Textes übertragen wird und bei der relativen Byteposition Nummer 3 beginnt. Die relativen Bytepositionen 1 und 2 in der Zeichenfolge, die dem Vorsatz folgt, enthalten den binären Wert der Gesamtlänge der bereitgestellten Einzelbyte-Komprimierungstabelle. Diese Tabelle wird innerhalb der komprimierten Bytekette zur Verfügung gestellt und muß aus der komprimierten Bytekette extrahiert und in den adressierbaren Speicherplatz des Dekomprimierungsprogramms eingefügt werden. Die Tabelle komprimierten Textes wird dann bei Byte 3 beginnen und bei einer Zählung enden, die durch die Länge der Tabelle definiert wird, worauf dann der Beginn des tatsächlichen komprimierten Textes folgt.
  • Fall 4: Es soll angenommen werden, daß Byte 0 auf 00100000 gesetzt wird. Dieses Muster definiert gemäß der Übereinkunft der Fig. 6, daß eine Kombination einer Einzelbyte-Komprimierungstabelle von der Art, wie sie als die Standardsteuertabelle definiert ist, und ein 3-Byte-Verzeichnis von der Art benutzt werden, wie es in Feld BA definiert ist. Byte n+1 wird in diesem Fall Byte 1 sein, da in dieser Konfiguration für den vorgegebenen Vorsatz keine Steuertabellennummer oder bereitgestellte Steuertabelle erforderlich sind. Die sieben Bits niedrigerer Rangordnung von Byte 1 sind die Länge als eine Anzahl (weniger 1) von jeweils 65 536 Wörter langen Segmenten, die bei dem verwendeten 3-Byte-Verzeichnis benutzt wurden. Feld BC, das Byte 2 sein würde, definierte dann die Identifikationsnummer für ein 3-Byte-Verzeichnis, falls ein solches spezifisches benutzt würde, und Byte 3 würde dann der Beginn des komprimierten Textes sein, oder in dem Falle, daß Feld BA (das hochrangige Bit von Byte 1) 0 wäre, würde 0 die Standardbedingung der 3-Byte-Tabelle angeben, dann wäre Byte 2 der Beginn des komprimierten Textes.
  • Die Anzahl der Wörter in dem 3-Byte-Verzeichnis, das vorgegeben wurde, ist die Anzahl der benutzten 65 536 Wortgruppierungen. Wenn gegeben ist, daß 7 Bits die Länge definieren können, dann könnten alle zwischen 1 und 128 liegenden derartigen Gruppen definiert werden. Daher wird die Anzahl der Wörter innerhalb der Gesamtlänge des Verzeichnisses vom 3-Byte-Komprimierungstyp mindestens 65 536, jedoch nicht mehr als 8.388.608 Wörter betragen. In einer Steuertabelle zur Einzelbyte-Komprimierung muß eine Anzahl von Steuermustern, die gleich der Anzahl der 65 536 benutzten Wortgruppen ist, dafür reserviert werden, daß damit identifiziert wird, welcher Abschnitt des 3-Byte-Verzeichnisses zu einer beliebigen gegebenen Zeit benutzt werden soll. Damit wird bei der Codierung des Auftretens eines in einer 3-Byte-Tabelle gefundenen Wortes der erste Teil seines Identifikators der 1-Byte-Identifikator aus der Steuertabelle sein, der dann das Segment eines 3-Byte-Verzeichnisses anzeigen wird, welches das Wort enthalten soll. Die nächsten 2 Bytes werden die Relativposition innerhalb dieses Verzeichnissegmentes anzeigen, wo das aktuelle codierte Wort gefunden wird.
  • Somit wird, wenn eine einzelne Gruppe von 65 536 Wörtern in einer 3-Byte-Komprimierungstabelle verwendet wurde, ein einzelnes 1-Byte-Bitmuster in einer Einzelbyte-Komprimierungssteuertabelle dafür benutzt, dem Dekomprimierungsprogramm mitzuteilen, daß das 3-Byte-Dekomprimierungsverzeichnis notwendig ist. Wenn die Dekomprimierungsroutine in der Bytekette des komprimierten Textes das spezifische Einzelbytemuster antrifft, dann müssen die nachfolgenden 2 Bytes zusammen gelesen werden, um damit vor zugeben, welches Wort innerhalb des 3-Byte-Verzeichnisses zu 65 536 Wörtern durch den ursprünglichen Text dargestellt wird.
  • Nebenbei kann angemerkt werden, daß dann, wenn die Anzahl derartiger Gruppen zu 65 536 Wörtern relativ klein ist, bei der derzeitigen Verfügbarkeit von Speichern mit wahlfreiem Zugriff in kleinen Systemen das gesamte 3-Byte-Komprimierungsverzeichnis in den Adreßraum des Dekomprimierungsprogramms geladen werden kann. Da jede Gruppe von 65 536 Wörtern üblicherweise etwas weniger als ein halbes Megabyte Speicher einnehmen wird, ist es bei großen Prozessoren unter der Annahme von einer durchschnittlichen Wortlänge von etwa fünf Zeichen durchführbar, daß dem Platz für ein Dekomprimierungsprogramm einige Megabytes Adressraum effektiv zugeordnet werden können. Bei kleinen Prozessoren ist gewöhnlich nur Platz für einige wenige solcher Gruppen, damit genügend Adressraum für das Betriebsprogramm reserviert wird.
  • In dem Falle, da das 3-Byte-Verzeichnis größer ist, als es für die Unterbringung im Adressraum des Dekomprimierungsprogramms wünschenswert ist, wird auf das Verzeichnis vom externen Speichermedium in Segmenten zu 65 536 Wörtern je nach Erfordernis zugegriffen. Es stehen auch Technologien zur Verfügung, mit denen der Betrag an externem Speicherplatz minimiert wird, der zur Aufnahme des aktuellen 3-Byte-Verzeichnisses erforderlich ist. Es sind viele solche Technologien bekannt, wie etwa das Verfahren des virtuellen Speicherzugriffs, wie es von IBM und anderen benutzt wird. Die Technologie soll die externen Speicheranforderungen minimieren, wenn ein solcher aktuell benutzt wird, und sie ist nicht speziell für diese Erfindung zugeschnitten.
  • Wie schon früher erläutert, sollte ein Bitmuster innerhalb einer Einzelbyte-Komprimierungstabelle für eine Anzeige zur Tabellenumschaltung reserviert werden. Wenn eine 3-Byte-Tabelle benutzt worden ist, sollte ein 3-Byte-Tabellenumschaltanzeiger reserviert werden. Dann könnte, wenn der Dekomprimierungsalgorithmus auf dieses spezielle Muster trifft, das nachfolgende Byte den Namen des speziellen 3-Byte-Verzeichnisses enthalten, auf das auf dem externen Speichermedium zugegriffen werden soll.
  • Fall 5: Es soll angenommen werden, daß Byte 0 einen beliebigen der Werte 00100000 oder 00001000 oder 00000100 oder 00000010 oder 00000001 annimmt. In diesem Beispiel soll ein beliebiges von fünf verschiedenen Arten von 2-Byte-Komprimierungsverzeichnissen benutzt werden. Die Beschränkung auf fünf Arten ist willkürlich und beruht auf der Verwendung eines Byteformates zu 8 Bit für Byte 0 in Zeile A der Fig. 6. Wenn mehr als fünf Arten von 2-Byte-Verzeichnissen erforderlich sind, kann Byte 0, wie es in dieser Diskussion verwendet wird, dahingehend erweitert werden, daß es ein Feld zu 16 Bit oder mehr ist. In jedem beliebigen Fall könnte die Anzahl der 2-Byte-Verzeichnisse, die jemand benutzen möchte, einer oder mehreren beliebigen der folgenden oder anderer Arten entsprechen: ein für das Dokument selbst eindeutiges Verzeichnis, d. h. ein solches, das von einer Durchsuchungs- und Prioritätensetzungsroutine erzeugt wurde, wie sie nachstehend beschrieben ist, resultierte in der Erstellung eines eindeutigen Verzeichnisses, das mit dem Text aktuell zur Verfügung gestellt wird. Oder ein Hilfsprogramm, das spezielle Fachausdrücke, Eigennamen usw. enthält, wobei der Einsatzbereich eines speziellen Benutzers verwendet wurde. Oder ein persönliches Verzeichnis für den eindeutigen Wortschatz einer speziellen Person oder spezieller Gruppen von Leuten ist verwendet worden, oder ein Graphikverzeichnis, oder ein Tonverzeichnis usw. usw. Es wird angemerkt, daß eine scheinbar unbegrenzte Anzahl solcher Verzeichnisse definiert und verwendet werden kann und daß die Tatsache ihrer Anwendung effektiv mit der Dekomprimierungsroutine oder dem Benutzer verbunden werden kann.
  • Wie bei dem obigen Beispiel des 3-Byte-Verzeichnisses kann jedes der 2-Byte-Verzeichnisse innerhalb einer Einzelbyte-Komprimierungssteuertabelle ein Bitmuster haben, das für die Art des zu benutzenden Verzeichnisses als Umschaltanzeige der Verzeichnisversionen verwendet werden kann. Natürlich muß eine Anzahl von Bitmustern in der Einzelbyte-Komprimierungssteuertabelle, die gleich dem Wert der Segmentanzahl zu 256 Wörtern ist, die in allen gewählten 2-Byte-Verzeichnissen verwendet werden, gleichermaßen reserviert werden. Wenn der Dekomprimierungsalgorithmus in der Bytekette komprimierten Textes ein beliebiges dieser Bitmuster antrifft, dann wird er definitionsgemäß das darauffolgende Byte als Bedeutung für die Nummer des Wortes innerhalb einer speziellen Gruppierung zu 256 Wörtern nehmen, wie sie durch das erste Byte aus einem gegebenen identifizierten 2-Byte-Verzeichnis definiert wird. Da jedes Segment zu 256 Wörtern aus jedem Verzeichnis sein eigenes zugeordnetes Steuermuster hat, gibt es keine Vieldeutigkeit, und das spezielle Verzeichnis und das spezielle 256-Wörter-Segment dieses Verzeichnisses sind aus dem Steuermuster selbst bekannt, so daß nur die spezielle Nummer des Wortes innerhalb dieser Gruppierung übertragen werden muß. Folglich sind nur 2 Byte notwendig, um ein innerhalb eines 2-Byte- Verzeichnisses auftretendes Wort zu codieren. Das erste Byte muß mit einem der in der Einzelbyte-Komprimierungstabelle gespeicherten Steuermuster übereinstimmen. Das zweite Byte ist die Nummer oder Reihenfolgenummer des Wortes selbst in diesem spezifischen 256-Wörter-Segment des 2-Byte-Verzeichnisses, in dem es gefunden wurde.
  • Aus der oben gegebenen Definition und der zu Fig. 6 gehörenden Diskussion ist ersichtlich, daß zahlreiche Permutationen der Bitmuster in Byte 0 des Vorsatzes benutzt werden können. Bei einem gegebenen 8-Bit-Byteformat für Byte 0 existieren wahlweise in der Tat 256 verschiedene Muster. Die im Vorsatz auf Byte 0 folgende Bytes werden in einer Reihenfolge ausgewertet, welche durch die Vorzugsreihenfolge für die benutzten Verzeichnisse definiert wird, wie es schon früher mit Bezug auf die Diskussion der Fig. 6 erläutert wurde. Wenn Byte 0 beispielsweise mit 00100000 codiert wurde, werden eine Einzelbyte-Komprimierungstabelle unter Verwendung von Standardwerten für die Komprimierungstabelle und ein standardmäßiges 3-Byte-Komprimierungsverzeichnis benutzt. Byte 1 muß dann vereinbarungsgemäß die Länge des standardmäßigen 3-Byte-Komprimierungsverzeichnisses definieren, d. h. Feld BA von Byte n+1 in Fig. 6 wird dann auf 0 gesetzt, und Feld BB ist die Länge als Nummer der Segmente zu 65 536 Wörtern, wie sie im Verzeichnis aktuell benutzt werden.
  • Wie aus der vorstehenden Diskussion ersichtlich, können mehrfache Verzeichnisse benutzt werden, und im allgemeinen Fall kann jedes Verzeichnis bis zu j Segmente enthalten. Ein gegebenes Segment für ein gegebenes Verzeichnis D wird damit durch D(i,j) definiert und kann durch ein spezielles Bitmuster aufgerufen werden, das innerhalb der Steuertabelle resident ist. Die Summe der Anzahl der für alle Verzeichnisse benutzten Segmente, die in einem gegebenen Komprimierungsbeispiel verwendet werden, muß in individuellen Bitmustern innerhalb der Steuertabelle reserviert werden, damit die Segmente identifiziert werden können, wie sie in der komprimierten Zeichenfolge vorkommen. Das bedeutet, daß es in der Steuertabelle ein Bitmuster für jedes Segment jedes identifizierten Verzeichnisses geben muß, das in der komprimierten Zeichenfolge verwendet wird. Damit wird die Anzahl der Wörter oder Redensarten, die im komprimierten Datensatz durch ein Einzelbyte dargestellt werden, gleich der in einem Einzelbyte möglichen Gesamtsumme, nämlich 256, minus der Gesamtanzahl aller Segmente, die für sich in der Steuertabelle reservierte Identifikatoren haben müssen, und minus der Anzahl der Steuerbitmuster sein, die innerhalb der Steuertabelle für Sonderzeichen, Buchstaben, Zahlen und Steuerfolgen oder -signale beiseite gelegt wurden. Durch eine willkürliche, darin benutzte Übereinkunft wird die Anzahl der innerhalb der Steuertabelle zur Identifikation von Verzeichnissegmenten benutzten Bitmuster der Reihe nach zugeordnet, indem oben in der Steuertabelle begonnen wird, d. h. mit einem Bitmuster, das vollständig aus Einsen besteht, und indem es zu niedriger numerierten Bitmustern weitergeht, bis die Gesamtzahl der Verzeichnissegmente vollständig zugeordnet worden ist. Alle restlichen Stellen in den Steuertabellen können dann den Steuerbitmustern, Sonderzeichen, Buchstaben, Ziffern und ähnlichem zugeordnet werden, und alle restlichen Stellen können an die Wörter mit den höchsten Bewertungszahlen weitergegeben werden.
  • Wie es in den vorstehenden Übereinkünften ebenfalls implizit ist, wird die Durchsuchung von Verzeichnissen am Codierende in einer Priorität liegen, die von demjenigen definiert wird, der die Komprimiertechnologie benutzt. Die typische Durchsuchungsreihenfolge würde darin bestehen, zuerst die Steuertabelle der einzelbytekomprimierten Wortmuster zu durchsuchen, gefolgt von der Durchsuchung der 2-Byte-Verzeichnisse, wenn solche verwendet wurden, und als letztes des 3-Byte-Verzeichnisses, wenn ein derartiges verwendet wurde.
  • Wie vorstehend angemerkt, ist die Anzahl der 2-Byte-Verzeichnisse in den gegebenen Beispielen durch das 8-Bitformat des Bytes für Byte 0 willkürlich auf fünf beschränkt worden. Jedes der benutzten 2-Byte-Verzeichnisse und die Steuertabelle an sich und jegliche 3-Byte-Verzeichnisse können jeweils in sich bis zu 256 Versionen haben, die durch Einfügen des Bitmusters für die Versionsumschaltung für diesen Verzeichnistyp in die komprimierte Kette aufgerufen werden können, wobei darauf vereinbarungsgemäß ein Byte folgt, mit dem gekennzeichnet wird, auf welche Version dieses Verzeichnisses als nächstes zugegriffen werden soll.
  • Als Beispiel der Zuordnungen der Steuertabelle ist ein Beispiel zu betrachten, bei dem ein 3-Byte-Verzeichnis, das aus 16 Segmenten zu jeweils 65 536 Wörtern besteht (mit einer Gesamtsumme von 1.048.576 Wörtern), willkürlich ausgewählt und als Verzeichnis A bezeichnet worden ist. Es soll ebenfalls angenommen werden, daß ein 2-Byte-Verzeichnis, das aus 32 Segmenten zu jeweils 256 Wörtern besteht (mit einer Gesamtsumme von 8 192 Wörtern), willkürliche ausgewählt und als Verzeichnis B bezeichnet worden ist. Weiterhin ist anzunehmen, daß ein 2-Byte-Verzeichnis, das aus nur 8 Segmenten zu jeweils 256 Wörtern besteht (mit einer Gesamtsumme von 2 048 Wörtern), für die Komprimierung des Textes ausgewählt und als Verzeichnis C bezeichnet worden ist. Bei der Zuordnung der Steuerbitmuster in einer Einzelbyte-Steuertabelle würden die folgenden Schritte unternommen werden.
  • Zuerst würden in der Steuertabelle sechzehn 8-Bitmuster zugeordnet werden, um die sechzehn Segmente des 3-Byte-Verzeichnisses A darzustellen. Als nächstes würden zweiunddreißig 8-Bitmuster zugeordnet, um die 32 Segmente des 2-Byte-Verzeichnisses B darzustellen, und dann würden 8-Bitmuster zugeordnet, um die 8 Segmente des 2-Byte-Verzeichnisses C darzustellen. Dann würde eine Anzahl von 8-Bit-Steuermustern für die verschiedenen Sonderzeichen, Steuerfolgen, Buchstaben, Zahlen usw. zugeordnet, die angetroffen werden. Alle restlichen Bitmuster der 256 ursprünglichen möglichen Muster in der Steuertabelle mit der Breite eines Einzelbyte würden dann den Wörtern mit den höchsten relativen Bewertungen zugeordnet, die gemäß der hier nachstehend beschriebenen Technologie ausgewählt werden. Letztlich werden die speziellen Verzeichnisse in den Speicher eingelesen, wie sie von der Codiergruppe angezeigt werden, welche die Auswahl dieser Verzeichnisse vorgenommen hatte, damit die Komprimierungsroutine beginnt.
  • Um den Arbeitsablauf der Komprimierungsroutine zu beschreiben, wird nun eine etwas ausführlichere Analyse des Systems und seiner Arbeitsverfahren vorgestellt.
  • Im Hinblick auf Fig. 1 ist eine Graphik des Gesamtsystems für einen typischen Vorgang der Textkomprimierung und -dekomprimierung gemäß der bevorzugten Ausführungsform dieser Erfindung dargestellt. Die Texteingabequellen können aus einer typischen Schreib-/Leseplatte bestehen, aus einer von einem Bediener gesteuerten Tastatur, einer Kassette oder einem Kommunikationsnetzadapter, wo der ankommende in ASCII oder EBCDIC codierte Text von einer beliebigen entfernten Stelle empfangen wird. Die Texteingabeeinrichtungen sind allgemein als "Texteingabe" zusammen gruppiert und mit 1 in dem gestrichelten Block in Fig. 1 bezeichnet. Ein Multiplexer 2 ist als nächstes dargestellt, er dient dazu, daß er eine der möglichen Eingaben für eine Eingabequelle von zu komprimierenden oder zu dekomprimierendem Text empfängt und gemäß den auf Adressenbus 3 vom Mikroprozessor 4 empfangenen Adressen auswählt. Dabei sollte es sich verstehen, daß für die Platte oder die Tastatur, die Kassette oder den Übertragungsnetzadapter individuelle Adapter vorzusehen wären, um die Signale aus dem dargestellten Medium auf den richtigen Spannungspegel und das Format für die Darstellung auf dem Multiplexer 2 zu konvertieren. Mit der anderen Seite des Multiplexers 2 werden sowohl serielle wie parallele Adapter zur Umwandlung vom seriellen in ein paralleles oder vom parallelen in ein serielles Format verbunden, wie es durch die Adapter 5 beziehungsweise 6 dargestellt wird, wodurch die Verwendung von sowohl seriellen wie parallelen Adressen- und Datenbussen im System zugelassen wird und wodurch die korrekte Übertragung entweder zu seriellen oder zu parallelen Eingabe- oder Ausgabeeinrichtungen innerhalb des gestrichelten Blocks 1 durch den Multiplexer 2 ermöglicht wird. Ein Hauptsteuerspeicher, der in den meisten Ausführungsformen nur ein Lesespeicher wäre, wird als Steuerspeicher 7 dargestellt, der mit den Adressen- und Datenbussen des Steuermikroprozessors 4 verbunden ist. Massendatenspeicherung in Form eines Plattenspeichers oder ähnlichem ist als Massendatenspeicher 8 dargestellt. Die restlichen Blöcke 9, 10 und 11 stellen Teilbereiche von adressierbaren Schreib-/Lesespeichern dar, wie sie vom Steuermikroprozessor konfiguriert und für dessen Arbeitsspeicherplatz benutzt werden. Ein Teilbereich 9 enthält die Hauptverzeichnisse zusammen mit deren Indizes und Abbilder der Verzeichnissegmente ebenso wie die Steuertabelle, die vorstehend ausführlich erläutert wurde, wobei alle zusammen aus dem Massendatenspeicher 8 gemäß einer vom Benutzer vorgegebenen Auswahl oder als Folge des Lesens von Byte 0 des Vorsatzes eingelesen werden, wie es vorstehend beschrieben wurde.
  • Block 10 enthält einen Sende-E/A-Zwischenspeicher und Block 11 einen Emfangs-E/A-Zwischenspeicher. Diese Zwischenspeicher würden im adressierbaren Speicherbereich als Bereiche konfiguriert, in denen zu komprimierende oder zu dekomprimierende Daten zeitweilig während der Durchführung des noch zu beschreibenden Komprimierungs- oder Dekomprimierungsalgorithmus zwischengespeichert werden. Die Zuordnung von Plätzen für die Verzeichnisse innerhalb des Hauptspeichers 9 wird auch die Verzeichnissegmentindizes und die Verzeichnissegmentabbilder umfassen, wie sie nachstehend weiter beschrieben werden sollen.
  • Unter der Annahme, daß die von einem individuellen Benutzer angezeigten Verzeichnisse in den Speicher 9 eingelesen worden sind, wird der Prozessor 4 Indizes aufbauen, um die Suchzeit für die Verzeichnisse zu minimieren. Diese können schon vorher zu dem Zeitpunkt aufgebaut und eingelesen worden sein, wenn die Verzeichnisse selbst aus dem Massendatenspeicher 8 geladen worden sind. Die Indexgruppe besteht aus einer Gruppe von Elementen, von denen jedes Element die Segmentnummer enthalten wird, die in der Steuertabelle dafür reserviert ist, für dieses Segment definiert zu werden. Das Indexelement hat zwei Einträge der Länge eines Wortes und des Wortes selbst für den untersten oder ersten Eintrag dieses Verzeichnissegmentes in der Mischrangfolge der verwendeten Wörter. Das Indexelement hat auch zwei Einträge für den Worteintrag der letzten oder höchsten Mischrangfolge in diesem Segment, was die Wortlänge und das Wort selbst anbetrifft. Anders ausgedrückt, enthält der Verzeichnissegmentindex für jedes zu definierende Segment einen Eintrag der Länge und des aktuellen Wortes für den Eintrag mit der niedrigsten Mischrangfolge, die innerhalb des Segmentes alphabetisch auftritt, und einen Eintrag der Länge und des aktuellen Wortes für den Eintrag mit der höchsten Mischrangfolge, die innerhalb dieses Segmentes auftritt. Die Mischrangfolge kann üblicherweise alphabetisch sein. Ein Beispiel für eine Mischrangfolge ist in Fig. 2 dargestellt.
  • Die für das Beispiel in Fig. 2 angenommene Mischrangfolge ist so, wie sie im Rechneraufbau beim System/370 von IBM benutzt wird. Dies ist eine Mischrangfolge mit zugeordneter hierarchischer Sortierung, bei der zuerst Sonderzeichen in einer definierten Reihenfolge angeordnet werden, die den Benutzern solcher Systeme bekannt ist, gefolgt vom Alphabet mit und ohne Umschalttaste und zuletzt von den Ziffern in der höchsten Mischrangfolge im Ablauf. Die Mischrangfolge kann als Äquivalent zur einer vollständigen "alphabetischen Reihenfolge" für die möglichen Einträge angesehen werden, die sortiert werden sollen. Damit werden die aktuellen Verzeichniseinträge für jedes Verzeichnis zuerst gemischt und in die Mischrangfolge einsortiert. So beginnt jedes Verzeichnissegment mit einem beliebigen niedrigen Eintrag der Mischrangfolge einer gegebenen Länge und eines gegebenen Eintragswortes (oder Zahl oder Zeichen, was immer zutreffen mag), und der Segmentindex endet mit dem Eintrag der höchsten Mischrangfolge, der innerhalb dieses Segmentes des in Gebrauch befindlichen Verzeichnisses auftritt. Der Verzeichnissegmentindex wird dazu benutzt, die Suchzeit im Verzeichnis zu beschleunigen, indem eine noch zu beschreibende binäre Suchtechnologie eingesetzt wird.
  • In dem oben gegebenen Beispiel wären in dem Verzeichnissegmentindex, wie er in Fig. 2 dargestellt ist, 56 Segmente definiert. Es würde 32 Segmente für das 3-Byte-Verzeichnis und 16 Segmente beziehungsweise 8 Segmente für die zusätzlichen 2-Byte-Verzeichnisse geben, die ausgewählt wurden. Für die Einträge in die Einzelbyte-Steuertabelle sind keine Segmente absolut erforderlich, da diese auf Einzelbytebasis schnell durchsucht werden können, aber wegen der Folgerichtigkeit werden für die Einzelbyte-Tabelle Indizes verwendet.
  • Zusätzlich wird ein Speicherabbild des Verzeichnissegmentes aufgebaut, um damit die aktuelle Segmentnummer und Eintragspositionen mit den Standorten der Anfangsspeicheradressen zu verbinden. Dieses enthält die Segmentnummer, die Länge des ersten Eintrags in Form der Zeichenzahl und die Anfangsspeicheradresse, an der ein derartiger Eintrag erscheint. Sie wird gefolgt vom nächsten Eintrag innerhalb dieses Segmentes mit einer Länge und einer Anfangsadresse usw., bis alle Segmente und die gesamten Zeichenlängen und alle Anfangsspeicheradressen in das Speicherabbild der Verzeichnissegmente geladen worden sind. Dies erleichtert die binäre Suchtechnologie stark, wie es später beschrieben wird, da es möglich ist, für ein gegebenes Wort, das komprimiert oder dekomprimiert werden soll, viel schneller einen passenden Eintrag zu finden, wenn für die Durchsuchung der Verzeichniseinträge eine binäre Suchtechnologie verwendet wird. Das Speicherabbild des Verzeichnissegmentes wird auch für die Wörter innerhalb der Steuertabelle Einträge enthalten. Bei dem oben gegebenen Beispiel würden in der Steuertabelle 168 Bitmuster übrig bleiben, nachdem die Zuordnung der gewöhnlichen Sonderzeichen und der Verzeichnissegmentanzeiger erfolgt ist.
  • Wenn eine Komprimierungsroutine verfolgt würde, dann würde der Vorsatz, der die für diese Komprimierung durchgeführte Auswahl beschreiben würde, dann zu einem komprimierten Datensatz geschrieben werden. Der Vorsatz würde beispielsweise 0011100, gefolgt von 0001111, gefolgt von 0011111, gefolgt von 00000111 in dem oben gegebenen Beispiel sein. Dies wird dann die Tatsache definieren, daß ein 3-Byte-Verzeichnis, das aus 16 Segmenten besteht, ein 2-Byte-Verzeichnis, das aus 32 Segmenten besteht, und ein weiteres 2-Byte-Verzeichnis in Gebrauch sind, das aus 8 Segmenten besteht. Zusätzlich gibt das erste Byte 00111000 die Tatsache an, daß alle Verzeichnisse und die Steuertabelle so eingestellt worden sind, daß sie ihren Standardwertdefinitionen entsprechen, weil das erste Bit in jedem der drei folgenden Bytes auf 0 gesetzt wurde, wie es im Beispiel dargestellt ist.
  • Als nächstes würde die gegebene Texteingabe oder das Dokument abgetastet, und es würde ein Wort extrahiert werden. Dies wird auf die übliche Weise durchgeführt, wie es bekannter Stand der Technik ist, indem der Textstrom überprüft wird, bis das Interpunktionskennzeichen oder ein auf einen Zeichencode folgendes Leerzeichen angetroffen wird. Die Gruppe von Zeichencodes und ein Leerzeichencode werden dann als ein "Wort" angesehen, das mit den Verzeichniseinträgen verglichen werden soll. Großschreibung wird gleichermaßen behandelt, und in den komprimierten Datensatz wird ein Code eingeschrieben, der die Großschreibung anzeigt, falls sie vorgefunden wird. Für den komprimierten Datensatz wird eine geeignete Steuerfolge geschrieben, und das erste Zeichen wird für die Verzeichnisdurchsuchung zu einem nicht groß geschriebenen Zeichen zurückgeändert. Eine Bedingung "alle Zeichen groß geschrieben" kann ebenfalls existieren, und eine geeignete Steuerfolge kann für diese Bedingung in den komprimierten Datensatz eingeschrieben werden, so daß dann alle Zeichen für die Durchsuchung in eine Kleinschreibung umgewandelt werden.
  • Als nächstes würde das Wort mit den Einträgen in der Steuertabelle verglichen werden, welche die Wörter mit der höchsten relativen Priorität oder Bewertungszahl darstellen. Dies erfolgt so, daß das Speicherabbild des Verzeichnissegmentes der Steuertabelle der Fig. 2 verwendet wird, wobei eine binäre Suchtechnologie eingesetzt wird. Wenn zwischen dem Eingabewort und einem Eintrag in der Wortliste der Steuertabelle eine Übereinstimmung festgestellt wird, dann wird das dieses Wort darstellende Einzelbytemuster zu dem komprimierten Datensatz geschrieben, und der Vorgang würde von dem direkt vorhergehenden Schritt aus fortgesetzt.
  • Wenn in der Einzelbyte-Steuertabelle keine Übereinstimmung vorkommt, wird eine Indexgruppe benutzt, mit der bestimmt wird, welches Segment innerhalb des ersten 2-Byte-Verzeichnisses möglicherweise das Wort enthalten kann, falls es innerhalb des ersten 2-Byte-Verzeichnisses gefunden werden sollte. Der Verzeichnissegmentindex der Fig. 2 wird zu diesem Zwecke benutzt. Dies erfolgt dadurch, daß das erste Element der Indexgruppe ausgewählt und das Wort mit dem niedrigsten und dem höchsten Eintrag in dem Segment verglichen wird, welches das Element der Indexgruppe darstellt. Wenn das Wort innerhalb der Mischfolgerangordnung des niedrigsten und des höchsten Eintrags eines gegebenen Elementes einer Indexgruppe in einem gegebenen Segment enthalten ist, dann wird eine binäre Durchsuchung der Wörter innerhalb dieses speziellen Segmentes im Speicherabbild des Verzeichnissegmentes durchgeführt, bei der bestimmt wird, ob das zu komprimierende Wort innerhalb des durchsuchten speziellen Verzeichnisses aktuell enthalten ist. Diese binäre Durchsuchung verwendet das Speicherabbild des Verzeichnissegmentes, um eine Zielspeicheradresse zu finden. Wenn eine Übereinstimmung gefunden wird, werden die Segmentnummer und die Einzelbyte-Wortnummer innerhalb des Segmentes geschrieben. Im Falle eines 3-Byte-Verzeichnisses wird der Richtungsanzeiger für die Wortnummer 2 Bytes erfordern, die der Segmentnummer folgen.
  • Wenn in dem einen definierten 2-Byte-Verzeichnis keine Übereinstimmung gefunden wird, dann wird das nachfolgende 2-Byte-Verzeichnis durchsucht werden, bis alle definierten 2-Byte-Verzeichnisse durchgesehen worden sind. Wenn in einem beliebigen dieser Verzeichnisse keine Übereinstimmung gefunden wird, dann wird die Suche fortgesetzt.
  • Wenn in einem beliebigen Verzeichnis keine Übereinstimmung gefunden wird, dann kann das Wort unter Verwendung eines von zwei Verfahren ausgeschrieben werden. Entweder kann das Wort unkomprimiert und einfach Zeichen für Zeichen in EBCDIC- oder ASCII- Darstellung gesendet werden, bis das Wort vollständig übertragen worden ist, oder es kann in den komprimierten Datentext eingeschrieben werden, oder es kann eine spezielle Steuerfolge zu dem komprimierten Datentext geschrieben werden, gefolgt von den nicht komprimierten Zeichendarstellungen und gefolgt von einem weiteren Steuerfolgebyte, mit dem angezeigt wird, daß das Ende des nicht komprimierten Teiles erreicht ist. Die Auswahl, welche Technologie benutzt wird, ist beliebig. Die Verwendung von Umschaltfolgen oder von Steuerfolgen, um damit das Auftreten des nicht komprimierten Textteiles anzuzeigen, hat zur Folge, daß in der Einzelbytesteuertabelle sehr wenige Steuerfolgen vorgeschrieben werden müssen. Falls jedoch die einzelnen Zeichendarstellungen in der Steuertabelle reserviert worden sind, ist es unnötig, durch die Eingabe einer Steuerfolge oder einer Umschaltfolge in den komprimierten Textstrom die Tatsache anzuzeigen, daß nicht komprimierter Text folgt. Dies trifft zu, weil die nicht komprimierten EBCDIC- oder ASCII-Zeichen genau empfangen und decodiert werden, weil sie in der Steuertabelle passende Einträge finden.
  • Ein Beispiel eines Flußdiagramme für einen vollständigen Datenkomprimierungsalgorithmus, mit dem jeder versierte Programmierer arbeiten könnte, dem ein individueller Mikroprozessor und eine Betriebsprogrammiersprache dafür zur Verfügung gestellt würde, wird vorgestellt. Es ist in Form eines Flußdiagramms gegeben, das von einer derartigen Person leicht in ein Betriebsprogramm umgewandelt werden kann.
  • Fig. 4 erläutert das vollständige Flußdiagramm für eine Vielzahl von Komprimierungsoptionen, die verschiedene Arten von Verzeichnissen benutzen. Während sich das Flußdiagramm selbst erklärt und leicht in eine Gruppe von Mikroprozessoranweisungen umgewandelt werden kann, werden einige Beobachtungen am allgemeinen Flußdiagramm und Spezifika bei der betreffenden Komprimierungstechnologie angeboten.
  • Die erste Task beginnt in Block 12 der Fig. 4, wo mit der Komprimierungsroutine begonnen wird. Die erste in Block 13 gestellte Frage ist, ob der Benutzer eine Einzelbyte-Tabelle gewählt hat, die allein in ihrer Standardbedingung für die Komprimierung benutzt werden soll. Wenn die Antwort ja ist, wird ein Vorsatz für alle 0 geschrieben, wie es in Block 14 angewiesen wird, und in Block 32 wird mit der Komprimierung des Dokumentes begonnen. Die Routine besteht darin, einzelne Zeichen einzeln aus der Dokumentdatei abzurufen, die den EBCDIC- oder ASCII-Code des zu komprimierenden Dokumentes enthält. Jedesmal, wenn das Zeichen ein Wortende ist, d. h. eine Leerstelle oder ein Interpunktionszeichen gefunden wird oder das Zeichen für das Dokumentenende gefunden wird, wird ein Wort definiert, das isoliert worden ist. Das ganze Wort wird dann mit der Einzelbyte-Komprimierungstabelle verglichen, indem die früher beschriebene binäre Durchsuchungstechnologie angewendet wird. Wenn eine Übereinstimmung oder ein Gegenstück gefunden wurde, wird der dem Adressenstandort des Wortes innerhalb der Einzelbyte-Tabelle entsprechende Bitwert als die komprimierte Version des Wortes geschrieben. Dies wird beispielsweise in Zwischenspeicher 10 in Fig. 1 untergebracht, um einen ausgehenden komprimierten Text aufzubauen, oder es könnte je nach Benutzeroption im Hauptspeicher 9 eingefügt werden. In Block 38 wird die Frage gestellt, ob bei der Isolierung des letzten Wortes der Anzeiger für das Textende gefunden wurde, und wenn dies der Fall ist, dann muß das Bitmuster für das Text ende zu dem komprimierten Datensatz geschrieben werden, und das Komprimierungsprogramm endet. Wenn die Antwort auf die Frage in Block 32 nein ist, dann wird der Wortzwischenspeicher in Block 11 der Fig. 1 freigemacht, und die Programmroutine geht als Schleife zurück zum Anfang, indem ein weiters Zeichen aus der Dokumentendatei abgerufen und im Wortzwischenspeicher 11 in Block 33 untergebracht wird. Der Vorgang wird fortgesetzt, bis alle Wörter in dem Dokument codiert oder auf alternative Weise behandelt worden sind, indem sie ausgeschrieben wurden, wenn in einem beliebigen der verwendeten Verzeichnisse keine Übereinstimmung gefunden wurde. Dieser Teil der Routine ist am Ausgang von Block 36 zu finden, bei dem der Fluß auf Block 43 gerichtet wird. Wenn die Einzelbyte-Tabelle die einzige ist, die benutzt werden soll, dann ist es für den Fall, daß keine Übereinstimmung auftritt, notwendig, entweder das Wort unter der direkten Verwendung der EBCDIC- oder ASCII-Zeichen aus zuschreiben, wie es vorstehend in dieser Beschreibung diskutiert wurde, oder es ist notwendig, diese Veränderung in der Codierung damit zu kennzeichnen, daß ein Umschaltbitmuster zu dem komprimierten Datensatz geschrieben wird, wie es in Block 44 dargestellt ist. Dies würde, falls ein Umschaltmuster benutzt wird, gefolgt sein vom Schreiben jedes Zeichens aus dem Wortzwischenspeicher 11 zu dem komprimierten Datensatz und vom Beenden der Kette nicht komprimierter Zeichen durch ein weiteres Umschaltbitmuster. Wie früher angemerkt, ist das Umschaltbitmuster in dem Falle nicht notwendig, wenn der Einzelbyte-Zwischenspeicher Codes für alle normalen Buchstaben und Zeichen enthält, wie es der normale Fall wäre. Wenn keine Übereinstimmung zwischen dem Wortvergleich und dem Inhalt des Einzelbyte-Zwischenspeicher für Wörter gefunden wurde, wäre es nur notwendig zu schlußfolgern, daß das Wort in dem Zwischenspeicher Zeichen für Zeichen in den komprimierten Datensatz zu schreiben sei. Es würde dann in einem Dekomprimierungsprogramm erkannt werden, weil durch den zeichenweisen Vergleich mit den Inhalten der Einzelbyte-Tabelle keine Übereinstimmung gefunden würde; aber eine "Zeichen"-Übereinstimmung würde dort gefunden werden, wo die Zeichen vorher gespeichert worden sind. Diese Technologie wird in dem Flußdiagramm nicht gezeigt, aber sie ist aus dieser Diskussion ersichtlich.
  • Block 43 in Fig. 4 zeigt auch die Durchsuchungshierarchie, die in dieser Routine enthalten ist. Wenn die Einzelbyte-Tabelle nicht die einzige ist, die zu durchsuchen ist, dann werden die Wortzwischenspeicherinhalte mit jeglichen 2-Byte-Verzeichnissen verglichen, die vom Benutzer ausgewählt wurden, wie in Block 45 gezeigt. Wenn in keinem der 2-Byte-Verzeichnisse eine Übereinstimmung gefunden wird, dann wird in Block 47 die Frage gestellt, ob ein 3-Byte-Verzeichnis benutzt werden soll, und wenn die Antwort ja ist, wird der Vergleich mit dem verwendeten 3- Byte-Verzeichnis durchgeführt, bis eine Übereinstimmung gefunden wird, oder wenn keine Übereinstimmung gefunden wird, geht das Programm in einer Schleife zurück zu Block 44, um das Wort in seiner nicht komprimierten Form zu schreiben, wie es vorstehend diskutiert wurde.
  • Bei der Rückkehr zu Block 18 der Fig. 4 beginnt das Programm, falls auf der Grundlage der Inhalte des zu komprimierenden Dokumentes ein Einzelbyte-Verzeichnis oder eine -tabelle erzeugt werden soll, d. h. wenn für das untersuchte Dokument ein spezielles Verzeichnis erstellt werden soll, in Block 19 damit, daß es die Dokumentdatei öffnet, d. h. ein Bereich im Speicher wird initialisiert, in dem die wortweise Verarbeitung des Dokumentes durchgeführt werden kann, und dann geht es weiter zu Block 20. Die Dokumentwörter werden abgetastet, und im Speicher wird eine Liste aller einzelnen eindeutigen Wörter aufgebaut, die im Dokument gefunden wurden. Eine Zählung der Anzahl des Auftretens jedes eindeutigen Wortes wird ebenfalls gepflegt. Wenn dies abgeschlossen ist, dann wird für jedes Wort im Dokument die relative gewichtete Bewertungszahl dadurch errechnet, daß die Zählung der Anzahl des Auftretens jedes Wortes mit der Zeichenlänge des Wortes multipliziert wird. Die resultierenden Bewertungszahlen werden der Größe nach sortiert, wobei der größte Wert (Wörter mit der höchsten Bewertungszahl) Bitpositionen zugeordnet wird, die innerhalb der Einzelbyte-Tabelle verbleiben (nachdem das Zuordnen von Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen abgeschlossen ist). Der Benutzer wird definieren müssen, wie viele Bitmuster in einer Einzelbyte-Tabelle verfügbar sein werden, indem er eine kluge Auswahl der Steuerzeichen usw. trifft. Dabei wird von den 256 möglichen Mustern ein gewisse Anzahl verfügbar bleiben. In Block 28 wird dann ein eindeutiger Vorsatz geschrieben, daß der komprimierte Datenstrom beginnt. Darauf folgt, wie in Block 29 dargestellt, das Speicherplatzabbild des Segmentes, ein 2-Byte-Muster, das die Länge aller Wörter anzeigt, die in der Einzelbyte-Tabelle von Block 26 dargestellt sind, und es folgt die aktuelle Wortliste, die im Verzeichnis benutzt werden soll, wie es in Block 31 dargestellt ist. Das Programm geht dann, darstellungsgemäß beginnend bei Block 33, weiter zur Komprimierungsroutine.
  • Wenn ein 3-Byte-Verzeichnis oder ein 2-Byte-Verzeichnis als notwendig definiert wurden, beschreiben die Blöcke 52 und 62 die Abfolge der Vorgänge. Die spezielle Auswahl der Verzeichnisse, die vom Benutzer vorgenommen wurde, der die Komprimierungsroutine aufruft, wird notiert und als Verzeichnisstruktur erzeugt, wie es in Block 68 für jede beliebige Gruppe von Wahlvorgängen dargestellt ist, ausgenommen diejenigen, die speziell beschrieben werden. Jedes Element des Flußdiagramms in Fig. 4 behandelt eine beliebige der Möglichkeiten zum Schreiben von Einzelbyte- Komprimierungstabellen, hilfsweisen Einzelbyte-Komprimierungstabellen, 2-Byte- oder 3-Byte-Verzeichnissen jeglicher Art. Die Auswahl, welche Verzeichnisse benutzt werden sollen, wird vollständig der Entscheidung derjenigen Person überlassen, welche die Komprimierungsroutine aufruft. Die resultierende Auswahl von Verzeichnissen spiegelt sich dann im Aufbau des Informationsvorsatzes wider, mit dem der komprimierte Datenstrom beginnt, wie es vorstehend ausführlicher beschrieben wurde. Wenn der Vorsatz gebildet worden ist, verfolgt, wie in Fig. 4 dargestellt, die Komprimierungsroutine ein Analysemuster zum Vergleichen jedes Wortes mit der gewählten Verzeichnisliste, die benutzt werden soll, und zum Bilden des komprimierten Datensatzes gemäß der Vorschrift in Fig. 4.
  • Dekomprimierung ist ein sehr geradliniger Vorgang und wird mit Bezug auf Fig. 3 beschrieben. Eine Anzahl von Tabellen A, B, C und D wird als Abschnitte im adressierbaren Hauptspeicher 9 definiert. Die in die Tabellen D, C, B und A geladenen Werte werden gemäß dem Vorsatz geschrieben, der aus dem komprimierten Datensatz empfangen wurde. Die Analyse des Vorsatzes versetzt das Programm im Mikroprozessor in die Lage, auf den Massendatenspeicher oder den Speicher zuzugreifen und die notwendigen Werte abzurufen, um die Tabellen D, C, B und A wie in Fig. 3 dargestellt zu initialisieren.
  • Die für Fig. 3 gegebene Beschreibung zeigt das Dekomprimieren von Text, das von der Verwendung eines indirekten Adressierschemas begleitet ist. Die vier Speichertabellen D, C, B und A, die mit dem Dekomprimierungsprogramm verbunden sind, werden wie folgt definiert. Tabelle D wird dazu verwendet, um die Bitmuster des ersten Byte des komprimierten Stromes in einer Reihe von Relativpositionen in Tabelle C abzubilden. Mit anderen Worten enthält Tabelle C für das erste Byte des Vorsatzes alle möglichen Permutationen, und Tabelle D wird dazu verwendet, den Vorsatz zu analysieren und auszuwählen, welches Muster in Tabelle C angezeigt werden sollte. Tabelle C ist eine Übertragungsvektortabelle, die anzeigt, welche Auswahl von Unterprogrammen innerhalb des Dekomprimierungsprogramms aufgerufen werden muß, um die Dekomprimierung jedes Wortes, jeder Redewendung, jedes Steuerfolgebuchstabens oder jeder -ziffer zu behandeln, welcher Fall auch immer eintreten sollte. Mit anderen Worten wird Tabelle D zum Vergleich mit dem Vorsatz verwendet, um den Vorsatz zu analysieren und zu identifizieren, welche Verzeichnisse benutzt werden sollen. Tabelle C enthält Anweisungen an die Subroutinen, die erforderlich sein werden, um jede Art von Dekomprimierung abzuhandeln.
  • Jede eindeutige Version jedes Verzeichnisses, das im Vorsatz vorgegeben worden ist, hat auch zwei dafür definierte zusätzliche Tabellen A und B. Tabelle B ist eine indirekte Adressentabelle, die ein reserviertes Feld zu 2 Byte und ein Wortlängenfeld zu 2 Byte und ein Adressenfeld zu 4 Byte enthält. Tabelle B ist damit für das in Frage stehende Verzeichnis das Speicherplatzabbild des Segmentes. Die zweite Tabelle, Tabelle A, enthält die dekomprimierten Wörter an sich und ist die Wortliste des Verzeichnisses.
  • Für die Dekomprimierungsroutine wird der Vorsatz analysiert, um damit zu bestimmen, welche Verzeichnisstruktur vorgeschrieben wurde. Ein ausführliches Beispiel, das die Existenz von im Hauptspeicher 9 verfügbarem allgemeinem Registerplatz annimmt, wird nun dargestellt.
  • Wenn eine standardmäßige Einzelbyte-Tabelle allein verwendet werden soll, wird innerhalb des Hauptspeichers 9 in einem allgemeinen Register R3 ein Zeiger willkürlich initialisiert. Der Zeiger wird initialisiert, um die Bytenummer im komprimierten Text anzuzeigen, bei der das erste Byte des komprimierten Textes an sich beginnt. Ein weiterer Zeiger wird in einem anderen willkürlichen Allgemeinregisterspeicher R4 eingerichtet. Er wird initialisiert, um auf die Adresse im Speicherplatz des Speichers 9 zu zeigen, bei welcher der Speicherbereich des komprimierten Textes beginnt. Ein weiterer Zeiger, der willkürlich im Allgemeinregisterplatz R5 initialisiert ist, wird dafür initialisiert, auf die Adresse im Speicher zu zeigen, wo sich der Beginn der Tabelle D befindet. Ein weiterer Zeiger wird in einem willkürlichen allgemeinen Register R6 initialisiert, um innerhalb des Speichers auf den Beginn der Tabelle C zu zeigen. Noch ein weiterer Zeiger wird willkürlich in einem Allgemeinregister R7 initialisiert, er zeigt auf den Beginn der Tabelle B, und ein weiteres Register R8 wird initialisiert, das einen Zeiger auf den Beginn der Tabelle A enthält. Die Werte für diese Tabellen werden dann beispielsweise aus Speicher 8 abgerufen und in den Hauptspeicher geladen, wobei der Beginn an den Punkten liegt, die von den Zeigern in den gerade beschriebenen Registern identifiziert werden.
  • Dann beginnt die Dekomprimierung. Aus dem komprimierten Text wird, beginnend mit dem vom Zeiger beschriebenen Platz, ein Byte abgerufen und in einem allgemeinen Register R9 untergebracht, wie es in Fig. 1 als Empfangszwischenspeicher 11 definiert ist. Mit anderen Worten wird R9 mit dem Byte aus dem vom Inhalt des Register R3 angezeigten Standort geladen. Die Anfangsadresse der Tabelle D kann dann dem Inhalt des allgemeinen Registers R9 hinzugefügt werden, d. h. der Wert von R5 wird zu R9 addiert. Dies liefert einen neuen Wert für ein Byte an einer von R9 angezeigten Stelle, das in das allgemeine Register R10 geladen wird. Dies ist das Abbildungsbyte, das als Ergebnis des im ersten Byte des komprimierten Textes gefundenen Musters ausgewählt wurde, und definiert, ob das Byte ein Wort, ein Steuerzeichen, ein Sondersymbol, eine Steuerfolge, einen Buchstaben oder eine Ziffer usw. darstellt.
  • Das Abbildungsbyte wird willkürlich mit 4 multipliziert, d. h. R10 wird auf die beiden linken Positionen verschoben, und die Anfangsadresse für Tabelle C, welche die Übertragungsvektortabelle ist, wird dem so erhaltenen Produkt hinzugefügt. Dies erweitert die Betriebssteuerung auf die Subroutine, deren Standort in der Übertragungsvektortabelle an der Stelle angezeigt wird, die nun in Register R10 angezeigt wird. Dieser Teil der Subroutine wird dann initialisiert, um Sondersymbol, Steuerfolge, Buchstabe oder Ziffer zu handhaben, die von der Abbildungsbytetabelle identifiziert wurden. Sondersymbole, Steuerfolgen, Buchstaben, Ziffern usw. haben alle eine eindeutige Subroutine. Wörter in der Einzelbyte-Komprimierungstabelle benutzen jedoch alle gemeinsam eine allgemeine Subroutine für die Dekomprimierung. Die Subroutine für die Wortdekomprimierung existiert im Speicher und behandelt Wörter, die in der Einzelbyte-Komprimierungstabelle gefunden wurden. Sie ruft das komprimierte Byte aus der Bytekette des komprimierten Textes ab, indem R9 mit dem Byte aus dem von R3 angezeigten Standort geladen wird. Der Wert des komprimierten Byte in R9 wird willkürlich mit 8 multipliziert, d. h. 3 Bitpositionen nach links verschoben, und dem resultierenden Produkt wird die Anfangsadresse der Tabelle B hinzugefügt. Mit anderen Worten werden die Inhalte von R7 zu R9 hinzugefügt, wodurch sich ein Zeiger auf die Länge und den Standort des dekomprimierten Wortes an sich ergibt. Die Länge und der Standort des Wortes werden durch den Wert von R9 plus zwei beziehungsweise den Wert von R9 plus vier angezeigt. Diese Werte werden in die allgemeinen Register R10 beziehungsweise R11 geladen. Das Ergebnis ist das dekomprimierte Wort selbst, das aus dem Verzeichniswortspeicher der Tabelle A in den Arbeitsbereich des dekomprimierten Textes im Hauptspeicher 9 bewegt wird. Im gegebenen Beispiel wird das Wort von der in R11 angezeigten Stelle, das eine durch den Inhalt von R10 angezeigte Länge hat, an die von R4 angezeigte Stelle bewegt werden. Für die Position des nächsten komprimierten Byte und für den Standort des nächsten Eintrags dekomprimierten Textes werden dann Zeiger aktualisiert. Im gegebenen Beispiel wird Register R3 um 1 erhöht werden, und der Wert von R10 wird zu R4 hinzugefügt werden. Das Dekomprimierungsprogramm läuft dann in einer Schleife zurück, um das nächste Byte aus der komprimierten Bytekette abzurufen, und wiederholt den oben angegebenen Vorgang.
  • Die Steuerung der Dekomprimierungsroutine wird bei Erkennung eines Steuerzeichens oder einer -folge für ein Dateiende an eine Dateiende-Subroutine übertragen. Die Dateiende-Subroutine verfügt dann in der vom Benutzer gewählten Weise über den komprimierten Datenstrom, d. h. er kann über den Multiplexer 2 an einen Kommunikationsnetzadapter ausgegeben werden, um an eine entfernte Stelle übertragen zu werden oder auf einer Platte oder Kassette in Block 1 gespeichert zu werden, wie es in Fig. 1 dargestellt ist. Andernfalls könnte er auch zum Wiederfinden zu einem späteren Zeitpunkt in Plattenmassenspeicher 8 geladen werden.
  • Im Falle einer Dekomprimierungsroutine, die eine alternative Einzelbyte-Komprimierungstabelle benutzt, oder für den Fall, daß ein Tabellenumschaltzeichen in einer Steuerfolge angezeigt wird, die in der Bytekette komprimierten Textes gefunden wurde, wird vom Speicher für die Tabellen A, B, C und D auf Werte alternativer Tabellen zugegriffen, und diese werden in den Arbeitsspeicherbereich geladen, indem sie die für A, B, C und D existierenden Tabellenwerte überlagern. Die Dekomprimierungsroutine läuft dann wie oben beschrieben weiter. Für den Fall, daß eine Einzelbyte-Komprimierungstabelle und einige zusätzliche Verzeichnisse vorgegeben worden sind, zeigt der Vorsatz an, welche Einzelbyte- Komprimierungstabelle und welche anderen Verzeichnisse vorgeschrieben worden sind und auch die Nummer der Segmente für jedes der anderen vorgegebenen Verzeichnisse, die benutzt werden sollen. Für A, B, C und D werden dann aus dem vorher definierten externen Speichermedium geeignete Tabellenwerte geladen und in dem Adressenplatz des Dekomprimierungsprogramms untergebracht, wie es oben angemerkt wurde, und die Dekomprimierung geht wie beschrieben weiter. Jedes Segment jedes Verzeichnisses wird seine eigenen entsprechenden Subroutinen haben, um das komprimierte Byte oder die Bytes in dem richtigen Wort innerhalb des angezeigten Segmentes des angezeigten Verzeichnisses abzubilden. Im Falle eines 2-Byte-Verzeichnisses wird beispielsweise die Subroutine für ein spezielles Segment eines speziellen 2-Byte-Verzeichnisses das zweite Byte der komprimierten 2-Byte-Darstellung des Wortes als Richtungszeiger in die richtige Tabelle B benutzen, um innerhalb des Wortverzeichnisses, Tabelle A, das dekomprimierte Wort zu finden. Im Falle eines 3-Byte-Verzeichnisses benutzt die Subroutine für das spezielle Segment des 3-Byte-Verzeichnisses das zweite und dritte Byte der komprimierten 3-Byte- Darstellung eines Wortes als Richtungszeiger in die richtige Tabelle B für dieses Verzeichnis, um das dekomprimierte Wort oder die Redewendung innerhalb des in Tabelle A angeordneten Verzeichnisses für dieses spezielle gewählte Verzeichnis zu finden.
  • Unter Bezugnahme auf Fig. 5 ist eine schematische Darstellung der Bytekette eines komprimierten Textes gezeigt. Der Vorsatz wird nicht angezeigt, da er ausführlich in Fig. 6 behandelt wurde. In Zeile A der Fig. 5 ist das zweite dargestellte Byte ein Umschaltbitmuster, und obgleich die Verwendung eines Umschaltbitmusters, wie früher angezeigt, vermieden werden kann, wird es in diesem Beispiel verwendet. Das Umschaltbitmuster wird vom ersten uncodierten Zeichen gefolgt, ausgenommen seinen üblichen EBCDIC- oder ASCII-Code, da es ein Wort darstellt, das in keinem Verzeichnis gefunden wurde. Eine Anzahl von Eingriffszeichen erscheint, und dann wird das letzte Zeichen des in allen Verzeichnissen nicht gefundenen Wortes codiert, gefolgt von einem zweiten Umschaltbitmuster. Komprimierte Wörter beginnen wieder in Zeile B, welche die Fortsetzung von Zeile A in Fig. 5 ist. Zuerst kommt ein einzelbytekomprimiertes Wort, gefolgt von einem mit einem 2-Byte-Verzeichnis komprimierten Wort mit dessen beiden Informationsfeldern, welche die Segmentnummer für ein gegebenes 2-Byte-Verzeichnis und die relative Position des Wortes innerhalb dieses Verzeichnisses darstellen. Auf diese folgt in diesem Beispiel von ein weiteres einzelbytekomprimiertes Wort, gefolgt von einem Bitmuster zur Erkennung von Mehrfachleerstellen und gefolgt in Zeile C von der Anzahl der Mehrfachleerstellen, die gefunden wurden. Darauf folgt eine Segmentnummer für ein mit 3-Byte-Verzeichnis komprimiertes Wort, gefolgt von 2 Bytes, welche die relative Position dieses Wortes innerhalb des identifizierten Segmentes eines 3-Byte-Verzeichnisses anzeigen.
  • Neben dem Umschaltbitmuster müssen andere Steuermuster definiert und in die Einzelbyte-Komprimierungssteuertabelle geladen werden. Ein Steuermuster für die Versionsumschaltung ist früher beschrieben worden, es hat bei seinem Antreffen im komprimierten Textstrom die Bedeutung, daß es darauf hinweist, daß das folgende Byte eine neue Versionsnummer für das verwendete Verzeichnis anzeigt. Es wird in der Komprimierungsroutine codiert, wenn das verwendete Verzeichnis mit einer anderen Version des gleichen Verzeichnistyps überlagert werden soll. Ein mehrfaches aufeinanderfolgendes Auftreten von Leerstellen im Text ist ein weiteres Vorkommnis, das zur besten Komprimierung ein neues Steuerzeichen erforderlich macht, das bei seinem Erkennen das Steuerzeichen für Mehrfachleerstellen sein würde. Es würde von einem weiteren Byte gefolgt sein, das die Anzahl der Leerstellen anzeigt, die auftreten sollen. Wenn ein 1-Byte-Steuerzeichen gegeben ist, dann ist es offensichtlich, daß 256 Versionen dieser Steuerung in einem zweiten folgenden Byte angezeigt werden können. Damit kann bei einem Steuerzeichen zur Verzeichnisversionsumschaltung das folgende Byte eine beliebige von 256 Versionen des gleichen Verzeichnisses vorgeben. Dies kann dazu verwendet werden, die Anzahl der Wörter zu verbessern, die in einem Byte dargestellt werden können, indem Einzelbyte-Verzeichnisse durch andere Versionen ersetzt werden, oder es kann dafür benutzt werden, erhöhte Sicherheit bei der Datenübertragung zu bieten.
  • Aus dem Vorstehenden ist zu beobachten, daß zahlreiche Modifikationen in der Anzahl und der Art der benutzten Verzeichnisse vorgenommen werden können, obgleich noch der gleiche grundlegende schematische Vorsatzaufbau benutzt wird, um dem Empfänger oder benutzerseitig zu identifizieren, welche Verzeichnisse und welche Größe dieser Verzeichnisse dafür benutzt worden sind, die Komprimierung durchzuführen. Gleichermaßen hat sich das Mittel einer gewichteten Verwendungshäufigkeit zur Bildung von Einträgen in den Verzeichnissen als ein außerordentlich effektives Mittel zur Textkomprimierung herausgestellt. Der "Text" an sich kann aus alphanumerischen Daten, Tondaten, graphischen Daten oder beliebiger anderer ähnlicher Information durch digitale Datenzeichen bestehen, der zur Speicherung oder Übertragung verdichtet werden soll. Daher ist, obwohl die Erfindung mit Bezug auf eine bevorzugte Ausführungsform davon beschrieben worden ist, das, was in den folgenden Ansprüchen enthalten ist, nicht im Sinne einer Einschränkung sondern nur einer Beschreibung zu sehen.

Claims (3)

1. Datenkomprimierungs- und Datendekomprimierungssystem, das einen Sender und einen Empfänger (1) und Mittel zum Verbinden des Senders mit dem Empfänger zum Senden und zum Empfangen komprimierter Daten umfaßt, wobei der Sender Mittel (10) zum Annehmen eines eingehenden nicht komprimierten codierten Datenstromes und zum Aufteilen des Stromes in Einheiten umfaßt; wobei das System von der Art ist, daß es eine Vielzahl von Verzeichnissen umfaßt, deren Einträge in einer bewerteten Benutzungshäufigkeit geordnet sind; und das dadurch gekennzeichnet ist, daß:
der Sender auch Mittel (4) umfaßt, um die Einheiten mit mindestens einem vom Benutzer ausgewählten kompilierten Einheitenverzeichnis zu vergleichen, das für jede im Zusammenhang mit nicht komprimierten codierten Einheiten gespeicherte Einheit komprimierte Codeäquivalente hat, und daß es weiterhin;
Mittel (52 bis 67) zum Ausgeben eines Vorsatzes der komprimierten Daten umfaßt, der Anzeigen zum Definieren der Identität jedes benutzergewählten Verzeichnisses enthält, das beim Komprimieren der Daten verwendet wird, und
Mittel (37, 51, 50, 44) zum Ausgeben der komprimierten Codeäquivalente für eingehende Einheiten umfaßt, für die im Vergleichsschritt eine Übereinstimmung gefunden wurde, und zum Ausgeben des nicht komprimierten codierten Datenstromes für eine beliebige Einheit, für die keine Übereinstimmung gefunden wurde; und
daß der Empfänger Mittel (11, 4) zum Empfangen und Analysieren des Vorsatzes zum Definieren der Identität jedes der benutzergewählten Verzeichnisse umfaßt, die beim Komprimieren des komprimierten Datenstromes verwendet werden; und
Mittel zum Aufteilen (11, 4) des eingehenden komprimierten codierten Datenstromes in Einheiten;
Mittel (4) zum Vergleichen der Einheiten mit mindestens einem benutzergewählten und mit Vorsatz identifizierten kompilierten Einheitenverzeichnis, das für jede im Zusammenhang mit den nicht komprimierten codierten Einheiten gespeicherte komprimierte Codeäquivalente hat; und
Mittel (4) zum Ausgeben nicht komprimierter Äquivalente für eingehende Einheiten, für die eine Übereinstimmung im Vergleichsschritt gefunden wurde, und zum Ausgeben des Datenstromes für jede beliebige Dateneinheit umfaßt, für die keine Übereinstimmung gefunden wurde.
2. System gemäß Anspruch 1, dadurch gekennzeichnet, daß:
für die Einheiten die Einträge in die Verzeichnisse in einer Bewertungsreihenfolge angeordnet werden, die der bewerteten Benutzungshäufigkeit entspricht und dadurch erstellt wird, daß die durchschnittliche Häufigkeit des Auftretens jeder Einheit in der Sprache, in der sie benutzt wird, mit ihrer Länge in Zeichen multipliziert wird, und daß die aus dieser Multiplikation resultierenden Produkte in absteigender Reihenfolge ihrer Größe angeordnet werden.
3. System gemäß Anspruch 2, dadurch gekennzeichnet, daß:
mindestens eins der Verzeichnisse eine Steuertabelle von Einträgen umfaßt, die Segmentidentifikatoren für jedes Segment jedes benutzergewählten Verzeichnisses umfaßt, das beim Komprimieren der Daten verwendet wird.
DE3751421T 1986-12-04 1987-10-02 Verfahren und Vorrichtung zur Textkomprimierung und -expandierung. Expired - Fee Related DE3751421T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/937,799 US4843389A (en) 1986-12-04 1986-12-04 Text compression and expansion method and apparatus

Publications (2)

Publication Number Publication Date
DE3751421D1 DE3751421D1 (de) 1995-08-24
DE3751421T2 true DE3751421T2 (de) 1996-03-28

Family

ID=25470423

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3751421T Expired - Fee Related DE3751421T2 (de) 1986-12-04 1987-10-02 Verfahren und Vorrichtung zur Textkomprimierung und -expandierung.

Country Status (10)

Country Link
US (1) US4843389A (de)
EP (1) EP0286719B1 (de)
JP (1) JPS63151224A (de)
AT (1) ATE125375T1 (de)
AU (1) AU596713B2 (de)
BR (1) BR8706325A (de)
CA (1) CA1290061C (de)
DE (1) DE3751421T2 (de)
DK (1) DK636087A (de)
NO (1) NO173576C (de)

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3750135T2 (de) * 1987-04-23 1994-12-08 Oce Nederland Bv Textverarbeitungssystem und -verfahren zur Prüfung des richtigen und folgerichtigen Gebrauchs von Einheiten und chemischen Formeln in einem Textverarbeitungssystem.
WO1988009586A1 (en) * 1987-05-25 1988-12-01 Megaword International Pty. Ltd. A method of processing a text in order to store the text in memory
US5551049A (en) * 1987-05-26 1996-08-27 Xerox Corporation Thesaurus with compactly stored word groups
US5551026A (en) * 1987-05-26 1996-08-27 Xerox Corporation Stored mapping data with information for skipping branches while keeping count of suffix endings
US5754847A (en) * 1987-05-26 1998-05-19 Xerox Corporation Word/number and number/word mapping
KR930003416B1 (ko) * 1988-03-29 1993-04-29 주식회사 금성사 폰트의 함축방법
US5258910A (en) * 1988-07-29 1993-11-02 Sharp Kabushiki Kaisha Text editor with memory for eliminating duplicate sentences
JPH0831100B2 (ja) * 1988-09-29 1996-03-27 富士ゼロックス株式会社 電子化辞書装置
CA2005070C (en) * 1988-12-23 1999-04-27 Henry C. Yuen Apparatus and method for using encoded video recorder/player timer preprogramming information
US5067152A (en) * 1989-01-30 1991-11-19 Information Technologies Research, Inc. Method and apparatus for vector quantization
US5006849A (en) * 1989-07-26 1991-04-09 Astro, Inc. Apparatus and method for effecting data compression
DE58907473D1 (de) * 1989-11-14 1994-05-19 Siemens Nixdorf Inf Syst Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten.
US5184126A (en) 1989-12-28 1993-02-02 International Business Machines Corporation Method of decompressing compressed data
US5001478A (en) 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5010345A (en) 1989-12-28 1991-04-23 International Business Machines Corporation Data compression method
US5010344A (en) * 1989-12-28 1991-04-23 International Business Machines Corporation Method of decoding compressed data
GB9001312D0 (en) * 1990-01-19 1990-03-21 Hewlett Packard Ltd Storage of compressed data
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
DE4015420A1 (de) * 1990-05-14 1991-11-21 Bosch Gmbh Robert Verfahren zur datenkompression
GB2246494B (en) * 1990-05-25 1994-08-31 Silicon Systems Inc Method and apparatus for serial communications
GB2244354B (en) * 1990-05-25 1994-02-23 Silicon Systems Inc Multi-device emulation
DE69031031T2 (de) * 1990-05-29 1997-10-30 Hewlett Packard Ltd Bandspeicherung
US5023610A (en) * 1990-06-13 1991-06-11 Cordell Manufacturing, Inc. Data compression method using textual substitution
DE69123660T2 (de) * 1990-08-13 1997-04-17 Fujitsu Ltd., Kawasaki, Kanagawa Datenkompressionsmethode und Gerät
JPH0495878A (ja) * 1990-08-14 1992-03-27 Sony Corp ピーク値検出回路
JPH04114266A (ja) * 1990-09-04 1992-04-15 Brother Ind Ltd 文書処理装置
US5333313A (en) * 1990-10-22 1994-07-26 Franklin Electronic Publishers, Incorporated Method and apparatus for compressing a dictionary database by partitioning a master dictionary database into a plurality of functional parts and applying an optimum compression technique to each part
US5473326A (en) * 1990-12-14 1995-12-05 Ceram Incorporated High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary
JP2729416B2 (ja) * 1991-07-15 1998-03-18 シャープ株式会社 テキストデータの復元方法
US5175543A (en) * 1991-09-25 1992-12-29 Hewlett-Packard Company Dictionary reset performance enhancement for data compression applications
FR2681966A1 (fr) * 1991-09-27 1993-04-02 Euro Cp Sarl Procede de compression-decompression de donnees textuelles dans un reseau domotique.
US5488725A (en) * 1991-10-08 1996-01-30 West Publishing Company System of document representation retrieval by successive iterated probability sampling
WO1993013603A1 (en) * 1991-12-23 1993-07-08 Intel Corporation Circuitry for decoding huffman codes
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
GB2268666B (en) * 1992-06-24 1996-03-20 Sony Broadcast & Communication Serial data decoding
US5649151A (en) * 1992-06-29 1997-07-15 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5734892A (en) * 1992-06-29 1998-03-31 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
JPH0628108A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ記憶システム
US5325091A (en) * 1992-08-13 1994-06-28 Xerox Corporation Text-compression technique using frequency-ordered array of word-number mappers
US5323155A (en) * 1992-12-04 1994-06-21 International Business Machines Corporation Semi-static data compression/expansion method
US5394143A (en) * 1993-06-30 1995-02-28 Digital Equipment Corporation Run-length compression of index keys
CN1111467A (zh) * 1993-06-30 1995-11-08 莫托罗拉公司 数据通信中编码和解码压缩数据的方法和装置
CA2125337A1 (en) * 1993-06-30 1994-12-31 Marlin Jay Eller Method and system for searching compressed data
US5530645A (en) * 1993-06-30 1996-06-25 Apple Computer, Inc. Composite dictionary compression system
JP3025827B2 (ja) * 1993-09-14 2000-03-27 松下電器産業株式会社 可変長コード化装置
JP3234075B2 (ja) * 1993-11-30 2001-12-04 ローム株式会社 立体映像再生装置
DE4342521C1 (de) * 1993-12-14 1995-07-13 Ibm Verfahren und Anordnung zur Expansion komprimierter Daten
US5798721A (en) * 1994-03-14 1998-08-25 Mita Industrial Co., Ltd. Method and apparatus for compressing text data
US5635931A (en) * 1994-06-02 1997-06-03 International Business Machines Corporation System and method for compressing data information
US5646617A (en) * 1994-06-16 1997-07-08 Seiko Epson Corporation Data compressing method, data restoring method, and information processing apparatus
US5561421A (en) * 1994-07-28 1996-10-01 International Business Machines Corporation Access method data compression with system-built generic dictionaries
DE4432436C2 (de) * 1994-09-12 1997-04-03 Tecomac Ag Datenkompressionsverfahren und Vorrichtung zum Komprimieren von Daten
US5758257A (en) 1994-11-29 1998-05-26 Herz; Frederick System and method for scheduling broadcast of and access to video programs and other data using customer profiles
US5684478A (en) * 1994-12-06 1997-11-04 Cennoid Technologies, Inc. Method and apparatus for adaptive data compression
US5499293A (en) * 1995-01-24 1996-03-12 University Of Maryland Privacy protected information medium using a data compression method
US5774714A (en) * 1995-03-27 1998-06-30 Hewlett-Packard Company Zone bit recording enhanced video data layout
GB2305746B (en) * 1995-09-27 2000-03-29 Canon Res Ct Europe Ltd Data compression apparatus
US5974180A (en) * 1996-01-02 1999-10-26 Motorola, Inc. Text compression transmitter and receiver
JP3566441B2 (ja) * 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US6082776A (en) * 1997-05-07 2000-07-04 Feinberg; Lawrence E. Storing personal medical information
US6470362B1 (en) * 1997-05-16 2002-10-22 Compaq Computer Corporation Extracting ordered list of words from documents comprising text and code fragments, without interpreting the code fragments
JPH11143877A (ja) * 1997-10-22 1999-05-28 Internatl Business Mach Corp <Ibm> 圧縮方法、辞書の見出し語インデックス・データを圧縮するための方法、及び機械翻訳システム
JP3337633B2 (ja) 1997-12-03 2002-10-21 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3421700B2 (ja) * 1998-01-22 2003-06-30 富士通株式会社 データ圧縮装置及び復元装置並びにその方法
US6327634B1 (en) * 1998-08-25 2001-12-04 Xilinx, Inc. System and method for compressing and decompressing configuration data for an FPGA
DE19854179A1 (de) * 1998-11-24 2000-05-25 Siemens Ag Verfahren und Anordnung zur Kompression bzw. Expansion von Zeichenketten durch eine DV-Einrichtung
JP4776050B2 (ja) 1999-07-13 2011-09-21 ソニー株式会社 配信コンテンツ生成方法、コンテンツ配信方法および装置、並びに、コード変換方法
US6522268B2 (en) * 2000-01-05 2003-02-18 Realnetworks, Inc. Systems and methods for multiple-file data compression
US7026962B1 (en) * 2000-07-27 2006-04-11 Motorola, Inc Text compression method and apparatus
US6898605B2 (en) * 2000-09-11 2005-05-24 Snap-On Incorporated Textual data storage system and method
US20030217025A1 (en) * 2000-09-11 2003-11-20 David Costantino Textual data storage system and method
CA2423965A1 (en) * 2000-09-29 2002-04-04 Gavagai Technology Incorporated A method and system for adapting synonym resources to specific domains
US20030157470A1 (en) * 2002-02-11 2003-08-21 Michael Altenhofen E-learning station and interface
US6657565B2 (en) 2002-03-21 2003-12-02 International Business Machines Corporation Method and system for improving lossless compression efficiency
US7574719B1 (en) 2002-06-27 2009-08-11 Microsoft Corporation Program guide data compression
CA2411227C (en) * 2002-07-03 2007-01-09 2012244 Ontario Inc. System and method of creating and using compact linguistic data
WO2004059459A1 (en) * 2002-12-27 2004-07-15 Nokia Corporation Predictive text entry and data compression method for a mobile communication terminal
US7941311B2 (en) * 2003-10-22 2011-05-10 Microsoft Corporation System and method for linguistic collation
US7764673B1 (en) * 2004-08-04 2010-07-27 Cisco Technology, Inc. System and method for implementing a variable size codebook for compression in a communications environment
US7899665B2 (en) * 2004-08-20 2011-03-01 International Business Machines Corporation Methods and systems for detecting the alphabetic order used by different languages
US8954400B2 (en) * 2004-09-13 2015-02-10 International Business Machines Corporation Method, system and program product for managing structured data
US7594171B2 (en) 2004-10-01 2009-09-22 Adobe Systems Incorporated Rule-based text layout
US20060106870A1 (en) * 2004-11-16 2006-05-18 International Business Machines Corporation Data compression using a nested hierarchy of fixed phrase length dictionaries
US20060236319A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Version control system
US7102552B1 (en) * 2005-06-07 2006-09-05 Windspring, Inc. Data compression with edit-in-place capability for compressed data
US7148824B1 (en) * 2005-08-05 2006-12-12 Xerox Corporation Automatic detection of character encoding format using statistical analysis of the text strings
JP5240457B2 (ja) * 2007-01-16 2013-07-17 日本電気株式会社 拡張認識辞書学習装置と音声認識システム
US8391148B1 (en) * 2007-07-30 2013-03-05 Rockstar Consortion USLP Method and apparatus for Ethernet data compression
US8149469B2 (en) * 2007-08-03 2012-04-03 Canon Kabushiki Kaisha Image reading apparatus and image reading method
US8078454B2 (en) * 2007-09-28 2011-12-13 Microsoft Corporation Two-pass hash extraction of text strings
US7444347B1 (en) * 2007-11-16 2008-10-28 International Business Machines Corporation Systems, methods and computer products for compression of hierarchical identifiers
US8326604B2 (en) * 2008-04-24 2012-12-04 International Business Machines Corporation Dictionary for textual data compression and decompression
US8326605B2 (en) * 2008-04-24 2012-12-04 International Business Machines Incorporation Dictionary for textual data compression and decompression
AU2009267477B2 (en) * 2008-07-11 2013-06-20 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method for encoding a symbol, method for decoding a symbol, method for transmitting a symbol from a transmitter to a receiver, encoder, decoder and system for transmitting a symbol from a transmitter to a receiver
WO2010043970A2 (en) * 2008-10-13 2010-04-22 Faroo Assets Limited System and method for distributed index searching of electronic content
CN105893337B (zh) * 2015-01-04 2020-07-10 伊姆西Ip控股有限责任公司 用于文本压缩和解压缩的方法和设备
US10956440B2 (en) * 2017-10-16 2021-03-23 International Business Machines Corporation Compressing a plurality of documents

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL302815A (de) * 1963-02-06
US4295124A (en) * 1979-08-13 1981-10-13 National Semiconductor Corporation Communication method and system
US4386416A (en) * 1980-06-02 1983-05-31 Mostek Corporation Data compression, encryption, and in-line transmission system
US4597057A (en) * 1981-12-31 1986-06-24 System Development Corporation System for compressed storage of 8-bit ASCII bytes using coded strings of 4 bit nibbles
US4545032A (en) * 1982-03-08 1985-10-01 Iodata, Inc. Method and apparatus for character code compression and expansion
JPS59228457A (ja) * 1983-06-09 1984-12-21 Fuji Photo Film Co Ltd 放射線画像データ圧縮方法および装置
EP0160672A4 (de) * 1983-10-19 1986-05-12 Text Sciences Corp Verfahren und vorrichtung zum verdichten von daten.
US4646061A (en) * 1985-03-13 1987-02-24 Racal Data Communications Inc. Data communication with modified Huffman coding

Also Published As

Publication number Publication date
EP0286719A3 (de) 1992-01-22
NO173576B (no) 1993-09-20
DK636087A (da) 1988-06-05
NO875048D0 (no) 1987-12-03
JPH026252B2 (de) 1990-02-08
NO173576C (no) 1993-12-29
BR8706325A (pt) 1988-07-19
US4843389A (en) 1989-06-27
DE3751421D1 (de) 1995-08-24
CA1290061C (en) 1991-10-01
AU8163787A (en) 1988-06-09
EP0286719A2 (de) 1988-10-19
ATE125375T1 (de) 1995-08-15
AU596713B2 (en) 1990-05-10
EP0286719B1 (de) 1995-07-19
NO875048L (no) 1988-06-06
JPS63151224A (ja) 1988-06-23
DK636087D0 (da) 1987-12-03

Similar Documents

Publication Publication Date Title
DE3751421T2 (de) Verfahren und Vorrichtung zur Textkomprimierung und -expandierung.
DE3852341T2 (de) Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung.
DE69421966T2 (de) Verfahren und System zum Suchen komprimierter Daten
DE69612832T2 (de) Datenkomprimierungs/Dekomprimierungsvorrichtung und -verfahren
DE69229521T2 (de) Datenbankauffindungssystem
DE3486224T2 (de) Verfahren zum Speichern und Wiederauffinden von digitalen Informationen.
DE69400207T2 (de) Sprachabhängiges textvergleichssystem
DE3788563T2 (de) Verfahren und Einrichtung um eine Datenbankadresse zu bestimmen.
DE69330196T2 (de) Textkomprimierungstechnik unter Anwendung einer frequenzgeordneten Matrix von Wort-Nummern-Abbildungen
DE69130868T2 (de) Kommunikationssystem für binärdaten
DE3587832T2 (de) Sprachverarbeitungslexikon zum Zweirichtungswiederfinden von morphemischen und semantischen Ausdrücken.
DE3586956T2 (de) Speicherzuordnungsverfahren fuer rechnersysteme.
DE69737892T2 (de) Lempel-Ziv Datenkompressionsverfahren unter Verwendung eines Wörterbuches mit häufig auftretenden Buchstabenkombinationen, Wörtern und/oder Sätzen
DE69131941T2 (de) System und verfahren für informationsauffindung
DE69425607T2 (de) Selektive Einrichtung und Verfahren zur Dokumentenwiederauffindung.
DE3788782T2 (de) Verfahren zur Herstellung einer Meldungsdatei in einem Computer.
DE2264090B2 (de) Datenverdichtung
DE69508796T2 (de) Lzw datenkomprimierung mit einem assoziativspeicer
DE69722085T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Botschaften
DE69934195T2 (de) Identifikation einer Wortgruppe durch modifizierte Schlüsselwörter, die aus Transformationen von aufeinanderfolgenden Suffixen erzeugt sind
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE4225200A1 (de) Elektronisches woerterbuch
DE3485824T2 (de) Verfahren zur datenkompression.
DE69522426T2 (de) Wort-Wiederauffindungsapparat für ein Wörterbuch
DE3586447T2 (de) Kompression von binaerzahlen fuer ihre speicherung.

Legal Events

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