تشريح نحوه عملکرد کامپايلرها - قسمت سوم

 

 

 مراحل کامپايل:
 
8 قسمت زیر یک کامپایلر را برای ما می سازد.(شکل 2)

 


1 – تحلیل گر لغوی
 2 – تحلیل گر نحوی
 3 – تحلیل گر معنایی
 4 – تولید کننده کد میانی
 5 – بهینه ساز کد میانی
 6 – تولید کننده کد نهایی
 7 – جدول سمبل ها
 8 – پردازشگر خطا
 
   توجه: در هر مرحله  ورودی هر مرحله خروجی مرحله قبل است .
 

 


 
1)LEXICAL ANALAYZER
2)SYNTAX ANALAYZER
3)SEMANTIC ANALAYZER
4)INTERMEDATE CODE GENERATOR
5)CODE OPTIMAIZATION
6)CODE GENERATION
7)SYMBOL TABLE
8)ERROR HANDLERING


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

حال به تشریح هر کدام از اجزای کامپایلر می پردازیم :
 الف) تحليل گر لغوی ( Lexer ) :
در واقع طولانی ترین پروسه را انجام می دهد ، با زبان مبدا مستقیما در تعامل بوده و مستقل از زبان مقصد می باشد . تحلیل گر لغوی با خواندن زبان ورودی ان را به مجموعه ای از نشانه های قابل فهم برای تجزیه کننده تقسیم بندی می کند . میدانیم که جملات یک زبان از رشته هایی از نشانه ها تشکیل شده است و دنباله ای از این کاراکترهای ورودی که یک نشانه را تشکیل می دهند یک لغت ( Lexeme ) نامیده می شوند . توضیحات ، فضاهای سفید و فاصله ها توسط تحلیل گر لغوی نادیده گرفته می شود ، سپس نشانه های تولیدی را در جدولی به نام جدول نمادها قرار می دهد و اشاره گری برای دسترسی پارسر به آن ها را بر می گرداند . تشخیص شناسه ها و کلمات کلیدی نیز از جمله مواردی است که Lexer باید آن ها را نیز تشخیص دهد و از سایر نشانه ها تمیز دهد . بنابراین به طور خلاصه Lexer کاراکترها را از ورودی می خواند ، آن ها را به صورت لغت دسته بندی می کند و نشانه های ایجاد شده توسط لغت ها را به همراه مقادیر خصیصه آن ها به مرحله های بعدی کامپایلر منتقل می کند.نشانه های تولید شده در پارسر و یا تجزیه کننده مورد استفاده قرار می گیرد . اگر بپذیرید که کامپیوتر تنها قادر به درک مفهوم سیگنال های پذیرش و عدم پذیرش و یا همان سیگنال ها و اعداد صفر و یک است می توانید راحت تر به جواب برسید درواقع سیستم کامپیوتر شامل مدارهایی است که این مدارها فقط به دو سیگنال صفر و یک و یا فعال و غیر فعال و یا روشن و خاموش حساس است و به هیچ وجه قادر به درک الفاظ و زبان طبیعی نمی باشد و حتی از کاری که قرار است انجام بدهد نیز خبر ندارد و مدارهای الکتریکی بر اساس کدهایی که در حافظه قرار می گیرد ( کلمات حافظه ) و در نهایت پردازش هایی که توسط پردازنده در واحد کنترل و ALU بر روی آن ها صورت می دهد اعمالی انجام می شود . اما ان چه که در این جا مورد توجه است همان شکل گیری صفر و یک ها در نتیجه یک برنامه به زبان فرضا C# می باشد . این کاری است که کامپایلرها انجام می دهند .
در واقع در این مرحله از کامپایل متن برنامه  ورودی حرف به حرف خوانده می شود
 و به دنباله ای از نشانه ها یا token تبدیل می شود.
    انواع token ها :
 1)      کلمات کلیدی
 2)      عملگرها
 3)      جدا کننده ها
 4)      ثابت ها
 5)      شناسه ها
    نکته مهم:
 زبان c  یک زبان case sensitive یعنی حساس به  حروف بزرگ و کوچک است مشابه همین
  نشانه ها میرود به جدول سمبلها , در جدول سمبلها مقایسه می شوند اگر کد اسکی چیزی که نوشتیم با
  چیزی که در جدول است یکسان نباشد خطا می دهد.
   وظایف تحلیل گر لغوی:
  1) تولید token 
 2) تشخیص خطاهای لغوی
 3) نادیده گرفتن و حذف توضیحات
 4) پس از تشخیص token آنها را در جدول نشانه قرار می دهد.

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

د) توليد کننده کد ميانی :
 در این بخش یک شکل میانی قابل فهم اسمبلر و یا یک نمایش میانی صریح از برنامه مبدا تولید می کند که می توان آن را برنامه ای برای یک ماشین انتزاعی در نظر گرفت ( مفهوم انتزاعی به معنای قابل فهم بودن برای انسان است نه ماشین . ) و باید دارای دو ویژگی سهولت تولید و سهولت تبدیل به برنامه مقصد باشد . نمایش میانی می تواند شکل های گوناگونی داشته باشد مانند صفر ، یک ، دو ، سه و چهار آدرسه .در ساختار فرضا سه ادرسه در هر ثبات می توان سه ادرس را شامل عملگر ، عملوند اول و عملوند دوم قرار داد . محاسبه عبارات ، نظارت بر ساختارهای جریان کنترلی و احضار رویه ها نیز در این بخش توسط مولد کد میانی صورت می گیرد .
 ه) بهينه ساز کد(Optimizer) :
کدی که تولید می کنیم باید دو شرط صرفه جویی در حافظه و در زمان اجرا را برآورده کند . گاهی وقت ها کد ما بسیار پیچیده است و با اعمال جایگزینی ها و حذف و درج ها می توان آن را ساده تر و کاراتر نمود . تغییر ساختارهای آدرس دهی نیز می تواند کد را بهینه تر سازد . سرعت اجرا نیز باید در نظر گرفته شود .
 و) توليد کد :
آخرین فاز کامپایلر ، تولید کد مقصد می باشد که معمولا شامل کد ماشی جابه جا پذیر یا کد اسمبلی است .
کد میانی بهینه شده در مرحله قبل تبدیل به کدی به نام کد زبان ماشین می شود.مولد کد نهایی بسته
  به سخت افزار و معماری کامپیوتر مقصد است .
تخصیص حافظه به هر یک از متغیرهای برنامه در این فاز انجام می شود . آن گاه هر یک از دستورهای میانی به یک دنباله از دستورهای ماشین که همان کار را انجام میدهند ترجمه می شوند . یک جنبه مهم آن ، جایگزینی متغیرها در ثبات ها می باشد . یک نمونه : عبارت Statement :=initial + rate * 60 را در نظر بگیرید . داریم : Statement: =initial + rate * 60àid1:=id2 + id3 *60 حال کد نهایی را می توان به فرم زیر در نظر گرفت که سرانجام در اسمبلر تبدیل به کد قابل فهم ماشین خواهد شد:

 

  MOVE id3, R2
  Mul #60.0, R2 
  MOVE id2, R1
  MOVE R2, R1
  MOVE R1, id1  

 

 

Comments (10) Posted to حل تمرین درس کامپایلر 03/12/2011 Edit

تشريح نحوه عملکرد کامپايلرها - قسمت دوم

 

 

ساختار کامپايلر
 

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

 


 


پیمانه تحلیل نحوی جریانی از نشانه‌ها را به درخت نحوی انتزاعی (AST) تبدیل می‌کند. بعضی از تحلیلگران نحوی حاوی دو پیمانه‌اند: پیمانه اول جریانی از نشانه‌ها را می‌خواند وبرای هر ساختار نحوی که تشخیص داده می‌شود, تابعی را از پیمانه دوم فراخوانی می‌کند. توابع موجود در پیمانه دوم , گرههای AST را ایجاد کرده به هم پیوند می‌دهند. امتیاز این کار این است که می‌توان با جایگزینی پیمانه تولید AST از یک تحلیل گر نحوی, AST دیگری را ایجادکرد , و از طرف دیگر , می‌توان با جایگزینی تحلیل گر نحوی, همان نوع AST را زا زبان دیگر به دست آورد.
پیمانه اداره کننده متن , اطلاعات مربوط به متنها را از نقاط مختلف برنامه جمع آوری می‌کند و گرهها را بر اساس این اطلاعات , حاشیه نویسی می‌کند.  نمونه‌هایی از این اطلاعات عبارتند از: اطلاعات نوع نشای از اعلان عبارات, اتصال دستوارت go to به برچسبهای آنها درزبانهای دستوری و در زبانهای توزیعی , تصمیم گیری در مورد این که کدام فراخوانی روالها ,محلی و کدامها از راه دور هستند. سپس این حاشیه نویسی‌ها برای وارسی متن به کار می‌روند یا به پیمانه‌های دیگری ارسال می‌شوند (مثلا برای تولید کد)
پیمانه تولید کد میانی , ساختار های زبان را که در AST وجود دارند , به ساختارهای کلی تری تبدیل می‌کند این ساختارهای کلی , کد میانی را تولید می‌کنند که به طور خلاصه آن را IC می‌نامیم . طراح کامبایلر تصمیم می‌گیرد کد کدام ساختار , خاص زبان و کدام ساختار کلی است , اما معمولا این انتخاب چندان دشوار نیست . یک معیار برای سطح کد میانی این است که , تولید کد ماشین برای هر نوع ماشینی آسان باشد معمولا کد میانی متشکل از انحصار متقابل عبارات و دستور کنترل جریان است .
نمونه‌هایی از ترجمه‌هایی که توسط پیمانه تولید کد میانی انجام شده ‌اند , عبارتند از : جایگزینی دستور while باشرطها ,برچشبها و پرشها در زبانهای دستوری در زبانهایی با انقیاد پویا کدی را درج می‌کند تا مشخص نماید که چه متدی از یک شیء باید فراخوانی شود, قرار دادن روالی به جای قاعده پرولوگ جستجوی عقبگرد را انجام می‌ده . در هر یک از این موارد , روش دیگر این است که در سیستم زمان اجرا, روالی را با پارامترهای مناسبی فراخوانی کرد (سیستمهای زمان اجرا را در ادامه بررسی خواهیم کرد  .)
قاعده پرولوگ می‌تواند به شکل نمادی باقی بماند و توسط یک روال زمان اجرا تفسیر شود, روال زمان اجرا می‌تواند به طور پویا متدی را پیدا کند که فارخوانی شود. اگر شرط وبدنه دستور while به زیر روالی بی نام تبدیل شوند, این دستور می‌تواند توسط یک روال زمان اجرا انجام شود. پیمانه تولید کد میانی جایی است که در مورد انجام کار توسط کد درونی یا سیستم زمان اجرا تصمیم گیری می‌شود.
پیمانه بهینه سازی کد میانی , پیش پردازشهایی ار بر روی کد میانی انجام می‌دهد تا پیمانه تولید کد میانی کار آمد شود . نمونه‌ای از یک پیش پردزاش ساده , بر چیدن ثوابت است که در ان , تمام عملیات موجود در عبارات که عملوندهای آن مشخص هستند, انجام می‌شوند مثال پیچیده تر , درونی سازی است که در آن , دستور فراخوانی تابع حذف شده به جای آن بدنه تابع قرار می‌گیرد.
پیمانه تولید کد , AST را به صورت یک لیست خطی از دستورات ماشین مقصد بازنویسی می‌کند . برای این کار , دستوراتی را برای بخشهایی از AST انتخاب می‌کند , ثباتهایی را باری نگهداری داده‌ها تخصیص می‌دهد و این دستورات را به ترتیب مناسبی می‌آراید.
پیمانه بهینه سازی که مقصد,لیستی از دستورات نمادی ماشین را در نظر می‌گیرد وسعی می‌کنند آن را بهینه سازی نماید. برای این منظور , به جای دنباله‌ای از دستورات ماشین , دنباله‌های سریعتر یا کوتاهتری را قرار می‌دهد . این پیمانه , از ویژگیهای ماشین مقصد استفاده می‌کند.
مرزهای دقیقی بین بهینه‌سازی کد میانی, تولید کد , وبهینه سازی کدمقصد وجود ندارد . اگر تولید کد به خوبی صورت گیرد, در بهینه سازی کد مقصد کار زیادی انجام نمی‌شود , بر چیدن ثوابت می‌تواند در اثنای تولید کد یا کد مقصد انجام گیرد . علاوه براین بعضی از بهینه سازیها در یک پیمانه نسبت به پیمانه دیگر بهتر انجام می‌شودو تفکیک سه سطح فوق , اهمیت دارد.
پیمانه تولید کد ماشین , دستورات نمادی ماشین را به الگوهای بیتی متناظر تبدیل می‌کند. آدرس ماشین کد برنامه و داده‌ها را تعیین و جداول ثابت و جداول جابه‌جایی را تولید می‌نماید.
پیمانه خروجی کد اجرایی , دستورات ماشین کد شده , جداول ثابت , جداول جابه‌جایی , سرآیندها , پس آیندها و سایر موارد مورد نیاز را توسط سیستم عمل در فایل کد اجرایی ترکیب می‌کند.
 

 

Comments (0) Posted to حل تمرین درس کامپایلر 03/09/2011 Edit

تشريح نحوه عملکرد کامپايلرها - قسمت اول

 

 

مکانيسم کار کامپايلرها

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

ساختار مفهومی يک کامپايلر:
                                         
1 – ابتدا کامپایلر پردازش اولیه می کند.(راجع به تمام مسایل یکی یکی سوال می کند)
 2 – کنترل ترتیب آیتم ها در این قسمت است .
 3 – چگونگی نحوه اجرا
 
اصولا ترجمه گرها یا مترجم ها را کامپایلر می گویند .کامپایلر برنامه به زبان سطح بالا را به زبان
  سطح پایین تبدیل می کند.
 مفسر برنامه ای است که یک برنامه ورودی به زبان مبدا را می گیرد و آن را اجرا می کند.
 
   تفاوت ميان مفسر و کامپايلر :
 
1 ) مفسر زبان را به صورت مستقیم اجرا می کند ولی کامپایلر ابتدا به زبان مقصد سپس
 توسط مفسر خاصی آنرا ترجمه می کند .
 2 )خطایابی مفسر خط به خط است ولی خطایابی کامپایلر کلی است.
 3 )در کامپایلر می توان یک بار ترجمه کرد و چندین بار از آن استفاده کرد  ولی در مفسر یک بار
 ترجمه و یک بار اجرا داریم مثل VB که فقط یک بار اجرا و کامپایل می کند.
                                  
     سوال ) سرعت اجرا و ترجمه در کامپایلر بیشتر از مفسر می باشد چرا؟
 
در روش تفسیر به دلیل یک مرحله ای بودن ترجمه و اجرا ممکن است کلیه خطاها کشف نشود ولی در
 روش کامپایلر چون در دو فاز مختلف (فاز اول کامپایل و فاز دوم تفسیر) انجام می شود کلیه خطاها قابل
 کشف هستند.
 

 

Comments (0) Posted to حل تمرین درس کامپایلر 03/08/2011 Edit

روند کلاس حل تمرین کامپایلر

 

 

با سلام

روند فعلی کلاس حل تمرین درس اصول طراحی کامپایلر به شرح ذیل می باشد:

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

 تکالیف:

چهارشنبه 18 اسفند ماه --->>>  تحویل تحقیق در مورد نحوه عملکرد اسکنر و پارسر و تشریح کامل هر کدام

چهارشنبه 25 اسفند ماه --->>> در صورت برگزاری کلاس، توضیح و راهنمایی در مورد چگونگی انجام پروژه های LEX  و  YACC .

 اولین جلسه سال 1389 --->>> تحویل پروژه های LEX  و  YACC

دومین جلسه سال 1389 --->>> تحویل پروژه های LEX  و  YACC به طور کامل و بدون نقص...

اواسط اردیبهشت سال 1389 --->>> تحویل پروژه اسکنر برای گرامر داده شده با توجه به ویژگی های خواسته شده در پروژه

اواخر خرداد سال 1389 --->>> تحویل کامل پروژه اسکنر و پارسر برای گرامر داده شده با توجه به ویژگی های خواسته شده در پروژه به طور کامل و به صورت ترکیبی بدون نقص همراه با خصوصیت خطایابی ...

 

پیروز باشید

Comments (1) Posted to حل تمرین درس کامپایلر 03/04/2011 Edit

کلاس حل تمرین کامپایلر

 

 

با سلام

قابل توجه دانشجویان درس اصول طراحی کامپایلر ترم دوم سال 1389

زمان و مکان برگزاری کلاس حل تمرین، چهارشنبه ساعت 14 الی 16  کلاس شماره 312 می باشد.

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

بدیهی است که توضیحات مربوط به پروژه ها در جلسات آتی تکرار نخواهد گردید و صرفا توضیحات تکمیلی ارائه خواهد گردید.

در ضمن این هفته کلاس حل تمرین برگزار نخواهد گردید.

حل تمرین اصول طراحی کامپایلر

 

چهارشنبه 14-16: کلاس شماره 312 

اولین جلسه کلاس حل تمرین در مورخه 11 اسفند ماه خواهد بود.

پیروز باشید

 

 

Comments (5) Posted to حل تمرین درس کامپایلر 02/19/2011 Edit

تعیین ساعت حل تمرین درس کامپایلر

 

 

 با سلام

قابل توجه دانشجویان درس اصول طراحی کامپایلر ترم دوم سال 1389

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

میتوانید چندین ساعت را که در آنها مشکلی ندارید انتخاب نمایید.(فقط عدد مقابل هر ساعت را ذکر نمایید.)

 

شنبه ساعت 12 الی 14 --> 1

شنبه ساعت 18 الی 20 --> 2

دوشنبه ساعت 12 الی 14 --> 3

دوشنبه ساعت 16 الی 18 --> 4

چهارشنبه ساعت 14 الی 16 --> 5


 

به عنوان نمونه :

8812431188

1 و 3 و 4

 

لازم به ذکر است که کلاس حل تمرین تنها در یکی از ساعات فوق برگزار خواهد گردید.

پس خواهشا با صداقت زمانهای خالی خود را اعلام نمایید.

پیروز باشید

احمد استیری

Comments (6) Posted to حل تمرین درس کامپایلر 02/13/2011 Edit

Ontology Evaluation

 

 

سلام به تمام خوانندگان و دنبال کنندگان وبلاگ و به خصوص مطالب مربوط به ترجمه ماشینی

من از این به بعد برای درس سیستم های مبتنی بر دانش جناب دکتر کاهانی بر روی موضوع Ontology Evaluation کار خواهم کرد و مطالب وبلاگ از این به بعد بیشتر  به سمت وسوی این موضوع میل خواهد کرد.

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

به مرور زمان مطالب گردآوری شده و نتایج  بدست آمده در رابطه با این موضوع در وبلاگ انتشار داده خواهد شد.

در ضمن جا دارد که در مورد موضوع سمینار درس خبره یعنی ترجمه ماشینی از عنایات جناب دکتر کاهانی، کمال تشکر را داشته باشم.

پیروز باشید و سربلند

 

 

Comments (0) Posted to ارزیابی آنتولوژی ها 02/10/2011 Edit

برنامه کاری ترم جدید

 

 

با سلام

این ترم هم در خدمت شما دانشجویان عزیز درس اصول طراحی کامپایلر هستم.

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

روال کار این ترم با ترم قبل متفاوت خواهد بود.

شما توی این ترم سه تا پروژه خواهید داشت که در مجموع بیشتر نمره حل تمرین شما رو به خودش اختصاص خواهد داد.

پروژه اول : طراحی یک اسکنر هست که یحتمل تا قبل نوروز باید تحویل بدید.

پروژه دوم : طراحی یک پارسر هست که حدودا تا آخر فروردین یا اوایل اردیبهشت باید تحویل بدید.

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

 

پیروز باشید و سربلند

احمد استیری

 

Comments (1) Posted to حل تمرین درس کامپایلر 02/06/2011 Edit

پروژه پایان ترم

 

 

 

 دانشجویان دانشگاه فردوسی مشهد  تا پایان این هفته برای تحویل پروژه مهلت دارند.

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


 

دانشجویان دانشگاه سجاد نیز بایستی روز شنبه مورخه 16 بهمن ماه ساعت 12:30 الی 14:30 پروژه خود را تحویل دهند. 

تحویل پروژه در اتاق استاد صورت می گیرد.

 

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

 لازم به ذکر است که اسکنر طراحی شده توسط شما توسط چندین قطعه کد ، تست خواهد گردید و در صورت اسکن صحیح کدها نمره به شما تعلق خواهد گرفت.

 

 دانلود فایل

 

احمد استیری

Comments (0) Posted to حل تمرین درس کامپایلر 01/28/2011 Edit

نمرات درس

 
 
 
 
 
به اطلاع کلیه دانشجویان عزیز می رساند، با توجه به حذف پروژه ی پایان ترم درس اصول طراحی کامپایلر و افزایش نمره ی حل تمرین درس به 3 نمره توسط استاد، بنده 1.5 نمره پروژه میان ترم را به طور کامل به تمامی دانشجویان داده ام. ولی به خاطر تاکید استاد برای تکمیل پروژه میان ترمی که تحویل داده اید برای کسب 3 نمره ، هر کدام از شما عزیزان که مایل به کسب نمره ی کامل حل تمرین هستید، می بایست پروژه میان ترم خود را کامل نموده و پس از پایان امتحانات حداکثر تا تاریخ 89/11/10 تحویل دهید.
جزئیات بیشتر مربوط به پروژه Lex  یا اسکنری که تحویل داده اید و بایستی کامل نمایید در فایل زیر موجود می باشد.
 
 
برای هماهنگی زمان تحویل پروژه ، زودتر از موعد مقرر(که مسلما دارای امتیازاتی خواهد بود) می توانید از طریق ایمیل، بنده را در جریان بگذارید.
 
 Ahmad.Estiri@stu-mail.um.ac.ir 

با تشکر
مهندس استیری 
 

Comments (3) Posted to حل تمرین درس کامپایلر 01/12/2011 Edit

قابل توجه دانشجویان درس اصول طراحی کامپایلر

 


تکلیف اول: (نسخه جدید برای دانشجویان دانشگاه سجاد مشهد )

تحقیق در مورد نحوه عملکرد LEX و YACC  و تشریح روند کلی عملکرد هر کدام

 

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

1. نرم افزار  LEX 

2. نرم افزار YACC

3. ورودی به نرم افزار LEX

4. خروجی تولید شده توسط نرم افزار LEX

5. تولید فایل EXE  از خروجی تولید شده توسط LEX که یک فایل با پسوند .C  می باشد و یا کامپایل صحیح و بدون خطای کد تولید شده...

6. فایل Word مستندات شما ( کلیه توضیحات شما در مورد نحوه عملکرد دو نرم افزار  و کارهایی که کرده اید و تمامی مستندات شما بایستی همراه با شماره دانشجویی و مشخصات تون در قالب یک فایل Word موجود باشه... )

 

می دونید که  LEX کد مربوط به قسمت scanner یا همون تحلیل گر لغوی رو تولید می کنه. ( یعنی شما عبارات منظم رو میدین و اون کد scanner رو برای شما تولید می کنه .)

پس شما باید در مستندات تون و همچنین در زمان تحویل تحقیق تون ، یک ورودی شامل عبارات منظم رو به نرم افزار   LEX ای که دارید بدید و اون کدهای C لازم برای ایجاد یک تحلیل گر لغوی را بطور اتوماتیک ایجاد کنه. نحوه عمل هم بصورت کلی بدین حالت است که شما الگوهای مورد نیاز برای شناسایی توکن ها را مشخص میکنید و پس از تبدیل شدن این کد به کد زبان C  می توانید آن را در برنامه تان بکار گیرید.  بدین صورت که کد تولید شده در این مرحله را می بایست با هر کدام از کامپایلرهای زبان C (از جمله  C-developer  یا Dev-Cpp، Torbu C ، Boarland C و یا هر ورژن دیگری از آن) کامپایل نموده و در صورت لزوم تغییراتی در کد اعمال نمایید به گونه ای که کد بدون خطا کامپایل گردیده و فایل EXE کد که در واقع محصول نهایی پروژه یعنی اسکنر می باشد، تولید گردد.

در صورتی که کدهای موجود در قسمت Ruleها از فایل اولیه و ورودی به LEX را کامل و به درستی قرار داده باشید، اسکنر شما بایستی به درستی کار کرده و تمامی قابلیت های یک اسکنر را دارا خواهد بود. 

 

 نحوه تحویل :

توضیح و تشریح عملکرد کلی هر دو نرم افزار ...

به صورت عملی اعمال فایل ورودی تان  به نرم افزار LEX و دریافت خروجی از آن توسط هر فرد... و سپس کامپایل کد تولید شده به زبان C  (بدون هیچ گونه خطایی در کامپایل) و تولید فایل EXE نهایی اسکنر و بررسی عملکرد اسکنر با دریافت یک نمونه کد و مشاهده نتیجه و خروجی اسکنر تولید شده توسط شما... (مرحله کامپایل و تولید فایل EXE ضروری بوده و قسمت اعظمی از نمره را به خود اختصاص می دهد .)

تحویل دادن هر کدام از فایل های ذکر شده در فوق...

  

پروژه شما به صورت گروهی و در گروه های 2 یا 3 نفره می باشد.

- لازم به ذکر است بخش اعظمی از نمره حل تمرین نیز همین تحقیق و پروژه پایان ترم شما می باشد.

زمان تحویل پروژه: متعاقبا در همین وبلاگ اعلام خواهد شد.

دانلود فایل Word صورت پروژه  

 در صورت هر گونه سوال یا ابهامی در مورد پروژه میتوانید از طیق ایمیل با بنده در تماس باشید.


Ahmad.Estiri@stu-mail.um.ac.ir 


پیروز و سربلند باشید

احمد استیری


 

Comments (0) Posted to حل تمرین درس کامپایلر 01/03/2011 Edit

ترجمه ماشینی


 

 ربات ها به زودی جایگزین مترجمین انسانی می شوند...

در این وبلاگ مطالب بسیار مفیدی درباره ترجمه ماشینی ارائه می گردد که امیدوارم مورد رضایت شما

 علاقه مندان و بینندگان وبلاگ قرار بگیرد.

 

ترجمه ماشینی

ترجمه ماشینی _ مقدمه

ترجمه ماشینی _ پردازش زبانهای طبیعی

ترجمه ماشینی _ مفهوم ترجمه و ترجمه ماشینی

ترجمه ماشینی _ روشهای موجود و شیوه های ارزیابی آنها

ترجمه ماشینی _ کارهای فعلی در زبان فارسی

 

لینک های ذیل نیز برای دانلود فایل ها و مقاله های مرتبط با موضوع ترجمه ماشینی قرار داده شده است.

سخنرانی توسط دکتر عبدالحسین صراف زاده در مورد ترجمه ماشینی مبتنی بر آمار

 

 مقاله ای در مورد سیستم ترجمه ماشینی آماری مبتنی بر عبارت فارسی انگلیسی

مطالعه و بررسی ابزارهاي آماده براي تحلیل پیکره متنی زبان فارسی

بررسی ابعاد و تفاوت هاي پیکره هاي برچسب داده اي و پیکره هاي خام در زبان فارسی  

امکان سنجی پروژه هاي زیرساختی کاربري خطو زبان فارسی در محیط رایانه اي 

بررسی ابعاد و لایه هاي ابهام در واژگان مشابه زبان فارسی 

  گروه اعداد در ترجمه ماشيني 

 دریافت اطلاعات HTML وبلاگ در موضوع ترجمه ماشینی در قالب فایل pdf

دریافت فایل پاورپویینت ترجمه ماشینی

 دریافت فایل پاور پویینت ترجمه ماشینی مبتنی بر آنتولوژی 

 

مهندس احمد استیری

Comments (4) Posted to ترجمه ماشینی 01/02/2011 Edit

ترجمه ماشینی _ کارهای فعلی در زبان فارسی

 

 

 

در سال 1372، در آزمايشگاه پردازش زبان طبيعي داشنگاه صنعتي شريف، مهرنوش شمس فرد ( 1373 ) سامانه اي به نام دنا طراحي و پياده نمود. در اين سامانه با به كارگيري نظريه وابستگي مفهومي شنك ( 1975 )، جمله هاي فارسي به شبكه اي از مفهوم ها و روابط ميان آنها تبديل مي شوند.
پس از آن پروژه های متعدد دیگری در حیطه¬ی زبان فارسی در موضوعات ذیل به انجام رسیدند:
پردازش نحوی جمله ها از جمله گروه های اسمی و جمله های مرکب، طراحی و پیاده سازي بخش واژگان و نيز اركان ساختواژي، تقویت بخش استنتاج گر پروژه دنا، بررسي شيوه هاي بازنمايي معنا و انتخاب يك شيوه مناسب براي سامانه دنا 2 و پروژه های دیگری که بر روی واكافت واژه اي، واكافت ساختواژي، واكافت نحوي و واكافت معنايي متمرکز شده بودند.  
 در يك تحقيق ديگر نیز  ماشيني كردن عمل ترجمه از يك زبان محاوره اي به زبان محاوره اي ديگر با قابلیت يادگيري ماشين به صورت خودکار مورد بررسی قرار گرفت. از آنجا كه در اين روش ترجمه، براي طراحي الگوريتم هاي ارائه شده جهت ايجاد پايگاه دانش و استنتاج دانش از آن از هيچ گونه اطلاعات پيش فرضي در زمينه چگونگي ساختار جملات زبان هاي مبدا و مقصد و نقش كلمات در جمله استفاده نشده است، مترجم حاضر مستقل از زبان هاي مبدا و مقصد، توانايي انجام عمل ترجمه از هر زبان به زبان ديگر را دارد.  [7] 
در حال حاضر دكتر عبدالحسن صراف زاده (رئيس دانشكده كامپيوتر و فناوري اطلاعات دانشگاه يونيتك نيوزيلند) با بهره گیری از روشهای آماری، چندین سال است که بحث ترجمه ماشینی را در دانشگاه خود همراه با یک تیم تحقیقاتی دنبال می نمایند و به نتایج تقریبا قابل قبول و رضایت بخشی نیز نائل گردیده اند. موفقیت اصلی گروهی پژوهشی- تحقیقاتی ایشان بیشتر در بخش ترجمه ماشینی انگلیسی به فارسی بوده است چرا که پیکره بسیار عظیمی را مشتمل بر 13 میلیون جمله در بخش پیکره تک زبانه خود به زبان فارسی یعنی در بخش نهایی (Persian monolingual corpuse) دارا می باشند و این امر باعث کسب نتایج بهتر آنان نسبت به ترجمه های گوگل میگردد. این در حالیست که گوگل دقیقا وضعیتی عکس این حالت دارد و متقابلا در ترجمه فارسی به انگلیسی بسیار قوی عمل می نماید. در حال حاضر در بخش (English-Persian parallel corpuse) تنها یک میلیون جمله وجود دارد که توسط نرم افزار Microsoft Aligner جمله به جمله و نظیر به نظیر align میشوند و افزایش هر چه بیشتر این پیکره نیز هر چند کاری دشوار و زمانبر است، باعث افزایش دقت ترجمه ماشینی ما خواهد شد. [8] لذا مجددا  روش ترجمه ماشینی با بهره گیری از روشهای آماری به طور کامل تشریح می گردد:
ترجمه ی ماشینی آماری یکی از راه‌های ترجمه ی ماشینی است که در آن فرآیند ترجمه با مدل‌های آماری انجام می‌شود. این مدل‌های آماری با کمک آنالیز عبارات متنی دوزبانه است. روش آماری با روش ترجمه بر پایه دستور و ترجمه بر پایه نمونه در تضاد است. نخستین ایده ی ترجمه ی ماشینی آماری را وارن ویور در سال 1949 ارائه کرد که در آن نظریه اطلاعات کلود شانون را به کار بست. در سال 1991 این ایده توسط پژوهشگران ای بی ام در مرکز پژوهشی جی واتسون بازتعریف شد و سبب محبوبیت ترجمه ماشینی در سال‌های اخیر شده است. امروزه این روش بهترین و گسترده‌ترین روش ترجمه ی ماشینی است.
ترجمه ماشینی به روش آماری، سعی در تولید ترجمه هایی دارد که از روشهای آماری مبتنی بر پیکره‌های متنی دوزبانی استفاده می کنند. همانند پیکره کانادایی هانسارد (Canadian Hansard corpus)، بایگانی انگلیسی-فرانسوی مجلس کانادا و یوروپارل(EUROPARL) و بایگانی پارلمان اروپا.
درحال حاضر این چنین پیکره هایی موجودند و نتایج ثمربخشی از ترجمه متون از نوع مشابهی، بدست می آید اما این چنین پیکره ای هنوز بسیار کمیاب است. اولین نرم‌افزار آماری ترجمه ماشینی، کاندید(CANDIDE) تولیدی شرکت آی‌بی‌ام بود. گوگل نیز سیسترن(SYSTRAN) را برای سالهای متمادی استفاده کرد اما نهایتا در اکتبر 2007 به مترجمی آماری تغییر روش داد. به تازگی، گوگل قابلیت‌های ترجمه خود را بوسیله دادن 200 میلیون کلمه از اسناد سازمان ملل بعنوان ورودی سیستم-برای تعلیم سیستم خود- بهبود بخشیده اند. وبدین سان دقت ترجمه‌ها بهبود یافته است.[9]
اصول
ایده ترجمه ماشینی از نظریه اطلاعات سر برآورده است. سند (متن خواهان ترجمه) بر پایه احتمال(p(e|f ترجمه می‌شود که رشته ی e در زبان بومی (برای نمونه انگلیسی) ترجمه ی رشته ی f در زبان بیگانه (برای نمونه فرانسوی) است. معمولا، این احتمالات با استفاده از تکنیک‌های برآورد پارامتر برآورد می‌شوند.
مزیت‌ها
مهمترین مزیت‌های ترجمه ی ماشینی آماری در برابر روش‌های سنتی عبارتند از:
 بهره‌گیری بهتر از منابع
 حجم بسیاری از قالب ماشین خوان که در زبان طبیعی گفته می‌شود وجود دارد.
 معمولاً سامانه‌های ترجمه آماری مختص جفت زبان خاصی نیستند و بر هر جفت زبانی سازگارند.
 سامانه‌های ترجمه بر پایه دستور نیازمند توسعه دستی دستورهای زبان‌شناسی است که می‌تواند پرهزینه باشد و اغلب بر دیگر زبان‌ها سازگار نیست.
 ترجمه طبیعی‌تر (روان‌تر و نزدیک‌تر به گفتار)
موانع و مشکلات ترجمه ماشيني در زبان فارسي  
مشکلات زبان فارسی که باعث ابهام در این زمینه ترجمه ماشینی می شود به ۳ دسته تقسیم می شود.   ۱-مشکلات رسم الخط فارسی: چون زبان فارسی از رسم الخط عربی استفاده می کند دارای مشکلاتی فراوان از جمله نداشتن حرکت یا آوای کوتاه(a,e,o) می باشد. همچنین رسم الخط فارسی به دلیل چسبیده بودن حروف به سختی قابل پارس کردن است. ۲- مشکلات نحوی زبان فارسی: نظیر مشکلات افعال و... ۳- استثناها: نظیر اصطلاحات و light verb و ....
در حقیقت در همة ترجمه‌ها ـ چه وقتی که از فارسی به انگلیسی و چه وقتي كه از انگلیسی به فارسی صورت می‎گیرند ـ مشکلات وجود دارند. مثلاً اغلب می‎گویند تسلط به زبان مبداء و مقصد و موضوع ترجمه برای ترجمه کفایت می‎کند. به عبارتی ديگر تسلط زبانی کافی است. در حالي كه اينگونه نيست و شرايط ديگري مورد نياز هستند، شما باید تسلط فرهنگی و اجتماعی هم در كنار آن تسلط زباني داشته‌ باشيد. بنابراين مشکلات زبانی در همه جا خودشان را نشان می‎دهند. در انتخاب واژگان و معادل‎سازی نیز ما با مشکلات متعددی روبرو هستیم. اما اینکه این مشکلات و بعضاً ضعفها محسوس یا نامحسوس هستند، یک سخن دیگر است و در این باره هم نگرشهای مختلفی وجود دارند. وقتی که شما از انگلیسی به فارسی ترجمه می کنید یک گرته‎برداری به صورت بسیار رایج و انتقال ساختهای نحوی نارایج به زبان فارسی صورت می گیرد. بنابراین لازم است در ابتدا با اجزای اصلی مورد نیاز در تجزیه و تحلیل جملات برای ترجمه ماشینی آشنا شویم.
همان طور كه در بالا توضيح داده شد،‌ مهمترين بخش يك سامانه مترجم ماشيني، تشخيص نقش كلمات در جمله و تشخيص معناي صحيح آنها با توجه به متني است كه آن كلمه در آن قرار گرفته است. براي تشخيص معنا ي صحيح كلمات از سه روش مي توان استفاده نمود: در روش اول براي آموزش سامانه به يك مجموعه كلمات فارسي ابهام زدايي شده نياز مي باشد تا از روي آن بتوان عمل رفع ابهام براي كلمات جديد را در متن هاي مختلف انجام داد كه متأسفانه هنوز اين مجموعه به صورت يك فرهنگ فارسي قابل خواندن براي ماشين تهيه و تدوين نگرديده است. يعني اين اطلاعات به صورت دستي وجود دارند، اما نسخه رايانه اي از آنها با يك استاندارد معين براي تعريف هر كلمه و معني و نقش هاي مختلف آن وجود ندارد. بديهي است براي اين كار ابتدا با يد با يك مركز زبان شناسي معتبر، استاندارد ذخيره سازي اطلاعات و انواع آن را تدوين نمايد و سپس نسخه اي رايانه اي از اين اطلاعات جهت استفاده هاي بعدي تهيه شود. 

در روش دوم نيز سامانه مستقيما از يك فرهنگ لغت استفاده مي كند، باز هم در مورد زبان فارسي اين مشكل وجود دارد كه هنوز فرهنگ هاي لغت فارسي رايانه اي با يك استاندارد مشخص تهيه نشده اند. اين در حالي است كه در زبان انگليسي فرهنگ هاي متعددي مانند net LDOCE, Word يا Roget’s International Thesaurus به صورت MRD يا نسخ قابل خواندن توسط رايانه وجود دارند كه سامانه هاي مختلف مترجم ماشيني از آنها با يكي از روش هاي رفع ابهام مذكور بهره مي جويند. 

از روش سوم رفع ابهام نيز همان طور كه ديده شد صرفا براي لغات خاص و محدود فني يا پزشكي استفاده مي شود، نه براي كليه لغات فارسي و چون متأسفانه هنوز استفاده از اصطلاحات فني فارسي متداول و رايج نشده است، اين روش رفع ابهام در زبان فارسي زياد موفق نخواهد بود. از اين رو براي اينكه بتوان از يك مترجم قوي وبدون مشكل فارسي بهره مند شد، ابتدا بايد مقدمات بر شمرده را فراهم نمود و اين خود تلاش گروهي متشكل از زبان شناسان، مترجمان، اديبان و متخصان رايانه را مي طلبد كه سرآغازي خواهد شد براي رسيدن به اين هدف ملي. 

آینده ترجمه ماشینی
اکنون بسیاری از صاحب نظران برآ نند که ارائه ترجمه خوب ، تنها با داشتن اشراف کامل به واژگان و قواعد نگارشی زبان های مبدأ و مقصد میسر نمی شود، بلکه نیازمند ادراک انسانی از مفاهیم گوناگونی می باشد که ماشین هرگز قادر به فهم آن نیست و نخواهد بود. از نظر برخی افراد، ماشین های ترجمه شفاهی، نرم افزارهای تبدیل کلام به آدمک های گرافیکی که به زبان اشاره صحبت می کنند و یا موبایل هایی که صحبت های شخص آن طرف خط را به زبان دیگر برمی گردانند شاید فقط در حد سرگرمی جلوه کند؛ لیکن از یاد نبریم که بسیاری از امکانات پیش پا افتاده و کاملا بدیهی زندگی امروزی ما یکصد سال پیش حتی به مخیله دانشمندان نیز راه پیدا نمی کرد.
همان طور که گفته شد منظور از ترجمه متن توسط ماشین ترجمه - به پشتوانه پیشرفت هایی که به ویژه در دهه اخیر در تحقق بخشیدن به این رؤیای پنجاه ساله به دست آمده است- فقط برگردان متن نوشتاری نیست، بلکه ترجمة نوشته به صوت، برگردان نوشته به نمایش گرافیکی زبان اشاره ، ترجمه صوت به صوت و یا ترجمه صوت به متن نیز- چه در داخل یک سیستم زبانی و چه به زبان دیگر- و وظایف دیگری از این دست نیز قرار است به عهده ماشین های مترجم گذاشته شود. به عنوان نمونه می توان به نوعی سیستم تلفن همراه طراحی شده توسط شرکت   NEC  اشاره کرد که برای ترجمه مکالمات تلفنی ژاپنی به انگلیسی طراحی شده است؛ یا از نرم افزارهایی یاد کرد(digital avatars)  که برای کمک به ناشنوایان و یا کم شنوایان طراحی شده و مراحل تکمیلی خود را می گذراند و قرار است بتواند آنچه را که میشنود با استفاده از تصویر آدمکی که با زبان اشاره صحبت می کند، به ناشنواها منتقل نماید.
جمع بندی و نتیجه گیری
فراگيري ترجمه ماشيني عبارت اند از: واكافت واژه اي، واكافت ساختواژي، واكافت نحوي، واكافت معنايي، تشخيص نقش كلمات در جمله، تشخيص معناي صحيح كلمات ( با توجه به جمله حاوي و رفع ابهام از كلمات داراي معني مشابه و يافتن معني معادل كلمه در زبان مقصد و تبديل جمله زبان مبدا به جمله زبان مقصد با توجه به دستور زبان مقصد و در صورت نياز اعمال گشتارهاي مناسب براي تبديل جملات مقصد به شكل روساختي آن ). در اين راستا مهمترين بخش يك مترجم كه دقت در آن باعث بالا رفتن دقت كل عمل ترجمه مي گردد،‌ رفع ابهام معنايي از كلمات جملات زبان مبدا ونيز رفع ابهام از ترجمه آنها به زبان مقصد مي باشد. براي رفع ابهام معنايي كلمات سه روش كلي وجود دارد كه عبارت اند از: ( الف ) رفع ابهام با مربي، (‌ب ) رفع ابهام بر مبناي فرهنگ لغت، و ( ج ) رفع ابهام بدون مربي. 
اما مشكل اصلي بر سر راه رفع ابهام از كلمات فارسي اين است كه اگر از دو روش اول استفاده شود، به يك نسخه رايانه اي از مجموعه لغات همراه بانقش هاي مختلفي كه مي توانند به خود بگيرند و معاني مختلفي كه باتوجه به نقش هاي مختلف و يا همنشيني با كلمات مختلف به خود مي گيرند، نياز مي باشد كه متأسفانه اين نسخه رايانه اي و همچنين استاندارد ذخيره سازي اين دسته اطلاعات وجود ندارد كه بايد با كار گروهي متشكل از زبان شناسان، اديبان و متخصصان رايانه ايجاد و جهت سيستم هاي مترجم زبان فارسي صورت بگيرد. استفاده از روش سوم رفع ابهام نيز خاص لغات فني است كه در زبان فارسي هنوز كاملا جا نيفتاده است . بنابراين با توجه به اين كه دقت در رفع ابهام از معناي كلمات، دقت مترجم را بالا مي برد،‌ هنوز نمي توان سامانه هاي مترجم فارسي مناسب را تهيه و از آنها بهره برداري نمود.
پیشنهادات
اولا که بایستی واژگان معنایی (WordNet) بسیار عظیمی در اختیار داشته باشیم و همچنین با توجه به اضافه شدن لغات جدید در گذر زمان به هر زبان بایستی واژگان معنایی ما بروزرسانی شود و دائما گسترش داده شود.
بایستی توجه داشت که اگر حوزه ی موضوعی متن محدود و کنترل شده باشد، کیفیت ترجمه ماشینی اساساً بهتر خواهد شد.
علاوه بر اين‌ وجود خطاهای‌ تايپی و يا املايی‌ و همچنین خطاهای نحوی و نگارشی در متن‌ می‌تواند در کار ترجمه ماشينی‌ ايجاد اختلال‌ كند. مترجمين‌ ورزيده‌ در رويارويی‌ با كلمات‌ ناشناخته‌ يا ساختارهای‌ پيچيده جملات‌، با مراجعه‌ به‌ منابع‌ معتبر و با بکارگيری تجربيات‌ و دانش‌ فردی و يا از طرق ديگر به‌ حل‌ مشكل‌ و مسأله‌ می ‌پردازند. در ترجمه‌ ماشينی  نيز بايد در مقابل‌اين‌ گونه‌ پديده‌ها ساز و كار مناسبی طراحی نمود تا سيستم‌ به‌ ابزار‌ خاصی‌ مجهز باشد تا اختلالی در امر ترجمه‌ بوجود نيايد. بنابراین بایستی ابزارهای پیش پردازش و پس پردازش بسیار قدرتمندی طراحی گردد که متن را قبل از ورود به فاز ترجمه و همچنین خروجی نهایی را بهینه سازی و استاندارد نماید.

 

[7] امامی م . بررسی مسایل درك متن فارسی و پیاده سازی نمونه هایی از آن. پایان نامه كارشناسی ارشد، دانشكده مهندسی كامپیوتر، دانشگاه صنعتی شریف.،1376.  
[8]  صراف زاده ع. سمینار علمی ، آمفي تئاتر دانشكده مهندسي، 1389 .


[9] Milestones in machine translation - No.6: Bar-Hillel and the nonfeasibility of FAHQT by John Hutchins


 

Comments (1) Posted to ترجمه ماشینی 01/01/2011 Edit

ترجمه ماشینی _ روشهای موجود و شیوه های ارزیابی آنها

 

 

 برای دست یافتن به ترجمه ماشینی می توان روشی مبتنی بر قوانین زبان‌شناسی استفاده کرد، به این معنی که کلمات از نظر زبان‌شناسی ترجمه خواهند شد. (در واقع متناسب‌ترین کلمات مقصد جایگزین کلمات مبدا خواهند شد.)
این موضوع که موفقیت ترجمه ماشینی پیش از هر چیز نیازمند حل مسئله فهم زبان طبیعی است، اغلب مورد بحث است.به طور عام روش‌های قانون مند (Rule Based)، متن را با استفاده از ساختن واسطی سمبلیک -که نهایتاً متن زبان مقصد از آن ایجاد می شود- تجزیه می کنند. هرمی که عمق های متفاوت نمایش واسط را نشان می دهد. ماشین ترجمه بین زبانی، در نوک هرم است که بدنبال آن، ترجمه ی مبتنی بر انتقال و ترجمه مستقیم آمده اند .
سه شيوه عمده سنتی برای ترجمه ماشينی که بر مبنای معماری آنها ماشينهای ترجمه توسعه يافته اند عبارتند از:
1- شيوه مبتنی بر معماری مستقيم يا ترانسفورمر
2- شيوه مبتنی بر انتقال
3- شيوه ميان زبانی
ساير شيوه های ترجمه ماشينی عبارتند از:
4- ترجمه‌ با استعانت‌ از كامپيوتر  يا شيوه مبتنی بر ديالوگ
5- روش مبتنی بر پيکره زبانی
در اين روش ترجمه ماشينی با استفاده از يک پيکره زبانی  که معمولاً متون از قبل ترجمه ای هستند استفاده می شود. 
5-1- روشهای آماری ترجمه ماشينی
سابقه ايده استفاده از روشهای آماری ترجمه ماشينی به دهه 1940 ميلادی بر می گردد اما بلحاظ فقدان امکانات محاسباتی و پيکره زبانی قابل خوانش توسط ماشين که موانعی بر سر راه توسعه اين روش بودند اين روش به تازگی قوت گرفته است. در روشهای آماری ترجمه ماشينی از اطلاعات زبان شناسی استفاده نمی شود بلکه اين گونه ماشينهای ترجمه داده رانده بوده و کليه احتمالات پيکره-رانده از قبل محاسبه شده و بکار گرفته می شوند. از توابع توزيع احتمال کلمات و واژه ها در جملات با استفاده از پيکره های دو زبانی برای يافتن محتمل ترين ترجمه مناسب استفاده می شود. محصولاتی از قبيل  Language Weaver بر  اساس اين روش ارايه شده اند.

لینک دانلود سخنرانی توسط دکتر عبدالحسین صراف زاده در مورد ترجمه ماشینی مبتنی بر آمار 

 

 

5-2- روشهای مبتنی بر مثال ترجمه ماشينی  

روشهای مبتنی بر مثال ترجمه ماشينی  که روشهای مبتنی بر حافظه نيز ناميده شده اند. اين روش بر اساس استفاده از جملاتی که به عنوان مثال قبلاً ترجمه شده است استوار است. در اين گونه سيستمها از پيکره های دوزبانه  برای منبع اطلاعات زبانی خود استفاده می کنند. در اين پيکره ها حجم عظيمی از مثالهای ترجمه جملات دو و يا چند زبانه در يک پايگاه داده متنی ذخيره شده است. ماشين ترجمه  حين کار از اين پايگاه اطلاعات استفاده نموده و ترجمه جمله ای در زبان مبدأ که بيشتر به ورودی شبيه باشد به عنوان خروجی به زبان مقصد  ارايه می شود.
واژگان معنایی (WordNet) بسیار عظیم و گسترده از ضروریات و ملزمات مورد نیاز این روش می باشد. واژگان معنایی، گلوگاه ساخت بسیاری سیستم های پردازش زبان فارسی است. وجود یک واژگان معنایی و در شکل وسیعتر یک واژهستان شناسی برای این زبان در ترجمه ماشینی، بازیابی اطلاعات تک و دوزبانه، خلاصه سازی اسناد، مدیریت محتوا در سیستم های آموزشگر، خطایاب نحوی و معنایی متون، درک و تولید متون فارسی، تشخیص صحبت، تبدیل متن به گفتار، تحلیل نحوی، استخراج اطلاعات از متون و بسیاری کاربردهای دیگر نقش اساسی ایفا می کند. وجود چنین منبعی همچنین می تواند در تهیه منابع زبانی دیگر از جمله پیکره هایی با برچسب معنایی و هستان شناسی های خاص قلمرو کاربرد داشته باشد.
6- سيستم های زبان کنترل شده
در حقيقت اين گونه سيستمها نوعی سيستم ترجمه بر اساس دانش هستند. در برخی موارد متون نوشته شده در زبان مبدأ کنترل شده هستند يعنی اينکه دارای ويژگی استفاده از لغات و واژه های مشخص و حتی ساختار کنترل شده جملات می باشند. مزيت اين برخورد و کنترل زبان مبدأ در اين است که متون نوشته شده کمتر دارای ابهام بوده و لذا ماشين ترجمه کمتر مشکل ابهام زدايی خواهد داشت. در نتيجه علاوه بر توليد متن اوليه بهتر، ماشين ترجمه می تواند متن خروجی به چندين زبان مقصد را  با کيفيت بهتر توليد نمايد.
7- سيستم‌ تمام‌-خودکار ترجمه‌ ماشينیFAHQT
توسعه سيستم‌ ترجمه ماشينی تمام‌ اتوماتيك‌ ‌با كيفيت‌ بالا يا ‌FAHQT از ابتدا به عنوان يک ايده آل دنبال می‌ شد. ‌سيستم‌ های توسعه يافته هرگز به اين ايده آل دست نيافتند. پيشرفتهای‌ حاصله ‌ در سالهای‌ اخير در زمينه‌ هوش‌ مصنوعی  ، سيستمهای فازی   و   شبكه‌ های عصبی ‌ تأثير انكارناپذيری در تكامل‌ و توسعه‌ ترجمه‌ ماشينی‌ داشته‌ است‌. اين‌سيستم‌ شکل تكامل‌ يافته‌ سيستمی است‌ كه‌ نياز به‌ پيش‌- ويرايش  و پس‌-ويرايش  داشته‌ است‌. بديهی است‌ كه‌ ويراستاری ‌های ياد شده‌ توسط فرد متخصص‌ انجام‌ می شد ولی در حال‌ حاضر اين‌گونه‌ سيستم‌ها مجهز به‌ غلط ياب‌ املايی و نحوی نسبتاً قدرتمندی  هستند‌ كه‌ قبل‌ از انجام‌ ترجمه‌، متن‌ زبان‌ مبدأ را آماده‌سازی می كند. پس‌ ازانجام‌ ترجمه‌ نيز، از طريق‌ خطاياب‌ نحوی زبان‌ مقصد، متن‌ خروجی ويرايش‌ می ‌شود و در نهايت‌ ويرايش‌ نهايی ‌ توسط ويراستار انجام‌ می شود.
مقایسه کلی چندی از روشهای ترجمه ماشینی
مبنای کار سیستم های قدیمی تر ترجمه ماشینی مبتنی بر واژه نامه ( Dictionary-based) و بر اساس قواعد زبا نشناسی (Rule-based ) بود. ( مانند Systran دراین روش که به Interlingual Machine  Translation نیز شهرت دارد،) جملات متن مبدأ بر اساس اصول دستور زبان و مجموعه گسترده ای از لغات که به کامپیوتر داده شده است حلاجی شده و پیش از ترجمه به زبان مقصد، به یک زبان واسطه برگردانده می شود. سپس متن زبان واسطه بر اساس همان قواعد داده شده به سیستم و با استفاده از مناسب ترین و رایج ترین معادل های واژگان در زبان مقصد ترجمه می شود. امروزه در ماشین های ترجمه غالبا از روش های آماری (Statistical) و مقایسه و تطابق  (Analogy)و استفاده از نمونه های موجود (Example-based) استفاده می شود. اصل کار روش های جدید مبتنی بر استفاده از پیکره های زبانی (Corpora) بسیار عظیمی می باشد که متون معادلی را به زبان های مبدأ و مقصد در گنجینه خود دارند و هنگام معادل گزینی، کار خود را بر اساس مقایسه متونی که باید ترجمه شود، با متون و ترجمه های مشابه آن ها در پیکره زبانی ذخیره شده انجام می دهند. از آنجا که تهیه و ذخیره چنین پیکره زبانی کار آسانی نیست، طراحی و استفاده این سیستم در ترجمه ماشینی نیز عموما فقط از عهده شرکت های بزرگ و قدرتمند بر می آید.
دشواری کار ترجمه خودکار، بدست آوردن اطلاعات کافی از نوع صحیح آن برای پشتیبانی روشی خاص می باشد. به عنوان مثال یک پیکره وسیع چند زبانی از داده ها، برای روشهای آماری مورد نیاز می باشد. حال آنکه برای روشهای مبتنی بر دستور زبان لازم نیست. اما از سویی دیگر روشهای مبتنی بر دستور زبان نیاز به یک زبان شناس حرفه ای برای طراحی دقیق دستور زبانی که استفاده خواهد شد، دارند. برای ترجمه بین زبان‌های نزدیک بهم، تکنیکی به نام ترجمه ماشینی مبتنی بر انتقال سطحی ممکن است استفاده شود.
بنابراین میتوان روشی را تحت عنوان روش پیوندی ترجمه ماشینی به کار برد.
8- ترجمه ماشینی پیوندی (Hybrid)
روش پیوندی، نقاط قوت دو روش آماری و قانونمند را باهم ادغام می کند.[5] بسیاری از شرکتهای ترجمه ماشینی (همانند آسیا آنلاین و سیسترن(SYSTRAN)) مدعی داشتن روشی چندگانه مبتنی بر دو روش قانونمند و آماری در ترجمه ماشینی، هستند. این روشها به دو گونه مختلف زیر می باشند :
قوانین در مرحله دوم توسط روشهای آماری پردازش می شوند. در این روش ترجمه بوسیله موتورهای قانونمند انجام میشود. سپس معیارهای آماری برای تنظیم/تصحیح خروجی موتور قانونمند اعمال میشوند. معیارهای آماری از ابتدا توسط قوانین هدایت میشوند. قوانین برای پیش-پردازش داده‌ها برای هدایت بهتر موتور آماری استفاده می شوند. قوانین همچنین برای پس-پردازش خروجی موتور آماری برای پیاده سازی عملیاتی همچون نرمال سازی استفاده می شوند.این روش قدرت،کنترل و انعطاف پذیری بسیار بیشتری دارد.
ابهام زدایی از ترجمه ماشینی
ابهام زدایی از کلمات با یافتن ترجمه مناسب برای کلمه ای با بیش از یک معنی در ارتباط است. يكي از اولين مشكلاتي كه هر سيستم پردازش زبان طبيعي با آن درگير است، مسئله ابهام معنايي و ساختاري كلمات است.  بخش عمده اي از اين ابهام به كمك روالي به نام نشانه گذار بخش كننده جملات كه براي تعيين نقش كلمات در جمله به كار مي رود، مرتفع مي گردد.
امروزه روشهای بسیاری برای حل این مشکل بوجود آمده اند که این روشها بطور تقریبی به دو دسته ی روشهای "سطحی" و "عمقی" تقسیم میشوند. روشهای سطحی تصور میکنند که هیچ دانشی از متن ندارند.آنها به سادگی روشهای آماری را برای کلمات اطراف کلمه مبهم، اعمال میکنند. اما روشهای عمقی دانشی وسیع از کلمه را متصور میشوند. تا بحال، روشهای سطحی موفقیت بیشتری داشته اند. آقای کلود پایرون(Claude Piron)، یکی از مترجم‌های بسیار قدیمی سازمان ملل و سازمان بهداشت جهانی، نوشته است که ترجمه ی ماشینی، در بهترین نوع آن، آسان‌ترین بخش کار مترجمان را میتواند انجام دهد.بخش سختتر و زمان گیر معمولاً در ارتباط با تشخیص ابهامات متن منبع می‌باشد که این عمل نیاز به برطرف کردن آشفتگی‌های دستور زبانی و لغوی زبان مقصد دارد.[6]
ارزیابی ترجمه ی ماشینی
یکی از مسائلی که همواره در زمینه ترجمه ی ماشینی مورد توجه بوده‌است، روشها و پارامترهای ارزیابی نتایج ترجمه‌است. قدیمی‌ترین روش استفاده از داورهای انسانی برای ارزیابی کیفیت یک ترجمه می باشد. ابزارهای ارزیابی خودکار شامل بلو محصول شرکت آی‌بی‌ام(BLEU)، نیست(NIST) و متئور(METEOR) می باشند. به تجربه می توان دریافت که ماشین های ترجمه¬ی بسیار پیشرفته نیز - لااقل فعلا- قادر نیستند دقّت، روانی و وضوحی را که از یک ترجمه مطلوب انتظار می رود در کار خود نشان دهند. آزمودن این نرم افزارها با استفاده از متون مغلق، طولانی و یا حاوی لغات چند معنا به راحتی نشانگر ناتوانی آن ها در حل پیچیدگی های زبانی است. همچنین می توان با ترجمه برعکس میزان انحراف این نرم افزارها را محک زد. هنگامی که متنی را برای ترجمه به زبان دیگر به مترجم الکترونیک وارد می کنیم و سپس ترجمه به دست آمده را مجددا به عنوان متن زبان مبدأ به ماشین می دهیم تا به زبان اولیه برگرداند؛ انتظار می رود که متن اول و سوم اگرچه نه کاملا- بلکه تا حد زیادی مشابه یکدیگر باشند.
جایگزین ارزشیابی دوزبانه
جایگزین ارزشیابی دوزبانه یا BLEU (Bilingual Evaluation Understudy) روشی است برای ارزیابی کیفی متن ترجمه شده توسط ماشین ترجمه یا دستگاه ترجمه ماشینی. کیفیت ترجمه با عددی بین ۰ و ۱ اندازه‌گیری می‌شود. این عدد نمایانگر میزان نزدیکی ترجمه به مجموعه‌ای از ترجمه‌های انسانی با کیفیت خوب است. بنابراین با این روش نمی‌توان قابل فهم بودن ترجمه یا درستی آن از نظر دستوری را ارزیابی نمود. این روش برای ارزیابی ترجمه ماشینی در سطح کلی کاربرد دارد و در حالتی‌که برای ارزیابی تک تک جملات بکار برده شود، بسیار بد کارمی‌کند.

 

[5] Boretz, Adam, "AppTek Launches Hybrid Machine Translation Software" SpeechTechMag.com (posted 2 MAR 2009)
[6] Claude Piron, Le défi des langues (The Language Challenge), Paris, L'Harmattan, 1994.

Comments (8) Posted to ترجمه ماشینی 12/30/2010 Edit

ترجمه ماشینی _ مفهوم ترجمه و ترجمه ماشینی

 

 

فعالیت و کار ترجمه سابقة بسیار طولانی دارد. بعضیها معتقدند که اولین کاری که بشر کرده ترجمه است؛ اگر ترجمه را به معنی برگرداندن فرض کنیم کلام در واقع برگردان اندیشه است. این اولین قدمی است که بشر برای ترجمه برداشته است. در واقع یکی از استراتژیهای ترجمه، از هر زبانی که بخواهید ترجمه کنید، به هدف و نوع متنی که ترجمه می‎کنید بستگي دارد. مثلاً متن تبلیغاتي با متنی که قرار است در یک صفحة اینترنت درج شود و یا با متن ادبی و اخبار سیاسی متفاوت است. چرا که مخاطبها و دوره های مختلف تاریخی توقعات مختلفی از متنها به وجود می‎آورند. [3]
ترجمه ماشینی
ترجمه ماشینی ترجمه‌ای است که توسط کامپیوتر و بدون دخالت فرد انجام می‌شود. ترجمه ی ماشینی(Machine Translation - MT) زیر شاخه ای از زبان‌شناسی محاسباتی می‌باشد که عبارت است از ترجمه ی متنی از یک زبان طبیعی به زبانی دیگر، توسط کامپیوتر. در سطح مقدماتی، ترجمه ماشینی یک جایگزینی ساده برای کلمات از زبان طبیعی به زبان دیگری است. با استفاده از تکنیک‌های زبان‌شناسی پیکره ای، ترجمه‌های پیچیده بیشتری قابل دستیابی هستند. همچنین این تکنیک‌ها کنترل بهتر تفاوت های گونه‌شناسی در زبان، تشخیص عبارات و ترجمه ی اصطلاحات را به خوبی و درستی جدا کردن عبارات نامتعارف در متن، مقدور میسازند.
نخستین تلاش‌ها برای ترجمه توسط رایانه ناموفق بودند، چرا که در آن دوران نظریه¬ی زبان‌شناسی وجود نداشت که بتواند کمک شایانی به پردازش زبان‌ها بکند. در سال ۱۹۵۷ کتاب ساختارهای نحوی اثر نوام چامسکی زبان‌شناس جوان آمریکایی که از آن پس به شناخته‌شده‌ترین چهره¬ی زبان‌شناسی نظری تبدیل شد به چاپ رسید. از آن پس پردازش زبان با حرکت‌های تازه‌ای دنبال شد. [4]
نرم‌افزارهای ترجمه ماشینی کنونی اغلب به کاربر اجازه ی تغییر دلخواه بر اساس حوزه کاری یا حرفه ای دلخواه را می دهند. در واقع ارتقای کیفیت خروجی با استفاده از محدود کردن کلمات جایگزین شونده، انجام میشود. این تکنیک بطور خاص در حوزه ی رسمی یا زبان های فرموله شده استفاده می شود. همچنین کیفیت خروجی بهبود یافته می تواند با استفاده از دخالت انسان بدست آید. برای مثال سیستم هایی موجودند که اگر کاربر بطور کاملا واضحی کلماتی که اسامی خاص هستند را معین کرده باشد، قادر به ترجمه دقیقتری هستند. با ¬¬کمک گرفتن از این تکنیک‌ها ترجمه ماشینی بعنوان یک ابزار برای کمک کردن به مترجمان(انسان ها) و بسیاری از موضوع های محدود، قادر به تولید خروجی قابل استفاده و نهایی است.
براي اينكه بتوان جمله اي را از يك زبان ترجمه و به زبان ديگري تبديل نمود، ابتدا به يك روال تشخيص واژه ها يا واكافت واژه اي و واكافت ساختواژي نياز مي باشد، به طوري كه كلمات ساده و مركب آن زبان از ورودي تشخيص داده شود. سپس بايد تركيب كلمات از نظر نحوي صحيح باشد و جمله متعلق به آن زبان را ايجاد نمايد. حال براي اينكه اين جمله به زبان ديگري برگردان شود، بايد نقش و معناي هر كلمه مشخص و با توجه به دستور زبان مقصد و ترجمه كلمه با توجه به نقش آن، جمله زبان مقصد توليد شود. بنابراين ديده مي شود كه مهمترين بخش، مشخص كردن نقش و معناي كلمات مي باشد نقش كلمات با توجه به محل قرار گرفتن آن در جمله مشخص مي گردد، اما مسئله مهم معني كلمات مي باشد؛ چرا كه تعدادي از كلمات داراي چند معني مي باشد كه اين ابهام بايد به روش مناسبي رفع گردد ( مانينگ و شوتس، 2000 ). در ترجمه ماشيني ابهام هم در معناي كلمات زبان مبدا وجود دارد ( از نظر درك معني آن ) و هم در زبان مقصد و همين باعث مي گردد روند ترجمه دچار مشكل شود.
با این وجود به طور کلی در ترجمه¬ی ماشینی ویژگیهایی وجود دارد که نه تنها از نظر جاذبه و کشش علمی، بلکه، از دیدگاه اقتصادی و دیگر ضرورت‌ها و اقتضاهای عصر، انجام آن را کاملاً توجیه می‌کند.
فرآیند ترجمه
فرآیند ترجمه به شرح زیر است:
1. رمزگشایی معنایی متن مبدا
2. کدگذاری دوباره این معنا در زبان مقصد
در پس این فرآیند بظاهر آسان، عملیات شناختی پیچیده ای واقع است. به منظور رمز گشایی معنای متن مبدا، مترجم باید قابلیت تفسیر و تجزیه تحلیل تمام ویژگی‌های متن را داشته باشد. یک فرآیند که احتیاج به دانش عمیقی از دستور زبان ، جمله‌شناسی(نحو)، معناشناسی و اصطلاحات از زبان مرجع دارد به همان اندازه باید دانش مربوط به فرهنگ صحبت کنندگان آن زبان را نیز داشته باشد. از آن جهت، چالشی در ترجمه ماشینی وجود دارد که چگونه یک کامپیوتر را برنامه نویسی کنیم که بتواند همانند یک انسان متنی را بفهمد و بتواند یک متن جدید در زبان مقصد بسازد که بنظر می رسد توسط انسان نوشته شده است. این مساله ممکن است به روشهای مختلفی حل شود.
انگيزه ترجمه ماشينی
در طول چند دهه‌ اخير و همزمان‌ با گسترش‌ و پيشرفت‌ زبان‌شناسی محاسباتی ‌‌، در بسياری از كشورهای‌ پيشرفته‌، تلاشهای‌ همه‌جانبه‌ و پيگير در جهت‌ ترجمه‌ متون‌ به کمک كامپيوتر انجام‌ گرفته است.‌ با توجه‌ به‌ تنگناها و مسائل‌ خاص‌ مطرح در زمينه ترجمه ماشينی و علی رغم کاستی ها، حاصل اين فعاليتها‌ درخور توجه‌ بوده‌ است‌. توسعه ارتباطات از طريق اينترنت نيز که بصورت يک بستر  جهانی برای مبادله افکار و اطلاعات درآمده است خود مستلزم توسعه ماشين های ترجمه می باشد تا با سرعت بتوان اطلاعات را از يک زبان به زبان ديگر برگرداند.
رشد جالب توجه شبکه‌های اجتماعی،همانند فیس بوک یا پیام‌رسان‌های فوری همانند اسکایپ(Skype)،گوگل تاک(Google Talk) و ام اس ان مسنجر(MSN Messenger)، در سالهای اخیر، مورد استفاده ی دیگری برای نرم‌افزارهای ترجمه ماشینی شده است. چراکه بدین وسیله کابران به زبان‌های مختلف میتوانند با یکدیگر ارتباط برقرار کنند.
نرم‌افزارهای ترجمه ماشینی همچنین برای بسیاری از موبایلها، کامپیوترهای جیبی و .. عرضه شده است. بخاطر قابلیت حمل آنها، اینگونه وسایل بعنوان ابزارهای ترجمه برای موبایل مشخص شده اند که شبکه تجارتی با استفاده از موبایل را بین شرکایی با زبانهای مختلف ممکن ساخته است.همچنین این نرم‌افزارها نیاز به مترجم انسان بعنوان واسطی در مکالمات دوطرف را از بین می برند.
تاريخچه ترجمه ماشينی
ترجمه ی ماشینی از جمله ی اولین اهداف مورد نظر در علوم رایانه و بخصوص در حوزه ی هوش ماشینی به حساب می‌آید و سابقه¬ی آن به حدود نیم قرن پیش از این باز می‌گردد.
نخستین ترجمه‌ای که بطور کامل توسط کامپیوتر انجام شد، ترجمه ی متنی بود از زبان انگلیسی به زبان روسی. گر چه از آن زمان تا کنون فن آوری ترجمه¬ی ماشینی رشد زیادی داشته‌است، هنوز هم نقص‌های فراوانی را داراست. اصولا چون کامپیوترها نمی‌توانند مانند انسان هوشمند باشند، ترجمه‌ای هم که توسط آنها انجام شود، ترجمه¬ی کاملی نخواهد بود. نمی‌توان انتظار داشت که با استفاده از یک نرم‌افزار مترجم، هر متنی به آسانی ترجمه شود. نرم‌افزارهای مترجم، در بهترین حالت، عمل ترجمه را با دقتی در حدود ۷۰ درصد انجام می‌دهند. برای به دست آوردن نتیجه بهتر، لازم است قبل و بعد از ترجمه، مقداری ویرایش روی متن انجام شود. در این متن تاریخچه روند پیشرفت ترجمه ماشینی در طی گذر زمان ذکر نخواهد گردید و فقط ایده ها و نتایج تحقیقاتی آنها در بخش های مختلف ذکر خواهد گردید.
مشکلات در ترجمه ماشينی
قبل‌ از تعريف‌ ترجمه‌ ماشينی‌، لازم است‌ از ديدگاه‌ زبان‌شناسی‌، ماهيت‌ ترجمه‌ را  در مفهوم‌ عام‌ آن‌ يعنی‌ ترجمه‌ توسط شخص‌ متخصص‌ و زبان¬دان‌ و به اصطلاح ترجمه‌ انسانی‌ معرفی كنيم‌. با آنكه‌ ترجمه‌ سابقه بسيار طولانی دارد‌ هنوز تعريفی از آن که‌ مورد قبول‌ همگان‌ باشد وجود ندارد. در حالت کلی ترجمه‌ عبارتست‌ از تبديل‌ يا برگرداندن‌ نزديك‌ترين‌ پيام‌ مستتر در صورت‌ واژه‌های‌ زبان‌ مبدأ  به ‌صورت‌  زبان‌ مقصد. ترجمه‌ ماشينی‌ به‌ سيستم‌ های نرم‌افزار کامپيوتری اطلاق‌ می‌شود كه‌ با آنها‌ می‌توان‌ متون‌ ورودی به‌ زبان‌ مبدأ را طی‌ فرايندهای‌ خاصی و در سطوح‌ مختلف‌ زبان‌شناختی‌ تجزيه‌ و تحليل نموده ودر نهايت‌ به‌ زبان مقصد ترجمه نمود. در طراحی سيستمهای ترجمه‌ ماشينی بايستی تمهيداتی انديشيده‌ شده و در معماری آن‌ مؤلفه‌هايی لحاظ گردد که سيستم‌ را قادر سازد تا تقريبا همانند يک انسان مترجم‌ کار تجزيه‌ و تحليل‌های‌ زبان‌شناختی‌ متن‌ ورودی‌ را انجام‌ داده‌ و با بهره‌گيری‌ از داده‌ها و براساس ‌يافته‌ها، معادل‌ جملات‌ زبان‌ مبدأ را در زبان‌ مقصد توليد كند. انجام‌ اين‌ عمل‌ مستلزم‌ آن‌ است‌ كه‌ سيستم‌ علاوه‌ بر برنامه‌‌ رايانه‌ای‌ متشكل‌ از مجموعه‌ الگوريتم‌های‌ خاص‌ و پيچيده‌، مجموعه ‌فرهنگهای لغات و پايگاه های داده حاوی‌ واژگان‌ و قواعد ساختاری‌ و معنا شناختی‌ زبانهای‌ مبدأ و مقصد باشد. اگر بتوان‌ ادعا كرد كه‌ امكان‌ تدوين‌ فرهنگ‌ قواعد ساختاری‌ يا واژگان‌ دستوری‌ نسبتاً كامل‌ فراهم‌ باشد، مختصه‌ و ويژگی‌ زبان‌ به‌ گونه‌ای‌ است‌ كه‌ درهيچ‌ مقطعی نمی‌توان‌ فرهنگ مناسبی را يافت‌ كه‌ دربر دارنده‌ همه‌ واژه‌های آن‌ زبان‌ باشد زيرا ‌ زبان‌ پديده‌ زايايی است‌ و مرتب واژه‌های جديدی خلق شده  و به‌ مجموعه‌ واژگان‌ آن‌ زبان‌ افزوده‌ می شوند.
در حالت کلی نوع‌ متن مورد نظر‌ و ميزان‌ پيچيدگی‌ آن‌ در بازدهی‌ کار ترجمه كاملا موثر است. ترجمه ی متون رسمی و قاعده مند و همچنین متون علمی به‌ این‌ علت‌ که‌ از وضوح‌ بیشتر و ابهام کمتری برخوردارند به‌ سهولت‌ از طریق ‌کامپیوتر انجام‌ می‌گیرد، ولی‌ ترجمه‌ متون‌ ادبی‌ که‌ از دیدگاه‌ علمی‌ در حیطه‌ ترجمه‌ فرهنگی قرار دارد، اگر غیر ممکن‌ نباشد، چندان‌ ساده‌ نخواهد بود.

نقش ترجمه ماشینی در آینده شغلی مترجمان

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


اجزای اصلی معماری ماشین های ترجمه
در معماری ماشين های ترجمه‌ سه‌ جزء‌ اصلی  وجود دارد. هر جزء‌ نيز به ‌نوبه‌ خود از مجموعه‌ اجزايی تشكيل‌ می ‌شود كه‌ در راستای تحقق‌ نقش‌‌ آن‌ سه‌ جزء ‌اصلی عمل‌ می كنند. اجزاء فوق در سه‌ سطح‌ قرار دارند که عبارتند از:
الف‌ - واژگانی
ب‌- صرفی و نحوی
ج‌- معنايی‌
بخش واژگانی
نخستين‌ مرحله‌ پردازش‌ در ترجمه‌ ماشينی‌ در سطح‌ واژگان‌ انجام‌ می‌شود که عبارتست‌ از تجزيه‌ و تحليل‌ مرفولوژيكی‌ واژه‌های‌ واحد تحت ترجمه‌. در اين‌ مرحله‌ عناصرموجود در سطح‌ واحد ترجمه‌ يك‌ به‌ يك‌ تفكيك‌، پردازش‌ و مقوله‌گذاری‌ می‌شوند. بايد با توجه به موارد مشکل آفرين‌ کاری کرد كه‌ ميزان‌ خطا در اين‌سطح‌‌ به‌ حداقل‌ برسد و راه‌ برای‌ انجام‌ پردازش‌ و تجزيه‌ وتحليل‌های‌ زبان‌شناختی مراحل بعد‌ هموار شود.
بخش صرفی
در اين بخش قواعد صرفی طی چند مرحله اعمال می گردد. ابتدا، پس از اينکه سيستم متن را بر اساس نمادهای قابل خوانش به طور خودکار شناسايی کرد، مرز جمله، گروه، واژه و ساير اجزای نحوی متمايز می شود. در مرحله دوم، متن به واحدهای پردازش تقطيع می شود و سپس اين واحدها به واحدهای واژگانی تقسيم می گردند. در مرحله سوم به طور خودکار مرز واژه ها مشخص می شود. در اين مرحله متن ورودی به صورت يک سلسله علايم پياپی در می آيد. از ترکيب اين علايم واژه ها و جمله ها به دست می آيند. وقتی متن به واحدهای پردازش واژه تقطيع شد تحليل دستوری آغاز می شود. اولين قدم در تحليل دستوری، آزمون هر واژه در جمله و انجام تقطيع های صرفی لازم می باشد. تقطيع صرفی (مثلاً پسوند + پايه) باعث می شود تعداد مدخلهای واژگانی در فرهنگ لغت سيستم کاهش يابد.
بخش نحوی
بخش نحوی در تحليل جملات و سازه های آن در زبان مبدأ و توليد جملات درست در زبان مقصد نقش ايفا می نمايد. سيستمهای ترجمه ماشينی معمولاً مجهز به سه نوع دستور هستند: دستور زبان مبدأ، دستور انتقال ساخت زبان مقصد و دستور زبان مقصد. دستور انتقال از اهميت خاصی برخوردار است زيرا برای يافتن قرينه های دستوری بايد به دستورهای انتقال مراجعه نمود و به اطلاعات راجع به تناظر ساختهای نحوی در دو زبان مبدأ و مقصد دست يافت.
Parser  در اصطلاح زبان شناسی محاسباتی ‌به برنامه‌ تجزيه‌ و تحليل ‌نحوی‌ متن‌ گفته می شود. با کمک آن رايانه می‌تواند عناصر تشكيل‌ دهنده ‌واحد تحت ترجمه‌ را بازشناسی‌ كرده و نقش‌ آنها و روابط درونی‌ و فيمابين‌ آنها و قواعد حاكم‌ بر آنها را تشخيص‌ دهد. در ترجمه‌ ماشينی‌ دستيابی‌ به‌ اطلاعات‌ ياد شده‌ ضروری‌ است‌ زيرا ‌ علاوه‌ بر برگردان‌ عناصر معنائی‌ و واژگان‌، ترجمه‌ ساختار نحوی‌ واحد ترجمه‌، از زبان‌ مبدأ به‌ مقصد نيز بايد انجام‌ شود. در واقع‌ برگردان‌ قالب‌ و ساختار جمله‌ از زبان‌ مبدأ به‌ زبان‌ مقصد، شرط اساسی‌ ترجمه‌ است‌. اين‌ امر جز با تجزيه‌ و تحليل‌ گرامری ‌واحد ترجمه‌ ميسر نمی‌شود. شايد‌ مهمترين‌ ركن يک‌ ماشين‌ ترجمه‌ تجزيه‌ و تحليلگر نحوی‌ يا parser  باشد
بخش معنايی
زبان اغلب به عنوان نظامی از نشانه ها تعريف می شود و عناصر زبانی مانند واژگان به شيوه ای بر اساس قواعد نحوی در کنار هم ظاهر می شوند که در ترکيب آنها معنای خاصی به ذهن متبادر می شود. مشكل‌ چندمعنا‌ بودن‌ واژه‌ها يکی از شناخته‌ شده‌ترين‌ ويژگيهای زبان‌ است‌. مترجم‌ به‌ هنگام‌ برخورد به‌ واژه‌ چند معنا، با تكيه‌ بر توانش‌ زبانی خود و بافت و موضوع‌ متن‌ می‌تواند معادل‌ واقعی‌ آن واژه‌ را تشخيص‌ داده و برگزيند اما يک رايانه‌ فاقد چنين ‌توانی‌ است‌. بنابراين‌ طراح‌ ماشين‌ ترجمه‌ بايد‌ خلأ موجود را ترميم‌ كند. اين‌ تمهيدات‌ بايد از نخستين ‌مراحل‌ پردازش‌ يعنی‌ از مرحله‌ واژگان‌ و نحو و ساختار آغاز گردد و تا آخرين‌ مرحله‌ يعنی ‌مرحله‌ تجزيه‌ و تحليل‌ معناشناختی‌ متن‌ تداوم‌ يابد.

 


[3] فرحزاد ف. استاد زبانشناسی و مطالعات ترجمة دانشگاه علامه طباطبایی، روزنامه کیهان

[4] Manning، C. D.، and Schutze، H.، Foundations of Statistical Natural Language Processing، 5th edition، The MIT Press، 2002. ISBN 0-262-13360-1

Comments (0) Posted to ترجمه ماشینی 12/28/2010 Edit

«قبلي   1 2 3 4 5 6 7 8 9 10  بعدي»

درباره من

احمد استیری

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

پست الکترونیکی من:
UniversityDataInfo{@}yahoo.com

آخرين مطالب بروز شده

موضوعات

پيوندها

کلی

Feeds