Jaký je nejlepší algoritmus komprese textu?

Nejlepší odpověď

Pokud výrazem „nejlepší“ míníte kompresní poměr, pak podle Benchmark komprese velkých textů je to CMIX. Jediným problémem je, že ke spuštění potřebujete počítač s 32 GB paměti. Pak bude trvat 4 dny, než zkomprimujete nebo dekomprimujete 1 GB textu.

Stejně jako většina nejlépe hodnocených programů používá CMIX slovníkové předzpracování a kontextové mixování stylu PAQ. Preprocesor nahrazuje slova 1 až 3 bitovými symboly ze slovníku a provádí další zpracování, například nahrazuje velká písmena speciálním symbolem a odpovídajícím malým písmenem. Může také analyzovat běžné předpony a přípony.

Kontextový model přebírá kontext (například posledních n bitů) a odhaduje pravděpodobnost p že další bit bude 0 nebo 1. Výsledek se přivede do aritmetického kodéru, který kóduje bit velmi blízko Shannonově limitu log2 1 / p bity. Kompresní poměr proto zcela závisí na tom, jak dobře se odhaduje p . Algoritmus míchání kontextu vytváří velmi přesné předpovědi kombinací předpovědí mnoha nezávislých modelů. CMIX používá několik stovek modelů, a proto vyžaduje tolik času a paměti. Důvodů, proč existuje tolik modelů, je to, že existuje mnoho různých možných kontextů, mnoho způsobů převodu kontextu na předpověď, mnoho způsobů aktualizace modelu a mnoho způsobů, jak adaptivně kombinovat předpovědi jiných modelů a vybrat ty nejlepší pomocí hierarchie mixérů. Praktické kontextové mixéry mohou používat 2 až 20 modelů a obětovat určitou kompresi pro jednoduchost a použitelnost.

Nejlepší kompresory se blíží skutečnému porozumění text. Modelují lexikální, sémantickou a gramatickou strukturu jazyka. Například slovník je organizován seskupením souvisejících slov, například matka s otcem a pondělí s úterý . Výsledkem jsou kódy slovníku, které se liší pouze nízkými bity. Poté některé z kontextových modelů vypustí nízké bity, což kompresoru umožní předpovědět viděl jsem svého otce v pondělí poté, co jsem viděl Maminku jsem viděl v úterý .

Technické podrobnosti mohou být docela zapojeny. Pokud se chcete dozvědět více, přečtěte si část Vysvětlení komprese dat .

Odpověď

Za předpokladu, že mluvíte o bezztrátové komprese (texty mohou být ztrátové komprimovány například pomocí jazyka SMS), je dobře známo, že nemůžete bezztrátově komprimovat „žádný“ binární soubor. Jinými slovy, u některých souborů se zvětší jejich velikost. To je způsobeno hlavičkovými soubory kodéru a základními matematickými výpočty nemožných bijekcí mezi [0, …, N] a [0, …, N-1] nebo Dirichletovým principem holubí díry (Schubfachprinzip). Viz http://en.wikipedia.org/wiki/Pigeonhole\_principle

Jak již bylo řečeno, „nejlepší“ obecně odkazuje na nějaký průměrný kompresní poměr @ Sam-Jp. Důležitá je také znaková sada textů (např. Ascii 7 nebo 8 bitů) a jejich typ. „Nejlepší komprese“ u čistě psaných textových souborů v lidském jazyce se chová odlišně v souborech postscriptové tiskárny, rtf, doc nebo dokonce pdf, které obsahují text, protože některé formáty již zapouzdřují kompresi. V důsledku toho „nejlepší“ kompresní poměr závisí na obsahu databáze, homogenitě a typologii textových souborů, jak je vidět v anglické kompresi textu uvedené v odkazu @ Igor-Carron: http://www.maximumcompression.com/data/text.php

Rychlost @ Jonathan-Hseu je také docela důležitá. V závislosti na vaší aplikaci (od archivace po interakce s databázemi @ Daniel-Lemire) se člověk zaměřuje buď na kompresi, nebo na dekompresi (obvykle komprimuje jednou, dekomprimuje mnoho) rychlostí nebo na obojí.

Ale jiné funkce lze hodnotit dobře, zejména s příchodem obrovských datových sad a různých akvizičních systémů: -výkonnost přístupu k lidem nebo schopnost vyhledávání v komprimovaných souborech -odolnost proti chybám (odolnost vůči poškozeným bitům) -online schopnost, tj. schopnost efektivně komprimovat datový proud, jak přichází – komprese textů strukturovaných nejen v rastrovém pořadí, ale i ve stromech, grafech – nízká složitost nebo energetická účinnost kodéru nebo dekodéru nebo obojí – možná paralelizace – možnost distribuovaného kódování (kompresní práce sdílená na různých uzlech sítě)

Nakonec, dokonce i pro text, lze vymyslet z bezztrátového pole. A vracíme se k dříve citovaným SMS, kde je důležitý význam, ale možná ne správné hláskování, viz např.Kaufman & Klein, Poloztrátová komprese http://www.computer.org/portal/web/csdl/doi/10.1109/DCC.2004.1281520

Jako obvykle se otázka „nejlepšího“ vyřeší v upřesnění otázky skutečného účelu v definování dalších metriky kvality a odpovídající váha těchto metrik k definování „vašich“ nejlepších @ Alex-Kamil. Témata v následujících zdrojích jsou inspirativní:

* Transakce IEEE o teorii informací http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=18 * Transakce IRE o teorii informací http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=4547527 * Data Compression Conference pages.cs.brandeis.edu/~dcc/

Nakonec, protože nejsem žádný specialista, ale amatér v bezeztrátové kompresi, byl jsem nedávno ohromen výkonem (v kompresním poměru) Deplump (http://www.deplump.com/index.html) na některé dlouhé anglické textové soubory a několik binárních souborů (ve srovnání s mými oblíbenými rar, Bzip2 a 7zip citovanými v jiných odpovědích). Můžete to otestovat na krátké soubory online. Další informace naleznete v publikaci F. Wood a kol. The Sequence Memoizer, 2011 (viz http://www.sequencememoizer.com/) nebo webová stránka Franck Wood http://www.stat.columbia.edu/~fwood/

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *