Artificial Intelligence - هوش مصنوعی

Artificial Intelligence - هوش مصنوعی (http://artificial.ir/intelligence/)
-   پروژه های هوش مصنوعی در ایران (http://artificial.ir/intelligence/forum42.html)
-   -   سایفر روبات (Cypher Robot) (http://artificial.ir/intelligence/thread2.html)

Siavash ۰۲-۶-۱۳۸۷ ۰۲:۵۴ بعد از ظهر

سایفر روبات (Cypher Robot)
 
سایفر روبات اولین روبات پاسخ گوی فارسی زبان است.
نکته ی جالب این است که سایفر دارای شخصیت می باشد، به عنوان مثال اگر طرف مقابل بد حرف بزند ناراحت می شود یا حتی ممکن است قهر کند، و از طرف دیگر ممکن است عاشق شود! سایفر فقط یک پاسخ گو نیست بلکه بعضی اوقات سوال می پرسد و با توجه به جوابی که می گیرد به اطلاعات خود می افزاید. نکته ی جالب دیگر اطلاعات کامل این روبات در زمینه ی فیلم و آهنگ و استعداد قابل توجهش در ریاضی است! سایفر می تواند نوع شخصیت طرف مقابل خود را تا حدودی از جواب هایش حدس بزند! شما می توانید با اضافه کردن آی دی "neol3ot" در یاهو! مسنجر با سایفر حرف بزنید، اگر دیدید سایفر اسم یا سنتان را حدس زد تعجب نکنید چون کاملا عادی است!
در صورتی که سوال خاصی در باره ی نحوه ی عملکرد این روبات دارید می توانید همین جا آنرا مطرح کنید.

r-co ۰۲-۶-۱۳۸۷ ۰۶:۰۵ بعد از ظهر

salam Man Mohsen 20 Az Bandar Abbas. mikhastam Darbareye Barnameye Sazandeye in ROBOT Az Shoma Soal beporsam. q3wp@yahoo.com

Siavash ۰۲-۶-۱۳۸۷ ۰۶:۲۴ بعد از ظهر

دوست عزیز از اونجایی که زبان این فروم فارسی هست، فارسی تایپ کنید.
ورژن آخر این برنامه با زبان برنامه نویسی Java نوشته شده و از بانک اطلاعاتی mySql استفاده می کنه.
برای وصل شدن به سرور مسنجر یاهو! هم از jYMSG استفاده شده.
اگر اطلاعات دیگری لازم دارید بگید...

ميثم ۰۲-۶-۱۳۸۷ ۰۷:۲۰ بعد از ظهر

سوال
 
سلام سياوش !
يه نيم ساعتي هست دارم با اين بات چت مي كنم ! عملكردش برام خيلي جالبه !
اما دو تا سوال دارم :
1. چه جوري تشخيص مي ده طرف مقابل داره چرت و پرت تايپ مي كنه ؟!
2. همه ي اينا يك سري دستور ها براي عوامل محيطي از پيش تعريف شده اس ! مثلا فرايند شناسايي و دريافت اسم و جنس طرف مقابل يا مثلا بعد 4 بار تكرار كردن يك حرف ديگه جواب نده و و و ... اينا رو چه جوري در قالب هوش مصنوعي طبقه بندي كردي ؟!

Siavash ۰۲-۶-۱۳۸۷ ۰۹:۴۳ بعد از ظهر

نقل قول:

نوشته اصلي بوسيله ميثم (پست 27)
سلام سياوش !
يه نيم ساعتي هست دارم با اين بات چت مي كنم ! عملكردش برام خيلي جالبه !
اما دو تا سوال دارم :
1. چه جوري تشخيص مي ده طرف مقابل داره چرت و پرت تايپ مي كنه ؟!
2. همه ي اينا يك سري دستور ها براي عوامل محيطي از پيش تعريف شده اس ! مثلا فرايند شناسايي و دريافت اسم و جنس طرف مقابل يا مثلا بعد 4 بار تكرار كردن يك حرف ديگه جواب نده و و و ... اينا رو چه جوري در قالب هوش مصنوعي طبقه بندي كردي ؟!

دوست عزیز،
در مورد سوال اول: چرت و پرت تایپ کردن یا بهتره بگیم تصادفی تایپ کردن حروف توسط کاربر بر حسب یک سری کارهای آماری در آورده شده. حدود صد بار خودم و دوستام دستمون رو روی کیبورد گذاشتیم و الکی یک سری دکمه زدیم مثل "asdas" یا "dfgdfg"... بعد از روی اون ها یک سری پترن (Pattern) در آوردم که در صورتی که اون پترن ها به روبات داده شدن، روبات حدس بزنه که طرف مقابل منظور خاصی نداشته و فقط بصورت تصادفی دکمه زده.

درباره ی سوال دوم: بستگی داره تعریف ما از هوش مصنوعی چی باشه... هر وقت روبات هر تصمیمی بگیره می تونیم بگیم از یک نوع هوش مصنوعی استفاده کرده. با این تعریف حتی یک if ساده هم یک نوع هوش مصنوعی حساب می شه ولی در سطح بسیار پایین.
من برای ساخت این روبات از AIML الهام گرفتم و کمی اون رو تغییر دادم. می تونید با یک سرچ ساده توی Wikipedia ببینید که ساختار AIML به چه صورت هست. من اول اومدم و یه زبان ساده طراحی کردم و یک پارسر برای اون زبان درست کردم. یک بانک اطلاعاتی داریم که داخل اون بانک از این زبان استفاده شده. به عنوان مثال در بخش جواب می تونیم داشته باشیم:
كد:

<random>Khoobi?<or>Chetori"?</random>
مفهوم این عبارت این هست که بین دو عبارت Chetori? و Khoobi? یکی رو با تصادف جواب بده.
تو این زبان متغیر تعریف شده. که اطلاعاتی که پرسیده می شه داخل متغیر ها ذخیره میشه و در انتهای Session یک سری از اطلاعات داخل بانک اطلاعاتی هم ذخیره میشند.
همینطور شرط تعریف کردم. مثلا به کسی که با اون صمیمی تر هست بعضی اوقات جواب متفاوتی می ده یا به کسی که بی ادب هست نوع دیگه ای جواب میده.
علاوه بر این ها موضوع تعریف شده. مثلا اگر کاربر در اول صحبتش بگه Na هیچ مفهومی برای روبات نداره اما اگر بعد از یک سوال روبات Na گفته بشه مفهوم داره. پس یک کلمه در موضوع های مختلف مفهوم های مختلف داره.
همچنین یک تابع هر چند دقیقه در صورتی که طرف مقابل حرفی نزنه صدا زده میشه و سوال هایی که تعریف شده براش از شخص مقابل می پرسه.
متاسفانه نوشتن کل ساختار این روبات در اینجا مقداری وقت می گیره، اگر در رابطه با بخش خاصی از اون سوال دارید خوشحال می شم بپرسید.

soroosh-ab ۰۲-۷-۱۳۸۷ ۰۷:۰۴ قبل از ظهر

سلام .

دقیقآ منم برای روباتم همچین چیزایی رو تعریف کرده بودم !
روبات من با برنامه ی رویا که توسط یک ایرانی نوشته شده بود اجرا می شد و اسکریپت و دیتابیسش رو با تلاش و جون کندن نوشته بودم !
روبات من هم بسیار معروف شده بود و حدود 3 هزار نفر ادد لیست داشت و مرتب بهش پی ام می دادن !
اما به خاطر اینکه رویا با پروتوکل 5.5 و 5.6 یاهو کار میکرد ( یاهو 2 آپریل 2008 این پروتوکل رو بست ) از کار افتاد !
البته قبلش یاهو ایمیل زده بود که میخواد ببنده !
ایمیل یاهو :
نقل قول:

Dear Yahoo! Messenger Version 5.5/5.6 user,
To provide you with a higher level of security, the version of Yahoo! Messenger you are currently using will be retired on April 2, 2008. You must upgrade to our latest supported version in order to continue using Messenger. Don't worry – it's still free, and we'll transfer your Messenger List for you.
Download the latest version of Yahoo! Messenger.
In addition to improved security features and advanced spam protection, the latest version of Messenger includes new emoticons and customization options, voice and video capabilities, and the ability to IM with Windows Live™ Messenger users.
If you have any questions or would like to learn more, click here.
Thanks for using Yahoo! Messenger!
The Yahoo! Messenger team
سیاوش جان میتونی کمکم کنی که این روبات رو دوباره راه بندازم ؟

Siavash ۰۲-۷-۱۳۸۷ ۰۹:۲۶ قبل از ظهر

دوست خوب سلام...
متاسفانه من با رویا کار نکردم... ولی کلا یاهو چند نوع پروتوکل ارتباتی داره که معروف ترین اونها YMSG هست که الان تا جایی که میدونم آخرین ورژنش YMSG13 هست. یک نوع پروتوکل دیگه داشتیم به نام YCHT که یاهو دیگه اون رو ساپورت نمی کنه! و یک پروتوکل هم به نام YChat یا Chat2 داشتیم که در حال حاضر به جای اونا از یک مدل پروتوکل با استفاده از XML استفاده می شه (توی وب مسنجر یاهو!) اول باید ببینیم رویا از کدوم نوع پروتوکل استفاده می کرده.

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

soroosh-ab ۰۲-۷-۱۳۸۷ ۱۰:۱۴ قبل از ظهر

1(ها)ضميمه
سلام

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

یه سوال دیگه , امکان تغییر پروتوکل بدون دستکاری برنامه وجود داره ؟
من به سورس برنامه هم میتونم دسترسی پیدا کنم . یعنی Unpack و Decompile کنم !

مرسی از کمکت ;)

r-co ۰۲-۷-۱۳۸۷ ۰۹:۲۷ بعد از ظهر

میشه این برنامه رو توی سایتت بزاریش اگه همراه با آموزش ابتدایی هم باشه ممنون میشیم. محسن از بندرعباس e.mail: q3wp@yahoo.com

Siavash ۰۲-۷-۱۳۸۷ ۱۰:۴۲ بعد از ظهر

1(ها)ضميمه
دی کمپایل کردن کار دوستمون چه از نظر اخلاقی چه از نظر قانونی کار درستی نیست...
اما از اونجایی که با ویژوال بیسیک آشنایی دارید فکر کنم این سورس کد بدرد شما بخوره.
این کد رو من 2 سال پیش نوشتم و با پروتوکل YMSG ورژن 12 کار می کنه که خوشبختانه در حال حاضر توی بخش لاگین و فرستادن و دریافت پیام هیچ فرقی با جدید ترین نسخه ی پروتکل یاهو نداره!
در واقع این سورس کد کار بخشی که رویا برای شما انجام می داد رو انجام می ده و برای داشتن یک روبات ساده کافیه به یک بانک اطلاعاتی اکسس وصل شید و با توجه به سوال جواب رو از داخل بانک اطلاعاتی بیرون بکشید.

متاسفانه این کد خوب کامنت گذاری نشده، در صورتی که هر جایی سوال داشتید همینجا می تونید سوالتون رو بپرسید.

پسورد فایل:
كد:

www.artificial.ir

Ashkan_yazdgroup ۰۲-۸-۱۳۸۷ ۰۱:۰۷ قبل از ظهر

با سلام و خسته نباشيد من با اشتياق كامل اين بحثها رو دنبال كردم

من از زبان برنامه نويسي سر رشته اي ندارم اما ياهو روبوت من با برنامه دلفي كار ميكرد كه من قصد ويرايشش رو داشتم كه از كار افتاد
اما در حال حاظر دارم دوره java مي بينم

سياوش جان من خيلي دوست دارم كه آموزش طراحي يك روبوت عين cyfer رو توسط شما ببينم تا بتوانم يك روبت مثل اون را بسازم

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

r-co ۰۲-۸-۱۳۸۷ ۰۹:۵۴ قبل از ظهر

من برنامه jymsg test client v2 رو گرفتم جای آیدی و پس که معلومه جای کانکت چی باید نوشته شه. آیا همین برنامه برای ساخت روبوته یا نه این نیست. متشکر محسن از بندرعباس e.mail: q3wp@yahoo.com

Siavash ۰۲-۸-۱۳۸۷ ۰۵:۳۷ بعد از ظهر

دوست عزیز، برای کانکت شدن به یاهو توسط jYMSG می تونید از چند خط زیر استفاده کنید!
كد:

        yahooSession = new Session();

        sessionListener = new = YourSessionListener(this);
        yahooSession.addSessionListener(sessionListener);
       
      System.out.println("Starting Yahoo Client!");
        try {
            YahooSession.login("Username", "Password");
        } catch (AccountLockedException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (LoginRefusedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("Connected to Yahoo Server");

که YourSessionListener یک Implement از SessionListener هست:
كد:

public class YourSessionListener implements SessionListener  {

}

داخل YourSessionListener می تونید تعریف کنید که مثلا اگر کسی PM داد روبات چکاری انجام بده و ... مسلما باید تمام توابع SessionListener رو توی اون تعریف کنید و برای بعضی از اون ها مثل دریافت پیغام یا Add شدن یا ... Action تعریف کنید.

soroosh-ab ۰۲-۹-۱۳۸۷ ۰۴:۰۱ بعد از ظهر

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

خیلی لطف کردی ! فقط یه چیز ....... من هر بار می خوام با برنامه VB که گذاشتی لوگین کنم ارور Invalid Login میده و یعنی پسورد اشتباه ولی پسورد کاملآ درسته !

مشکل از کجاست ؟

Siavash ۰۲-۹-۱۳۸۷ ۰۴:۴۰ بعد از ظهر

فایل YCrypt.dll که برای encode کردن پسوورد هست باید حتما توی پوشه ی فایل اجرایی شما باشه. یا اگر دارید توی VB کمپایل می کنید باید توی پوشه ی سورس کد قرار داشته باشه!...

soroosh-ab ۰۲-۹-۱۳۸۷ ۰۷:۱۰ بعد از ظهر

باز هم ممنون !

فقط یه چیز ! واسه فروم هک تشکر هم بذار ! اینطوری با یه دکمه میشه تشکر کرد !

Siavash ۰۲-۹-۱۳۸۷ ۰۸:۴۷ بعد از ظهر

هک تشکر نصبه! باید توی این استایل بقل دکمه ها اضافه کنم...

Ashkan_yazdgroup ۰۲-۱۱-۱۳۸۷ ۰۳:۱۵ بعد از ظهر

نقل قول:

نوشته اصلي بوسيله r-co (پست 65)
من برنامه jymsg test client v2 رو گرفتم جای آیدی و پس که معلومه جای کانکت چی باید نوشته شه. آیا همین برنامه برای ساخت روبوته یا نه این نیست. متشکر محسن از بندرعباس e.mail: q3wp@yahoo.com

سلام متاسفانه من به علت محدوديت هايي كه داشتم نتونستم اين نرم افزار رو دانلود كنم و حالا لينك سايتش خرابه اگه لطف كنيد و اين نرم افزار را براي من ارسال كنيد تا از آن استفاده كنم با تشكر
ID : Ashkan_yazdgroup

soroosh-ab ۰۲-۱۱-۱۳۸۷ ۰۳:۲۷ بعد از ظهر

باز هم سئوال ! ! !

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

فقط چند تا مشکل با VB دارم .....
1 ) اگه دقت کرده باشی برای مشخص کردن فونت خواص مثلآ از کد :
نقل قول:

<font face="Tahoma">
استفاده می کنیم ولی توی VB اگه بخوای پی ام بگی یفرسته از " و " در اول و آخر استفاده میشه که با " قبل و بعد از فونت قاطی میشه ! این مشکل و چه طوری میشه حل کرد ؟

2 ) من قبلآ یه Pocket sniffer از سایت گرفته بودم ولی متآسفانه گم کردم اگه میشه دوباره بذار همینجا
3 ) چه طوری میشه برای VB مشخص کرد که پاکت مخصوصی رو بفرسته و اگه جواب مثلآ این (هرچی ) بود کار خاصی ( هرکاری که مشخص کنم ) انجام بده و اگه جواب یه چیز دیگه بود اون کار و ( یه کاره دیگه که اونم خودم مشخص کردم ) انجام بده !

Siavash ۰۲-۱۱-۱۳۸۷ ۰۷:۲۵ بعد از ظهر

2(ها)ضميمه
نقل قول:

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

نقل قول:

اگه دقت کرده باشی برای مشخص کردن فونت خواص مثلآ از کد :
<font face="Tahoma">
استفاده می کنیم ولی توی VB اگه بخوای پی ام بگی یفرسته از " و " در اول و آخر استفاده میشه که با " قبل و بعد از فونت قاطی میشه ! این مشکل و چه طوری میشه حل کرد ؟
به سادگی می تونید به جای " از "" یا دو عدد " استفاده کنید، به عنوان مثال:
<
كد:

font face=""Tahoma"">
نقل قول:

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

چه طوری میشه برای VB مشخص کرد که پاکت مخصوصی رو بفرسته و اگه جواب مثلآ این (هرچی ) بود کار خاصی ( هرکاری که مشخص کنم ) انجام بده و اگه جواب یه چیز دیگه بود اون کار و ( یه کاره دیگه که اونم خودم مشخص کردم ) انجام بده !
اگر از سورس کد VB استفاده می کنید، می تونید برای فرستادن هر پکتی از
كد:

sckYahoo.sendPacket "Packet data"
استفاده کنید.
هر پکتی که از سرور یاهو به شما فرستاده بشه در ساب sckYahoo_DataArrival داخل متغیر buffer ریخته میشه.
اگر از کد دیگه ای استفاده می کنید لطفا کد رو در ضمیمه قرار بدید تا بتونم کمک کنم...

soroosh-ab ۰۲-۱۳-۱۳۸۷ ۱۰:۲۴ قبل از ظهر

واقعآ ممنون بخاطر کمک هایی که می کنی ...........

بیشتر مشکلاتم حل شد !

اما هنوز نمی دونم چطوری به VB بگم که مسیج هایی که میاد رو با مسیج هایی که توی Table مسیج در دیتا بیس هست مقایسه کنه و اگه وجود داشت که از ردیف Answer , جواب پی ام رو ارسال کنه و اگه وجود نداشت یه پی ام مخصوص ارسال کنه

و یه مشکل دیگه که نمیتونم یه کدی بنویسم که مثلآ اگه پی ام به صورت :
كد:

/pm L9E3 salam
دریافت کرد به این معنی هست که بعد از فاصله اول آیدی یه نفره و بعد از فاصله دوم متن پی ام که باید به اون آیدی بده !
نمونه ی این کد در دلفی و رویا به صورت :
كد:

if Req = '/pm' then begin
      VarsRoYa.SendStr:='<#459cfe><font face="tahoma"><b>/pm "ID Doostet" "Peyghamet"'+
      #13+#10'Mesal :<#459cfe> <font face="tahoma"><b>/pm "robot_download" "Salam"' ;
    if VarsRoya.ListParam.Count<3 then  exit;
        req:=cut(VarsRoya.UserPM[1],False);
        VarsRoYa.UserPM:=Cut(VarsRoya.ListParam.Strings[1],False);
        Res:=Cut(VarsRoya.ListParam.Strings[2],False);
        varsRoYa.sendstr:=format('<font size="12" face="tahoma">:-$salam %s joon Yeki Behem Goft Behet Begam : '+res+' Goft IDsho Behet Nagam:-$',[VarsRoYa.UserPM]);
    end;


Siavash ۰۲-۱۳-۱۳۸۷ ۱۰:۵۰ قبل از ظهر

دوست عزیز لطف کنید ساختار Table مورد نظرتون رو بگید! چند ستون داره؟ اسم و جنس هر ستون چی هست؟

برای مشکل دومتون از این کد می تونید استفاده کنید:
كد:

Dim arrPM() As String
'message = "/pm neol3ot Salam khoobi?"
If Left(message, 3) = "/pm" Then
    arrPM = Split(message, " ", 3)
    If UBound(arrPM) = 2 Then
        sckYahoo.SendData PM_Send(tUser.Text, arrPM(1), arrPM(2))
    End If
End If

اگر مشکلی تو این بخش دارید حتما بپرسید...

soroosh-ab ۰۲-۱۳-۱۳۸۷ ۱۱:۱۳ قبل از ظهر

اسم جدول (Table) مورد نظر Message هست و دارای 2 ستون هست : Requst ( که مسیجی که دریافت می کنه باید با این مطابقت داشته باشه ) و Response ( همون جوابی که باید ارسال کنه ) که هر دو ستون از نوع Text هستن

Siavash ۰۲-۱۳-۱۳۸۷ ۱۲:۵۷ بعد از ظهر

تصحیح شد!... message بود، ببخشید من روی کامپیوتری که داشتم کار می کردم VB نصب نداشتم... ولی فکر کنم الآن باید کار کنه! دوباره به کد رجوع کنید...

soroosh-ab ۰۲-۱۳-۱۳۸۷ ۰۲:۵۸ بعد از ظهر

بله ! کاملآ درست شد . مرسی
فقط مشکل اولی هنوز حل نشده .

باز هم تشکر می کنم

Siavash ۰۲-۱۳-۱۳۸۷ ۰۴:۴۸ بعد از ظهر

سورس کد روبات یاهو مسنجر
 
1(ها)ضميمه
این تقریبا سورس یک روبات یاهو! مسنجر هست.
می تونید بهش کلمه ی جدید یاد بدید، یا کلمه ی مورد نیاز رو پاک کنید.

یک سویچ ساده مثل همین /pm هم توش هست.

Ashkan_yazdgroup ۰۲-۱۴-۱۳۸۷ ۰۲:۴۹ قبل از ظهر

نقل قول:

نوشته اصلي بوسيله Siavash (پست 94)
آخرین ورژن سورس کد jYMSG در ضمیمه قابل دریافت هست...

با سلام متشكرم كه خيلي سريع به مشكلات ما رسيدگي ميكنيد

اما بايد بگم يه خرده چون تخصصي حرف مي زنيد بنده متوجه نميشم كه چه بايد بكنم
از آقا سياوش درخواست دارم در مورد فايلي (سورس کد jYMSG ) كه گذاشتيد براي مبتدي هاي علاقه مندي مثل من بيشتر توضيح دهيد و اينكه چجوري و توسط چه برنامه اي آن را اجرا كنم

باز هم تشكر ميكنم منتظر راهنماييتون هستم

يك سوال ديگر : آيا سايفر رو هم ميتوان مانند رويا از امكاناتي چونhelp/ بهره مند كرد ؟

soroosh-ab ۰۲-۱۴-۱۳۸۷ ۰۵:۲۵ قبل از ظهر

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

c++m ۰۲-۱۴-۱۳۸۷ ۰۲:۱۸ بعد از ظهر

سلام
خیلی خوبه
من تاحالا در این زمینه کار نکردم
اما خوشم اومد ازش
فکر کنم این مثالها و این صحبتها خیلی با یه روبات سطح بالا مثل مثلاneol3ot فاصله داشته باشه ؟
درست می گم؟

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

Siavash ۰۲-۱۴-۱۳۸۷ ۰۵:۳۲ بعد از ظهر

از اونجایی که به نظر من VB6 آسونترین زبان برنامه نویسی برای کسانی که تازه شروع به کار کردن بود این کد رو توی VB6 نوشتم. به راحتی می تونید اون رو تبدیل به VB .Net کنید، خود تبدیل کننده ی .Net این کار رو انجام میده.
در صورتی که با جاوا آشنایی دارید از jYMSG می تونید استفاده کنید، همچنین در صورتی که با C++ آشنایی دارید از پروژه ی Pidgin یا همون gaim قدیمی می تونید استفاده کنید که سورس اون در sf.net قابل دریافت هست.

در جواب اشکان: استفاده از jYMSG برای افرادی که مبتدی هستند فکر نکنم زیاد درست باشه. چون این سورس کاملا Object Oriented هست و درکش برای افرادی که هنوز مثال های زیاد در این زمینه ندیدند کمی سخته.
در جواب سوال دومتون: اگر از یک زبان برنامه نویسی مثل Java یا VB یا ... استفاده کنید روبات شما هر کاری می تونه بکنه تقریبا و هیچ محدودیتی ندارید (همون طور که دوستمون سروش گفتند). در کد VB که به عنوان مثال قرار دادم یک سویچ ساده مثل /pm هم تعریف شده تا ببینید به چه صورت می تونید این کار رو انجام بدید.
کار با این سورس خیلی ساده هست، کافیه نرم افزار VB6 که در پکیج Visual Studio 6.0 هست رو نصب کنید و فایل prjYahoo رو باز کنید، و دکمه ی مثلث رو بزنید، بعد می تونید کلمات یا جملات جدید به روبات یاد بدید (بعد از هر بار کلمه Add کردن برای Update شدن لیست دکمه ی Refresh رو بزنید). همچنین در سورس کد قسمت GetPM می تونید سویچ های جدید مثل /learn و /help و ... رو به روباتتون اضافه کنید.

در جواب c++m: ساختن یک روبات مثل neol3ot خیلی سخت نیست. یک روبات بسیار هوشمند تر از neol3ot می تونه بشه، البته neol3ot برای زمان خودش که 3-4 سال پیش هست روبات نسبتا خوبی بود. برای اینکه یک روبات مثل neol3ot داشته باشید باید یک سری فیلتر ها قبل از پردازش جملات به روبات اضافه کنید و به جای مقایسه کردن دقیق جمله ی کاربر روبات باید از هر جمله یک مفهوم رو دریافت کنه و با توجه به اون مفهوم جواب بده.

c++m ۰۲-۱۴-۱۳۸۷ ۰۹:۴۳ بعد از ظهر

بازم سلام
من اومدم اطلاعات کامل از محضرتون کسب کنم :)
خوب ر هر زمینه اول باید وسایل مور نیاز را دونست !!!
مگه نه ؟
خوب تا اونجایی که من فهمیدم
1- یه کامپیوتر همش انلاین
2- یه اتصال همیشه Alive
3- یه دیتا بیس (حالا نمیدونم با Access یا XML یا ... ؟)
4-استفاده از jYMSG یا gaim به عنوان توابع کتابخانه ای ؟؟؟
اگه چیز یگه ای هم لازمه بفرمایید!!!

Siavash ۰۲-۱۴-۱۳۸۷ ۱۰:۱۲ بعد از ظهر

البته gaim اسم درستشه، و اسم جدیدش هم Pidgin هست. که خیلی از مسنجر ها رو از جمله یاهو! پشتیبانی می کنه. از libyahoo هم می تونید استفاده کنید که فقط یاهو رو پشتیبانی می کنه و در زبون C++ قابل استفاده هست.
Net::YMSG هم هست که به زبان Perl نوشته شده.
به جز مواردی که گفتید یه بخش اصلی هم هست، که با توجه به بانک اطلاعاتیتون بهترین جواب رو انتخاب می کنه! راحت ترین راه این هست که توی یک ستون دنبال سوال بگرده و توی ستون دیگه جواب رو بکشه بیرون و برای کاربر بفرسته! (همون طوری که توی کد مثال عمل می کنه!)
اما این روبات خیلی ابتدایی هست مهم اینه روبات شما بتونه مفهوم جمله ی شخص مقابل رو بفهمه. اون طوری که بالا گفته شد حتی روبات متوجه نمیشه Salam و Salaam و Salam! هر سه یک منظور رو دارن. این بخش به راحتی قابل حل هست. اما روبات باید بفهمه Salam azizam و Salam dooste khoob هم یکی هست! این بخش کمی سخت تر هست. روبات باید موضوع رو تشخیص بده... باز کمی سخت تر میشه!
همینطور می شه تصمیم گیری رو پیشرفته تر کرد، که قصد ما در قرار دادن این تاپیک توی انجمن بحث در همین مورد که یکی از بخش های هوش مصنوعیه هست.

c++m ۰۲-۱۴-۱۳۸۷ ۱۰:۵۷ بعد از ظهر

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

soroosh-ab ۰۲-۱۵-۱۳۸۷ ۰۷:۲۴ قبل از ظهر

سلام .
پس از چند روزی کار روی روبات بالاخره یه چیز خوب از توش داره در میاد !

من بعد از خیلی فکر کردن فهمیدم که فیلتر ها باید به صورتی باشه که اگه روبات کلمه اول رو داشت و یا یه مثلآ کدی اضافه کنیم که اگه Salam توی اون بود بفهمه طرف داره سلام و احوال پرسی می کنه و باید بگیم که تکرار حرف تآثیری نداره !
سیاوش جان راستی راجب اون کد pm/ و ساختارش یکمی بیشتر توضیح بده ! میخوام بیشتر در مورد arrPM بدونم .
مثلآ اگه بخوام learn/ واسه روبات بذارم تقریبآ باید از یه کد شبیه اون استفاده کنم با این تفاوت که بجای :
نقل قول:

sckYahoo.SendData PM_Send(tUser.Text, arrPM(1), arrPM(2))

باید از یه چیزی شبیه :
نقل قول:

Connection.Execute ("INSERT INTO message (Request, Response) VALUES ('" & LCase(arrPM(1)) & "', '" & arrPM(2) & "')")

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

Ashkan_yazdgroup ۰۲-۱۶-۱۳۸۷ ۰۷:۲۹ بعد از ظهر

نقل قول:

نوشته اصلي بوسيله Siavash (پست 111)
از اونجایی که به نظر من VB6 آسونترین زبان برنامه نویسی برای کسانی که تازه شروع به کار کردن بود این کد رو توی VB6 نوشتم. به راحتی می تونید اون رو تبدیل به VB .Net کنید، خود تبدیل کننده ی .Net این کار رو انجام میده.
در صورتی که با جاوا آشنایی دارید از jYMSG می تونید استفاده کنید، همچنین در صورتی که با C++ آشنایی دارید از پروژه ی Pidgin یا همون gaim قدیمی می تونید استفاده کنید که سورس اون در sf.net قابل دریافت هست.

در جواب اشکان: استفاده از jYMSG برای افرادی که مبتدی هستند فکر نکنم زیاد درست باشه. چون این سورس کاملا Object Oriented هست و درکش برای افرادی که هنوز مثال های زیاد در این زمینه ندیدند کمی سخته.
در جواب سوال دومتون: اگر از یک زبان برنامه نویسی مثل Java یا VB یا ... استفاده کنید روبات شما هر کاری می تونه بکنه تقریبا و هیچ محدودیتی ندارید (همون طور که دوستمون سروش گفتند). در کد VB که به عنوان مثال قرار دادم یک سویچ ساده مثل /pm هم تعریف شده تا ببینید به چه صورت می تونید این کار رو انجام بدید.
کار با این سورس خیلی ساده هست، کافیه نرم افزار VB6 که در پکیج Visual Studio 6.0 هست رو نصب کنید و فایل prjYahoo رو باز کنید، و دکمه ی مثلث رو بزنید، بعد می تونید کلمات یا جملات جدید به روبات یاد بدید (بعد از هر بار کلمه Add کردن برای Update شدن لیست دکمه ی Refresh رو بزنید). همچنین در سورس کد قسمت GetPM می تونید سویچ های جدید مثل /learn و /help و ... رو به روباتتون اضافه کنید.

در جواب c++m: ساختن یک روبات مثل neol3ot خیلی سخت نیست. یک روبات بسیار هوشمند تر از neol3ot می تونه بشه، البته neol3ot برای زمان خودش که 3-4 سال پیش هست روبات نسبتا خوبی بود. برای اینکه یک روبات مثل neol3ot داشته باشید باید یک سری فیلتر ها قبل از پردازش جملات به روبات اضافه کنید و به جای مقایسه کردن دقیق جمله ی کاربر روبات باید از هر جمله یک مفهوم رو دریافت کنه و با توجه به اون مفهوم جواب بده.

ممنون سياوش جان اينقدر دوست دارم اين علمو زود فرا بگيرم كه سختيش برام مهم نيست اما ميدونم موفق ميشم

Siavash ۰۲-۱۷-۱۳۸۷ ۰۲:۰۷ قبل از ظهر

روبات یاهو مسنجر - ورژن 1.0.3
 
1(ها)ضميمه
این هم ورژن جدید (1.0.3) روبات یاهو مسنجر تحت VB.
توی این ورژن سعی شده کمی سورس تمیز تر باشه و Comment برای اکثر قسمت ها گذاشته شده.
سویچ /learn هم به عنوان یک مثال سویچ که کمی پیچیده تر هست اضافه شده.
ساختار این سویچ به این صورت هست:
كد:


/learn "Request" "Response"

اکثر بات هایی که توسط کاربران کلمات جدید یاد می گیرن از همچین سویچی استفاده می کنند.
در صورتی که در مورد طریقه ی پارس کردن این سویچ سوال داشتید همینجا می تونید بپرسید.

پسورد فایل Zip:
كد:

www.artificial.ir

soroosh-ab ۰۲-۱۸-۱۳۸۷ ۰۵:۳۳ قبل از ظهر

سلام

سیاوش جان اگه ممکنه راجب کدهایی که واسه ذخیره کردن یه چیزی توی دیتابیس میشه یکمی توضیح بده.
مثلآ می خوام با زدن :
نقل قول:

/example "request" "response"
به جای ذخیره توی Table مسیج ها تو Table به نامه example ذخیره کنه !

مرسی

Siavash ۰۲-۱۸-۱۳۸۷ ۱۰:۲۶ قبل از ظهر

خوب کافیه یک سویچ دیگه توی بخش GetPM اضافه کنی که دقیقا شبیه /learn خواهد بود (که به عنوان مثال گذاشتم).
اما توی اون به جای صدا زدن AddWord یک تابع دیگرو صدا می زنید. تابع AddWord داخل فایل modFunctions قرار داره. می تونید تابع جدیدی مثل AddWord اضافه کنید یا خود AddWord رو که کارش ذخیره کردن Request و Response داخل بانک اطلاعاتی هست تغییر بدید.

BeHNaM ۰۲-۱۸-۱۳۸۷ ۰۶:۱۲ بعد از ظهر

سلام سیاوش جان واقعا عالی بود فقط من تو قسمت های Make add user packet و Make packet for getting invisible مشکل دارم وقتی میخوام کامپایل کنم اررور میده!

soroosh-ab ۰۲-۱۸-۱۳۸۷ ۰۷:۲۵ بعد از ظهر

مرسیییییییییییییییییییییی ییییییییییییییییییییی !

واقعآ ممنونم ! جبران می کنم !


زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۶:۳۷ بعد از ظهر ميباشد.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.