Mi a legjobb szövegtömörítési algoritmus?

Legjobb válasz

Ha a „legjobb” kifejezés alatt a tömörítési arányt érted, akkor a Nagy szövegtömörítési referenciaérték , ez CMIX. Az egyetlen probléma az, hogy a futtatásához 32 GB memóriával rendelkező számítógépre van szükség. Ezután 4 napra lesz szükség 1 GB szöveg tömörítésére vagy kicsomagolására.

A legtöbb rangsorolt ​​programhoz hasonlóan a CMIX szótár előtti feldolgozást és PAQ stílusú kontextus keverést használ. Az előfeldolgozó a szavakat 1 – 3 bites szimbólumokkal helyettesíti egy szótárban, és egyéb feldolgozásokat végez, például kicseréli a nagybetűket egy speciális szimbólumra és a megfelelő kisbetűs szimbólumra. Elemezheti a gyakori előtagokat és utótagokat is.

A kontextusmodell kontextust vesz fel (például az utolsó n bitet), és kitalálja a valószínűséget p , hogy a következő bit 0 vagy 1 lesz. Az eredményt egy aritmetikai kódoló kapja meg, amely a bitet nagyon közel kódolja a log2 Shannon-határához 1 / p bit. A tömörítési arány tehát teljes mértékben attól függ, hogy mennyire becsülhető meg p . Egy kontextus keverési algoritmus nagyon pontos előrejelzéseket végez számos független modell előrejelzésének kombinálásával. A CMIX több száz modellt használ, ezért kell ennyi idő és memória. Annyi modell létezik, hogy sokféle lehetséges kontextus létezik, sokféle kontextus konvertálható előrejelzéssé, sokféleképpen frissítheti a modellt, és számos módon adaptívan kombinálhatja más modellek előrejelzéseit és kiválaszthatja a legjobbakat a keverők hierarchiája. A gyakorlati kontextus-keverők 2-20 modellt használhatnak, feláldozva némi tömörítést az egyszerűség és a használhatóság érdekében.

A legjobb kompresszorok közel állnak a megértéséhez szöveg. Modellezik a nyelv lexikális, szemantikai és nyelvtani szerkezetét. Például a szótár a kapcsolódó szavak csoportosításával van rendezve, például anya apával és hétfő a kedden . Ez olyan szótárkódokat eredményez, amelyek csak az alacsony bitekben különböznek. Ezután néhány kontextusmodell elveti az alacsony biteket, így a kompresszor megjósolhatja hétfőn láttam apámat , miután láttam a Kedden láttam anyámat .

A technikai részletek meglehetősen érintettek lehetnek. Ha további információkra kíváncsi, olvassa el az Adattömörítés magyarázata című részt.

Válasz

Feltéve, hogy veszteségmentesről beszél tömörítés (a szövegek például veszteségesen tömöríthetők az SMS nyelvével), köztudott, hogy nem lehet veszteségmentesen “semmilyen” bináris fájlt tömöríteni. Más szavakkal, egyes fájlok mérete megnő. Ennek oka a kódolók fejlécfájljai és a [0, …, N] és [0, …, N-1] közötti lehetetlen bijekció alapvető matematikája, vagy a Dirichlet galamblyuk elv (Schubfachprinzip). Lásd: http://en.wikipedia.org/wiki/Pigeonhole\_principle

Mint korábban említettük, a “legjobb” általában valamilyen átlagos tömörítési arányra utal @ Sam-Jp. A szövegek karakterkészlete (pl. Ascii 7 vagy 8 bit számít) és típusuk is fontos. A tiszta emberi nyelvű írott szövegfájlok “legjobb tömörítése” másképp viselkedik a nyomtatót tartalmazó postScript, rtf, doc vagy akár szöveget tartalmazó pdf fájlokon, mivel egyes formátumok már tömörítik a tömörítést. Következésképpen a „legjobb” a tömörítési arányban az adatbázis tartalmától, a szövegfájlok homogenitásától és tipológiájától függ, amint az angol szövegtömörítés látható @ Igor-Carron linken: http://www.maximumcompression.com/data/text.php

A Speed ​​@ Jonathan-Hseu is nagyon fontos. Az alkalmazástól függően (az archiválástól az adatbázis-interakciókig @ Daniel-Lemire) az egyik a tömörítésre vagy a dekompresszióra (általában egyszeri tömörítésre, sokak visszafejtésére) vagy mindkettőre összpontosít.

De más funkciók is értékelhetők Nos, különösen a hatalmas adatkészletek és a különféle adatgyűjtő rendszerek megjelenésével: -véletlenszerű hozzáférési teljesítmény vagy keresési képesség a tömörített fájlokban -hiba-rugalmasság (ellenállás a sérült bitekkel szemben) -online képesség, azaz képes hatékonyan tömöríteni az adatfolyamot, ahogy jön nemcsak raszteres sorrendben, hanem fákban strukturált szövegek tömörítése – grafikonok – a kódoló vagy a dekóder alacsony komplexitása vagy energetikai hatékonysága, vagy mindkettő – lehetséges párhuzamosítás – elosztott kódolás lehetősége (a hálózat különböző csomópontjain megosztott tömörítési munka)

Végül, akár szöveg esetén is, gondolhatunk a veszteségmentes dobozból. És visszatérünk a korábban idézett SMS-ekre, ahol a jelentés fontos, de talán nem a helyes írásmód, lásd pl.Kaufman & Klein, Félveszteség nélküli tömörítés http://www.computer.org/portal/web/csdl/doi/10.1109/DCC.2004.1281520

Mint általában, a “legjobb” kérdés feltevése a tényleges cél pontosításában, a további meghatározásában oldódik meg. minőségi mutatók és e mutatók megfelelő súlyozása a “legjobb” @ Alex-Kamil meghatározásához. A következő források témái inspirálóak:

* IEEE tranzakciók információelmélettel http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=18 * IRE tranzakciók információelmélettel http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=4547527 * Adattömörítési konferencia pages.cs.brandeis.edu/~dcc/

Végül, mivel nem veszteségmentes tömörítésben vagyok szakember, hanem amatőr vagyok, a közelmúltban csodálkoztam a Deplump (http://www.deplump.com/index.html) néhány hosszú angol szöveges fájlon és néhány bináris fájlon (összehasonlítva a többi válaszban idézett favs rar, Bzip2 és 7zip fájljaimmal). Tesztelheti online fájlok rövid fájljait. További információkért tekintse meg F. Wood et al. A Sequence Memoizer, 2011 (lásd http://www.sequencememoizer.com/) vagy a Franck Wood weboldala http://www.stat.columbia.edu/~fwood/

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük