بخشی از مقاله
چکیده
پردازش زبانها یکی از اموري است مورد توجه بسیاري از پژوهشگران قرار گرفته است. بر این مبنا، هدف از انجام این پژوهش طراحی نرمافزار ریشهیابی واژگان زبان فارسی تحت وب است. ریشهیابی که در آن با حذف پیشوندها و پسوندها، ریشهي واژه مشخص میشود، یکی از کاربردهاي پردازش متن است.
براي انجام عملیات ریشهیابی خودکار با رایانه، ابتدا مرز واژهها در متن مشخص میشود تا بتوان ریشهي واژهها را استخراج کرد. علاتم اضافی مانند ویرگول، دو نقطه، کروشه، پرانتز و ... با استفاده از فراخوانی تابع مربوط حذف میشوند. سپس ساختار کلی برنامه که شامل کلمه، طول کلمه، ریشهي موقت و ریشهي حقیقی میباشد شکل میگیرد.
در مرحلهي بعد عملیات نرمالسازي در سطوح مختلف بر روي کلمات انجام میگیرد. در آخر با توجه به حروف پایانی کلمات، فراخوانی توابع مربوط و عملیات ریشهیابی صورت میپذیرد. عملیات ریشهیابی تا زمانی انجام میشود که ریشه پر نشده باشد و تا پیش از پرشدن ریشه، ریشهها در یک مکان موقت بهنام tmpRoot نگهداري میشوند.
در این پژوهش40 تابع براي انجام عملیات ری شهیابی نو شته شده ا ست که هر کدام از آنها براي انجام عملیات مختلفی فراخوانده می شوند. دیتابی سی نیز شامل 35 جدول فراهم گردیده که این جداول بر ا ساس حروف آخر کلمات فار سی تنظیم شدهاند. بدین ترتیب براي هر کدام از حروف دو جدول در نظر گرفته شده است. جدول دیگر، جدول بن افعال است که دربردارندهي بن افعال ماضی، مضارع و مصادر آنها میباشد. این برنامه به زبان php نوشته شده است و از دیتابیس mysql براي ذخیرهسازي جداول استفاده شده است.
.1 مقدمه
امروزه با گسترش کاربرد زبان در سیستمهاي رایانهاي، نیاز به پردازش متون در این سیستمها، بیش از پیش احساس میشود. ریشهیابی یکی از کاربردهاي پردازش متن است. پردازش متن شامل چهار سطح است: پردازش لغوي، پردازش ساختواژي، پردازش نحوي و پردازش معنایی
در زبانهاي طبیعی از بین کل واژگان میتوان تعداد معدودي واژه یافت که واژههاي ریشه در نظر گرفته میشوند، و بقیه واژگان از این ریشهها اشتقاق می شوند. به عبارت دیگر هر واژه داراي ریشهاي است که ایده و معنا و مفهوم اصلی آن واژه را در بر میگیرد. ا شتقاق یک واژه از ری شه ا صلی سبب می شود تا مفهوم ا صلی واژه شکل بهتري به خود بگیرد و یا واژه براي بروز نقش نحويِ خود در جمله آماده شود.
در زبان فارسی - و خانواده زبانهاي هند و اروپایی - عملیات اشتقاق و ساخت واژگان با ترکیب واژههاي ریشه و الحاق پسوند و پیشوندهاي مختلف صورت میگیرد. هدف از ریشهیابی، زدودن الحاقات و یافتن جوهره اصلی واژه است. هر چند در واقعیت گاهی الحاقات واژه معناي آن را چنان تغییر میدهند که حذف آنها موجب از بین رفتن معناي اصلی میشود. ریشهیابی به فرایندي اطلاق میشود که در آن با حذف پیشوندها و پسوندها نهایتاً ریشهي یک واژه مشخص میشود. به عبارت دیگر بعد از انجام عملیات ری شهیابی، واژهي حا صل غیر قابل تجزیه خواهد بود. چنانچه این عملیات به کمک کامپیوتر انجام شود به آن ریشهیابی خودکار گفته میشود
پردازش لغوي در عملیات ریشهیابی به طور گسترده مورد استفاده قرار میگیرد که از آن جمله، میتوان به تعیین مرز واژهها و جملهها، یکدستسازي پیکرهي متنی، شناسایی حروف اضافه اشاره کرد.
کاربرد عمدهي ریشهیابی واژهها در خلاصهسازي متن است که در مرحلهي پیشپردازش انجام میگیرد.
ریشهیابی کردن واژهها تضمین میکند که سندهایی که همگی شامل ا شتقاقهاي متفاوتی از کلمهي موجود در پرس و جو ه ستند، در مجموعه جواب نهایی وجود دارند.
از دیگر سو، عملیات ریشهیابی، در ریشهیابی کلمات کلیدي آیتمها در سیستمهاي توصیهگر بسیار کارا است. سیستمهاي تو صیهگر سی ستمهایی ه ستند که با دادن پی شنهادات منا سب با توجه به علایق یک کاربر و تحلیل رفتار او بر ا ساس پی شینهي عملکردش، وي را از صرف وقت در مرور تمام آیتمها باز میدارد و اقدام به پی شنهاد منا سبترین اقلام به وي مینماید. در نتیجه یکی از قسمتهاي اصلی این سیستمها، استخراج مفاهیم از آیتمها و رفتار کاربران میباشد که این کار با تکنیکهاي پردازش زبان طبیعی مانند ریشهیابی کلمات کلیدي آیتمهامیسّر میباشد
از دیگر کاربردهاي ری شهیابی میتوان به افزایش کارایی سی ستمهاي بازیابی اطلاعات ا شاره کرد. یکی از مهمترین مو ضوعات در پردازش زبان طبیعی و بازیابی اطلاعات، یافتن ریشهي کلمات میباشد. ریشهي کلمه جزئی از کلمه است که پس از حذف وندهاي کلمه - پی شوند، پ سوند و میانوند - باقی میماند. یکی از روشهاي افزایش کارایی سی ستمهاي بازیابی اطلاعات ا ستفاده از ریشهیابی کلمات است؛ زیرا اشتقاقات مختلف یک کلمه به ریشهي آن کلمه تبدیل میشوند؛ در نتیجه جستجو بر اساس ریشهي کلمه انجام خواهد شد و اندازه ساختار ایندکس کاهش مییابد.
از دیگر کاربردهاي ریشهیابی، میتوان به سیستمهاي غلطیاب املایی اشاره کرد. غلطیاب املایی فارسی یکی از ابزارهاي مهمی است که در راستاي کمک به نویسندهي یک متن فارسی میتواند به او کمک شایانی در یافتن و درست کردن غلط فارسیِ نوشته شده در یک متن نماید. یک غلطیاب املایی شامل سه مرحله است: -1 شناسایی خطا -2 ساخت پیشنهادهایی براي تصحیح -3 رتبه بندي پی شنهادها. در غلطیاب املایی براي ایجاد پی شنهادهایی براي ت صحیح خطا از یک لغتنامه استفاده می شود؛ هرچه حجم کلمات لغتنامه بیشتر باشد زمان اجراي عملیات غلطیابی افزایش مییابد.
اگر عملیات ریشهیابی قبل از غلطیابی بر روي کلمهي ورودي انجام شود، حالات مختلفی که با این ریشهي پیشنهادي به کاربر داده میشود دقیقتر و در مدت زمان کمتري انجام میشود. بنابراین یک ریشهیاب کارآمد میتواند در بهبود کارایی غلطیاب املایی بسیار موثر باشد .[5] همانطور که گفته شد پردازش متن شامل چهار سطح است: پردازش لغوي، پردازش ساختواژي، پردازش نحوي و پردازش معنایی. هر یک از کاربردهاي فراوان پردازش متن، از جمله بازیابی اطلاعات، ریشهیابی واژهها، خلاصهسازي متن، خطایابی املایی، درك، تولید، ترجمه، پرسش و پاسخ، استخراج دانش از متون و موارد دیگر با توجه به گستردگی و پیچیدگی، در یک یا چند سطح فوق به انجام میرسد
پردازش زبانهاي طبیعی به کمک رایانه، با اشکالات و چالشهاي بسیاري نیز همراه میباشد. ویژگیهاي خاص خط و زبان فارسی موجب شده تا برخی چالشهاي خاص پیرامون پردازش زبان فارسی به وجود آیند که در زبان هاي دیگراصلاً مطرح نیستند. یکی از این اشکالات، نبودن دستور خط جامعی متناسب با نیازهاي سامانههاي پردازش متون است. فرهنگستان زبان و ادب فارسی از سال 1372 شروع به بررسی، گردآوري و تدوین دستورِ خط فارسی نمود، اما هدف اصلی از نگارش آن، یکسان سازي چهرهي خط جهت کاربرد در رایانه نبود و در بسیاري از موارد، دست نگارندگان براي انتخاب شکل نوشتار واژه باز گذاشته شد که نتیجهي آن چیزي جز پیدایش ابهام درتشخیصِ رایانهاي واژهها نی ست.
پردازش واژگانیِ کلیهي زبانهاي طبیعی امري د شوار ا ست. ترکیب واژگان، منجر به تشکیل واژگانی میشود که ممکن است در اثر بیدقتیِ کاربران، از دید رایانه به دو یا چند شکل مختلف خوانده شوند. زبان فارسی علاوه بر فاصله ﮔﺬاري معمول در دیگر زبانها، فاصلهي درون واژهاي1 نیز دارد که از قوانین مشخص و دقیقی پیرامون نحوهي فا صلهگذاري پیروي نمیکند؛ مثلا در جایی که منظور نوی سنده “می” خورده ا ست، اگر در اثر بیدقتی میخورده ا ست نو شته شود، رایانه قادر به ت شخیص واژهي ا صلی نخواهد بود
در این اثر سعی شده تا ابعاد، پیچیدگیها و چالشهاي پردازشی زبانفارسی، خصوصاً با رویکرد ریشهیابی اسامی زبان فارسی مورد بررسی قرار گیرد، راهکارهاي مواجهه و مرتفع ساختن برخی از این چالشها مطرح شده، در نهایت الگوریتمی براي ریشهیابی خودکار واژگان ارائه شود.
2 -1-1-1 انواع الگوریتمهاي ریشهیابی در زبان فارسی
بهطور کلی عملیات ریشهیابی کلمات در دو دستهي ساختاري و غیر ساختاري قرار میگیرد.
1-2 الگوریتمهاي غیر ساختاري
1-1-2 الگوریتم ریشهیاب آماري
ریشهیاب آماري که در آن از روشی مبتنی بر گراف و مدل آماري استفاده شده است نمونهاي از الگوریتمهاي غیر ساختاري است. در روش آماري یک مجموعه از کلمات زبان در نظر گرفته شده و هر کلمه به دو زیر رشته تقسیم می شود. زیر رشتهي اول پیشوند و زیر رشتهي دوم پسوند در نظر گرفته میشود. سپس هر زیر رشته به عنوان یک گره از گراف در نظر گرفته شده و یک یال بین دو گره ن شان دهندهي این ا ست که از ترکیب این دو زیر ر شته، یک کلمه از مجموعهي لغات بد ست میآید.
براي نشان دادن این تأثیر متقابل، از یک نمادگذاري استفاده شده است تا پیشوند بهینه که همان ریشه است و پسوند بهینه که همان اشتقاق است پیدا شود. در تشخیص ریشه و اشتقاقها هم از شمردن تعداد تکرار آنها در حالات مختلف تقسیم در کل کلمات و هم از یک تحلیل آماري بر روي لینکهاي بین زیر رشتهها استفاده می شود .[8] شایان ذکر است این روش نیازمند هیچ قانون زبانشناسی نیست و به صورت مستقل از قوانین زبانشناسی عمل میکند. مهمترین مشکل این روش پیادهسازي آن میباشد.
2-1-2 الگوریتم باچین
الگوریتم باچین یک ریشه یاب آماري است که در آن از روشی مبتنی بر گراف و مدل آماري استفاده شده است و نمونهاي از الگوریتمهاي غیر ساختاري است.