Was ist der beste Textkomprimierungsalgorithmus?

Beste Antwort

Wenn mit „am besten“ das Komprimierungsverhältnis gemeint ist, dann gemäß Benchmark für die Komprimierung großer Texte ist CMIX. Das einzige Problem ist, dass Sie einen Computer mit 32 GB Speicher benötigen, um es auszuführen. Und dann dauert es 4 Tage, um 1 GB Text zu komprimieren oder zu dekomprimieren.

Wie die meisten der am besten bewerteten Programme verwendet CMIX die Wörterbuchvorverarbeitung und das Kontextmischen im PAQ-Stil. Der Präprozessor ersetzt Wörter durch 1 bis 3-Bit-Symbole aus einem Wörterbuch und führt eine andere Verarbeitung durch, z. B. das Ersetzen von Großbuchstaben durch ein spezielles Symbol und das entsprechende Kleinbuchstaben-Symbol. Es kann auch allgemeine Präfixe und Suffixe analysieren.

Ein Kontextmodell nimmt einen Kontext (z. B. die letzten n Bits) und schätzt eine Wahrscheinlichkeit p dass das nächste Bit eine 0 oder 1 ist. Das Ergebnis wird einem arithmetischen Codierer zugeführt, der das Bit sehr nahe an der Shannon-Grenze von log2 1 / p Bits. Das Kompressionsverhältnis hängt daher vollständig davon ab, wie gut p geschätzt wird. Ein Kontextmischungsalgorithmus macht sehr genaue Vorhersagen, indem er die Vorhersagen vieler unabhängiger Modelle kombiniert. CMIX verwendet mehrere hundert Modelle, weshalb es so viel Zeit und Speicher benötigt. Der Grund, warum es so viele Modelle gibt, ist, dass es viele verschiedene mögliche Kontexte gibt, viele Möglichkeiten, einen Kontext in eine Vorhersage umzuwandeln, viele Möglichkeiten, das Modell zu aktualisieren und viele Möglichkeiten, die Vorhersagen anderer Modelle adaptiv zu kombinieren und die besten auszuwählen, die verwendet werden eine Hierarchie von Mischern. Praktische Kontextmischer verwenden möglicherweise 2 bis 20 Modelle, wobei aus Gründen der Einfachheit und Benutzerfreundlichkeit eine gewisse Komprimierung geopfert wird.

Die besten Kompressoren kommen dem tatsächlichen Verständnis nahe Text. Sie modellieren die lexikalische, semantische und grammatikalische Struktur der Sprache. Das Wörterbuch wird beispielsweise organisiert, indem verwandte Wörter wie Mutter mit Vater zusammengefasst werden und Montag mit Dienstag . Dies führt zu Wörterbuchcodes, die sich nur in den niedrigen Bits unterscheiden. Dann lassen einige der Kontextmodelle die niedrigen Bits fallen, sodass der Kompressor vorhersagen kann, Ich habe meinen Vater am Montag gesehen, nachdem ich Ich habe meine Mutter am Dienstag gesehen .

Die technischen Details können sehr kompliziert sein. Wenn Sie mehr erfahren möchten, lesen Sie Erklärte Datenkomprimierung .

Antwort

Angenommen, Sie sprechen von verlustfrei Komprimierung (Texte können beispielsweise mit SMS-Sprache verlustbehaftet komprimiert werden). Es ist bekannt, dass Sie „keine“ Binärdatei verlustfrei komprimieren können. Mit anderen Worten, bei einigen Dateien wird die Größe erhöht. Dies liegt an den Codierer-Header-Dateien und der Grundmathematik unmöglicher Bijektionen zwischen [0, …, N] und [0, …, N-1] oder dem Dirichlet-Schubfachprinzip. Siehe http://en.wikipedia.org/wiki/Pigeonhole\_principle

Wie bereits erwähnt, bezieht sich „best“ im Allgemeinen auf ein durchschnittliches Komprimierungsverhältnis bei Sam-Jp. Der Zeichensatz von Texten (z. B. ASCII 7 oder 8 Bit ist wichtig) und deren Typ sind ebenfalls wichtig. „Beste Komprimierung“ für rein in menschlicher Sprache geschriebene Textdateien verhält sich bei PostScript-, RTF-, Dokument- oder sogar PDF-Dateien mit Drucker, die Text enthalten, anders, da einige Formate die Komprimierung bereits kapseln. Folglich hängt das „beste“ Komprimierungsverhältnis vom Datenbankinhalt, der Homogenität und der Typologie der Textdateien ab, wie aus der englischen Textkomprimierung im @ Igor-Carron-Link hervorgeht: http://www.maximumcompression.com/data/text.php

Speed ​​@ Jonathan-Hseu ist ebenfalls sehr wichtig. Abhängig von Ihrer Anwendung (von der Archivierung bis zur Datenbankinteraktion bei Daniel-Lemire) konzentriert man sich entweder auf die Komprimierungs- oder Dekomprimierungsgeschwindigkeit (normalerweise einmal komprimieren, viele dekomprimieren) oder auf beides.

Andere Funktionen können jedoch als bewertet werden Nun, insbesondere mit dem Aufkommen riesiger Datensätze und verschiedener Erfassungssysteme: – Zufallszugriffsleistung oder Suchfunktion in komprimierten Dateien – Fehlerresistenz (Beständigkeit gegen beschädigte Bits) – Online-Fähigkeit, dh in der Lage zu sein, den Datenstrom effizient zu komprimieren, sobald er kommt – Komprimierung von Texten, die nicht nur in einer Rasterreihenfolge strukturiert sind, sondern auch in Bäumen, Graphen – geringe Komplexität oder energetische Effizienz des Codierers oder Decodierers oder beides – mögliche Parallelisierung – Möglichkeit der verteilten Codierung (Komprimierungsarbeit an verschiedenen Knoten eines Netzwerks)

Schließlich kann man sogar für Text aus der verlustfreien Box heraus denken. Und wir kehren zu den zuvor zitierten SMS zurück, in denen die Bedeutung wichtig ist, aber möglicherweise nicht die richtige Schreibweise, siehe z.Kaufman & Klein, Semi-Lossless-Komprimierung http://www.computer.org/portal/web/csdl/doi/10.1109/DCC.2004.1281520

Wie üblich wird die Frage nach dem „besten“ gestellt, um die Frage nach dem tatsächlichen Zweck zu verfeinern und zusätzliche zu definieren Qualitätsmetriken und angemessene Gewichtung dieser Metriken, um „Ihr“ bestes @ Alex-Kamil zu definieren. Themen in folgenden Quellen sind inspirierend:

* IEEE-Transaktionen zur Informationstheorie http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=18 * IRE-Transaktionen zur Informationstheorie http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=4547527 * Datenkomprimierungskonferenz pages.cs.brandeis.edu/~dcc/

Da ich kein Spezialist, sondern ein Amateur für verlustfreie Komprimierung bin, war ich kürzlich von der Leistung (im Komprimierungsverhältnis) von Deplump (http://www.deplump.com/index.html) für einige lange englische Textdateien und einige Binärdateien (im Vergleich zu meinen in anderen Antworten zitierten Favoriten rar, Bzip2 und 7zip). Sie können es online auf kurze Dateien testen. Weitere Informationen finden Sie bei F. Wood et al. Der Sequence Memoizer, 2011 (siehe http://www.sequencememoizer.com/) oder die Webseite von Franck Wood http://www.stat.columbia.edu/~fwood/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.