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) არის შეკუმშული ტექსტის ორი შეკუმშული ზომა. NCD მნიშვნელობა 0-ის მახლობლად ნიშნავს, რომ ტექსტები ძალიან ჰგავს ერთმანეთს, ხოლო მნიშვნელობა 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 ლექსიკონებს შეუძლიათ მკვეთრად გააუმჯობესონ მცირე ტექსტების შეკუმშვა (4KB-მდე), რაც ზუსტად არის დოკუმენტის ზომის დიაპაზონი, სადაც NCD სიზუსტეს ყველაზე მნიშვნელოვანია
  • სტრიმინგის API: მოდული მხარს უჭერს დამატებით შეკუმშვას, რაც საშუალებას აძლევს კლასიფიკაციის მილსადენებს, რომლებიც ამუშავებენ ტექსტებს მეხსიერებაში მთელი კორპუსის ჩატვირთვის გარეშე
  • ბიბლიოთეკის სტანდარტული სტაბილურობა: ვერსიების კონფლიქტი, მიწოდების ჯაჭვის რისკი — შეკუმშვის იმპორტიდან 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 დოკუმენტი წამში ერთ CPU ბირთვზე. შეკუმშვის დონის 10-მდე აწევა სიზუსტეს დაახლოებით 68%-მდე უბიძგებს გამტარუნარიანობის შემცირების ხარჯზე დაახლოებით 2500 დოკუმენტამდე წამში. ეს რიცხვები არ ემთხვევა დახვეწილ ტრანსფორმატორებს, მაგრამ ისინი წარმოადგენენ ძლიერ საფუძველს პროტოტიპებისთვის, მონაცემთა მარკირების ტრიაჟისთვის ან გარემოში, სადაც ML დამოკიდებულებების დაყენება არაპრაქტიკულია.

როგორ ადარებს NCD ტრადიციულ ML კლასიფიკაციას?

გულახდილი პასუხი არის ის, რომ NCD არ არის ტრანსფორმატორზე დაფუძნებული კლასიფიკატორების შემცვლელი მაღალი ფსონის წარმოების სისტემებში. მოდელები, როგორიცაა BERT ან GPT დაფუძნებული კლასიფიკატორები, აღწევენ 94%+ სიზუსტეს სტანდარტულ კრიტერიუმებზე. თუმცა, NCD Zstandard-თან ერთად უნიკალურ ნიშას იკავებს. ის გამოირჩევა ცივი დაწყების სცენარებში, სადაც თითო კლასში გაქვთ 50-ზე ნაკლები ეტიკეტირებული მაგალითი - სიტუაცია, როდესაც კარგად მორგებულ მოდელებსაც კი უჭირთ. ის მოითხოვს ნულოვანი ტრენინგის დროს, ამუშავებს ნებისმიერ ენას ან კოდირებას ცვლილების გარეშე და მუშაობს მთლიანად CPU-ზე მუდმივი მეხსიერებით.

ბიზნესებისთვის, რომლებიც მართავენ შემომავალი კონტენტის დიდი მოცულობის — მხარდაჭერის ბილეთებს, სოციალური მედიის ხსენებებს, პროდუქტის მიმოხილვას — Zstandard NCD კლასიფიკატორი შეიძლება გახდეს პირველი გადასასვლელი როუტერი, რომელიც ანაწილებს დოკუმენტებს რეალურ დროში, სანამ უფრო ძვირი მოდელები დაზუსტებენ შედეგებს. ეს ორეტაპიანი მილსადენი მნიშვნელოვნად ამცირებს დასკვნის ხარჯებს საერთო სიზუსტის შენარჩუნებისას. პლატფორმები, რომლებიც ამუშავებენ მომხმარებლის მიერ გენერირებულ კონტენტს მასშტაბურად, როგორიცაა Mewayz-ის 207-მოდულიანი ბიზნეს OS, რომელსაც იყენებს 138000-ზე მეტი მეწარმე, სარგებლობს მსუბუქი კლასიფიკაციით შეტყობინებების მარშრუტისთვის, თეგების კონტენტის და მომხმარებლის გამოცდილების პერსონალიზებისთვის მძიმე ინფრასტრუქტურის გარეშე.

რა არის შეზღუდვები და საუკეთესო პრაქტიკა?

შეკუმშვაზე დაფუძნებულ კლასიფიკაციას აქვს ცნობილი შეზღუდვები, რომლებიც უნდა გაითვალისწინოთ. მოკლე ტექსტები (100 ბაიტამდე) აწარმოებს არასანდო NCD ქულებს, რადგან კომპრესორს არ აქვს საკმარისი მონაცემები მნიშვნელოვანი შაბლონების შესაქმნელად. ტექნიკა ასევე მგრძნობიარეა საცნობარო ტექსტების არჩევის მიმართ - ცუდად შერჩეული წარმომადგენლები მკვეთრად ამცირებენ სიზუსტეს. და რადგან NCD არის დისტანციის მეტრიკა და არა ალბათური მოდელი, ის ბუნებრივად არ აწარმოებს ნდობის ქულებს.

ამ მიდგომისგან მაქსიმალური სარგებლობისთვის: გამოიყენეთ მინიმუმ 500 ბაიტიანი საცნობარო ტექსტები თითო კატეგორიაში, ექსპერიმენტი რამდენიმე მაგალითის შეერთებით კლასში (2-3 წარმომადგენლობითი დოკუმენტი გაერთიანებულია უკეთეს შეკუმშვის ლექსიკონებს), დაარეგულირეთ ტექსტის გარსაცმები და უფსკრული შეკუმშვამდე და შეადარეთ სტანდარტული შეკუმშვის დონეები 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-ით დღესვე და გამოიყენეთ ეს ტექნიკები თქვენი მთელი ოპერაციის განმავლობაში.