مدل زبان یک مدل ریاضی است که زبان انسانی را به عنوان توزیع احتمال بر واژگان آن توصیف می کند. برای آموزش یک شبکه یادگیری عمیق برای مدل سازی یک زبان، باید واژگان را شناسایی کنید و توزیع احتمال آن را یاد بگیرید. شما نمی توانید قالب را از ابتدا ایجاد کنید. شما به مجموعه داده ای نیاز دارید که مدل شما بتواند از آن بیاموزد.
در این مقاله، با مجموعه داده های مورد استفاده برای آموزش مدل های زبان و نحوه به دست آوردن مجموعه داده های رایج از مخازن عمومی آشنا خواهید شد.
بیایید شروع کنیم.

مجموعه داده برای آموزش یک مدل زبان
عکس توسط دن وی. برخی از حقوق محفوظ است.
یک مجموعه داده خوب برای آموزش یک مدل زبان
یک مدل زبانی خوب باید یاد بگیرد که از زبان به درستی و بدون پیش داوری یا خطا استفاده کند. برخلاف زبان های برنامه نویسی، زبان های انسانی فاقد دستور زبان و نحو رسمی هستند. آنها به طور مداوم در حال تکامل هستند و فهرست کردن همه گونه های زبان را غیرممکن می کند. بنابراین، مدل باید بر روی مجموعه ای از داده ها آموزش داده شود تا بر اساس قوانین.
راه اندازی یک مجموعه داده برای مدل سازی زبان چالش برانگیز است. شما به یک مجموعه داده بزرگ و متنوع نیاز دارید که نشان دهنده تفاوت های ظریف زبان باشد. در عین حال، باید از کیفیت بالایی برخوردار باشد و استفاده صحیح از زبان را ارائه دهد. در حالت ایده آل، مجموعه داده باید به صورت دستی ویرایش و پاک شود تا نویزهایی مانند اشتباهات تایپی، اشتباهات گرامری و محتوای غیر زبانی مانند نمادها یا برچسب های HTML حذف شود.
ایجاد چنین مجموعه داده ای از ابتدا گران است، اما چندین مجموعه داده با کیفیت بالا به صورت رایگان در دسترس هستند. مجموعه داده های رایج عبارتند از:
- اکتشاف مشترک. مجموعه داده ای عظیم و به طور مداوم با بیش از 9.5 پتابایت به روز شده با محتوای متنوع. این توسط مدل های اصلی از جمله GPT-3، Llama و T5 استفاده می شود. با این حال، از آنجایی که از وب می آید، حاوی محتوای کم کیفیت و تکراری، و همچنین سوگیری و مطالب توهین آمیز است. تمیز کردن و فیلتر کردن دقیق برای مفید کردن آن مورد نیاز است.
- C4 (جسم عظیم تمیز و کاوش شده). مجموعه داده 750 گیگابایتی بازیابی شده از وب. برخلاف Common Crawl، این مجموعه داده از قبل تمیز و فیلتر شده است و استفاده از آن را آسانتر میکند. با این حال، انتظار سوگیری ها و خطاهای احتمالی را داشته باشید. مدل T5 بر روی این مجموعه داده آموزش داده شد.
- ویکی پدیا. محتوای انگلیسی به تنهایی حدود 19 گیگابایت است. عظیم است اما قابل مدیریت است. به خوبی سازماندهی شده، ساختار یافته و مطابق با استانداردهای ویکی پدیا ویرایش شده است. اگرچه طیف وسیعی از دانش عمومی را با دقت واقعی بسیار پوشش می دهد، سبک و لحن دایره المعارفی آن بسیار خاص است. آموزش بر روی این مجموعه داده به تنهایی ممکن است باعث شود که مدل ها بیش از حد با این سبک مطابقت داشته باشند.
- متن ویکی. مجموعه داده ای مشتق شده از مقالات تایید شده و برجسته ویکی پدیا. دو نسخه وجود دارد: WikiText-2 (2 میلیون کلمه در میان صدها مقاله) و WikiText-103 (100 میلیون کلمه در بین 28000 مقاله).
- BookCorpus. مجموعه داده چند گیگابایتی از متون کتاب طولانی، غنی از محتوا و با کیفیت بالا. برای یادگیری داستان سرایی منسجم و وابستگی های طولانی مدت مفید است. با این حال، با مشکلات کپی رایت و سوگیری اجتماعی مواجه است.
- پشته. مجموعه داده 825 گیگابایتی از منابع متعدد، از جمله BookCorpus. این ژانرهای مختلف متون (کتاب، مقالات، کد منبع و مقالات دانشگاهی) را با هم ترکیب می کند و پوشش موضوعی گسترده ای را ارائه می دهد که برای استدلال چند رشته ای طراحی شده است. با این حال، این تنوع منجر به کیفیت متفاوت، محتوای تکراری و سبک های نوشتاری متناقض می شود.
مجموعه داده ها را دریافت کنید
می توانید این مجموعه داده ها را به صورت آنلاین جستجو کرده و آنها را به صورت فایل های فشرده دانلود کنید. با این حال، باید فرمت هر مجموعه داده را بدانید و برای خواندن آنها کد سفارشی بنویسید.
همچنین میتوانید مجموعه دادههای موجود در مخزن Hugging Face را جستجو کنید https://huggingface.co/datasets. این مخزن یک کتابخانه پایتون فراهم می کند که به شما امکان می دهد مجموعه داده ها را در زمان واقعی با استفاده از یک فرمت استاندارد بارگیری و بخوانید.

مخزن مجموعه داده Cuddly Faces
بیایید مجموعه داده WikiText-2 را از Hugging Face، یکی از کوچکترین مجموعه داده های مناسب برای ساخت یک مدل زبان، دانلود کنیم:
وارد کردن تصادفی از مجموعه دادهها import load_dataset مجموعه = load_dataset(“wikitext”, “wikitext-2-raw-v1″) print(f”Dataset size: {len(dataset)}”) # print برخی از نمونهها n = 5 در حالی که n > 0: idx = random.randint (0, lenda)-1) مجموعه داده[idx][“text”].strip() if text و نه text.startswith(“=”): print(f”{idx}: {text}”) n -= 1
واردات تصادفی از آنجایی که مجموعه داده ها واردات loading_dataset مجموعه داده = loading_dataset(“متن ویکی”، “wikitext-2-raw-v1”) چاپ کنید(f“اندازه مجموعه داده: {len(dataset)}”) #چند نمونه چاپ کنید n = 5 در حالی که n > 0: idx = تصادفی.رندنت(0، لن(مجموعه داده)–1) متن = مجموعه داده[idx][“text”].باند() اگر متن و نه متن.شروع می شود(“=”): چاپ کنید(f“{idx}: {text}”) n -= 1 |
نتیجه ممکن است به این صورت باشد:
اندازه مجموعه داده: 36718 31776: سرچشمه رودخانه میسوری در بالای سه فورک بسیار فراتر از … 29504: انواع منطقه ای کلمه الله در هر دو پیش از بت پرستی و مسیحی ظاهر می شود @-@ … 19866: Pokiri (انگلیسی: Rogue) یک فیلم اکشن هندی در سال 2006 است. اولین آسیاب آرد مینه سوتا در سال 1823 در فورت اسنلینگ به عنوان… 10523: صنعت موسیقی به موفقیت کری توجه می کند. او برنده دو جایزه در …
اندازه مجموعه داده: 36718 31776: سرچشمه میسوری در بالای سه فورک بسیار فراتر از … 29504: تغییرات منطقه ای کلمه الله در هر دو بت پرستی و مسیحی قبل از @-@ ظاهر می شود… 19866: پوکیری (به انگلیسی: Rogue) یک فیلم اکشن هندی به زبان تلوگو است که در سال 2006 منتشر شد. 27397: اولین آسیاب آرد در مینه سوتا در سال 1823 در فورت اسنلینگ به عنوان… 10523: صنعت موسیقی به موفقیت کری توجه کرده است. او برنده دو جایزه در … |
اگر قبلاً این کار را نکردهاید، کتابخانه مجموعه داده Hugging Face را نصب کنید:
وقتی این کد را برای اولین بار اجرا می کنید، load_dataset() مجموعه داده را در رایانه محلی شما دانلود می کند. مطمئن شوید که فضای دیسک کافی دارید، به خصوص برای مجموعه داده های بزرگ. به طور پیش فرض، مجموعه داده ها در آپلود می شوند ~/.cache/huggingface/datasets.
همه مجموعه داده های Hugging Face از یک قالب استاندارد پیروی می کنند. THE dataset شیء تکرارپذیر است و هر عنصر به عنوان فرهنگ لغت وجود دارد. برای آموزش مدل زبان، مجموعه داده ها معمولاً شامل رشته های متنی هستند. در این مجموعه داده، متن در زیر ذخیره می شود "text" کلید
کد بالا از چند عنصر از مجموعه داده نمونه برداری می کند. رشته های متن ساده با طول های مختلف را خواهید دید.
پس پردازش مجموعه داده ها
قبل از آموزش یک مدل زبان، ممکن است بخواهید مجموعه داده را پس از پردازش برای پاک کردن داده ها انجام دهید. این شامل قالببندی مجدد متن (برش رشتههای طولانی، جایگزینی چند فاصله با فاصلههای منفرد)، حذف محتوای غیرزبانی (برچسبهای HTML، نمادها)، و حذف کاراکترهای ناخواسته (فضاهای اضافی در اطراف علائم نگارشی) است. پردازش خاص به مجموعه داده و نحوه ارائه متن به مدل بستگی دارد.
به عنوان مثال، اگر یک مدل کوچک به سبک BERT را آموزش دهید که فقط حروف کوچک را کنترل می کند، می توانید اندازه واژگان را کاهش دهید و توکنایزر را ساده کنید. در اینجا یک تابع مولد است که متن پس از پردازش را ارائه می دهد:
def wikitext2_dataset(): مجموعه داده = load_dataset(“wikitext”, “wikitext-2-raw-v1”) برای آیتم مجموعه داده: متن = مورد[“text”].strip() else text or text.startswith(“=”): ادامه # نادیده گرفتن خطوط خالی یا خطوط سرصفحه به text.lower() # یک نسخه کوچک از متن تولید کنید
دف wikitext2_dataset(): مجموعه داده = loading_dataset(“متن ویکی”، “wikitext-2-raw-v1”) برای مقاله در مجموعه داده: متن = مقاله[“text”].باند() اگر نه متن یا متن.شروع می شود(“=”): ادامه # از خطوط خالی یا خطوط سرصفحه رد شوید بازده متن.پایین تر() # یک نسخه کوچک از متن ایجاد کنید |
ایجاد یک عملکرد خوب پس از پردازش یک هنر است. این باید نسبت سیگنال به نویز مجموعه داده را بهبود بخشد تا به مدل کمک کند تا بهتر یاد بگیرد و در عین حال توانایی مدیریت قالبهای ورودی غیرمنتظرهای را که یک مدل آموزشدیده ممکن است با آن مواجه شود حفظ کند.
در ادامه مطلب
در زیر منابعی وجود دارد که ممکن است برای شما مفید باشد:
خلاصه
در این مقاله، با مجموعه داده های مورد استفاده برای آموزش مدل های زبان و نحوه تولید مجموعه داده های رایج از مخازن عمومی آشنا شدید. این فقط یک نقطه شروع برای کاوش مجموعه داده ها است. استفاده از کتابخانه ها و ابزارهای موجود را برای بهینه سازی سرعت بارگذاری مجموعه داده ها در نظر بگیرید تا به گلوگاهی در روند آموزش شما تبدیل نشود.
