نویسهگردانی یعنی تبدیل خودکار صورت یک کلمه از زبان مبدا به زبان مقصد، به طوری که تلفظ کلمه حفظ گردد. برای مثال هدف از نویسهگردانی تبدیل "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 |
70 | 80 | 111 | 91.4 | 156 | 94.2 | 193 | 94.2 |
در این روش، پیشبینی لغاتی مانند "obama" ، "kangavari" ، "riakar" ، و "foqolade" حتی با n=10 نیز میسر نشد. اما لغاتی مانند "no avari" ، "quri" و... برای n=2 و n=5 به نتیجهی صحیح رسیدیم.
۳.۲. آزمایش 2 - برچسبگذاری تعداد تکرار لغات در پیکره
در این آزمایش، تعداد هر لغت به عنوان برچسبی به پایگاه داده اضافه شده؛ همینطور پیکرهی irBlogs m ([پیکره وبلاگها]) به مجموعهی پیکرههای برنامه اضافه شد.
در صورت یافتن چند حالت نگاشت برای یک لغتی، لغتی که در پیکره به دفعات بیشتری تکرار شده باشد به عنوان نتیجه برگردانده میشود.
نتایج این آزمایش به شرح زیر است.
تعداد کل لغات ورودی | دقت(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.
پیوندهای مفید
[پیکره وبلاگها] (http://ece.ut.ac.ir/dbrg/irblogs/index.html)
Passport
Short Message Service (SMS)
Transliteration
Grapheme-based Transliteration
Direct Orthographic Mapping
Decision Tree
Transliteration Network
Phoneme-based Transliteration
Extended Markov Window
Pronunciation
Chunk
Hybrid and Correspondence-based Transliteration
Linear Interpolation
Combine
Corpus
Editor
Stemming
Hash Table