Hacker News

Класіфікацыя тэксту з дапамогай модуля ZSTD Python 3.14

Класіфікацыя тэксту з дапамогай модуля ZSTD Python 3.14 Гэты комплексны аналіз тэксту прапануе дэталёвае вывучэнне яго асноўных кампанентаў і больш шырокія наступствы. Ключавыя вобласці ўвагі У цэнтры абмеркавання: Асноўныя механізмы і пра...

1 min read Via maxhalford.github.io

Mewayz Team

Editorial Team

Hacker News
Цяпер у мяне ёсць увесь неабходны кантэкст. Дазвольце мне напісаць паведамленне ў блогу.

Класіфікацыя тэксту з дапамогай модуля ZSTD Python 3.14

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 азначае, што ў іх амаль адсутнічае інфармацыя.

Гэтую тэхніку адметнай робіць тое, што яна не патрабуе навучальных даных, токенізацыі, убудаванняў і графічнага працэсара. Кампрэсар выступае як вывучаная мадэль структуры тэксту. Даследаванні, апублікаваныя ў артыкулах накшталт "Класіфікацыя тэксту з нізкім узроўнем рэсурсаў: метад класіфікацыі без параметраў з дапамогай кампрэсараў" (2023 г.), паказалі, што NCD на аснове gzip канкуруе з BERT па пэўных тэстах, выклікаючы аднаўленне цікавасці да падыходу.

Чаму модуль Zstandard Python 3.14 змяняе гульню для НЗ?

Да Python 3.14 выкарыстанне Zstandard патрабавала ўсталявання старонняга пакета python-zstandard. Новы модуль compression.zstd, прадстаўлены праз PEP 784, пастаўляецца непасрэдна з CPython. Гэта азначае адсутнасць накладных выдаткаў на залежнасці і гарантаваны стабільны API, які падтрымліваецца праверанай у баях libzstd ад Meta. Спецыяльна для задач класіфікацыі Zstandard прапануе некалькі пераваг перад gzip або bzip2:

  • Хуткасць: Zstandard сціскае ў 3-5 разоў хутчэй, чым gzip пры супастаўных суадносінах, што робіць пакетную класіфікацыю тысяч дакументаў жыццяздольнай за секунды, а не за хвіліны
  • Наладжвальныя ўзроўні сціску: Узроўні з 1 па 22 дазваляюць мяняць хуткасць на суадносіны, дазваляючы адкалібраваць дакладнасць NCD у адпаведнасці з патрабаваннямі прапускной здольнасці
  • Падтрымка слоўніка: Папярэдне падрыхтаваныя слоўнікі Zstandard могуць значна палепшыць сціск невялікіх тэкстаў (менш за 4 КБ), што з'яўляецца менавіта тым дыяпазонам памераў дакументаў, дзе дакладнасць NCD мае найбольшае значэнне
  • API струменевай перадачы: модуль падтрымлівае паступовае сцісканне, дазваляючы канвееры класіфікацыі, якія апрацоўваюць тэксты без загрузкі ўсяго корпуса ў памяць
  • Стандартная стабільнасць бібліятэкі: Няма канфліктаў версій, няма рызыкі ў ланцугу паставак — from compression import zstd працуе пры кожнай устаноўцы Python 3.14+
<цытата>

Асноўная інфармацыя: класіфікацыя на аснове сціску лепш за ўсё працуе, калі вам патрэбна хуткая базавая лінія без залежнасцей, якая апрацоўвае шматмоўны тэкст на роднай мове. Паколькі кампрэсары працуюць з неапрацаванымі байтамі, а не са спецыфічнымі для мовы маркерамі, яны класіфікуюць кітайскія, арабскія або змешаныя моўныя дакументы гэтак жа эфектыўна, як і англійскія — моўная мадэль не патрабуецца.

Як выглядае практычная рэалізацыя?

Мінімальны класіфікатар NCD у Python 3.14 змяшчае менш за 30 радкоў. Вы кадуеце кожны тэкст спасылкі (па адным на катэгорыю), затым для кожнага новага дакумента вылічваеце NCD па кожнай спасылцы і прызначаеце катэгорыю з найменшай адлегласцю. Вось асноўная логіка:

Спачатку імпартуйце модуль з from compression import 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 можа служыць маршрутызатарам першага праходу, які класіфікуе дакументы ў рэжыме рэальнага часу, перш чым больш дарагія мадэлі ўдакладняць вынікі. Гэты двухступеньчаты канвеер значна зніжае выдаткі на вывад, захоўваючы пры гэтым агульную дакладнасць. Платформы, якія апрацоўваюць ствараемы карыстальнікамі кантэнт у маштабе, напрыклад, 207-модульная бізнес-АС Mewayz, якой карыстаюцца больш за 138 000 прадпрымальнікаў, карыстаюцца перавагамі палегчанай класіфікацыі для маршрутызацыі паведамленняў, пазначэння кантэнту і персаналізацыі карыстальніцкага ўзаемадзеяння без цяжкай інфраструктуры.

Якія абмежаванні і лепшыя практыкі?

Класіфікацыя на аснове сціску мае вядомыя абмежаванні, якія вы павінны ўлічваць. Кароткія тэксты (менш за 100 байт) ствараюць ненадзейныя вынікі NCD, таму што кампрэсар не мае дастаткова даных для стварэння значных шаблонаў. Адчувальная методыка і да выбару даведачных тэкстаў — няўдала падабраныя іх прадстаўнікі рэзка пагаршаюць дакладнасць. І паколькі NCD з'яўляецца паказчыкам адлегласці, а не імавернаснай мадэллю, ён, натуральна, не дае балаў даверу.

Каб атрымаць максімальную аддачу ад гэтага падыходу: выкарыстоўвайце даведачныя тэксты памерам не менш за 500 байт на катэгорыю, эксперыментуйце з аб'яднаннем некалькіх прыкладаў на клас (2-3 рэпрэзентатыўныя дакументы, злучаныя разам, даюць лепшыя слоўнікі сціску), нармалізуйце рэгістр тэксту і прабелы перад сцісканнем і параўнайце ўзровень сціску Zstandard 3, 6 і 10, каб знайсці лепшае месца для хуткасці і дакладнасці. Для класіфікацыі дробнага тэксту папярэдне навучыце слоўнік Zstandard на корпусе вашага дамена — гэты адзіны крок можа павысіць дакладнасць кароткіх дакументаў на 8-12 працэнтных пунктаў.

Часта задаюць пытанні

Ці працуе класіфікацыя на аснове сціску для аналізу пачуццяў?

Можна, але з агаворкамі. Аналіз пачуццяў патрабуе выяўлення тонкіх тонавых адрозненняў у структурна падобных тэкстах. NCD лепш працуе для тэматычнай класіфікацыі, калі дакументы ў розных катэгорыях выкарыстоўваюць розныя слоўнікі. Што тычыцца настрою, дакладнасць звычайна складае каля 55-60% - лепш, чым выпадковая, але сама па сабе не гатовая да вытворчасці. Спалучэнне функцый НЗ з лёгкай мадэллю лагістычнай рэгрэсіі значна паляпшае вынікі.

Ці магу я выкарыстоўваць модуль 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 часта з'яўляецца больш хуткім шляхам да працоўнай сістэмы.

Незалежна ад таго, ствараеце вы аўтаматызаваныя канвееры кантэнту, маршрутызуеце паведамленні кліентаў або ствараеце прататып логікі класіфікацыі для вашага лічбавага бізнесу, убудаваная падтрымка Zstandard у Python 3.14 робіць 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