درس ۴
فارسی، زبانی کممنبع
هر روز فارسی میخوانید و مینویسید، ولی در متنهایی که مدلها از آنها یاد میگیرند، فارسی کم است.
کامنکرال (Common Crawl) سازمانی غیرانتفاعی است که صفحههای وب را جمع میکند و رایگان در اختیار همه میگذارد. در جمعآوری شهریور ۱۴۰۵ (CC-MAIN-2026-39)، برنامهاش طی حدود دو هفته بیش از دو میلیارد صفحه را باز کرد و نسخهای از هر کدام نگه داشت. به چنین مجموعهی بزرگی از متن، پیکرهی متنی (corpus) میگویند.
کامنکرال زبان اصلی هر صفحه را هم با یک برنامهی خودکار تشخیص میدهد. اگر هزار صفحه از آن جمعآوری را به همان نسبت زبانها کنار هم بچینید، حدود ۴۱۹ صفحه انگلیسی است، ۱۷ صفحه هلندی و حدود ۷ صفحه فارسی. یعنی در برابر هر صفحهی فارسی، حدود ۶۰ صفحهی انگلیسی هست.
این سهم ثابت نیست. در جمعآوری مهر (CC-MAIN-2026-43) از هر هزار صفحه حدود ۶ صفحه فارسی بود. در ده جمعآوری از دی ۱۴۰۴ تا مهر ۱۴۰۵، این عدد میان حدود ۲ و حدود ۹ بالا و پایین رفته است. دلیل این نوسان را نمیدانم. برنامهای که زبان صفحهها را تشخیص میدهد هم ممکن است اشتباه کند.
هزار صفحه را کنار هم بچینید
هر مربع یک صفحه است و رنگش زبان آن صفحه را نشان میدهد. این هزار صفحه به همان نسبتی است که زبانها در یک جمعآوری کامنکرال داشتند؛ اول جمعآوری شهریور ۱۴۰۵ را میبینید.
- فارسی
- هلندی
- انگلیسی
- زبانهای دیگر و نامشخص
صفحههای فارسی از هر هزار صفحه، در ده جمعآوری. روی اسم هر ماه بزنید تا هزار صفحهی همان جمعآوری را بالا ببینید.
هر جمعآوری حدود دو هفته طول کشید و اینجا به اسم ماهی آمده که بیشتر آن دو هفته در آن بود. سهم زبانها از جدول زبانهای کامنکرال است و تعداد صفحهها به عدد صحیح گرد شده است.
فارسی برای مدلها زبانی کممنبع است
اگر زبانی در برابر تعداد گویندههایش متن کمی برای آموزش مدل داشته باشد، به آن زبان کممنبع (low-resource language) میگویند. «منبع» اینجا یعنی متن، نه آدم. پس کممنبع بودن به سختی یا سادگی زبان ربطی ندارد؛ به این بستگی دارد که چقدر از آن نوشته شده و در دسترس است.
در درس قبل دیدید که مدل پارامترهایش را از روی مثالها تنظیم میکند. مثالهای یک مدل زبانی همان جملههایی است که خوانده است. هر چه متن فارسی کمتری ببیند، مثال کمتری دارد تا یاد بگیرد بعد از هر تکهی فارسی چه میآید.
اگر دیدهاید چتبات به فارسی ضعیفتر از انگلیسی مینویسد، توضیح رایجش همین است. مدل کوچک درس اول برای فارسی هم ساخته شده، ولی از ۱۲ ضربالمثل فقط یکی را درست تمام کرد. نمیدانم آن مدل چقدر فارسی خوانده بود و این رابطه را خودم نسنجیدهام.
در دادههای آموزشی جیپیتی ۳، از هر ده هزار کلمه کمتر از یکی فارسی بود
کامنکرال مجموعهی آموزشی هیچ مدل خاصی نیست. شرکتها آن را پالایش میکنند و متنهای دیگری هم کنارش میگذارند؛ حاصل کار، دادههای آموزشی (training data) مدل است. اوپنایآی سال ۲۰۲۰ همراه مقالهی جیپیتی ۳ آمار زبانهای دادههای آموزشیاش را هم منتشر کرد. از کلمههای آن، ۹۳٪ انگلیسی بود و از هر ده هزار کلمه، کمتر از یکی فارسی. کلمههای هلندی ۴۰ برابر کلمههای فارسی بود.
برای مدلهایی که امروز پشت چتجیپیتی کار میکنند، چنین آماری ندیدهام.
هلندی گویندهی کمتری دارد و متن بیشتری
خیلیها فکر میکنند فارسی کممنبع است چون زبان کوچکی است. ولی فارسی زبان رسمی ایران و زبان کتابهای درسی آن است و ایران بهتنهایی بیش از ۸۵ میلیون نفر جمعیت دارد. هلندی، زبان کشوری که در آن زندگی میکنم، بیش از ۲۵ میلیون گوینده دارد. با این حال در جمعآوری شهریور، صفحههای هلندی ۲٫۵ برابر صفحههای فارسی بود.
ده دقیقه با قلم و کاغذ
سهم فارسی در جمعآوری شهریور ۰٫۶۹۳۴٪ بود. با این عدد حساب کنید مدلی که هزار صفحه از این پیکره بخواند چند صفحهی فارسی میبیند و اگر یک میلیون صفحه بخواند، چندتا. بعد همین حساب را برای کل آن جمعآوری بکنید که حدود ۲٫۲ میلیارد صفحه داشت.
حالا این پنج موضوع را روی کاغذ بنویسید: شعر فارسی، آشپزی ایرانی، آمادگی کنکور، برنامهنویسی پایتون (Python) و فوتبال. کنار هر کدام حدس بزنید که در وب دربارهاش متن فارسی بیشتر هست یا انگلیسی. جواب این حدسها را نسنجیدهام. هدف این است که ببینید کممنبع بودن میتواند از موضوعی به موضوع دیگر فرق کند.
واژهنامهی این درس
- زبان کممنبع (low-resource language): زبانی که در برابر تعداد گویندههایش متن کمی برای آموزش مدل دارد، مثل فارسی.
- پیکرهی متنی (corpus): مجموعهی بزرگی از متن، مثل صفحههایی که کامنکرال جمع میکند.
- دادههای آموزشی (training data): متنهایی که مدل واقعاً از آنها یاد میگیرد؛ معمولاً بخش پالایششدهای از پیکرههای بزرگ، بهاضافهی متنهای دیگر.
همهی درسها، با دادهها و نسخهی بدون اینترنتشان، در مخزن گیتهاب این خبرنامه هم هست.
«یادگیری آخر هفته» خواهر فارسی خبرنامهی انگلیسیام Weekend Learning است که دربارهی ارزیابی مدلهاست و در هفتههایی میآید که این یکی نمیآید.
درس بعد: مدل از کجا میفهمد اشتباه کرده است؟ دو هواشناس ساختگی را در یک هفته مقایسه میکنیم: یکی هر روز ۲ درجه خطا دارد و دیگری شش روز درست میگوید، ولی یک روز ۱۰ درجه خطا دارد. تابع زیان (loss function) خطای پیشبینیها را به یک عدد تبدیل میکند و یادگیری یعنی کوچک کردن همین عدد؛ اینکه کدام هواشناس بهتر است، به همین تابع بستگی دارد.
این درس را اجرا کنید و با خود ببرید
دفترچهی ژوپیتر (Jupyter notebook) این درس جز خود پایتون (Python) به چیز دیگری نیاز ندارد و بدون اینترنت اجرا میشود: سهم چند زبان را در جمعآوری شهریور حساب میکند، جواب حسابهای بخش قلم و کاغذ را وقتی بخواهید نشان میدهد، سهم فارسی را در ده جمعآوری میکشد و کلمههای فارسی دادههای آموزشی جیپیتی ۳ را با انگلیسی و هلندی مقایسه میکند. فایل دفترچه را دانلود کنید یا آن را در گیتهاب ببینید.
کل درس، با همین صفحه و ابزارها و دادههایش، در یک فایل زیپ هم هست. فایل زیپ درس را دانلود و از حالت فشرده خارج کنید، بعد فایل index.html را در مرورگر باز کنید.
درسهای تازه هر دو هفته یک بار، جمعهها، در خبرنامهی یادگیری آخر هفته در لینکدین میآیند.