Mnoho odborných publikací bylo napsáno na téma deduplikace v rámci strukturovaných dat a snad ještě mnohem více na téma hledání podobností mezi textovými dokumenty. Setkal jsem se však jen s poměrně málo studiemi zabývajícími se do hloubky tématem mnohem bližším každému z nás, tj. deduplikací souborů uložených na našem PC, kde kromě kancelářských dokumentů mají svou značnou roli i audio / video / image soubory.
Typickou situací je:
Série článků na téma „Deduplikace souborů ve Vašem PC“ si klade za cíl zhodnotit úskalí popsané situace a navrhnout na závěr jakési desatero pro pořádek ve vlastních datech. Současně budou podrobně popsána některá existující řešení uvedených dílčích problémů. Pro úplnost se dotknu i řešení svým charakterm typických spíše pro firemní prostředí.
Když pominu náklady na duplicitní uložení, které budou v případě lokálních PC oproti obdobnému typu nákladů na straně firem spíše zanedbatelné, jednoznačně největším problémem plynoucím z mnohonásobně duplicitního uložení je chaos. Shodné soubory, různě nazvané, jsou uloženy duplicitně ve složkách, do nichž v době svého pořízení snad i logicky patřily. S přibývajícím množstvím souborů a časem plynoucím od jejich uložení je již málokdo schopen určit, zda se jedná o totožný soubor, či ne. Problém prohlubuje existence množství různých „malých“ úložišť v podobě USB klíčenek apod., kam si uživatel zkopíruje momentálně aktuální verzi souboru, kterou nutně musí přenést jinam a tam na ní pracovat. Časem se dílčí verze vyskytnou na všech klíčenkách a určení té poslední (pokud není odlišena v rámci názvu) se změní ve cvičení porovnávání datumů poslední úpravy a velikosti jednotlivých souborů. Při zálohování na nepřepisovatelná média se časem změní Váš pokoj v hotový archiv duplicitních záznamů. Pokud tedy nepopisujete jednotlivé zálohy a neskartujete ty staré.
Zatímco v případě deduplikace dat uložených v databázích lze po rozparsování hodnot obsažených v jednotlivých atributech, jejich standardizaci a aplikaci fonetických pravidel specifických pro daný sémantický typ celkem úspěšně identifikovat duplicitní záznamy a tyto záznamy posléze na základě nadefinovaných pravidel sloučit, v případě nestrukturovaných dat je situace značně složitější. V případě textových dokumentů si sice lze představit situaci, kdy je textový dokument nejprve převeden na vektor klíčových slov umožňující následné porovnání s jinými vektory, nicméně, jak postupovat v případě multimediálních souborů a PDF dokumentů? Je skutečně reálná představa, že každý textový dokument bude nutné při vyhledávání rozkládat na reprezentující vektor? Jak si poradit s roztříštěností dat v rámci různých úložišt? To jsou otázky, na které se budu snažit nalézt odpověď v rámci následujících odstavců.
Pokud v prostředí Windows 7 v Ovládacích panelech kliknete na ikonu Možnosti indexování, pak pod nabídkou Upřesnit narazíte na nastavení, které Vám možná vyrazí dech. Obsahuje možnost indexování nejen podle metadat uvedených ve vlastnostech souboru, ale též i indexaci dle jeho obsahu. V seznamu typů souborů nechybí ani PDF, ani media formáty jako je JPG a MPEG. Znamená to tedy, že je možné indexovat a tím pádem i porovnávat libovolné dokumenty? Podle [1] umí Windows Search rozpoznat text pomocí OCR (Optical Character Recognition) a následně rozpoznaný text indexovat v případě souborů kompatibilních se specifikací TIFF 6.0. Do této skupiny patří např. sobory LZW, JPG a CCITT. Ponechme stranou fakt, že tuto možnost je nejpve nutné aktivovat pomocí „Programy a Funkce“ -> „Zapnout nebo vypnout funkce systému Windows“ a soustřeďme se na skutečnost, že existuje způsob, jak indexovat čitelný text v rámci obrázků. Je tomu tak stejně i v případě PDF dokumentů? Zde je situace trochu jiná. Pro rozpoznávání textu z PDF dokumentů používají Windows Adobe PDF IFilter (alternativně lze použít též např. Foxit PDF IFilter, dostupný viz [2]). Komponenta tvoří dle [3] převodní můstek mezi PDF dokumenty a indexovací službou. Standardně je součástí Adobe Acrobat nebo Adobe Reader od verze 7.0.5. Je též volně stažitelná z webu Adobe (viz [3]). Jakmile je nainstalována, extrahuje informace z PDF dokumentů a vrací je vyhledávacímu / indexovacímu engine. Pro extrakci informací z PDF dokumentů lze použít též další parsery PDF jako je např. PDFBox (obsahuje třídy pro překlad do Lucen Document), XPDF (obsahuje utilitu PDFTOTEXT pro překlad do textových souborů) nebo JPEDAL.
Nyní již víme, že lze rutinně extrahovat informace na základě rozpoznání textu v obrázcích a z PDF dokumentů. Jak je to ale v případě obrázků neobsahujících textové informace a v případě audio / video souborů? V případě audio záznamů by bylo teoreticky možné použít nástroje pro rozpoznávání řeči s následnou transformací do textového dokumentu, který by již bylo možné indexovat standardním způsobem. V případě obrázků by bylo teoreticky možné pro účely deduplikace využít přímo nástroje pro jejich porovnání. V případě úspěšné deduplikace obrázků by bylo možné video soubory uvažovat jako posloupnost obrázků a vyhodnotit podobnost dvou souborů na základě několika snímků shodně umístěných na časové ose. Takovou funkcionalitu poskytuje např. nástroj Fast Video Indexer (viz [6]).
V praxi lze však použít mnohem robustnější metody pro identifikaci duplicit napříč všemi datovými formáty. Příkladem takového nástroje může být pro nekomerční účely volně dostupný Anti-Twin (viz [7]), který je schopen porovnat bajty libovolných souborů, hledat podobnosti v jejich názvech, porovnávat jednotlivé pixely obrázků a porovnávat soubory i zhlediska jejich podobné velikosti. Nevýhodou tohoto nástroje je možnost deduplikovat soubory pouze v rámci dvou různých složek. Je tedy možné porovnat data na PC s daty na externím disku, nikoliv s více alternativními úložišti. Proces porovnávání je navíc poměrně časově nákladný. Těžko by jej bylo možné použít pro velké objemy dat. V některém z příštích dílů si ukážeme, jak se s tímto negativním aspektem vypořádávají firmy.
Spoléhání se pouze na nástroje typu Anti-Twin má ale i další úskalí. V podstatě je nutné opakovaně skenovat datové úložiště a až ex-post reagovat na nově vzniklé duplicity. V příštím dílu si ukážeme, jakým způsobem je možné převést úlohu reaktivního řešení problému duplicit na úlohu proaktivní.