بارگیری...
خانه -> بلاگ
  • Follow Siavash on Twitter
  • Add Siavash on Facebook
  • Follow Siavash on Google+
بات:

روبات های پاسخگو چگونه كار می كنند؟
(پست شده در تاریخ 2008/09/15, 04:33:19)

پیش گفتار

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

مقدمه

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

ساختن این نوع روبات های پاسخگو خیلی پیچیده نیست، چون دامنه ی ورودی های آنها محدود است. به عنوان مثال یك عابربانك در مجموع 12 دكمه برای وارد كردن عدد و تایید و انصراف دارد و نهایتاً 8 دكمه ی كمكی دیگر كه عملیات هر كدام در هر لحظه كاملاً مشخص است.
جهت مجزا كردن روبات هایی كه تنها فعالیت نرم افزاری انجام می دهند از روبات هایی كه فعالیت فیزیكی نیز دارند، دسته ی اول را بات (به انگلیسی Bot) نیز می نامند. پس برای منشی تلفنی واژه ی بات مناسب تر می باشد.
حال فرض كنید می خواهیم باتی بسازیم كه قابلیت فهم و پاسخگویی به زبان انسان را داشته باشد! ساخت این نوع بات كه اصطلاحاً به آن Chatterbot نیز گفته می شود كمی پیچیده تر از موارد قبل می باشد.
هدف این بات ها ارائه ی پاسخی است كه هر چه بیشتر به پاسخ یك انسان شبیه باشد. در حالت ایده آل هدف این است كه شخصی كه با این بات ها گفتگو می كند، نتواند متوجه شود كه در حال چت با یك بات می باشد. كه متأسفانه تا كنون هیچ باتی به این حالت ایده آل نرسیده است.برای روشن نمودن بهتر این مسئله ذكر چند مثال شاید بد نباشد:
  • زبان انسان پویا می باشد و روز به روز تغییر می كند پس باتی كه بخواهد با این زبان ارتباط برقرار كند نیز باید پویا باشد.
  • یك كلمه در زبان انسان (كه مانند یك دكمه در عابربانك می ماند) در زمان ها و مكان های مختلف و همچنین برای موضوع های مختلف ممكن است معنای یكسانی نداشته باشد و در نتیجه جواب متفاوتی هم خواهد داشت. به عنوان مثال در صورتی كه كلمه ی خیر بدون هیچ مقدمه ای گفته شود، معنی خاصی ندارد. حال آنكه اگر همین كلمه بعد از عبارت خوبی؟ بیاید به مفهوم خوب نیستم خواهد بود و اگر بعد از عبارت هستی؟ بیاید به مفهوم نیستم خواهد بود.
  • در زبان انسان ممكن است جای كلمات تغییر كنند ولی مفهوم ثابت بماند. مثلا تو كجایی؟ با كجایی تو؟ یك مفهوم را دارد و فقط كلمه ای كه روی آن تأكید شده است متفاوت است. همچنین چندین عبارت ممكن است یك جواب داشته باشند. به عنوان مثال خوبی؟ و حالت خوبه؟ و خوب هستی؟ همگی یك مفهوم را دارند.
  • در زبان انسان علامت ها می توانند مفهوم جمله و در نتیجه پاسخ جمله را عوض كنند. به عنوان مثال تو خوبی؟ و تو خوبی! دو مفهوم كاملاً متفاوت دارند.
و موارد بسیار بسیار زیاد دیگر كه پردازش زبان انسان و پاسخگویی به آن را پیچیده و دشوار می كند.

راه های مختلف برای ساختن بات های پاسخگو

بات های پاسخگوی مختلف از روش های مختلفی برای پیدا كردن بهترین جواب استفاده می كنند، من در اینجا سعی می كنم چند روش مختلف را ذكر كنم،توجه داشته باشید این روش ها جهت پردازش متن و پاسخگویی به آن می باشد و فرض شده ورودی بات به متن تبدیل شده و خروجی بات نیز متن خواهد بود.

ساده ترین روش

ساده ترین روشی كه حتی امروزه در خیلی از بات ها استفاده می شود مقایسه ی سوال با یك لیست از عبارت ها كه جواب هر كدام از قبل تعیین شده است می باشد.
این روش بسیار ابتدایی می باشد و در صورتی كه سوال عیناً برای بات تعریف نشده باشد پاسخی پیدا نخواهد شد!
به عنوان مثال حتی اگر جوابی برای عبارت khoobi? تعریف شده باشد در صورتی كه از این بات بپرسید khoobi یا khooobi? یا khoubi جوابی نخواهید گرفت.
این روش در بسیاری از بات های یاهو! مسنجر استفاده شده. این بات ها معمولاً سویچی با نام /learn دارند و در صورتی كه جواب عبارتی را ندارند از كاربر تقاضا می كنند كه پاسخ آن عبارت را به او یاد بدهند.
این روش فاصله ی بسیار بسیار زیادی با هدف Chatterbot ها دارد، زیرا یك انسان هیچ گاه نمی گوید لطفا با سویچ /learn جواب این پاسخ را به من یاد بدهید!

استفاده از فیلتر ها

این روش كمی متود قبلی را كامل كرده است به این صورت كه قبل از چك كردن سوال با لیست جواب ها پردازش ساده ای روی سوال انجام می شود. این پردازش می تواند شامل موارد زیر باشد:
  • حذف تكرار حروف: Salaaaaaam و Saalaaaaaam به Salam تبدیل خواهند شد.لازم به ذكر است بعضی از حروف مانند o در صورت تكرار بیش از 2 مورد پشت سر هم حذف می شوند. به عنوان مثال khooooobi? به khoobi? تبدیل خواهد شد.
  • جایگزینی برخی حروف تركیبی: مثلا حایگزینی ou با oo.
  • حذف كاراكتر های اضافه: به عنوان مثال تمام كاراكتر های غیر حروف الفبا را حذف می كنیم، در نتیجه khoobi?! :) به khoobi تبدیل خواهد شد.
  • جایگزینی برخی كلمات هم معنا: مثلا واژه ی bali و arehرا با واژه ی baleh جایگزین می كنیم.
این موارد به بات كمك می كند تا در صورت دانستن جواب عبارت salam به سوالات Salaaaam!? یا Salaaaaaammmm :) نیز پاسخ دهد.
این روش كمی به پاسخگویی مناسب تر بات كمك خواهد كرد اما همچنان نتیجه ی مورد قبولی نخواهیم داشت.

استفاده از كلید واژه ها

شاید این راهی باشد كه به نظر خیلی از دوستان هم رسیده باشد! استفاده از كلیدواژه ها! در این روش به جای اینكه به دنبال یك عبارت كامل باشیم، به دنبال یك كلمه یا چند كلمه در یك عبارت خواهیم گشت. به عنوان مثال می گوییم در هر جمله ای كلمه ی Salam وجود داشت در جواب به آن شخص سلام كن. این روش باعث می شود با دادن مقدار خیلی كمتری اطلاعات به بات جواب های بیشتری را بپوشانیم.
اما چند مشكل عمده دارد! اولین مشكل این است كه جواب های بی ربط بسیار زیاد خواهند شد. به عنوان مثال اگر كاربر بگوید Salamat bashi بات به او جواب غیر معقول سلام را خواهد داد.
مشكل دیگر این است دو كلید واژه با جواب های متفاوت در یك عبارت یافت شود. و در این حالت بات نمی داند كدام یك مناسب تر خواهد بود.
فرض كنید كاربر عبارت Salam, khoobi? را به بات ما بگوید و ما به این بات هر دو كلید واژه ی Salam و Khoobi را با دو جواب مختلف یاد داده باشیم. بات نمی داند كدام یك برای این عبارت جواب بهتری است و ممكن است در جواب فقط سلام كند.

استفاده از الگو ها

این روشی است كه سایفر و بسیاری از بات های پیشرفته مانند آلیس از آن استفاده می كنند. من در ادامه سعی می كنم به معرفی نوع الگویی كه در سایفر استفاده شده بپردازم. در صورتی كه علاقه دارید با سیستم الگوی آلیس (كه در خیلی از بات های تحت وب استفاده می شود) آشنا شوید به اینجا رجوع كنید.
در ابتدا منظور از الگو یا Pattern چیست؟
یك الگو شباهت هایی با روش كلیدواژه دارد. یعنی به صورت خیلی سختگیرانه عبارت را بررسی نمی كند بلكه دنبال یك سری كلمات در جمله می گردد، اما جای این كلید واژه ها در عبارت مهم خواهد بود. همچنین در ساختار سایفر به هر الگو یك اولویت داده می شود كه در ادامه سیستم اولویت بندی را معرفی خواهیم كرد.
برای هر الگو یك Action یا پاسخ تعریف می شود. ابتدا به بررسی الگو ها می پردازیم و بعد به سراغ ساختار پاسخ ها می پردازیم.
در ابتدا به معرفی یك الگوی خیلی ساده می پردازیم:
  1. salam*
خوب احتمالاً متوجه شدید مفهوم این الگو چیست. تمام عباراتی كه با salam شروع شوند جزو این الگو قرار می گیرند.
به عنوان مثال Salam azizam یا Salam در این الگو قرار می گیرند.اما Azizam salam در این گروه قرار نخواهد گرفت. به عبارت دیگر * به مفهوم هر كاراكتری می باشد. از آنجایی كه * در انتهای جمله قرار گرفته است یعنی هر عبارتی در ادامه ی salam بیاید در این الگو قرار خواهد گرفت.در صورتی كه بخواهیم Azizam salam هم در این الگو قرار بگیرد باید از الگوی زیر استفاده كنیم:
  1. *salam*
ممكن هست * در بین دو كلمه بیاید، به عنوان مثال:
  1. esmam * hast
خوب فكر می كنم مشخص باشد. به عنوان مثال esmam Siavash hast در این الگو قرار خواهد گرفت.
در سیستم سایفر برای برخی حالت هایی كه زیاد استفاده می شوند از علامت هایی استفاده شده. به عنوان مثال علامت # به مفهوم فاصله ستاره یا انتهای عبارت می باشد. برای مثال:
  1. salam#
Salam khoobi و Salam در این الگو قرار می گیرند. امّا Salamati در این الگو قرار نخواهد گرفت.
علامت دیگری كه برای سایفر تعریف كردم علامت $ هست. كه در صورتی كه بعد از هر * بیاید به این مفهوم خواهد بود كه در آن * فاصله وجود نداشته باشد، مثلاً:
  1. be*$
Bekhoon و Bepoosh و اكثر فعال های امری در این الگو قرار می گیرند اما Besiar ziad در این الگو قرار نمی گیرد چون در بخشی كه بجای * آمده فاصله وجود دارد.
فكر می كنم تا حدودی با الگو ها آشنا شده باشید. حالا می خواهیم با Action یا پاسخ الگو ها آشنا شویم.ساده ترین الگو یك عبارت ساده می باشد، برای مثال برای الگوی salam* پاسخ زیر را می توانیم داشته باشیم:
  1. Salam, khoobi?
اما همونطور كه می دونیم یك انسان هیچ وقت به یك سوال همیشه یك جواب نمیده. برای اینكه رفتار بات ما كمی نزدیك تر به رفتار انسان باشد از یك ساختار ساده در سایفر استفاده شده:
  1. <random>Salam<or>Bah bah, salam!<or>Salam azizam</random>
این ساختار یكی از جواب های Salam و Bah bah, salam! و Salam azizam را بصورت تصادفی انتخاب كرده و جواب را به كاربر تحویل خواهد داد.
تگ كاربردی دیگری كه احتمالاً تا این لحظه به ضرورت وجودش پی برده اید تگ <like> می باشد.
همانطوری كه می دانید مفهوم خیلی از سوال ها یكی می باشد و در نتیجه جواب مشابه خواهند داشت. به عنوان مثال مفهوم عبارت khoobi و khoob hasti یكی می باشد. در این مواقع از تگ <like> استفاده می كنیم.
مثلاً فرض كنید الگوی khoobi را برای بات با جواب مناسب تعریف كرده ایم. حال برای الگوی khoob hasti از ساختار زیر استفاده می كنیم:
  1. <like>khoobi</like>
با استفاده از این تگ در صورتی كه جواب الگوی khoobi عوض شود جواب تمام الگو های هم مفهوم نیز عوض می شود كه از محاسن استفاده از تگ <like> می باشد.

این آموزش ادامه دارد

تگ ها

neo, artificial intelligence, aiml, robot, cypher, bot

نظرها

نام:
ایمیل:
وبگاه:
نظر:
 
شاهين:
پست شده در تاریخ 2014/05/12, 15:54:23
" من با فريده كاملا موافقم. البته در بعضي جاها من ديدم به پيش پا افتاده تر از اينم ميگن هوشمند. "
ali:
پست شده در تاریخ 2013/04/15, 20:51:36
" age linke dll ham bezari bad nis be mola "
farideh:
پست شده در تاریخ 2012/08/22, 09:38:52
" in robot dar nahayat faghat vasetei hast beine fekre yek ensan va adame dg , az khodesh ke chizi nadare faghat dare bazgoo mikone , pas nabayad behesh laghabe hushe masnui dar dad , chon na masnoi hast vaghean va na hushe , "
یک بنده ی خدا:
پست شده در تاریخ 2012/03/15, 22:39:45
" سلام دمت گرم مواظب باش سرما نخوری "
یک ناشناس:
پست شده در تاریخ 2012/03/15, 22:38:05
" رضا اینجا جیگر فروشی نیست "
roxana:
پست شده در تاریخ 2011/06/04, 20:49:27
" kheili kheili khoob bood,merc "
نامیپ:
پست شده در تاریخ 2011/05/26, 22:23:03
" خیلی تخمی بود "
پیمان:
پست شده در تاریخ 2011/05/26, 22:19:09
" سلام "
رضا:
پست شده در تاریخ 2010/01/26, 00:18:23
" عالی جیگر "
طهماسبی-راعی:
پست شده در تاریخ 2009/11/05, 11:26:26
" سلام،وقت شما بخیر. ما پروژه ای در رابطه با chatbotها در دستمان است.ما دانشجوی ترم 7 کامپیوتر هستیم میشود خواهش کنم اگر منبعی دارید برایمان mailکنید.واقعا ممنون می شویم اگر کمکمان کنید. "
MPnet:
پست شده در تاریخ 2009/10/24, 01:07:57
" برای شماا آروزی موفقیت روز افزون دارم میتونم هدف کلیتون رو از این حرکت بدونم؟ میخوام ببینم اهدافمون چقدر به هم نزدیکه با سپاس. MPnet "
azadeh:
پست شده در تاریخ 2009/07/15, 12:15:03
" سلام خیلی ممنون داشتم دنبال همین مطلب می گشتم ممکنه منابع خود را بفرمایید برای پروژه پایان ترم نیاز دارم. ممنون "
محمد :
پست شده در تاریخ 2009/05/31, 13:54:15
" بلد نیستم چت کنم "
seidabdellah:
پست شده در تاریخ 2009/04/22, 02:04:22
" howarecandonlowdleegendjumoong "
الیاس:
پست شده در تاریخ 2009/04/05, 09:59:53
" سلام من می تونم درباره نحوه ساخت این سیستم ازتون کمک بخوام از لطفتون متشکرم "
mehrdada:
پست شده در تاریخ 2009/03/19, 16:55:10
" salam agha dametgarm khub sare karemun gozashti. ye saat raftim sare kar. vali kheili bahal bud. be omide moafaghiate shoma. "
mahdi:
پست شده در تاریخ 2009/03/01, 09:48:21
" salam mishe begiid in yanii chii برای ورود به اتاقهای گفتگو ، لازم است پورت 5222 در کامپیوتر شما باز باشد . در صورتی که از کامپیوتر شخصی استفاده می کنید ، می توانید با انجام تنظیمات در فایروال کامپیوتر خود ، این پورت ها را باز کنید . و چنانچه کامپیوتر شما تحت شبکه می باشد ، می توانید از مسئول شبکه خود بخواهید که این پورت ها را باز کند . لازم به توضیح است که باز بودن این پورت ها تنها جهت ارتباط با اتاقهای گفتگو در سایت کلوب می باشد و هیچگونه خطری ندارد . "
طاهر:
پست شده در تاریخ 2009/01/12, 16:17:24
" دوست عزیز می خواستم برای اینگه فارسی هم بخونه و جواب بده یا امکانات دیگه که در برنامها ی مثل رویا هست باید چکار کرد ممنون "
soroush:
پست شده در تاریخ 2008/12/26, 02:11:41
" salam-goood-mesle hamishe deltangetam siavash "
شایان:
پست شده در تاریخ 2008/12/19, 20:16:47
" خیلی عالی بود، "
fara:
پست شده در تاریخ 2008/12/17, 15:35:44
" hello by fara "
هادي:
پست شده در تاریخ 2008/12/15, 19:23:40
" درباره ي ساخت بات و اجزاي تشكيل دهنده ي ان توضيح دهيد "
مجله خبری Gajamoo:
پست شده در تاریخ 2008/12/14, 14:02:25
" سلام. شرمنده که کامنتی بی ربط در پست جالب تون میذارم. در صورت امکان لینک مجله خبری Gajamoo رو به سایت خود اضافه نمایید. متشـــــــــــــــــکرم. "
توت فرنگی:
پست شده در تاریخ 2008/11/20, 00:31:33
" این روباته یه کم خنگه اما انصافا اصاب داری از این چیزا می سازی ها :D کارتون عالیه سیاوش جان موفق باشید یا علی "
سحر:
پست شده در تاریخ 2008/11/19, 19:21:03
" سلام خسته نباشید خواهش می کنم اگه مطلبی در مورد چت بات و برنامه نویسی اون دارید به من اطلاع بدید برای پایان ترم باید این پروژه رو انجام بدم و هیچ ایده ای رو ندارم please help me "
Masood Qureshi:
پست شده در تاریخ 2008/11/01, 12:41:23
" Dear Friend ca n you plz let me know about hacking i will do any thing what you want cause that is very important for me and i need your help plz plz plzplz help me to know about hacking. thanks i will really appricate that . "
Mina:
پست شده در تاریخ 2008/10/17, 20:50:14
" بازم عالی ;) "
rasoool:
پست شده در تاریخ 2008/10/10, 11:03:47
" affarin damet garm <a href="syavash.com">syavash.com</a> "
امید پیله ور:
پست شده در تاریخ 2008/09/24, 17:35:28
" سلام /n آقا بازم گل کاشتی!!! "
elyar:
پست شده در تاریخ 2008/09/22, 22:25:15
" montazerim ....... "