نویسه‌گردانی انگلیسی به فارسی

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

۱. مقدمه

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

نویسه‌گردانی3 (حرف‌نویسی یا حرف‌نگاری) به معنی نوشتن الفبای یک زبان خاص با الفبای زبانی دیگر (معمولاً لاتین) است به نحوی‌که نوعی تناظر میان حروف عبارت اصلی با عبارت مقصد برقرار باشد. در لغت‌نامه‌ی دهخدا نویسه‌گردانی این‌طور بیان شده است : «عمل تبدیل کردن یک متن از یک آیین نوشتاری به آیینی دیگر به روشی‌ سامانمند را گویند». همچنین فرهنگ لغت آکسفورد نویسه‌گردانی را این‌گونه بیان می‌کند :« نوشتن و یا چاپ (یک حرف یا کلمه) با استفاده از نزدیک‌ترین حرف از الفبا یا زبانی دیگر»

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

۲.۱. انواع روش‌های نویسه‌گردانی

به طور کلی، نویسه‌گردانی به چهار روش عمده انجام می‌شود: [3]

۲.۱.۱. نویسه‌گردانی بر اساس حرف 4

در حقیقت، این روش همان نگاشت املایی مستقیم5 از زبان مبدأ به زبان مقصد است. روش‌های نویسه‌گردانی متعددی از این روش مشتق شده‌اند که از آن‌ها می‌توان به روش‌های بر اساس درخت تصمیم‌گیری6 و شبکه‌ی نویسه‌گردانی7 اشاره کرد.
در این روش، کلیه‌ی حالات نگاشت حروف از زبان مبدأ به زبان مقصد در هر مرحله تولید شده و در نهایت بر اساس لغات ایجاد شده، محتمل‎ترین لغت جهت جایگزینی انتخاب می‌شود.
این روش برای ورودی‌های بدون خطا و با داشتن نگاشتی صحیح، به درستی عمل می‌کند، اما در صورت بروز خطا در سیستم نویسه گردانی و یا وجود ابهام، قادر به تشخیص لغت صحیح نیست.

۲.۱.۲. نویسه‌گردانی بر اساس واج8

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

۲.۱.۳. نویسه‌گردانی بر اساس روش‌های ترکیبی و بر اساس مکاتبات12

استفاده از حروف و واج‌های زبان مبدأ، اساس استفاده از روش‌های ترکیبی و استفاده از مکاتبات است. در این روش‌ها از ارتباط حرف و واج زبان مبدأ برای ایجاد حرفی در زبان مقصد استفاده می‌شود. این روش‌ها با استفاده از الحاق خطی13، واج و حرف نویسه‌ی اصلی را در هم می‌آمیزند14.
در این روش‌ها همچنین می‌توان از یک پیکره15 جهت تبدیل لغات استفاده کرد.

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

  • بسیاری از حروف انگلیسی دارای معادلی در زبان انگلیسی هستند، به عنوان مثال 'b' به 'ب'، 'd' به 'د'، 'k' به 'ک' و ... تبدیل می‌شوند.

  • بعضی حروف انگلیسی در زبان فارسی چند نگاشت دارند، مانند 's' که به 'س'، 'ث' و 'ص' نگاشت می‌شود و ...

  • بعضی از حروف انگلیسی هم به حرفی در زبان فارسی و هم به یک مصوت نگاشت می‌شوند، مانند 'o' که به 'و' و ' ُ ' نگاشت می‌شود و ...

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

۲.۲. کارهای مشابه

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

  • نویسه‌گردان گوگل
    یک سیستم نویسه‌گردان چندزبانه است، متاسفانه توضیحاتی در رابطه با نحوه‌ی عملکرد این سیستم در دسترس نیست.

  • اسم نویسه‌گردان
    یک سیستم نویسه‌گردان با هدف تبدیل اسامی است که از روش نگاشت حروف استفاده می‌کند.

  • سیاوش محمودیان - مترجم پینگلیش (فینگلیش) به فارسی
    متاسفانه توضیحاتی در رابطه با عملکرد این سیستم در دسترس نیست. این سیستم در فاز آزمایشی قرار دارد.

۳. آزمایش‌ها

۳.۱. آزمایش 1 - استفاده از پیکره و ذخیره‌ی نتایج

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

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

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

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

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

بر اساس نمونه‌های تست شده که از مکالمات روزمره نیز گرفته شده بود و دارای تعداد زیادی عبارت محاوره‌ای بود، سرعت در بیش از 95 درصد موارد لغت مربوطه توسط برنامه شناسایی شد. با وجود اینکه در بعضی موارد خلاصه‎نویسی در محاورات روزمره هم دیده می‌شد. لازم به ذکر است برنامه در نویسه گردانی کلماتی که به زبان انگلیسی هستند دچار مشکل شده و نمیتواند آن‌ها را به درستی به معادل فارسی تبدیل کند که یکی از دلایل آن، تفاوت در قواعد این دو زبان است. به عنوان مثال کلمه‌ی 'File' به 'فیل' تبدیل می‌شود که البته پس از یک‌بار وارد کردن نمونه‌ی صحیح توسط کاربر، در دفعات بعدی درست تشخیص داده می‌شود.

در صورت وارد کردن عبارات رسمی و بدون غلط‌های املایی، برنامه بدون مشکل عمل کرده و با دقت بسیار بالایی، در پیشنهاد‌های اول، لغات مربوطه را تشخیص می‌دهد:

نمونه‌ی ورودی

نمونه‌ی خروجی

مشاهده می‌شود که همه‌ی لغات درست تشخیص داده شده‌اند. تنها ایراد موجود برای "لغات" بود که در ورودی 'loqa' نوشته شد و برنامه هم آن‌را به 'لغا' تبدیل کرد. همچنین برای لغت 'وسیعی' که به صورت 'vasiei' نوشته شده بود، کلمات زیر حدس زده شد که پس از تصحیح توسط کاربر، در دفعات بعدی لغت مربوطه درست تشخیص داده می‌شود.

نحوه‌ی پیش‌بینی لغاتی که آن‌ها را نمی‌شناسد

در نمونه‌ی فوق، عبارت 'وسیعی' و عبارات 'ی' به درستی تشخیص داده نشدند. همچنین برنامه نتوانست ایراد املایی موجود در 'loqa' را تشخیص دهد. با توجه به رسمی بودن متن، سایر عبارات در پیش‌بینی های اول (5 پیش‌بینی اول) شناسایی شدند که عملکرد رضایت‌بخش برنامه را نشان می‌دهد. اگر دقت را نسبت کلمات صحیح به کل کلمات در نظر بگیریم، خواهیم داشت:

تعداد کل کلمات تعداد کلمات صحیح دقت
71 66 92.9

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

تعداد کل لغات ورودی دقت(1) تعداد(2) دقت(2) تعداد(5) دقت(5) تعداد(10) دقت(10)
70 71.4 111 81.4 156 88 193 94.2

در این روش، پیش‌بینی لغاتی مانند "obama" ، "kangavari" ، "riakar" ، و "foqolade" حتی با n=10 نیز میسر نشد. اما لغاتی مانند "no avari" ، "quri" و... برای n=2 و n=5 به نتیجه‌ی صحیح رسیدیم.

۳.۲. آزمایش 2 - برچسب‌گذاری تعداد تکرار لغات در پیکره

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

تعداد کل لغات ورودی دقت(1) تعداد(2) دقت(2) تعداد(5) دقت(5) تعداد(10) دقت(10)
70 80 111 91.4 156 94.2 193 94.2

با این روش، لغاتی که در روش قبلی تبدیل نشده بودند باز هم نویسه گردانی نشدند، اما در دسترسی به نتیجه‌ی نویسه‌گردانی لغاتی که با آزمایش قبلی در n های بالا به نتیجه می‌رسیدند، این‌بار سریع‌تر به جواب صحیح رسیدیم.

۳.۳. آزمایش 3 - برچسب‌گذاری تعداد تکرار لغات نویسه‌گردانی شده

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

  • لازم به ذکر است، در سایر آزمایشات، سیستم از تاریخچه‌ی نویسه‌گردانی استفاده نمی‌کند تا نتایج حاصل همان نتایج حاصل از نگاشت باشند و نه استفاده از تاریخچه‌ی نگاشت‌ها.

۳.۴. آزمایش 4 - بررسی لغات مبهم

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

تعداد کل لغات ورودی دقت(1) تعداد(2) دقت(2) تعداد(5) دقت(5) تعداد(10) دقت(10)
70 81.4 111 92.8 156 95.7 193 95.7

۳.۵. آزمایش 5 - بررسی احتمال وقوع هر واج

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

همچنین با استفاده از نرمال‌سازی پیکره توسط نرم‌افزار هضم می‌توان از اشکالات احتمالی نویسه‌گردانی جلوگیری کرد.

۴. نتیجه گیری

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

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

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

  • میتوان با استفاده از نرم‌افزار هضم و عملیات ریشه‌یابی17 ، ریشه‌ی لغات را استخراج کرد. به این ترتیب با داشتن پایگاه داده‌ای کوچکتر و با دقت بیش‌تری می‌توان لغات را پیش‌بینی کرد. به عنوان مثال احتمال داشت لغت "kangavari" که به دلیل موجود نبودن در پیکره قادر به یافتن نگاشت صحیح آن نبودیم با تبدیل به "کنگاور" + "ی" به نتیجه‌ی مطلوب دست یابیم.

  • میتوان از فهرست واژگان فارسی استفاده کرد، به این ترتیب سیستم قادر به نگاشت همه‌ی لغات خواهد بود، اما باید روش پیش‌بینی را تغییر داد.

  • با استفاده از جدول درهم‌سازی18 برای نگه‌داری پیکره می‌توان سرعت و دقت و کارایی سیستم نویسه‎‌گردان را افزایش داد.
    # مراجع

[1] Sarvnaz Karimi, Falk Scholer, and Andrew Turpin. "Machine transliteration survey." ACM Computing Surveys (CSUR) 43.3 (2011): 17.
[2] Sarvnaz Karimi, Andrew Turpin, and Falk Scholer. "English to Persian Transliteration." School of Computer Science and Information Technology RMIT University.
[3] Jong-Hoon Oh, Key-Sun Choi, and Hitoshi Isahara. "A Comparison of Di®erent Machine Transliteration Models." Journal of Articial Intelligence Research 27 (2006) 119–151.
[4] Najmeh Mousavi Nejad, Shahram Khadivi, Kaveh Taghipour. "The Amirkabir Machine Transliteration System for NEWS 2011: Farsi-to-English Task." Proceedings of the 2011 Named Entities Workshop, IJCNLP (2011), 91–95.

پیوندهای مفید


  1. Passport

  2. Short Message Service (SMS)

  3. Transliteration

  4. Grapheme-based Transliteration

  5. Direct Orthographic Mapping

  6. Decision Tree

  7. Transliteration Network

  8. Phoneme-based Transliteration

  9. Extended Markov Window

  10. Pronunciation

  11. Chunk

  12. Hybrid and Correspondence-based Transliteration

  13. Linear Interpolation

  14. Combine

  15. Corpus

  16. Editor

  17. Stemming

  18. Hash Table

محسن ایمانی

لطفا برای فازهای آینده بیشتر تلاش کنید.

تایید شده

سلام، چندتا نکته به ذهنم رسید که اینا هستند:

  • جا داشت تحقیق می‌کردید و الگوریتم‌ها و راهبرد‌های مختلف واسه این کار را می‌دیدید.

  • ایجاد جدول‌های مجزا باعث دشواری پیاده‌سازی شده که به نظرم راه‌حل‌های بهتری وجود دارد.

  • به نظر من یکی از نقاط قوت پروژتون استفاده از پایگاه داده و ذخیره نتایج صحیح هست.

  • برای برطرف کردن مشکل وارد کردن لغات نادرست توسط کاربر به نظرم کتابخانه‌هایی هستند که بر اساس لغات موجود در پایگاه داده شبیه‌ترین لغت رو پیدا کنند.

  • برای فاز بعدی به نظرم بهتره آزمایش‌های بیشتری هم انجام بدهید.

رد شده

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

تایید شده

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

تایید شده

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

محسن ایمانی

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

تایید شده

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

رد شده
تایید شده

بابت انجام پروژه خدمت شما خسته نباشید میگم. نکاتی به نظرم میرسد که خدمت شما عرض می‌کنم:
1- اصلا کار خوبی برای شرح مساله انجام نگرفته است و صرفا یک سری تعریف و مقدمه به‌کار‌رفته‌است.
2- در مورد چالش‌های پیش‌رو در فاز اول صحبتی نکرده اید.
3- در قسمت کارهای مشابه اگر توضیح بیشتری برای کارهای مختلف ارائه می‌کردید، بهتر بود.
4- در فاز پیاده سازی، کامنت‌گذاری در کدهای قرار‌گرفته در گیت‌هاب، انجام نگرفته است و همچنین فایل read me توضیحات جامع و مانعی را ندارد.
5- پیکره همشهری باید دارای یک ‌hamshahri reader باشد تا بتوان از دادگان آن استفاده کرد که در گیت‌هاب مربوط به پروژه‌ی شما نیست.
6- برای فاز بهبود نتایج احساس می‌شود که کار خاصی صورت نگرفته است و فقط به توضیح کوتاه آزمایش 5 اکتفا کرده اید و بهتر بود بیشتر در این مورد بحث می‌کردید.
7- اینکه چند درصد دادگان برای آموزش و چند درصد برای تست به‌کار‌رفته‌است، در جایی بیان نشده است.
8- اصلا در مورد آموزش و یادگیری ماشین صحبتی نشده است.
با تشکر

تایید شده

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

تایید شده

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

تایید شده

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

  1. نتیجه ای که کسب کردید از دقت بالایی برخوردار است و بررسی لغات مبهم کار جالبی است اما کاش نتایج آزمایش های 3 و 5 را هم بررسی می کردید.

  2. شکل ها شماره ندارند.

  3. بهتر بود نتیجه کار خود را با نویسه گردان های موجود مقایسه می کردید.
    موفق باشید

محسن ایمانی

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

تایید شده

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