Hacker News

طبقه بندی متن با ماژول ZSTD پایتون 3.14

طبقه بندی متن با ماژول ZSTD پایتون 3.14 این تحلیل جامع متن، بررسی دقیق اجزای اصلی و مفاهیم گسترده‌تر آن را ارائه می‌دهد. حوزه های کلیدی تمرکز محور بحث: مکانیزم های اصلی و حرفه ای...

1 min read Via maxhalford.github.io

Mewayz Team

Editorial Team

Hacker News
اکنون من تمام زمینه های لازم را دارم. اجازه بدهید پست وبلاگ را بنویسم.

طبقه بندی متن با ماژول ZSTD پایتون 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) اندازه دو متن فشرده شده فشرده شده com است. مقدار NCD نزدیک به 0 به این معنی است که متن ها بسیار شبیه هستند، در حالی که مقدار نزدیک به 1 به این معنی است که آنها تقریباً هیچ محتوای اطلاعاتی را به اشتراک نمی گذارند.

آنچه این تکنیک را قابل توجه می‌کند این است که به داده‌های آموزشی، توکن‌سازی، جاسازی‌ها و GPU نیاز ندارد. کمپرسور خود به عنوان مدل آموخته شده ساختار متن عمل می کند. تحقیقات منتشر شده در مقالاتی مانند «طبقه‌بندی متن با منبع کم: روش طبقه‌بندی بدون پارامتر با کمپرسورها» (2023) نشان داد که NCD مبتنی بر gzip در معیارهای معینی با BERT رقابت می‌کند و باعث علاقه مجدد به این رویکرد شده است.

چرا ماژول Zstandard Python 3.14 یک تغییر دهنده بازی برای NCD است؟

قبل از Python 3.14، استفاده از Zstandard نیاز به نصب بسته شخص ثالث python-zstandard داشت. ماژول جدید compression.zstd که از طریق PEP 784 معرفی شده است، مستقیماً با CPython ارسال می شود. این به معنای سربار وابستگی صفر و یک API تضمین شده و پایدار است که توسط libzstd آزمایش شده متا پشتیبانی می شود. به طور خاص برای کارهای طبقه بندی، Zstandard چندین مزیت را نسبت به gzip یا bzip2 ارائه می دهد:

  • سرعت: Zstandard 3 تا 5 برابر سریع‌تر از gzip در نسبت‌های قابل مقایسه فشرده می‌شود و طبقه‌بندی دسته‌ای هزاران سند را در چند ثانیه به جای چند دقیقه قابل اجرا می‌کند
  • سطوح فشرده‌سازی قابل تنظیم: سطوح 1 تا 22 به شما امکان می‌دهد سرعت را با نسبت تغییر دهید، و به شما امکان می‌دهد دقت NCD را در برابر نیازهای توان کالیبره کنید
  • پشتیبانی از فرهنگ لغت: دیکشنری های از پیش آموزش دیده Zstandard می توانند فشرده سازی متون کوچک (زیر 4 کیلوبایت) را به طور چشمگیری بهبود بخشند، که دقیقاً محدوده اندازه سند است که در آن دقت NCD بیشترین اهمیت را دارد
  • Streaming API: این ماژول از فشرده‌سازی افزایشی پشتیبانی می‌کند و خطوط لوله طبقه‌بندی را قادر می‌سازد که متون را بدون بارگیری کل اجزا در حافظه پردازش می‌کنند
  • پایداری استاندارد کتابخانه: بدون تداخل نسخه، بدون خطر زنجیره تامین — از فشرده سازی import zstd در هر نصب پایتون 3.14+ کار می کند

بینش کلیدی: طبقه‌بندی مبتنی بر فشرده‌سازی زمانی بهترین کار را انجام می‌دهد که به یک خط پایه سریع و بدون وابستگی نیاز داشته باشید که متن چندزبانه را به صورت بومی مدیریت کند. از آنجایی که کمپرسورها بر روی بایت‌های خام کار می‌کنند و نه نشانه‌های خاص زبان، اسناد چینی، عربی یا زبان‌های مختلط را به همان اندازه انگلیسی طبقه‌بندی می‌کنند - بدون نیاز به مدل زبانی.

یک پیاده سازی عملی چگونه به نظر می رسد؟

یک طبقه‌بندی‌کننده NCD حداقل در پایتون 3.14 در کمتر از 30 خط قرار می‌گیرد. هر متن مرجع را رمزگذاری می‌کنید (یکی در هر دسته)، سپس برای هر سند جدید، NCD را در برابر هر مرجع محاسبه می‌کنید و دسته‌ای را با کمترین فاصله اختصاص می‌دهید. منطق اصلی اینجاست:

ابتدا، ماژول را با از فشرده سازی 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 سند در ثانیه بر روی یک هسته CPU. افزایش سطح فشرده‌سازی به 10، دقت را به حدود 68 درصد می‌رساند که به قیمت کاهش توان عملیاتی به حدود 2500 سند در ثانیه است. این اعداد با ترانسفورماتورهای تنظیم شده مطابقت ندارند، اما آنها یک خط پایه قوی برای نمونه سازی، تریاژ برچسب گذاری داده ها یا محیط هایی که در آن نصب وابستگی های ML غیرعملی است، ارائه می دهند.

NCD چگونه با طبقه‌بندی سنتی ML مقایسه می‌شود؟

پاسخ صادقانه این است که NCD جایگزینی برای طبقه‌بندی‌کننده‌های مبتنی بر ترانسفورماتور در سیستم‌های تولید پرمخاطره نیست. مدل‌هایی مانند طبقه‌بندی‌کننده‌های مبتنی بر BERT یا GPT به بیش از ۹۴% دقت در معیارهای استاندارد دست می‌یابند. با این حال، NCD با Zstandard جایگاه منحصر به فردی را اشغال می کند. در سناریوهای شروع سرد که در آن شما کمتر از 50 نمونه برچسب گذاری شده در هر کلاس دارید، برتری دارد - وضعیتی که حتی مدل های تنظیم شده با مشکل مواجه هستند. به زمان آموزش صفر نیاز دارد، هر زبان یا رمزگذاری را بدون تغییر مدیریت می‌کند، و کاملاً روی CPU با حافظه ثابت اجرا می‌شود.

برای کسب‌وکارهایی که حجم زیادی از محتوای ورودی را مدیریت می‌کنند - بلیط‌های پشتیبانی، ذکر رسانه‌های اجتماعی، بررسی محصول - یک طبقه‌بندی‌کننده NCD Zstandard می‌تواند به‌عنوان یک مسیریاب گذر اول عمل کند که اسناد را در زمان واقعی دسته‌بندی می‌کند قبل از اینکه مدل‌های گران‌تر نتایج را اصلاح کنند. این خط لوله دو مرحله ای هزینه های استنتاج را به میزان قابل توجهی کاهش می دهد و در عین حال دقت کلی را حفظ می کند. پلتفرم‌هایی که محتوای تولید شده توسط کاربر را در مقیاس پردازش می‌کنند، مانند سیستم‌عامل تجاری ۲۰۷ ماژول Mewayz که توسط بیش از ۱۳۸۰۰۰ کارآفرین استفاده می‌شود، از طبقه‌بندی سبک وزن برای مسیریابی پیام‌ها، برچسب‌گذاری محتوا، و شخصی‌سازی تجربیات کاربر بدون زیرساخت‌های سنگین بهره می‌برند.

محدودیت ها و بهترین شیوه ها چیست؟

طبقه‌بندی مبتنی بر فشرده‌سازی محدودیت‌های شناخته شده‌ای دارد که باید در نظر بگیرید. متون کوتاه (زیر 100 بایت) امتیازهای NCD غیرقابل اعتمادی را ایجاد می کنند زیرا کمپرسور داده کافی برای ایجاد الگوهای معنی دار ندارد. این تکنیک همچنین به انتخاب متون مرجع حساس است - نمایندگانی که ضعیف انتخاب شده اند دقت را به شدت کاهش می دهند. و از آنجایی که NCD یک متریک فاصله است تا یک مدل احتمالی، به طور طبیعی امتیازهای اطمینان را ایجاد نمی کند.

برای استفاده بیشتر از این رویکرد: از متون مرجع حداقل 500 بایت در هر دسته استفاده کنید، با الحاق چندین مثال در هر کلاس آزمایش کنید (2-3 سند نماینده به هم پیوسته لغت نامه های فشرده سازی بهتری را ارائه می دهند)، حروف و فضای خالی متن را قبل از فشرده سازی عادی کنید، و در سطوح فشرده سازی Zstandard 3، 6، و 10-accurity خود را معیار قرار دهید. برای طبقه بندی متن کوچک، یک فرهنگ لغت Zstandard را از قبل در مجموعه دامنه خود آموزش دهید - این مرحله می تواند دقت را 8 تا 12 درصد در اسناد کوتاه بهبود بخشد.

سوالات متداول

آیا طبقه بندی مبتنی بر فشرده سازی برای تحلیل احساسات کار می کند؟

می تواند، اما با اخطارهایی. تحلیل احساسات مستلزم تشخیص تفاوت‌های لحن ظریف در متون ساختاری مشابه است. NCD برای طبقه بندی موضوعات بهتر عمل می کند، جایی که اسناد در دسته های مختلف از واژگان متمایز استفاده می کنند. برای احساسات، دقت معمولاً در حدود 55-60٪ است - بهتر از تصادفی، اما به تنهایی آماده تولید نیست. ترکیب ویژگی های NCD با یک مدل رگرسیون لجستیک سبک وزن، نتایج را به طور قابل توجهی بهبود می بخشد.

آیا می توانم از ماژول compression.zstd در نسخه های پایتون قبل از 3.14 استفاده کنم؟

خیر. ماژول compression.zstd در پایتون 3.14 جدید است. برای نسخه های قبلی، بسته python-zstandard را از PyPI نصب کنید که توابع معادل compress() و decompress() را ارائه می دهد. منطق NCD یکسان می ماند - فقط عبارت import تغییر می کند. پس از ارتقاء به 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 کنید و این تکنیک ها را در کل عملیات خود به کار ببرید.