Pokud jste někdy chtěli komprimovat textová data přímo v prohlížeči nebo optimalizovat přenos krátkých řetězců v aplikaci, je tu pro vás lehká knihovna: bpezip.
Je napsaná v čistém JavaScriptu, bez závislostí, a kombinuje několik efektivních technik:
Byte Pair Encoding (BPE) – efektivní tokenizace podslov pro kompresi textu,
Bit-packing / Frame-of-reference – ultraúsporné kódování čísel,
Varint kódování – variabilní délka celých čísel pro token streamy.
Typické kompresní algoritmy jako Gzip nebo Brotli jsou navrženy pro velké datové toky. Ale co když potřebujete komprimovat stovky malých řetězců, jako jsou textové popisky, nebo adresy (poštovní či URL adresy)?
bpezip
je řešení pro tyto případy, které:
funguje přímo v prohlížeči,
nevyžaduje žádné binárky ani knihovny,
umožňuje trénink modelu na vlastních textech,
podporuje načtení různých slovníků (např. podle jazykového kódu jako "cz"
, "de"
, "fr"
…).
Trénování připravené jako součást zdrojových kódů proběhlo na databázi názvů ulic z více jak 110 zemí světa, a každá země má svých max 16 000 tokenů pro kompresi.
Defaultní nastavení obsahuje všechny jazykové moduly, a z toho důvodu má knihovna necelé 3MB. Jednoduše je však možné v textovém editoru vymazat jazyky které nepotřebujete (úplně na konci .js souboru), takže například při zachování jen amerických a českých modulů se snadno dostanete pod 128KB.
Příklady komprese jsou uvedeny níže
Unpacked: 47B Packed: 25B Compression: 53% Emily Watson, 47 Wattle Crescent, 2602 Ainslie Unpacked: 59B Packed: 46B Compression: 77% 蒋青莲, 云岩区燕雀巷17号碧霄楼, 550002 贵阳 Unpacked: 47B Packed: 28B Compression: 59% Rigmor Kjeldsen, Møllestien 14, 8000 Aarhus C Unpacked: 75B Packed: 41B Compression: 54% عائشة محروس, زقاق المدابغ ٣, ١١٦٢٢ الجيزة Unpacked: 48B Packed: 30B Compression: 62% Unto Kuusisto, Paimenenpolku 7 A 4, 66950 Jurva Unpacked: 77B Packed: 36B Compression: 46% Léontine Perrault, 4 Impasse des Rossignols, 17110 Saint-Georges-de-Didonne Unpacked: 52B Packed: 29B Compression: 55% Ulrich Wiesengrund, Finkenrain 9, 79199 Kirchzarten Unpacked: 44B Packed: 26B Compression: 59% Zsombor Holló, Rákóczi-rét 3, 3300 Eger Unpacked: 51B Packed: 35B Compression: 68% Helga Skaptadóttir, Ránargata 14, 101 Reykjavík Unpacked: 108B Packed: 69B Compression: 63% र ुक ्म िण ी च ौह ान, 12 खज ूर म ार ्ग, 305001 अजम ेर Unpacked: 51B Packed: 33B Compression: 64% Ratna Pramudita, Gg. Sedap Malam 4, 80235 Denpasar Unpacked: 76B Packed: 43B Compression: 56% 水野 ちとせ, 京都市左京区鹿ケ谷桜谷町25-7, 606-8443 京都 Unpacked: 65B Packed: 45B Compression: 69% زاہد حسین, گلی برسات ۵۲, ۵۴۰۰۰ لاہور Unpacked: 58B Packed: 35B Compression: 60% Maite Cifuentes, Calle Camarones 6234, C1419 Buenos Aires Unpacked: 48B Packed: 26B Compression: 54% Wouter Baks, Noorderdwarsstraat 2, 3513 Utrecht Unpacked: 58B Packed: 36B Compression: 62% Tomáš Konečný, Lesní 14, 739 81 Bystřice nad Olší
Tomáš je autorem několika více či méně známých projektů jak z oblasti operačních systémů, tak internetu. V současnosti samozvaný expert na Linux, Bash, PHP a MySQL.
Přečteno 28 593×
Přečteno 25 053×
Přečteno 20 222×
Přečteno 18 913×
Přečteno 13 516×