پردازش زبان فارسی در پایتون

23 آذر 92

از اول نوشتیم

برای انجام پروژه مشابهت‌یاب متون نیازمند مجموعه‌ای از ابزارهای پردازش زبان فارسی بودیم.‍ خوشبختانه پردازش زبان فارسی سابقه نسبا خوبی دارد و همان موقع که شروع به کار کردیم، دست‌مان خالی نبود.برای ریشه‌یابی واژه‌ها از ابزار Perstem استفاده کردیم و برای تمیز کردن و تقطیع جمله‌ها می‌خواستیم از ابزارهای ویراستار و SeTPer کمک بگیریم. البته کدهای ما به زبان پایتون بود و برای استفاده از این ابزارها کمی مشکل داشتیم. یعنی برای استفاده از هر کدام باید یک واسط تهیه می‌کردیم.

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

اسم بسته نرم‌افزاری را گذاشته بودیم PLTK، چون سازگار با بسته NLTK تهیه شده بود؛ مثل اینکه زبان فارسی به این کتابخانه اضافه شده باشد. بعد البته hazm را انتخاب کردیم که هضم و حزم است و اصلا مخفف هیچ واژه‌هایی نیست.

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

حالا می‌توانستیم اجازه‌نامه دلخواه‌مان را انتخاب کنیم و ما MIT را برگزیدیم که اجازه استفاده تجاری را هم داده باشیم. امید ما این است که استفاده تجاری از کدها موجب مشارکت بیشتر و در نتیجه بالا رفتن کیفیت شود. هدف‌مان این بود که هر کس مجبور نباشد از اول همه بخش‌های پردازش زبان فارسی را تهیه کند و اگر مثلا می‌خواهد روی تحلیل صرفی1 کار کند، فقط برای توسعه همین بخش زحمت بکشد.

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

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


  1. Part of Speech Tagging

5 شهریور 93

به داده‌های صرفی عظیم دست پیدا کردیم

همان‌طور که احتمالا نمی‌دانید، نسخه‌ای از پیکره دکتر بی‌جن‌خان که در سایت این پروژه عرضه شده است، نسخه کامل نیست! یعنی داده‌های اصلی تقریبا چهار برابر مجموعه عرضه‌شده هستند و برچسب‌های بسیار متنوع‌تری دارند. مثلا کسره اضافه‌ای که در هنگام خواندن متن به واژه‌ها می‌دهیم به صورت یک برچسب در این داده‌ها نمایش داده شده است. استفاده از چنین برچسب‌های خوبی آن هم در این حجم بسیار بالا، باعث شده این پیکره که موسوم به «پیکره» هم هست، تحلیل صرفی زبان فارسی را آسان و البته دقیق کند.

متاسفانه دسترسی به این داده‌ها رویه خیلی آسانی ندارد و ما مجبور شدیم از طریق رفقا به پیکره دست یابیم. برچسب‌زن صرفی را با این برچسب‌های غنی که حالا کسره اضافه هم داشتند، آموزش دادیم. برچسب‌ها زیاد شده بودند و در مقابل داده‌های بیشتری هم برای آموزش داشتیم؛ در نتیجه دقت برچسب‌زن تغییر چندانی نکرد. اما تجزیه‌گر نحوی با این برچسب‌های خوب، تقریبا ۲٪ افزایش دقت پیدا کرد که اگر با مساله تجزیه نحوی آشنا باشید، شنیدن این خبر خوشحال‌تان می‌کند.