Porovnání Komprimaˇcních Program ˚U Na Textových Korpusech
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA FAKULTA}w¡¢£¤¥¦§¨ INFORMATIKY !"#$%&'()+,-./012345<yA| Porovnání komprimaˇcních program ˚una textových korpusech BAKALÁRSKÁˇ PRÁCE Jakub Foltas Brno, 2014 Prohlášení Prohlašuji, že tato bakaláˇrskápráce je mým p ˚uvodnímautorským dílem, které jsem vypracoval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování používal nebo z nich ˇcerpal, v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj. Jakub Foltas Vedoucí práce: RNDr. Miloš Jakubíˇcek ii Podˇekování Chtˇelbych podˇekovatvedoucímu mé bakaláˇrské práce RNDr. Mi- loši Jakubíˇckoviza odborné vedení, cenné rady a trpˇelivost,kterou se mnou mˇel.Také bych rád podˇekovalsvé rodinˇea pˇrátel˚umza podporu, kterou mi v dobˇepsaní bakaláˇrsképráce poskytovali. iii Shrnutí Bakaláˇrskápráce se zabývá porovnáním volnˇedostupných bezeztrá- tových komprimaˇcníchprogram ˚una textových korpusech. Hlavním cílem výzkumu bylo najít vhodný komprimaˇcníprogram, který by nahradil souˇcasnˇepoužívaný program XZ v Laboratoˇripro zpraco- vání pˇrirozeného jazyka pˇriMasarykovˇeuniverzitˇe. Testování na dvou odlišných textových korpusech se podrobilo celkem dvacet volnˇedostupných komprimaˇcníchprogram ˚u.Primár- ním kritériem porovnání byla urˇcenavelikost komprimace. Dále byla porovnávána doba bˇehuprogramu a programové vytížení pamˇeti. Dalším pˇredmˇetemzkoumání byly úˇcinkypˇredzpracováníkorpus ˚u pˇredsamotnou komprimací testovanými programy. Tˇriprogramy dokázaly korektnˇezkomprimovat oba zadané kor- pusy a významnˇepˇredˇcilysouˇcasnˇepoužívaný program XZ. Nejlep- ších výsledk ˚udosáhly programy 7-Zip a NanoZip, které pˇrekonaly program XZ ve velikosti komprimace i spotˇrebovanémˇcase.Experi- menty s pˇredzpracovánímkorpus ˚uneprokázaly efektivitu. iv Klíˇcováslova komprimace, komprese, textový korpus, kompresní pomˇer, UNIX, Linux, komprimaˇcníprogram, komprimaˇcníalgoritmus, slovníková komprimace, LZMA, PPM, BWT, CM, XZ, Zip, 7-Zip, Gzip, Bzip2, NanoZip, DURILCA, paq9a v Obsah 1 Komprimace dat .........................5 1.1 Ztrátová a bezeztrátová komprimace ...........5 1.2 Kódování ...........................5 1.2.1 Shannon–Fanovo kódování............6 1.2.2 Huffmanovo kódování...............7 1.2.3 Numerické kódy..................8 Golombovy a Riceovy kódy...........8 Kódy s extra bity..................9 1.2.4 Aritmetické kódování...............9 1.3 Modelování ......................... 10 1.3.1 Model s pevným uspoˇrádáním.......... 12 Model pˇríméhokontextu............. 12 Model nepˇríméhokontextu............ 12 1.3.2 Model s variabilním uspoˇrádáním........ 12 Pˇredpovˇed’ podle ˇcásteˇcnéshody (PPM).... 13 Dynamické Markovovo kódování (DMC)... 13 Vážení kontextového stromu (CTW)...... 14 1.3.3 Míchání kontext ˚u(CM).............. 14 1.4 Transformace ........................ 14 1.4.1 Kódování dlouhých bˇeh˚u(RLE)......... 15 1.4.2 Slovníkový pˇrístup................. 15 LZ77......................... 16 Deflate........................ 16 LZSS......................... 17 ROLZ........................ 17 LZP......................... 17 LZMA........................ 17 LZ78......................... 18 LZW......................... 18 1.4.3 Posun dopˇredu(MTF)............... 18 1.4.4 Burrows–Wheelerova transformace (BWT)... 19 2 Metodika porovnávání ...................... 20 2.1 Základní testování program ˚u ............... 20 2.1.1 Formát získaných dat............... 21 2.2 Pokroˇcilétestování program ˚u ............... 23 1 2.3 Komprimovaná data .................... 24 2.3.1 DESAM....................... 24 2.3.2 Czes2......................... 25 2.4 Použitý Hardware ...................... 25 3 Testované programy ....................... 26 3.1 BBB .............................. 26 3.2 BZip2 ............................. 27 3.3 comprolz ........................... 28 3.4 comprox ........................... 28 3.5 crook ............................. 29 3.6 ctw .............................. 30 3.7 DURILCA .......................... 31 3.8 fpaq3d ............................ 32 3.9 Gzip .............................. 33 3.10 lpaq .............................. 34 3.11 lrzip .............................. 34 3.12 Lzip .............................. 35 3.13 LZPXj ............................. 36 3.14 NanoZip ........................... 36 3.15 Ocamyd ........................... 38 3.16 paq9a ............................. 39 3.17 TinyCM ............................ 40 3.18 XZ ............................... 41 3.19 Zip .............................. 42 3.20 7-Zip ............................. 43 4 Výsledky .............................. 45 4.1 Základní testování program ˚una korpusu DESAM ... 45 4.2 Základní testování program ˚una korpusu Czes2 .... 47 4.3 Pokroˇcilétestování program ˚u ............... 48 4.3.1 Komprimace po ˇcástech.............. 48 4.3.2 Komprimace po ˇcástechse slovníkem...... 50 Varianta I...................... 50 Varianta II...................... 51 Varianta III..................... 52 5 Závˇer ................................ 53 A Obsah CD ............................. 59 2 Úvod Komprimace (též komprese) dat se používá pro zmenšení poˇctubit ˚u, reprezentujících datový objekt. V podstatˇese komprimaˇcníalgorit- my snaží o vytvoˇreníkompaktnˇejšíverze zakódovaných dat, což se využívá zejména pˇriarchivaci nebo pˇrenosudat. Na základˇevýsled- ných dat rozlišujeme dva základní typy komprimace, komprimaci ztrátovou a bezeztrátovou. Ztrátová komprimace bývá typicky ve- lice úsporná, co se týˇcevelikosti zkomprimovaných dat, ovšem pˇri komprimaci jsou nˇekterádata nenávratnˇeodstranˇena.Ztrátová kom- primace se obvykle hodí pro data reprezentující hudbu nebo video. Oproti tomu komprimace bezeztrátová vytvoˇrí datový soubor, ze kterého m ˚užemeopˇetzrekonstruovat p ˚uvodnídata. Proto je beze- ztrátová komprimace ménˇeúˇcinná,ale má velké použití všude, kde by ztráta informace mohla znamenat poškození celého souboru [1]. Bakaláˇrskápráce se zabývá komprimací textových korpus ˚u.Jazy- kové korpusy jsou rozsáhlé soubory text ˚u,které bývají oznaˇckovány pomocí jazyka XML nebo staršího SGML. Metajazykové znaˇckypo- užité v textu popisují r ˚uznévlastnosti textu. Uvádˇejínapˇríkladau- tora, rok vydání, nakladatelství apod. U každého slova navíc ur- ˇcujíjeho slovní druh a další lingvistické a statisticky zajímavé in- formace. Jazykové korpusy jsou typicky uložené ve formˇevertikál- ního textu. Bakaláˇrskápráce je zamˇeˇrenana korpusy formátované do sloupc ˚uoddˇelenýchtabulátorem, pˇriˇcemžv prvním sloupci na- jdeme samotný text a v dalších sloupcích jsou obsaženy metajazy- kové znaˇcky. Zadavatelem bakaláˇrsképráce je Laboratoˇrpro zpracování pˇri- rozeného jazyka pˇriMasarykovˇeuniverzitˇe.V souˇcasnostiveškerá práce probíhá na strojích s operaˇcnímisystémy UNIX. Pro archivaci textových korpus ˚use nyní používá volnˇedostupný komprimaˇcní program XZ. Cílem této bakaláˇrsképráce je porovnat dostupné kom- primaˇcníprogramy na vzorku textového korpusu a najít takový, kte- rý pˇredˇcísouˇcasnˇevyužívaný program XZ. Testované komprimaˇcní programy musí fungovat na strojích s operaˇcnímsystémem typu UNIX a být volnˇešiˇritelné.Zejména p ˚ujdeo programy bezeztrátové, nebot’ ztráta dat je v tomto pˇrípadˇenežádoucí. Testované algoritmy jsou porovnávány podle tˇrí kritérií. Primárním cílem je zmenšení 3 objemu dat, proto prvním kritériem porovnávání je tzv. kompresní pomˇer. Kompresní pomˇerudává pomˇervelikosti výstupních dat ku velikosti vstupních dat [2]. Další použitá kritéria porovnání testova- ných algoritm ˚ujsou ˇcaspotˇrebnýpro vykonání komprimace a nako- nec vytížení pamˇetistroje po dobu bˇehukomprimace. Pro dosažení objektivního porovnání testovaných algoritm ˚ubyl použit shellový skript operaˇcníhosystému UNIX, který má za úkol spustit na testovacím korpusu daný algoritmus a po jeho dokonˇcení vypsat výsledná kritéria porovnávání. Ještˇepˇredukonˇcenímskript své výsledky zapíše do výstupního souboru, ze kterého je ˇcerpáno pˇrisestavování tabulek efektivity testovaných program ˚u.Pro zjiš- tˇení,zda se komprimaˇcníprogramy chovají r ˚uznˇena vˇetšímpoˇctu menších soubor ˚ua menším poˇctuvˇetšíchsoubor ˚u,byl vytvoˇrendal- ší skript, který slouží k rozdˇelenítextového korpusu. Na rozdˇele- ném korpusu byla provedena testování komprimaˇcníchprogram ˚u. Na závˇerdošlo i k testování program ˚una rozdˇelenýchkorpusech pˇredzpracovanýchpomocí slovníkového algoritmu. Ze všech dvaceti testovaných program ˚udokázaly tˇritestované programy korektnˇezkomprimovat dva testované korpusy a záro- veˇnvýznamnˇepˇredˇcitsouˇcasnˇepoužívaný program XZ. Zatímco program paq9a dosáhl nejlepšího výsledku z hlediska výsledné ve- likosti, ale horšího ˇcasu.Programy 7-Zip a NanoZip se v testu je- vily nˇekolikanásobnˇerychlejší a zároveˇntaké docílily lepšího kom- presního pomˇeru. Experimenty s dˇeleníma následným pˇredzpraco- váním textového korpusu neprokázaly efektivitu ani z hlediska vý- sledné komprimace, ani délky bˇehuprogramu. 4 1 Komprimace dat Komprimace (též komprese) dat se používá pro zmenšení poˇctubit ˚u reprezentujících datový objekt. To obvykle zahrnuje problém najít a odstranit redundantní data z p ˚uvodního souboru. V podstatˇese komprimaˇcníprogramy snaží o vytvoˇreníkompaktnˇejšíverze zakó- dovaných dat, což se používá zejména pˇriarchivaci nebo pˇrenosu dat. Opakem komprimace dat je datová dekomprimace, pˇrikteré se zakódovaná data dekódují do výsledné podoby. Na základˇevýsled- ných dat rozlišujeme dva základní typy komprimace, komprimaci ztrátovou a bezeztrátovou. [2] 1.1 Ztrátová a bezeztrátová komprimace Ztrátová