رشد مدل‌های زبانی بزرگ در سال‌های اخیر نشان داده است که وجود کورپوس‌های عظیم و باکیفیت نقش کلیدی در موفقیت آن‌ها دارد. برای زبان فارسی، منابع متنی محدود و اغلب فاقد ساختار استاندارد هستند. همین موضوع باعث شده محققان و توسعه‌دهندگان در حوزه پردازش زبان طبیعی با چالش‌های جدی مواجه شوند. ابزار Persian Web Scraper با هدف رفع این مشکل طراحی شده و امکان استخراج داده‌های متنی از وب‌سایت‌های فارسی را به شکلی سازمان‌یافته فراهم می‌کند. این ابزار می‌تواند نقطه عطفی در ایجاد کورپوس فارسی باکیفیت برای آموزش و بهبود مدل‌های NLP باشد.

چرا به کورپوس فارسی نیاز داریم؟

مدل‌هایی مانند GPT-3 و GPT-4 نشان داده‌اند که عملکرد در وظایف مختلف هوش مصنوعی بدون آموزش مستقیم، وابستگی زیادی به کیفیت و تنوع داده‌های آموزشی دارد. برای زبان فارسی، اغلب دیتاست‌ها به صورت متن خام بدون فراداده ارائه می‌شوند. این موضوع باعث می‌شود انتخاب بخش‌های مناسب برای وظایف مختلف مانند طبقه‌بندی متن، تحلیل احساسات یا ترجمه خودکار دشوار باشد. وجود یک کورپوس فارسی غنی و ساختاریافته کمک می‌کند مدل‌ها بتوانند یادگیری درون‌متنی یا همان in-context learning را تجربه کنند و در وظایف مختلف عملکرد بهتری داشته باشند.

Persian Web Scraper چیست؟

Persian Web Scraper یک ابزار متن‌باز برای جمع‌آوری داده‌های متنی از وب‌سایت‌های محبوب فارسی است. این ابزار برخلاف بسیاری از اسکرپرها تنها متن خام را ذخیره نمی‌کند، بلکه همراه با هر متن، فراداده‌هایی مانند عنوان، تاریخ انتشار، دسته‌بندی، نویسنده و حتی نظرات کاربران را نیز نگه‌داری می‌کند. این ویژگی باعث می‌شود داده‌های به‌دست‌آمده برای پروژه‌های متنوع در حوزه NLP بسیار ارزشمند باشند.

از دیگر ویژگی‌های این ابزار می‌توان به موارد زیر اشاره کرد:

  • پشتیبانی از پروکسی‌های Socks5 برای چرخش آی‌پی و جلوگیری از مسدود شدن
  • امکان تنظیم همزمانی درخواست‌ها و میزان تأخیر بین آن‌ها
  • ذخیره داده‌ها در قالب پایگاه داده SQLite و همچنین فایل‌های JSON
  • حفظ ساختار متن اصلی شامل پاراگراف‌ها، عناوین، نقل‌قول‌ها و پیوندها

نحوه استفاده از Persian Web Scraper

این ابزار هم به صورت محلی و هم در محیط کانتینری (Docker) قابل استفاده است. برای استفاده محلی به Node.js نسخه ۱۸ یا بالاتر نیاز دارید. اجرای ساده به این شکل است:

yarn dev && yarn start [SUPPORTED_DOMAIN] [options]

گزینه‌های متعددی در این دستور وجود دارد که امکان سفارشی‌سازی فرایند اسکرپ را فراهم می‌کند، از جمله:

  • تعیین فایل تنظیمات JSON برای پیکربندی
  • مشخص‌کردن سطح گزارش‌گیری بین ۰ تا ۱۰
  • تعیین تأخیر بین درخواست‌ها
  • تنظیم تعداد درخواست‌های همزمان
  • استفاده از محدوده‌ای از پورت‌های پروکسی

برای استفاده در Docker نیز کافی است ایمیج را بسازید و با اتصال مسیر دیتابیس و کورپوس به کانتینر اجرا کنید.

ساختار خروجی

یکی از نقاط قوت Persian Web Scraper در نحوه ذخیره داده‌هاست. داده‌های هر مقاله در قالب یک JSON ساختاریافته ذخیره می‌شوند که شامل موارد زیر است:

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

این سطح از جزئیات به پژوهشگران امکان می‌دهد داده‌ها را برای وظایف مختلف پردازش زبان طبیعی به‌طور دقیق انتخاب کنند.

انگیزه توسعه Persian Web Scraper

یکی از دلایل اصلی توسعه این ابزار، کمبود کورپوس‌های فارسی ساختاریافته بود. بسیاری از منابع متنی موجود تنها شامل متن خام بودند و فاقد فراداده لازم برای تحلیل‌های دقیق‌تر. Persian Web Scraper تلاش کرده این مشکل را برطرف کند و داده‌هایی تولید کند که نه تنها از نظر حجم بزرگ باشند، بلکه تنوع و ساختار کافی برای آموزش مدل‌های NLP مدرن را نیز داشته باشند.

به گفته توسعه‌دهندگان، این ابزار می‌تواند به ایجاد دیتاست‌هایی کمک کند که برای یادگیری صفر-نمونه (zero-shot) و کم‌نمونه (few-shot) مناسب باشند؛ رویکردی که در مدل‌های زبانی بزرگ نقشی کلیدی دارد.

کاربردهای Persian Web Scraper در NLP

کاربردهای این ابزار بسیار گسترده‌اند و شامل موارد زیر می‌شوند:

  • ساخت دیتاست‌های متنوع برای آموزش مدل‌های زبانی فارسی
  • ایجاد خلاصه‌سازی خودکار متن با داده‌های غنی و واقعی
  • توسعه سیستم‌های طبقه‌بندی متن و تحلیل احساسات
  • بهبود ترجمه ماشینی فارسی
  • پژوهش‌های دانشگاهی در حوزه زبان‌شناسی رایانشی
  • ایجاد مدل‌های هوش مصنوعی بومی برای صنایع مختلف

چالش‌ها و محدودیت‌ها

اگرچه Persian Web Scraper ابزار قدرتمندی است، اما چالش‌هایی هم وجود دارد:

  • نیاز به منابع پردازشی و فضای ذخیره‌سازی بالا هنگام اسکرپ در مقیاس بزرگ
  • احتمال مسدود شدن برخی وب‌سایت‌ها در برابر درخواست‌های مکرر
  • ضرورت پاکسازی داده‌ها از خطاهای احتمالی یا محتوای تکراری
  • نیاز به به‌روزرسانی منظم برای پشتیبانی از وب‌سایت‌های جدید

آینده کورپوس فارسی با Persian Web Scraper

توسعه ابزارهایی مانند Persian Web Scraper می‌تواند زمینه‌ساز جهشی بزرگ در حوزه NLP فارسی باشد. با گسترش جامعه متن‌باز و مشارکت پژوهشگران، انتظار می‌رود کورپوس‌های جامع‌تری برای آموزش مدل‌های زبانی در دسترس قرار گیرند. این موضوع می‌تواند به تولید مدل‌های قدرتمند هوش مصنوعی بومی کمک کند که قادر به رقابت با نمونه‌های جهانی باشند.

جمع‌ بندی

ابزار Persian Web Scraper پاسخی به نیاز مبرم پژوهشگران و توسعه‌دهندگان برای ساخت کورپوس فارسی ساختاریافته است. این ابزار با حفظ فراداده‌ها و ساختار متن اصلی، امکان ایجاد دیتاست‌های غنی برای پردازش زبان طبیعی را فراهم می‌کند. اگرچه چالش‌هایی مانند مدیریت داده‌های عظیم و نیاز به منابع سخت‌افزاری وجود دارد، اما پتانسیل آن در تقویت پژوهش‌ها و توسعه مدل‌های NLP فارسی غیرقابل انکار است.