Hacker News

Տեքստի դասակարգում Python 3.14-ի ZSTD մոդուլով

Տեքստի դասակարգում Python 3.14-ի ZSTD մոդուլով Տեքստի այս համապարփակ վերլուծությունը առաջարկում է դրա հիմնական բաղադրիչների և ավելի լայն հետևանքների մանրամասն ուսումնասիրություն: Ուշադրության հիմնական ոլորտները Քննարկումը կենտրոնացած է. Հիմնական մեխանիզմները և պրո...

1 min read Via maxhalford.github.io

Mewayz Team

Editorial Team

Hacker News
Այժմ ես ունեմ ինձ անհրաժեշտ բոլոր համատեքստը: Թույլ տվեք գրել բլոգի գրառումը:

Տեքստի դասակարգում Python 3.14-ի ZSTD մոդուլով

Python 3.14-ը ներկայացնում է compression.zstd մոդուլը ստանդարտ գրադարանում, և այն բացում է տեքստի դասակարգման զարմանալիորեն հզոր մոտեցում առանց մեքենայական ուսուցման մոդելների: Չափելով, թե որքան լավ է կոմպրեսորը կարող սեղմել երկու տեքստ միասին, դուք կարող եք որոշել դրանց նմանությունը, որը կոչվում է նորմալացված սեղմման հեռավորություն (NCD), և այժմ Zstandard-ը այն բավականաչափ արագ է դարձնում արտադրական ծանրաբեռնվածության համար:

Ինչպե՞ս է իրականում աշխատում սեղմման վրա հիմնված տեքստի դասակարգումը:

Սեղմման վրա հիմնված դասակարգման հիմքում ընկած հիմնական գաղափարը հիմնված է տեղեկատվության տեսության մեջ: Երբ Zstandard-ի նման սեղմման ալգորիթմը հանդիպում է տեքստի բլոկի, այն ստեղծում է օրինաչափությունների ներքին բառարան: Եթե ​​երկու տեքստեր ունեն համանման բառապաշար, շարահյուսություն և կառուցվածք, ապա դրանք միասին սեղմելը մի փոքր ավելի մեծ արդյունք է տալիս, քան միայն մեծ տեքստը սեղմելը: Եթե դրանք կապ չունեն, ապա միացված սեղմված չափը մոտենում է երկու առանձին չափերի գումարին:

Այս հարաբերությունը ձևակերպված է Նորմալացված սեղմման հեռավորության բանաձևով. NCD(x, y) = (C(xy) - min(C(x), C(y))) / max(C(x), C(y)), որտեղ C(x)-ը x տեքստի սեղմված չափն է, իսկ C(xy) սեղմված տեքստի երկու սեղմված չափը: 0-ի մոտ NCD արժեքը նշանակում է, որ տեքստերը շատ նման են, մինչդեռ 1-ին մոտ արժեքը նշանակում է, որ դրանք գրեթե չեն կիսում տեղեկատվական բովանդակություն:

Այս տեխնիկան ուշագրավ է դարձնում այն, որ այն չի պահանջում ոչ ուսուցման տվյալներ, ոչ նշանավորում, ոչ ներկառուցումներ և ոչ GPU: Կոմպրեսորն ինքը գործում է որպես տեքստի կառուցվածքի սովորած մոդել: «Ցածր ռեսուրսներով տեքստի դասակարգում. կոմպրեսորներով դասակարգման մեթոդ առանց պարամետրերի» (2023) հոդվածներում հրապարակված հետազոտությունները ցույց են տվել, որ gzip-ի վրա հիմնված NCD-ն մրցակցում է BERT-ին որոշակի հենանիշերի վրա՝ առաջացնելով նոր հետաքրքրություն այս մոտեցման նկատմամբ:

Ինչու՞ է Python 3.14-ի Zstandard մոդուլը խաղափոխիչ NCD-ի համար:

Մինչ Python 3.14-ը, Zstandard-ի օգտագործումը պահանջում էր երրորդ կողմի python-zstandard փաթեթի տեղադրումը: Նոր compression.zstd մոդուլը, որը ներկայացվել է PEP 784-ի միջոցով, առաքվում է անմիջապես CPython-ով: Սա նշանակում է զրոյական կախվածություն և երաշխավորված, կայուն API, որն ապահովված է Meta-ի մարտական ​​փորձարկված libzstd-ով: Հատուկ դասակարգման առաջադրանքների համար Zstandard-ն առաջարկում է մի քանի առավելություն gzip-ի կամ bzip2-ի նկատմամբ.

  • Արագություն. Zstandard-ը սեղմվում է 3-5 անգամ ավելի արագ, քան gzip-ը համադրելի հարաբերակցությամբ՝ հազարավոր փաստաթղթերի խմբաքանակի դասակարգումը կենսունակ դարձնելով ոչ թե րոպեների, այլ վայրկյանների ընթացքում
  • Կարգավորվող սեղմման մակարդակները. 1-ից 22 մակարդակները թույլ են տալիս փոխանակել արագությունը հարաբերակցությամբ՝ թույլ տալով չափավորել NCD ճշգրտությունը թողունակության պահանջներին համապատասխան
  • Բառարանային աջակցություն. Նախապես պատրաստված Zstandard բառարանները կարող են զգալիորեն բարելավել փոքր տեքստերի սեղմումը (4 ԿԲ-ից ցածր), ինչը հենց այն փաստաթղթի չափի միջակայքն է, որտեղ NCD ճշգրտությունն ամենակարևորն է:
  • Streaming API. Մոդուլն աջակցում է աստիճանական սեղմմանը՝ հնարավորություն տալով դասակարգման խողովակաշարերին, որոնք մշակում են տեքստերը՝ առանց ամբողջ կորպուսները հիշողության մեջ բեռնելու
  • Ստանդարտ գրադարանի կայունություն. Ոչ մի տարբերակ, ոչ մատակարարման շղթայի վտանգ — compression import zstd աշխատում է Python 3.14+-ի յուրաքանչյուր տեղադրման վրա

Հիմնական պատկերացում․ Սեղմման վրա հիմնված դասակարգումը լավագույնս աշխատում է, երբ ձեզ անհրաժեշտ է արագ, կախվածությունից զերծ ելակետ, որը բնականաբար մշակում է բազմալեզու տեքստը: Քանի որ կոմպրեսորները աշխատում են հումքի բայթերով, այլ ոչ թե լեզվին հատուկ նշաններով, նրանք դասակարգում են չինարեն, արաբերեն կամ խառը լեզվով փաստաթղթերը նույնքան արդյունավետ, որքան անգլերենը. լեզվական մոդել չի պահանջվում:

Ինչպիսի՞ն է գործնական իրականացումը:

Նվազագույն NCD դասակարգիչը Python 3.14-ում տեղավորվում է 30 տողից ցածր: Դուք կոդավորում եք յուրաքանչյուր հղման տեքստ (մեկը յուրաքանչյուր կատեգորիայի համար), այնուհետև յուրաքանչյուր նոր փաստաթղթի համար հաշվում եք NCD-ն յուրաքանչյուր հղումի համեմատ և նշանակեք կատեգորիան ամենացածր հեռավորությամբ: Ահա հիմնական տրամաբանությունը.

Նախ, ներմուծեք մոդուլը -ով սեղմման ներմուծման zstd-ից: Սահմանեք ֆունկցիա, որն ընդունում է երկու բայթ տող, յուրաքանչյուրն առանձին-առանձին սեղմում է, սեղմում է դրանց միացումը և վերադարձնում է NCD միավորը: Այնուհետև կառուցեք բառարանի քարտեզագրման կատեգորիայի պիտակներ՝ ներկայացուցչական նմուշների տեքստերի համար: Յուրաքանչյուր մուտքային փաստաթղթի համար կրկնեք կատեգորիաները, հաշվարկեք NCD-ն և ընտրեք նվազագույնը:

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

AG News տվյալների բազայի համեմատությամբ (չորս կարգի նորությունների դասակարգում) այս մոտեցումը, օգտագործելով Zstandard-ը սեղմման մակարդակի 3-ում, հասնում է մոտավորապես 62-65% ճշտության՝ առանց վերապատրաստման քայլի, մոդելի ներբեռնման և դասակարգման արագության մոտավորապես 8000 փաստաթղթերի վայրկյանում մեկ պրոցեսորի միջուկի վրա: Սեղմման մակարդակը մինչև 10-ի բարձրացնելը ճշգրտությունը հասցնում է մոտ 68%-ի` թողունակությունը վայրկյանում մոտ 2500 փաստաթուղթ նվազեցնելու գնով: Այս թվերը չեն համընկնում ճշգրտված տրանսֆորմատորների հետ, սակայն դրանք ապահովում են ամուր հիմք նախատիպի ձևավորման, տվյալների պիտակավորման տրաֆիկի կամ այնպիսի միջավայրերի համար, որտեղ ML կախվածության տեղադրումն անիրագործելի է:

Ինչպե՞ս է NCD-ն համեմատվում ավանդական ML դասակարգման հետ:

Ազնիվ պատասխանն այն է, որ NCD-ն չի փոխարինում տրանսֆորմատորների վրա հիմնված դասակարգիչներին բարձր ցցերի արտադրության համակարգերում: Մոդելները, ինչպիսիք են BERT-ը կամ GPT-ի վրա հիմնված դասակարգիչները, հասնում են 94%+ ճշգրտության ստանդարտ հենանիշերի վրա: Այնուամենայնիվ, NCD-ն Zstandard-ով զբաղեցնում է յուրահատուկ տեղը: Այն գերազանցում է սառը մեկնարկի սցենարները, երբ դուք ունեք 50-ից պակաս պիտակավորված օրինակներ մեկ դասի համար. իրավիճակ, երբ նույնիսկ լավ կարգավորված մոդելները դժվարանում են: Այն պահանջում է զրոյական ուսուցման ժամանակ, մշակում է ցանկացած լեզու կամ կոդավորում առանց փոփոխության և ամբողջությամբ աշխատում է պրոցեսորի վրա՝ մշտական հիշողությամբ:

Ձեռնարկությունների համար, որոնք կառավարում են մուտքային բովանդակության մեծ ծավալներ՝ աջակցության տոմսեր, սոցիալական լրատվամիջոցների հիշատակումներ, արտադրանքի ակնարկներ, Zstandard NCD դասակարգիչը կարող է ծառայել որպես առաջին անցումային երթուղիչ, որը դասակարգում է փաստաթղթերը իրական ժամանակում, նախքան ավելի թանկ մոդելները կատարելագործել արդյունքները: Այս երկաստիճան խողովակաշարը զգալիորեն նվազեցնում է եզրակացության ծախսերը՝ պահպանելով ընդհանուր ճշգրտությունը: Օգտատերերի կողմից ստեղծված բովանդակությունը մասշտաբով մշակող հարթակները, ինչպիսիք են Mewayz-ի 207 մոդուլներից բաղկացած բիզնես ՕՀ-ն, որն օգտագործվում է ավելի քան 138,000 ձեռնարկատերերի կողմից, օգտվում են թեթև դասակարգումից՝ ուղղորդելու հաղորդագրությունները, պիտակավորելու բովանդակությունը և անհատականացնելու օգտատերերի փորձառությունները՝ առանց ծանր ենթակառուցվածքի:

Որո՞նք են սահմանափակումները և լավագույն փորձը:

Կոմպրեսիոն վրա հիմնված դասակարգումն ունի հայտնի սահմանափակումներ, որոնք դուք պետք է հաշվի առնեք: Կարճ տեքստերը (մինչև 100 բայթ) ստեղծում են անվստահելի NCD միավորներ, քանի որ կոմպրեսորը չունի բավարար տվյալներ՝ իմաստալից օրինաչափություններ ստեղծելու համար: Տեխնիկան նույնպես զգայուն է հղման տեքստերի ընտրության նկատմամբ. վատ ընտրված ներկայացուցիչները կտրուկ նվազեցնում են ճշգրտությունը: Եվ քանի որ NCD-ն ավելի շուտ հեռավորության չափիչ է, քան հավանականական մոդել, այն բնականաբար վստահության միավորներ չի տալիս:

Այս մոտեցումից առավելագույնը ստանալու համար. օգտագործեք առնվազն 500 բայթ տեքստեր յուրաքանչյուր կատեգորիայի համար, փորձեք միացնելով մի քանի օրինակներ մեկ դասի համար (2-3 ներկայացուցչական փաստաթղթերը միացված են ավելի լավ սեղմման բառարաններ), նորմալացրեք տեքստի պատյաններն ու բացատները սեղմումից առաջ և նշեք Zstandard սեղմման մակարդակները 3, 6 և 10 արագությունը գտնելու համար: Փոքր տեքստերի դասակարգման համար նախապես պատրաստեք Zstandard բառարանը ձեր տիրույթի կորպուսում. այս քայլը կարող է բարելավել ճշգրտությունը 8-12 տոկոսային կետով կարճ փաստաթղթերում:

Հաճախակի տրվող հարցեր

Արդյո՞ք սեղմման վրա հիմնված դասակարգումն աշխատում է զգացմունքների վերլուծության համար:

Կարող է, բայց նախազգուշացումներով: Զգացմունքների վերլուծությունը պահանջում է կառուցվածքային համանման տեքստերի ներսում տոնային նուրբ տարբերությունների հայտնաբերում: NCD-ն ավելի լավ է աշխատում թեմաների դասակարգման համար, որտեղ տարբեր կատեգորիաների փաստաթղթերն օգտագործում են տարբեր բառապաշարներ: Զգացմունքների համար ճշգրտությունը սովորաբար հասնում է 55-60%-ի, ինչը ավելի լավ է, քան պատահական, բայց պատրաստ չէ ինքնուրույն արտադրությանը: NCD հատկանիշների համադրումը թեթև լոգիստիկ ռեգրեսիայի մոդելի հետ զգալիորեն բարելավում է արդյունքները:

Կարո՞ղ եմ օգտագործել compression.zstd մոդուլը Python-ի տարբերակներում մինչև 3.14-ը:

Ոչ: compression.zstd մոդուլը նոր է Python 3.14-ում: Ավելի վաղ տարբերակների համար տեղադրեք python-zstandard փաթեթը PyPI-ից, որն ապահովում է համարժեք compress() և decompress() գործառույթները: NCD տրամաբանությունը մնում է նույնական. փոխվում է միայն ներմուծման հայտարարությունը: 3.14-ին թարմացնելուց հետո կարող եք ամբողջությամբ հրաժարվել երրորդ կողմի կախվածությունից:

Ինչպե՞ս է գործում Zstandard NCD-ն՝ համեմատած TF-IDF-ի՝ կոսինուսի նմանությամբ:

Հավասարակշռված տվյալների հավաքածուներով բազմադասային թեմաների դասակարգման դեպքում TF-IDF գումարած կոսինուսի նմանությունը սովորաբար հասնում է 75-82% ճշգրտության՝ համեմատած Zstandard NCD-ի 62-68%-ի հետ: Այնուամենայնիվ, TF-IDF-ը պահանջում է հարմարեցված վեկտորատոր, սահմանված բառապաշար և լեզվին հատուկ կանգառների ցուցակներ: Zstandard NCD-ն չի պահանջում այս նախամշակումներից որևէ մեկը, աշխատում է տարբեր լեզուներով և դասակարգում է նոր փաստաթղթերը մշտական ​​ժամանակում՝ անկախ բառապաշարի չափից: Արագ նախատիպերի կամ բազմալեզու միջավայրերի համար NCD-ն հաճախ ավելի արագ ճանապարհ է դեպի աշխատանքային համակարգ:

Անկախ նրանից, թե դուք կառուցում եք ավտոմատ բովանդակության խողովակաշարեր, ուղղորդում եք հաճախորդների հաղորդագրությունները կամ նախատիպավորում եք դասակարգման տրամաբանությունը ձեր թվային բիզնեսի համար, Python 3.14-ի ներկառուցված Zstandard աջակցությունը սեղմման վրա հիմնված NCD-ն ավելի հասանելի է դարձնում, քան երբևէ: Եթե դուք փնտրում եք համընդհանուր հարթակ՝ ձեր բիզնեսի բովանդակությունը, ապրանքները, դասընթացները և հաճախորդների հետ փոխհարաբերությունները կառավարելու համար, սկսեք կառուցել Mewayz-ի հետ այսօր և գործադրեք այս տեխնիկան ձեր ողջ գործունեության ընթացքում:

:

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime