موضوع مقاله: کدگذاری جفت بایت | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کدگذاری جفت بایت | مقدمه: کدگذاری جفت بایتی (به اختصار ) که با digram coding نیز شناخته می‌شود الگوریتمی است که نخستین بار در سال ۱۹۹۴ توسط فیلیپ گیج توصیف شد و برای کدگذاری رشته‌های متنی به منظور فشرده‌سازی و تبدیل آنها به رشته‌های کوتاه‌تر از طریق ایجاد و استفاده از یک جدول ترجمه به کار می‌رود. | ## بخش 1: کدگذاری جفت بایت | نسخه‌ای از این الگوریتم با کمی تغییرات، در توکن‌سازهای مدل‌های زبانی بزرگ مورد استفاده قرار می‌گیرد. این روش، زوج بایت‌های با بیشترین تکرار را با یک بایت جدید که در مجموعه داده اولیه وجود ندارد جایگزین می‌کند. برای بازسازی مجموعه داده اولیه، داشتن یک جدول مراجعه و جستجو از جایگزینی‌ها ضروری است. نسخه اصلاح‌شده این الگوریتم «توکن»‌هایی (واحدهای شناسایی) را می‌سازد که می‌توانند مقادیر متفاوتی از متن منبع را پوشش دهند، که شامل نویسه‌های منفرد (از جمله تک‌رقم یا نشانه‌های نگارشی تکی) یا حتی کلمات کامل (حتی واژه‌های مرکب طولانی) می‌شود. الگوریتم اصلی الگوریتم اصلی BPE با جایگزین کردن مداوم متداول‌ترین توالی‌های پیوسته از کاراکترها در متن اصلی، با بایت‌های «جایگزین» استفاده‌نشده (در متن اولیه) عمل می‌کند. این تکرار زمانی پایان می‌یابد که دیگر توالی‌ای یافت نشود و متن هدف عملاً فشرده می‌ماند. به این صورت که با استفاده از یک جدول مراجعه و جستجو، اصطلاحات جایگزین شناخته‌شده به توالی اصلی مربوطه بازگردانده شوند. مثال فرض کنید داده‌ای که باید کدگذاری شود به صورت زیر باشد aaabdaaabac زوج بایت «aa» بیشترین تکرار را دارد و بنابراین با بایتی که در داده اصلی وجود ندارد، مانند «Z» جایگزین می‌شود. یا این که فرایند می‌تواند بازگشتی شده و ادامه یابد و «ZY» را با «X» جایگزین کند: XdXac X=ZY Y=ab Z=aa در این مرحله دیگر هیچ زوج بایتی که بیش از یک بار رخ دهد، وجود ندارد و بنابراین داده بیشتر از این با کدگذاری زوج-بایتی فشرده نمی‌شود. | ## بخش 2: کدگذاری جفت بایت | برای خارج کردن داده از حالت فشرده، کافی است جایگزینی‌های انجام شده را به شکل معکوس انجام دهیم. الگوریتم تصحیح‌شده الگوریتم اصلی BPE برای استفاده در مدل زبانی، به‌ویژه در مدل‌های زبانی بزرگِ مبتنی بر شبکه‌های عصبی، تغییر یافته است. نسخه تغییر یافته به دنبال فشرده‌سازی حداکثری متن نیست، بلکه متن ساده را به «توکن»هایی تبدیل می‌کند که در حقیقت اعداد طبیعی هستند. همه توکن‌های منحصربه‌فردی که در یک پیکره متنی یافت می‌شوند در دایره واژگان توکن فهرست می‌شوند. الگوریتم توکن‌سازیِ تغییر یافته، در ابتدا مجموعه نویسه‌های منحصربه‌فرد را به عنوان ان-گرم تک‌نویسه‌ای (توکن‌های اولیه) در نظر می‌گیرد. سپس به صورت پی‌درپی، پرکاربردترین زوج توکن مجاور را در هم ادغام می‌کند و آن را به یک ان-گرم طولانی‌تر تبدیل می‌کند و تمام رخدادهای آن زوج را با این توکن جدید جایگزین می‌کند. توجه داشته باشید که همواره می‌توان واژگان جدید را از توکن‌های واژگان نهایی و نویسه‌های مجموعه اولیه تولید کرد. این رویکرد BPE تغییر یافته در سال‌های اخیر از زبان گفتاری به زبان اشاره نیز گسترش یافته است. با این وضعیت، متن اصلی با استفاده از دایره واژگان «a=0, b=1, d=2, c=3» به صورت «0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 3» کدگذاری می‌شود. | ## بخش 3: کدگذاری جفت بایت | سپس فرایند همانند قبل ادامه می‌یابد و همراه با دایره واژگان «a=0, b=1, d=2, c=3, aa=4, ab=5»، متن قبلی به «4, 5, 2, 4, 5, 0, 3» کدگذاری می‌شود. با این حال، اگر اندازه واژگان ۵ تعیین شده بود، فرایند در دایره واژگان «a=0, b=1, d=2, c=3, aa=4» متوقف می‌شد، و مثال به صورت «4, 0, 1, 2, 4, 0, 1, 0, 3» کدگذاری می‌شد. این روش لزوماً بهینه‌ترین حالت فشرده‌سازی نیست، اما هدف BPE تغییر یافته، فشرده‌سازی حداکثری مجموعه داده‌ها نیست، بلکه می‌خواهد آن را به شکلی مناسب برای آموزش مدل‌های زبانی کدگذاری کند. BPE در سطح بایت در مثال بالا، خروجی BPE یک دایره واژگان است که می‌تواند برای کدگذاری هر متنی که با حروف «abcd» نوشته شده، مورد استفاده قرار گیرد. حتی اگر هر ۲۶ حرف الفبا در واژگان حضور داشته باشند، از آنجا که در دنیا زبان‌های متعدد با خط‌های گوناگون وجود دارد، به ناچار برخی نویسه‌ها قابل کدگذاری توسط چنین واژگانی نخواهند بود. یکی از راهکارها این است که هر نویسه غیرقابل کدگذاری را با یک نویسه ویژه به نام UNK («ناشناخته») جایگزین کنیم. در این روش ابتدا متن به قالب متنی یوتی‌اف-۸ تبدیل شده و سپس به شکل یک جریان از بایت‌ها پردازش می‌شود. | ## جمع‌بندی | به این ترتیب هر متنی که در UTF-8 کدگذاری شده باشد می‌تواند توسط BPE کدگذاری شود.