در این پروژهی از نخستین نسخه های آزمایشی ما (بروزرسانی شده برای استفاده)، سرویس پردازش زبان فارسی کاملاً آفلاین (در صورت نیاز آنلاین) با استفاده از پایتون و جنگو پیادهسازی شده است. این سرویس برای آموزش و پژوهش طراحی شده و برخلاف بسیاری از راهحلهای موجود، به مدلهای سنگین یادگیری عمیق وابسته نیست. در این مقاله مزیتهای اصلی این اسکریپت را بررسی میکنیم.
۱. نرمالسازی صحیح متن فارسی
یکی از چالشهای اصلی در پردازش زبان فارسی وجود شکلهای نوشتاری متفاوت (مانند استفاده از نیمفاصله، حروف عربی و فارسی یا حذف اعراب) است. این سرویس با استفاده از کتابخانهی Hazm متن ورودی را نرمالسازی میکند؛ یعنی قبل از هر تحلیل، حروف همشکل را متحد، نیمفاصلهها را اصلاح و سایر بینظمیها را برطرف میکند. این مرحله باعث میشود تشخیص عبارات و کلمات در تحلیلهای بعدی دقیقتر و پایدارتر شود.
۲. تحلیل احساس سبک و قابل توسعه
بهجای استفاده از مدلهای حجیم ترنسفورمر، این سرویس از یک رویکرد لغتمحور برای تحلیل احساس بهره میبرد. فهرستی از واژگان مثبت و منفی در pipelines.py
نگهداری میشود و با شمارش تعداد واژگان احساسی، برچسب مثبت، منفی یا خنثی و سطح اعتماد تعیین میشود. مزیت این روش عبارت است از:
- سرعت و سادگی: بدون نیاز به GPU یا دانلود مدلهای بزرگ، نتیجه بلافاصله قابل محاسبه است.
- امکان شخصیسازی: میتوانید لغات مثبت یا منفی را مطابق با نیازهای دامنهی خود اضافه یا حذف کنید.
- قابلیت اجرا در هر محیطی: چون مدلهای یادگیری عمیق حذف شدهاند، این سرویس حتی روی سرورهای ساده یا رایانههای شخصی بدون کارت گرافیک نیز کار میکند.
۳. تشخیص موجودیتهای نامدار با واژگان قابل ویرایش
موجودیتهای نامدار (مانند نام اشخاص، امپراتوریها یا مکانها) با جستوجوی تطابق دقیق در یک لیست از پیش تعریفشده تشخیص داده میشود. این رویکرد مزایای زیر را دارد:
- عملکرد آفلاین: تشخیص موجودیتها بدون فراخوانی سرویسهای بیرونی یا مدلهای حجیم انجام میشود.
- سادگی توسعه: برای پوشش حوزههای جدید کافی است اصطلاحات دلخواه را به لیست اضافه کنید.
- اجتناب از نتایج اشتباه مدلهای پیچیده: چون سیستم تنها بر اساس واژگان از پیش مشخص عمل میکند، نتایج قابلپیشبینی بوده و نویز مدلی وجود ندارد.
۴. معماری RESTful و پیادهسازی با جنگو
سرویس بهعنوان یک API مبتنی بر Django REST Framework عرضه شده که مزایای زیادی دارد:
- یکپارچهسازی آسان: سرویسدهندهی HTTP بهراحتی با ابزارهای دیگر (مانند برنامههای موبایل، وب یا اسکریپتهای پایتون) ارتباط برقرار میکند. برای تحلیل یک متن کافی است درخواست POST به مسیر
/api/analyze/
ارسال شود. - امکان پردازش فایلهای بزرگ: با استفاده از Celery و Redis میتوان پردازشهای سنگین را بهصورت غیرفعال در پسزمینه انجام داد. کاربر شناسهی پردازش (job ID) دریافت میکند و بعداً نتیجهی نهایی را بازیابی میکند.
- قابلیت مقیاسپذیری: بهرهگیری از Celery امکان توزیع وظایف در چند worker را فراهم میکند و میتوان برای حجمهای بالا به سادگی گسترش داد.
۵. پایگاه پرسش و پاسخ تاریخی
ویژگی جالب دیگری که در این پروژه گنجانده شده، یک پایگاه کوچک پرسش و پاسخ دربارهٔ تاریخ ایران باستان است. مزایای این بخش عبارتند از:
- پاسخگویی آفلاین: اگر پرسش در فایل
qa_data.json
تعریف شده باشد، پاسخ بهسرعت و بدون نیاز به اتصال اینترنت ارائه میشود. - گسترشپذیری: کاربران میتوانند پرسشها و پاسخهای جدیدی را به فایل JSON اضافه کنند تا دامنهی سؤالات پوشش دادهشده بیشتر شود.
- جستوجوی اینترنتی در صورت نیاز: در صورتی که پرسش در پایگاه محلی موجود نباشد و اتصال اینترنت فراهم باشد، سرویس خلاصهای از مقالهی مرتبط در ویکیپدیای فارسی را برمیگرداند.
۶. آزادی و انطباق برای کاربران
از آنجا که این اسکریپت تحت عنوان «نسخهٔ بتا» ارائه شده و با هدف آموزشی نوشته شده است، کاربران میتوانند ساختار آن را به دلخواه تغییر دهند:
- میتوانید مجموعهی واژگان مثبت، منفی، نام اشخاص یا مکانها را گسترش دهید یا تغییر دهید.
- میتوان منطق تحلیل احساس را جایگزین کرد یا بهجای آن کارهای دیگری مانند طبقهبندی موضوعی یا خلاصهسازی متن را پیادهسازی کرد.
- با توجه به ساختار سادهی پروژه، شخصیسازی و نگهداری آن برای تیمهای کوچک یا دانشجویان آسان است.
جمعبندی
این سرویس پردازش زبان فارسی با تأکید بر سادگی، سرعت و آفلاین بودن طراحی شده است. برخلاف سیستمهای سنگین NLP که به منابع زیاد و تنظیمات پیچیده نیاز دارند، این پروژه نشان میدهد که میتوان با ترکیبی از کتابخانههایی مانند Hazm و روشهای واژگانمحور، تحلیلهای ابتدایی اما مفید را بدون نیاز به مدلهای یادگیری عمیق اجرا کرد. چنین ابزاری برای پژوهشگران، دانشجویان و توسعهدهندگانی که به دنبال راهکار سریع، سبک و قابل توسعه برای متون فارسی هستند، بسیار ارزشمند خواهد بود.
از تمام توسعه دهندگان درخواست می کنیم در صورت تمایل به همکاری در پرژه های متن باز پردازش زبان طبیعی فارسی با ما در ارتباط باشند با ایمیل : [email protected]