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

۱. مقدمه

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

۱.۱. چالش‌های پردازش زبان فارسی [2]

زبان فارسی از جمله زبان‌­های پیچیده در مراحل پردازشی و پیش‌­پردازشی زبان‌­های طبیعی به شمار می‌­آید. برخی از این موارد عبارتند از:

۱.۱.۱. فاصله و نیم‌­فاصله 2

یکی از مهم­‌ترین مشکلات زبان فارسی، فاصله‌­های میان واژه‌­ها است. در مواردی لازم است بجای فاصله، یک نیم‌فاصله قرار گیرد و یا برعکس؛ معمولا کاربرها در هنگام تایپ این موضوع را رعایت نمی­‌کنند. مثلا در واژه‌­ی " ناامید " ممکن است میان " نا " و " امید " فاصله یا نیم‌­فاصله قرار دهند.

۱.۱.۲. ابهام در یونیکد3

چون زبان عربی و فارسی کاراکترهای یکسان با یونیکدهای متفاوت دارند، برای هر کاراکتر چندین یونیکد مختلف وجود دارد. مثلا کاراکتر " ی " 56 کد مختلف با شکل مشابه دارد.

۱.۱.۳. کاراکترهای نامتداول4

برخی از کاراکترها مانند " ء " ، " ؤ " ، " أ " و" إ " ممکن است در دست‌­نوشته‌­ها هم به کار برده نشوند اما وجود آن­ها ابهام را در پردازش زبان طبیعی زیاد می­‌نماید. البته در بیشتر موارد با جایگزینی این کاراکترها با پرکاربردترین آن، معنی واژه تغییر نمی‌­کند و می‌تواند راه حل مناسبی باشد.

۱.۱.۴. آواها5

در فارسی شش مصوت وجود دارد که معمولا درنگارش استفاده نمی­‌شوند مگر آن که نبود آن ابهام ایجاد نماید. اما به‌هر حال در مواردی وجود این آواها در نوشتار می‌تواند مشکل‌ساز شود.

۱.۱.۵. کلمات چنداملایی

در زبان فارسی برخی از کلمات دارای چندین صورت املایی مختلف می‌باشند.

۱.۲. پیش‌پردازش زبان طبیعی6

قبل از شروع پردازش­‌های مورد نظر روی زبان‌­های طبیعی، لازم است تا پیش­‌پردازش‌­هایی روی آن صورت گیرد تا اطلاعات مورد نیاز از متن زبان مقصد به‌­دست آید. برای این کار روش‌­های متعددی وجود دارد که هرکدام به‌­دنبال استخراج اطلاعاتی خاص از زبان می‌­باشند. از جمله این روش‌­ها می­‌توان به نرمال‌­سازی7، قطعه‌بندی8، ریشه­‌یابی9، لم‌­یابی10، برچسب­‌گذاری اجزای کلام11 و... اشاره نمود که در ادامه برخی از این روش­‌ها به اختصار آورده‌­شده­‌اند.

۱.۲.۱. نرمال‌­سازی یا یکسان‌­سازی

وظیفه یکسان‌ساز، یکسان‌سازی برخی نویسه‌ها و حذف حرکت‌های موجود در متن می‌باشد. این کار به سبب وجود نویسه‌های متفاوت برای یک حرف در رسم‌الخط فارسی جزء ضروریات اولیه می‌باشد. نویسه‌هایی مانند "ی"، "ک"، "الف" و ... در این قسمت یکسان‌سازی شده و حرکت‌هایی مانند انواع تنوین، همزه، تشدید و ... در این قسمت حذف می‌شوند. [2]

مثالی از نرمال‌سازی

۱.۲.۲. قطعه­‌بندی

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

مثالی از قطعه‌بندی

قطعه‌بندی و تشخیص صحیح مرز کلمات و عبارات در بسیاری از سیستم­‌های پردازش زبان طبیعی مانند تشخیص گروه های نحوی و پردازش آنها در سیستم‌های ترجمه ماشینی، استخراج اطلاعات، سیستم پرسش و پاسخ، تشخیص نقش های موضوعی، موتورهای جستجو و غیره نقش کلیدی ایفا می‌­کند. با توجه به این کاربردها، قطعه‌­بندی صحیح کلمات می تواند موجب بهبود در بازدهی فعالیت‌های ذکرشده شود. در زبان فارسی به علت وجود فاصله و نیم‌فاصله، عدم توجه کاربران به فاصله‌­گذاری‌­ها و نبود قواعد دقیق در نوشتن کلمات چندقسمتی، تشخیص و قطعه‌بندی کلمات چندقسمتی و مرکب با مشکلات و پیچیدگی‌های خاص خود روبه‌­رو است. [6]

۱.۲.۳. ریشه­‌یابی

در زبان فارسی واژه‌ها با توجه به نقش معنایی و نحوی خود در جمله به شکل‌های ظاهری متفاوتی حضور می‌یابند؛ این شکل ظاهری متفاوت از جهتی نشان‌دهنده‌ی معنای متفاوت این واژه‌هاست، اما با توجه به این که تمامی آن‌ها از یک ریشه مشتق شده‌اند، از نظر معنا قرابت نسبتا زیادی خواهند داشت. ازهمین رو در بسیاری از کاربردهای پردازش زبان طبیعی و بازیابی اطلاعات، نیاز داریم تا همه مشتقات یک واژه را به ریشه‌ی آن، که همان شکل ساده‌­ی واژه می‌باشد، تبدیل نماییم. ریشه‌­یاب فارسی همانند ریشه­‌یابی در الگوریتم پورتر12 است که اساس کار در هردو ریخت‌­شناسی13 زبان مقصد است و به سبب همین امر، تفاوت­‌هایی نیز میانشان است. برای مثال در الگوریتم پورتر نیاز است تا آواها در ریشه‌­یابی کلمات در نظر گرفته شود، در صورتی که در زبان فارسی این آواها نوشته نمی‌­شوند. در تصویر زیر نمونه‌­ای از یک ماشین حالت14، برای ریشه­‌یابی در زبان فارسی آورده‌­شده­‌است.[3]

ماشین حالت ریشه‌یابی در زبان فارسی

۱.۳. پردازش زبان فارسی15

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

۲. کارهای مرتبط

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

۲.۱. متودولوژی‌16­های پیش‌­بینی کلمه[1]

در این قسمت به شرح سه راهبرد اصلی که تا کنون در چنین سیستم‌­هایی به‌­کار برده‌­شده­‌است می­‌پردازیم.

۲.۱.۱. مدل­‌سازی آماری17

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

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

پیش­‌بینی کلمات
این سیستم­‌ها سعی دارند کلمات مقصود کاربر را حدس بزنند و آن­ها را در لیستی از واژه­‌ها در اختیار او قرار دهند. در این سیستم­‌ها مدل‌­سازی آماری زبان بیشترین کاربرد را دارد. اساس چنین سیستم­‌هایی فرض مارکو19 است که می­‌گوید تنها n-1 کلمه‌­ی قبلی در انتخاب کلمه‌­ی بعدی تاثیر می­‌گذارند. از این رو به آن مدل n-gram مارکو نیز می‌­گویند. فرکانس واژه و فرکانس دنباله‌­ی واژه از متود­های رایج در این سیستم­‌ها هستند.

۲.۱.۲. مدل‌­سازی دانش‌­محور20

سیستم­‌هایی که کمتر از مدل‌­های آماری بهره می‌­برند، معمولا خطاهای نحوی، معنایی و گرامری در پیشنهادهای‌شان وجود دارد. بدین ترتیب سرعت تایپ کاربر را پایین می‌­آورند. حذف واژه­‌های نامناسب موجب افزایش سرعت و البته اعتماد­به‌­نفس کاربر در نگارش متون می‌­شود. بنابراین می­‌توان از دانش‌­های زبانی برای بهبود لیست کلمات پیشنهادی بهره برد. این دانش‌­ها در سه زمینه‌­ی نحوی، معنایی و گرامری مورد استفاده قرار می‌­گیرد.
برای مثال در پیش­‌بینی نحوی، سیستم با استفاده از برچسب‌­های POS21 که برای تمامی کلمات موجود است و با استفاده از قواعد نحوی زبان، کلمات نامناسب را از لیست پیشنهادی حذف می‌­نماید. البته این ساده‌­ترین روش آن است. در روش‌­های پیچیده‌­تر سیستم با استفاده از کلمات قبلی و بعدی و برچسب­‌های POS آن­ها سعی در محاسبه‌­ی احتمال کلمات کاندید می‌­نماید.

۲.۱.۳. مدل‌­سازی اکتشافی (انطباقی)22

برای ایجاد پیش­‌بینی‌­های دقیق­‌تر و مناسب‌­تر برای یک کاربر خاص، از روش­‌های تطبیق استفاده می‌­شود. در این متولوژی سیستم سعی دارد با هر کاربری به طور جداگانه انطباق پیدا کند و در واقع به نوعی سعی دارد با توجه سبک نگارش و کلمات استفاده شده توسط کاربر پیشنهادات خود را به نظر او نزدیک­‌تر نماید. دو روش معمول در چنین سیستم­‌هایی یادگیری کوتاه­‌مدت و یادگیری بلندمدت است.
در یادگیری کوتاه‌­مدت سیستم تنها با توجه به نوشته‌­ی جاری سعی در تطبیق خود با کاربر دارد و در این راه از متودهای مختلفی از جمله ارتقاء تاخر، هدایت موضوع و کش n-gram بهره می‌­برد.
در یادگیری بلند مدت در کنار نوشته­‌ی جاری از نوشته­‌های قبلی کاربر نیز جهت تطبیق و همگام­‌سازی سیستم استفاده می‌­شود. بنابراین با استفاده‌­ی بیشتر از سیستم درصد انطباق آن با کاربر بیشتر و بیشتر می­‌شود. از جمله متود­هایی که در تطبیق اکتشافی کاربرد دارد می‌­توان به اضافه نمودن واژه‌­ی جدید، کپیتال نمودن خودکار و ایجاد ترکیب‌­های جدید نام­ برد.

۲.۲. بررسی یک الگوریتم[4]

در این بخش به بررسی یک الگوریتم پیشنهادی و فلوچارت آن می پردازیم و همچنین در بخش بعدی روش خود را ارایه خواهیم نمود.

معماری یک سیستم پیش‌بینی کلمه

این سیستم از چهار بخش اصلی تشکیل شده­است:
الف) اطلاعات آماری از قسمت training corpus برای الگوریتم پیش‌­بینی استخراج می‌­شود.
ب) برنامه‌­ی پیش­‌بینی‌کننده‌ای که سعی بر پیشنهاد کلمه به کاربر دارد. این بخش خود شامل دو قسمت تکمیل واژه و پیش‌­بینی واژه می‌­باشد. الگوریتم پیش‌­بینی ابتدا کلمه‌­ی ناقص را تکمیل نموده و سپس لیستی از کلمات مناسب و محتمل را پیشنهاد می‌­دهد.
ج) کاربر شبیه‌­سازی­‌شده‌ای که نوشته را وارد می‌­نماید. این کاربر واژه‌­های مناسب و زیبا را انتخاب نموده و آن را از دست نمی‌­دهد.
د) بخشی که بروزرسانی اطلاعات آماری مربوط به تاخر کلمات مورد استفاده و اضافه نمودن واژه­‌های جدید بهمراه فراوانی استفاده به عهده دارد.
برای همگام‌­سازی سیستم با کاربر دو فرآیند انجام خواهد شد. یکی استخراج تک‌­کلمه‌­ای ، دوکلمه‌­ای و سه­‌کلمه‌­ای از متن جاری و دیگری ذخیره­ و بروزرسانی اطلاعات آماری در یک فایل پویا. این درحالی است که اطلاعات اخیر مربوط به فایل استاتیکی بوده که اطلاعات آماری یادگرفته شده را در خود ذخیره می‌­نمود. در هنگام پیش­‌بینی واژه، ابتدا به سراغ فایل پویا23 می‌­رود و وزن بیشتری به کلماتی که اخیرا مورد استفاده قرار گرفته داده می‌­شود. سپس به سراغ فایل استاتیک24 رفته و از آن استفاده می‌­نماید.
به این ترتیب هرچه این سیستم بیشتر مورد استفاده قرار گیرد، بیشتر با سبک نگارش کاربر منطبق می­‌شود و در نتیجه کلمات مناسب­‌تری را پیشنهاد می‌­دهد.

۳. پیاده‌سازی

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

۳.۱. روش‌ها

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

نتایج الگوریتم word2vec گوگل

ما از این الگوریتم برای یافتن کلمات مشابه و نزدیک استفاده می‌نماییم. کتابخانه ی gensim پایتون پیاده‌سازی کاملی از این الگوریتم ارائه داده است.
اما قبل از استفاده از آن باید یک کلمه مناسب برای جای خالی پیدا کنیم و قبل از آن هم نقش جای خالی. با استفاده از کتابخانه‌ی بسیار قدرتمند nltk و همچنین وزن دهی مناسب به برخی از قواعد گرامری زبان انگلیسی به نتایج خوبی دست یافتیم. همچنین با استفاده از یادگیری 3-گرم25 عبارات پرکاربردی که در محدوده ی جای خالی مورد نظر قرار می گرفت را پیدا و کلمه ی مناسبی با توجه نقش به دست آمده، انتخاب می‌نماییم.( البته گاهی این کلمه معنای مناسبی به جمله نمی‌داد)
در پیاده‌سازی پروژه برای زبان فارسی تنها تحلیلگر دستوری متفاوتی نیاز بود و تحلیلگر معنایی مورد استفاده در زبان انگلیسی در این قسمت نیز نتایج مورد انتظار را می‌دهد. برای پیاده سازی تحلیلگر نحوی زبان فارسی از ماژول قدرتمند هضم و ساختار جملات فارسی استفاده می‌نماییم.

۳.۲. داده‌های زبان انگلیسی

دیتاست مورد استفاده در این بخش، یک مجموعه 200 مگابایتی است که در هر خط آن یک جمله‌ی انگلیسی قرار دارد. این دیتابیس در یادگیری word2vec به کار گرفته شده است. البته این الگوریتم قادر است حجم خیلی بیشتری از داده را در زمانی نسبتا کوتاه تمرین نماید. در واقع دقت این الگوریتم در حجم هایی از داده در حدود چندین گیگابایت بسیار خیره‌کننده است ولی در همین حدود برای آزمایش کفایت می‌کند.
همچنین از کرپوس برون26 کتابخانه‌ی nltk برای یادگیری مدل 3-گرم استفاده شده است که با استفاده از توابع داخلی این ماژول مجموعه‌ای از کلمات در قالب جملات به 3-گرم داده می شود و این مدل بر اساس تکرارهای پیش آمده به هر تکرار سه‌تایی یک امتیاز می دهد.

۳.۳. داده‌های زبان فارسی

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

۴. آزمایش‌ها

۴.۱. محاسبه‌ی دقت

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

۴.۱.۱. دقت پیاده‌سازی زبان انگلیسی

دقت تحلیلگر دستوری
در این قسمت بیست آزمایش انجام شد و خوشبختانه 13 مورد از نتایج قابل قبول بود. این سطح دقت یعنی 65% بنظر امیدوار کننده می باشد. البته جا دارد که این قسمت را با تغییر وزن داده شده و یا حتی آموزش آن بهبود بخشید.

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

شماره آزمایش تعداد خروجی تعداد صحیح درصد دقت
1 9 4 44%
2 11 5 45%
3 7 4 57%
4 10 3 30%
5 10 6 60%
6 8 2 25%
7 3 1 33%
8 7 3 43%
9 7 4 57%
10 12 5 41%

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

خروجی آزمون 3

بهبود نتایج
در این قسمت با آزمایش‌های مختلف و وزن‌دهی مناسب در توابع پیاده‌سازی شده برای تعیین احتمال نقش کلمه‌ی جا افتاده، سعی در بهبود تحلیلگر دستوری داشتیم و تنوانستیم در آزمایش قبل به 15 پاسخ مطلوب از 20 مورد آزمون دست یابیم و بنابراین 10 درصد عملکرد این بخش بهبود یافت. البته چون نقش کلمه‌ی جا افتاده در موردهای آزمون بخش تحلیلگر معنایی به طور مناسب تشخیص داده شده بود، در این بخش به همان دقت میانگین 43.5 درصد دست یافتیم. البته قطعا بهبود تحلیلگر دستوری، سبب افزایش دقت تحلیلگر معنایی خواهد بود و این موضوع زمانی قابل مشاهده است که تحلیلگر دستوری بهبود یافته نقش مناسبی را تعیین نماید که در تحلیلگر دستوری قبلی نامناسب و اشتباه بود. همچنین از یک بررسی‌کننده‌ی گرامر برای رفع اشکالات جزئی گرامری استفاده شده است.

۴.۱.۲. دقت پیاده‌سازی زبان فارسی

دقت تحلیلگر دستوری
در این قسمت نیز بیست آزمایش انجام شد و 11 مورد از نتایج قابل قبول بود. این سطح دقت یعنی 55% برای زبان فارسی و با توجه به ساختار پیچیده‌تر آن نسبت به زبان انگلیسی قابل قبول می باشد.

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

شماره آزمایش تعداد خروجی تعداد صحیح درصد دقت
1 6 1 17%
2 6 2 34%
3 8 3 37%
4 5 1 20%
5 13 2 15%
6 9 4 44%
7 11 5 45%
8 8 3 37%
9 8 1 12%
10 5 2 40%

در این پیاده‌سازی میانگین درصد دقت از آزمون‌های انجام شده برابر 30.1 درصد می‌باشد و با توجه به مشکلات پیش روی زبان فارسی که قبلا هم ذکر شد، بنظر چنین درصد دقتی قابل قبول است.

۵. کارهای آینده

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

۶. مراجع

[1] MasooGhayoomi, Saeedeh Momtazi; "An Overview on the Existing Language Models for Prediction Systems as Writing Assistant Tools" ; Proceedings of the 2009 IEEE International Conference on Systems, Man, and Cybernetics; Saarland University
[2] Zahra Sarabi, Hooman Mahyar, Mojgan Farhoodi; "ParsiPardaz: Persian Language Processing Toolkit" ; Cyber Space Research Institute, Tehran,2013
[3] Kazem Taghva, Russel Beckley, Mohammad Sadeh; "A Stemming Algorithm for the Farsi Language"; Iformation Science Research Institute; Unversity of Nevada, 2003
[4] Masood Ghayoomi, Seyyed Mostafa Assi; "Word Prediction in a Running Text: A Statistical Language Modeling for the Persian Language" ; institute for Humanities and Cultural Studies, Tehran
[5] Ciprian Chelba,Tomas Mikolov, Mike Schuster, Qi Ge, Thorsten Brants, Phillipp Koehn, Tony Robinson; "One billion Word Benchmark for Measuring Progress in Statistical Language Modeling"; "GOOGLE" ; University of Edinburgh
[6]محمدمهدی میردامادی، علی محمد زارع بیدکی و مهدی رضائیان؛"قطعه بندی عبارات متون فارسی با استفاده از شبکه های عصبی"؛ نشریه مهندسی برق و مهندسی کامپیوتر ایران، ب- مهندسی کامپیوتر، سال 11 ، شماره 2، زمستان 1392


  1. word prediction

  2. Space and half space

  3. Unicode ambiguity

  4. Uncommon characters

  5. Diacritical mark

  6. Natural Language Preprocessing

  7. Normalizer or Unification

  8. Segmentation

  9. Stemming

  10. Lemmatization

  11. POS Tagger

  12. Porter

  13. Morphology

  14. state machine

  15. Natural Language Processing

  16. methodology

  17. Statistical Modeling

  18. letter prediction

  19. Markov assumption

  20. Knowledge-based Modeling

  21. Part-of-speech

  22. heuristic Modeling(Adaptation)

  23. dynamic

  24. static

  25. Trigram

  26. brown corpus

تایید شده

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

رد شده

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

رد شده

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

رد شده

شرح مسئله ی مناس و مختصر مفیدی داشتید که نظر خواننده را جلب می کرد.
اشاره به چالش های پردازش زبان فارسی به درک بهتر مسئله کمک کرده است.
بهتر بود راجع به تصویر "ماشین حالت ریشه یابی زبان فارسی"بیشتر توضیح می دادید.
دادگان و روش کار به خوبی شرح داده شده است.
استفاده از جدول موجب درک بهتر از نتایج آزمایشات شما شده است
بهتر بود در بخش کار های آینده "اندکی تغییر"را بیشتر توصیف می کردید
بهتر بود در مرحله ی پیاده سازی کامنت گذاری کامل تری می داشتید یا readme بهتری ارائه می دادید.
موفق باشید.