نمایش نتایج 1 تا 30 از 30

نام تاپیک: هوش مصنوعی در برنامه چت با روبات

  1. #1
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    Red face هوش مصنوعی در برنامه چت با روبات

    سلام دوستان
    همین اول بگم که عنوان این تاپیک گفتگو هستش , من درخواست پروژه ندادم (واسه مدیران که بعدا نگن خودتون دست به کیبرد بزنید )
    دوستان میخوام تو پروژم به برنامه هوش مصنوعی بدم به طوری که وقتی میخوای باش مکالمه کنی راحت بفهمه داری چی میگی. بفهمه ای جوابی که دادی ربطی به سوالی که پرسید داشت یا نه , 100ٍ% میدونم میشه
    حالا واسه مرحله اول میخوام جمله ای رو که بهش میدم کلماتشو جدا کنه , بعد یکی یکی فیلتر کنه و بعد با اون کلمه ای که تو دیتابیس گذاشتم مقایسه کنه
    مثلا من تو دیتابیس کلمه زیر رو بهش دادم
    salam
    حالا وقتی بهش جمله زیر یا مشابه اونو میدم جوابیو که واسه سلام تعیین کردم بهم میده
    azizam saalaaaaaaaaaaaaaaaaaam
    اول میاد کلمات جمله رو از هم جدا میکنه بعد کلمات رو فیلتر میکنه , یعنی اگه چندتا حرف پشت سر هم تو کلمه باشه اونارو به یکی تبدیل میکنه
    مثلا saaaaaaaaaaaaaaaaaalaaaaaaaaaaaaam >>>> salam
    خوب تا اینجا درست

    اما مشکل من اینجاست
    اگه من تو دیتابیس واسه کلمم 2تا حرف پشت سر هم بزارم دیگه اونو پیدا نمیکنه
    مثلا من بهش کلمه زیر رو میدم
    khoobi
    اگه کسی این جمله رو بده
    saaaaaaaaaaalamm khooooooooooooooobiiii
    کلمات فیلتر میشه
    saaaaaaaaaaalamm = salam
    khooooooooooooooobiiii = khobi
    همه حرفا میشه یکی در نتیجه khobi با khoobi نا برابر میشه و جوابی پیدا نمیشه
    حالا من دنبال راه حلی میگردم که اگه تو دیتا بیس کلمه khoobi رو مشخص کرده باشم دیگه
    khoooooooooooooobiiiiii به khobi تبدیل نشه
    بلکه بشه khoobi
    نه تنها واسه خوبی بلکه واسه همه کلمات اینجوری باشه؟
    خدا کنه تونسته باشم منظورم رو برسونم
    ================

    اساتید به نظر شما من واسه اینکار باید چه مراحلی رو طی کنم ؟؟؟
    میشه توضیح بدید ؟؟

    ممنون/

  2. #2
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هـوش مصنوعــی

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

    یه دیکشنری سرچ کنی به جوابت میرسی.

    در ضمن برای این کار میتونی از گراف وضعیت استفاده کنی مثل دیکشنری گوشی ها (T9)

  3. #3

    نقل قول: هـوش مصنوعــی

    سلام
    خب كامپيوتر از كجا بايد بفهمه منظور كاربر واقعا khobi بوده يا khoobi ؟
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  4. #4
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط vbhamed مشاهده تاپیک
    سلام
    خب كامپيوتر از كجا بايد بفهمه منظور كاربر واقعا khobi بوده يا khoobi ؟
    خوب اول و آخر او کلمه رو که میخوای با ستاره تعیین کنی
    *khoobi*

  5. #5
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط quiet_programmer مشاهده تاپیک
    ببخشینا ولی اگه درس هوش مصنوعی رو پاس میکردین به این کاری که شما میکنین نمیگفتن هوش مصنوعی میگفتن دیکشنری.

    یه دیکشنری سرچ کنی به جوابت میرسی.
    خیلی شرمنده که اینو میگم :
    اگه پستمو با دقت میخوندید متوجه میشدید که گفتم :
    دوستان میخوام تو پروژم به برنامه هوش مصنوعی بدم به طوری که وقتی میخوای باش مکالمه کنی راحت بفهمه داری چی میگی. بفهمه ای جوابی که دادی ربطی به سوالی که پرسید داشت یا نه , 100ٍ% میدونم میشه

    و گفتم که واسه مرحله اول :

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

    اگه به فهمیدن مفهوم کلمات میگن دیکشنری , پس حتما ما آدما جای هوش دیکشنری تو کلمونه


    بازم از اینکه خواستید کمک کنید ممنوم میشم /

  6. #6

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    خوب اول و آخر او کلمه رو که میخوای با ستاره تعیین کنی
    *khoobi*
    سلام

    منظورم اين بود كه اگر كاربر داد *khoooooooobi*، حالا كامپيوتر از كجا بايد بفهمه منظور واقعي كاربر khobi هست يا khoobi
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  7. #7
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط vbhamed مشاهده تاپیک
    سلام

    منظورم اين بود كه اگر كاربر داد *khoooooooobi*، حالا كامپيوتر از كجا بايد بفهمه منظور واقعي كاربر khobi هست يا khoobi
    vbhamed جون من یه برنامه داشتم ربات یاهو بود . این قادر بود باهات صحبت کنه یعنی چرت و پرت رو از هم تشخیص میداد و میدونست که منظور از khoobi چیه
    حالا حتما میگی چطور ؟
    اومده بود یه دستور <subject> گذاشته بود
    وقتی ربات از تو سوال میپرسید تو میتونستی چندین جواب واسش در نظر بگیری اگه جوابی که کاربر داد جزء جواب های از قبل تعیین شده باشه ربات دوباره جوابتو میداد اما اگه تو اون جوابا نبود ربات پیدا نمیکرد تشخیص میداد که تو یه چیزی که مرتبت با او موضوع نیستو جواب دادی
    مثلا ربات میپرسه خوبی؟
    تو میای واسه جوابش اینهارو تاین میکنی؟
    مرسی = خدارو شکر
    تو بهتری = نه بابا
    نه = چیزی شده؟
    بتوچه = اینم حرفیه
    حالا ربات از کاربر میپرسه خوبی؟ تو جوابت یکی از ایناست مثلا میگی , مرسی ربات میگه خدارو شکر
    حالا یه جوابم واسش تاین میکنی که اگه غیر از این چنتا بود یه چیزه دیگه بگه
    مثلا در جوابش بگی : داره بارو میاد
    ربات میگه : من حالتو پرسیدم تو میگی داره بارون میاد
    یه چیزی تو این مایه ها میشه که برنامه کلماتو تشخیس میده

  8. #8
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    35
    پست
    4,768

    نقل قول: هـوش مصنوعــی

    سلام،
    ببخشینا ولی اگه درس هوش مصنوعی رو پاس میکردین به این کاری که شما میکنین نمیگفتن هوش مصنوعی میگفتن دیکشنری.
    کاری که مد نظر ایشون هست در این قسمت از هوش مصنوعی قرار داره:
    یادگیری ماشینی (Machine Learning) ------> تطبیق الگو (Pattern Matching) -------> عبارات با قاعده (Regular Expression)

    در رابطه با عبارات با قاعده تحقیق کنید.

    چون بحث برنامه نویسی مطرح نیست، تاپیک رو به بخش هوش مصنوعی منتقل می کنم. (عنوان تاپیک نیز اصلاح/تکمیل شد)
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  9. #9

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    vbhamed جون من یه برنامه داشتم ربات یاهو بود . این قادر بود باهات صحبت کنه یعنی چرت و پرت رو از هم تشخیص میداد و میدونست که منظور از khoobi چیه
    حالا حتما میگی چطور ؟
    اومده بود یه دستور <subject> گذاشته بود
    وقتی ربات از تو سوال میپرسید تو میتونستی چندین جواب واسش در نظر بگیری اگه جوابی که کاربر داد جزء جواب های از قبل تعیین شده باشه ربات دوباره جوابتو میداد اما اگه تو اون جوابا نبود ربات پیدا نمیکرد تشخیص میداد که تو یه چیزی که مرتبت با او موضوع نیستو جواب دادی
    مثلا ربات میپرسه خوبی؟
    تو میای واسه جوابش اینهارو تاین میکنی؟
    مرسی = خدارو شکر
    تو بهتری = نه بابا
    نه = چیزی شده؟
    بتوچه = اینم حرفیه
    حالا ربات از کاربر میپرسه خوبی؟ تو جوابت یکی از ایناست مثلا میگی , مرسی ربات میگه خدارو شکر
    حالا یه جوابم واسش تاین میکنی که اگه غیر از این چنتا بود یه چیزه دیگه بگه
    مثلا در جوابش بگی : داره بارو میاد
    ربات میگه : من حالتو پرسیدم تو میگی داره بارون میاد
    یه چیزی تو این مایه ها میشه که برنامه کلماتو تشخیس میده

    سلام

    ولي شما باز هم متوجه منظور من نشدين
    من اصلا كاري به اين ندارم كه شما مي خواين چه استفاده اي كنيد، من خودم هم برنامه كلنجار رو ديدم كه تايپ مي كني جواب مي ده
    منظور من چيزي ديگه هست، فرض كنيد كاربر از كامپيوتر سؤال مي كنه :

    كرم كجاست ؟

    خب حالا كامپيوتر از كجا بفهمه منظور كاربر اينه كه كِرِم (ماده آرايشي) كجاست يا اينكه كَرَم (شخصي به نام كَرَم) كجاست يا فلز كُرُم كجاست يا اينكه معني اينه كه من ناشنوا هستم (كر هستم)

    شما گفتي اگر حروف تكراري حذف بشن مثلا khoooooooobi بشه khobi اونموقع كاربر اگر منظور واقعيش كلمه khoobi باشه به مشكل مي خوريد
    ولي مسئله اينه كه كامپيوتر كه نمي تونه بفهمه منظور واقعي كاربر چي بوده كه حالا يه طوري بعضي جاها كلمه به khoobi تبديل بشه و بعضي جاها به khobi

    در حقيقت كاربر بايد با يك قانوني اين رو به كامپيوتر بفهمونه
    مثلا كلمه دور و در (مرواريد) رو در نظر بگيريد، هر دوشون مي تونن اشتباها نوشته بشن doooooor
    كامپيوتر بايد اين رو يا به dor تبديل كنه يا door
    بهتره در اينجا به عنوان راهنما به كاربر بگيد اگر منظورش دور هست تايپ كنه dur يعني از u استفاده كنه ولي اگر مرواريد منظورشه تايپ كنه dor يعني از O استفاده بشه حالا چه اشتباها duuuuuuur و چه اشتباها doooooor نوشته بشه ديگه ميشه راحت درستش كرد
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  10. #10

    نقل قول: هوش مصنوعی در برنامه چت با روبات

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

  11. #11
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هـوش مصنوعــی

    نقل قول نوشته شده توسط vbhamed مشاهده تاپیک
    سلام

    ولي شما باز هم متوجه منظور من نشدين
    من اصلا كاري به اين ندارم كه شما مي خواين چه استفاده اي كنيد، من خودم هم برنامه كلنجار رو ديدم كه تايپ مي كني جواب مي ده
    منظور من چيزي ديگه هست، فرض كنيد كاربر از كامپيوتر سؤال مي كنه :

    كرم كجاست ؟

    خب حالا كامپيوتر از كجا بفهمه منظور كاربر اينه كه كِرِم (ماده آرايشي) كجاست يا اينكه كَرَم (شخصي به نام كَرَم) كجاست يا فلز كُرُم كجاست يا اينكه معني اينه كه من ناشنوا هستم (كر هستم)

    شما گفتي اگر حروف تكراري حذف بشن مثلا khoooooooobi بشه khobi اونموقع كاربر اگر منظور واقعيش كلمه khoobi باشه به مشكل مي خوريد
    ولي مسئله اينه كه كامپيوتر كه نمي تونه بفهمه منظور واقعي كاربر چي بوده كه حالا يه طوري بعضي جاها كلمه به khoobi تبديل بشه و بعضي جاها به khobi

    در حقيقت كاربر بايد با يك قانوني اين رو به كامپيوتر بفهمونه
    مثلا كلمه دور و در (مرواريد) رو در نظر بگيريد، هر دوشون مي تونن اشتباها نوشته بشن doooooor
    كامپيوتر بايد اين رو يا به dor تبديل كنه يا door
    بهتره در اينجا به عنوان راهنما به كاربر بگيد اگر منظورش دور هست تايپ كنه dur يعني از u استفاده كنه ولي اگر مرواريد منظورشه تايپ كنه dor يعني از O استفاده بشه حالا چه اشتباها duuuuuuur و چه اشتباها doooooor نوشته بشه ديگه ميشه راحت درستش كرد
    اما اگه به اون روشی که گفتم عمل بشه (یعنی جواب هارو از پیش تایین کنیم) در صد اشتباه کاهش پیدا میکنه
    من با این روش رباتمو جوری طراحی کردم که حتی وقتی بهش فش میدادی باهات قهر میکرد و تا زمانی که معذرت خواهی نمیکردی دیگه جوابتو نمیداد

  12. #12
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    با سلام.

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

    مثلا میخوای یه کلید با مقدار مثلا Khobi داشته باشی و چند مقدار برای این کلید. مثلا مرسی، ممنون، تو چطوری و...

    تا اینجا درست؟

    خوب الان مشکل تو اینجاست که مثلا کاربر Khobi رو به صورت Khooooooooooobbbbbbbbbbbiiiiii ویا به شکل های دیگه وارد میکنه. ولی شامل کاراکترهای (به ترتیب) k وبعد h و یعد O وبعد b و بعد i.

    درست؟

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

    اگه تا اینجا درست متوجه شده باشم پس راه حل تو برای این کار اینه که با عبارات منظم کار کنی. برای این کار هم باید برای تمامی کلیدهای خودت یه دیاگرام بکشی(درس نظریه زبانها و ماشین)

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

    اینجا من یه مثال برات میزارم. یه فایل cpp که حتما باید با کامپایلر Bcc32.exe کامپایل کنی. این فایل رو ابزار lex تولید کرده. از روی عبارات منظم فایل RE.L. فایل EXE هم میزارم که اگه کامپایلر Bcc32..exe رو نداشتی از اون استفاده کنی.

    تو این برنامه بعد از اجرا اگه کلمه Khobi رو به هر شکلی که به نظرت میاد تایپ کنی اون رو به Khobi تبدیل میکنه.(فقط یادت باشه که ترتیب قرار گرفتن کاراکترهای KHOBI مهمه.) یعنی این برنامه برای hkobi جواب نمیده.


    خوب این فقط برای کلمه khobi بود اما اگه میخوای کلمات دیگه ای هم بهش اضافه کنی عبارت منظمشو بنویس تو فایل RE.l و بعد بده به ابزار lex تا برات کد تولید کنه.

    در ضمن اگه من کد cpp تولید کردم وگذاشتم اینجا فقط به خاطر این بود که الان فقط این ورژن از ابزار Lex در اختارم بود ولی تو میتونی ورژنهای دیگه ای از این ابزار پیداکنی که عبارات منظم تو رو به فایل C#‎ ویا جاوا و یا هر زبان دلخواه دیگر تبدیل کنه.

    اگه در مورد سینتکس فایل re.l هم به مشکلی برخورد کردی بگو تا اگه سوادم قد داد جواب بدم.
    فایل های ضمیمه فایل های ضمیمه

  13. #13
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    ممنون اما من ویژوال بیسیک مد نظرم بود . نه زبان های دیگه

  14. #14
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    خوب اگه این همون چیزیه که شما میخواین بگین تا 2تا راه حل بگم برات

  15. #15
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    نقل قول نوشته شده توسط quiet_programmer مشاهده تاپیک
    خوب اگه این همون چیزیه که شما میخواین بگین تا 2تا راه حل بگم برات
    من این کارو تو پروژه انجام دادم , یعنی تبدیل khooooooooooooooooooobbbbbbbbbbbbiiiiii به خوبی و یا تبدیل ssssssaaaaaaaaaaaaaaaaaaaaaaalllllllaaaaaaaaaaaaaa aaaal به salam
    اما مشکل من اینجاست که
    اگه من تو دیتا بیس khoobi رو بزارم دیگه بعد از فیلتر شدن khooooooooooooobiiiiii دیگه باهم جور در نمیان
    khooooooooooooooooooooobbiiiiiiii >> khobi در نتیجه khoobi <> khobi
    من میخوام اگه تو دیتا بیس به جای khobi بیام khoobi رو بزارم دیگه khoooooooooobiiiiiiiiiiiii به khobi تبدیل نشه
    بلکه به khoobi تبدیل بشه .
    دوست عزیز اون کدیو که شما گذاشتی من خیلی ازش سر در نیووردم
    اما فقط فهمیدم که اومده بودین حروف اصلیه کلمرو انتخواب کرده بودین مثل (k).(h).(o).(b).(i) که حرفای خوبی هست
    حالا یه سوال از شما دارم :
    آیا اگه تو این کد (k).(h).(o).(o).(b).(i) این رو انتخاب کنیم دیگه برنامه khoobi رو نشون میده؟
    یعنی حروف o رو به 2 تا تبدیل میکنه ؟؟
    اگه اینجوری باشه شاید اون چیزی باشه که من میخوام

  16. #16
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    بله دقیقا.
    فقط این یه اضافه کاریه، از اونجایی که Khoobi زیر مجموعه عبارت منظم تعریف شده است کافیه بیای بجای Cout<<"Khobi" بنویسی cout<<"Khoobi"

    ببین فکر کنم اگه اول تو رو با عبارات منظم آشنا کنم بد نیست و میتونه کمک حالت باشه.

    (k)+(h)+(o)+(b)+(i){cout<<"Khobi";}
    این یه عبارت منظمه که میگه اول K بیاد اون علامت + مشخص میکنه که این کاراکتر h یک یا بیشتر بار میتونه تکرار بشه. بعد h هم به همین ترتیب یعنی اصل کاریه اون علامت +ه. و الی آخر

    در نهایت اگه اون عبارت منظم با رشته ی ورودی مطابقت کرد اونوقت دستور Cout<<"Khobi" اجرا میشه.

    ببین با عبارات منظم میشه هر رشته ای که مد نظرت هست رو تولید کنی.
    علاوه بر علامت + که معنی حداقل یک میده علامتهای دیگه ای هم داریم که معانی مختلفی میده. مثلا اگه بعد از یه کاراکتر علامت * بزاری یعنی اینکه اون کاراکتر میتونه اصلا تو رشته ی ورودی وجود نداشته باشه یا به تعداد بینهایت بار تکرار بشه. یا علامت ? یعنی وجود اون کاراکتر اخیاریه یعنی هم میتونه نیاد و اگر هم میاد به تعداد یکبار بیاد و ...

    هرجا که نوشتم کاراکتر میتونه بجاش رشته هم قرار بدی مثلا

    (ID)*23
    این عبارت با رشته های زیر مطابقت میکنه.

    23
    ID23
    IDID23
    IDIDID23
    IDIDIDID....23

    امیدوارم که متوجه شده باشی.

    هرطور که عبارت منظم منویسی اون شکلی هم جواب میگیری

    اگه تو عبارات منظم مشکل داشته کتاب نظریه زبانها و ماشین (پیتر لینز) رو مطالعه کن.
    بازم اگه سوالی داشتی بپرس تا اگه سوادم قد داد جواب بدم.
    آخرین ویرایش به وسیله quiet_programmer : جمعه 01 بهمن 1389 در 18:53 عصر

  17. #17
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    نقل قول نوشته شده توسط quiet_programmer مشاهده تاپیک
    بله دقیقا. ببین فکر کنم اگه اول تو رو با عبارات منظم آشنا کنم بد نیست و میتونه کمک حالت باشه.

    (k)+(h)+(o)+(b)+(i){cout<<"Khobi";}
    این یه عبارت منظمه که میگه اول K بیاد اون علامت + مشخص میکنه که این کاراکتر h یک یا بیشتر بار میتونه تکرار بشه. بعد h هم به همین ترتیب یعنی اصل کاریه اون علامت +ه. و الی آخر
    پس اگه بین o و b یه o دیگه اضافه کنی یعنی بعد o اول حتما باید یه o دیگه هم بیاد.
    در نهایت اگه اون عبارت منظم با رشته ی ورودی مطابقت کرد اونوقت دستور Cout<<"Khobi" اجرا میشه.

    ببین با عبارات منظم میشه هر رشته ای که مد نظرت هست رو تولید کنی.
    علاوه بر علامت + که معنی حداقل یک میده علامتهای دیگه ای هم داریم که معانی مختلفی میده. مثلا اگه بعد از یه کاراکتر علامت * بزاری یعنی اینکه اون کاراکتر میتونه اصلا تو رشته ی ورودی وجود نداشته باشه یا به تعداد بینهایت بار تکرار بشه. یا علامت ? یعنی وجود اون کاراکتر اخیاریه یعنی هم میتونه نیاد و اگر هم میاد به تعداد یکبار بیاد و ...

    هرجا که نوشتم کاراکتر میتونه بجاش رشته هم قرار بدی مثلا

    (ID)*23
    این عبارت با رشته های زیر مطابقت میکنه.

    23
    ID23
    IDID23
    IDIDID23
    IDIDIDID....23

    امیدوارم که متوجه شده باشی.

    هرطور که عبارت منظم منویسی اون شکلی هم جواب میگیری

    اگه تو عبارات منظم مشکل داشته کتاب نظریه زبانها و ماشین (پیتر لینز) رو مطالعه کن.
    بازم اگه سوالی داشتی بپرس تا اگه سوادم قد داد جواب بدم.
    دوست عزیز واقعا ممنون که راهنمایی کردی , امکانش هست یه مثال کوچولو واسه ویژوال بزنی یا راهنمایی کنی چطور میتونم از عبارات منظم تو ویژوال استفاده کنم
    ممنون /

  18. #18
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

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

    ببین تو از عبارات منظم تو هیچ کدوم از زبانها نمیتونی استفاده کنی. فقط باید عبارات منظم رو داخل یه ویرایشگر متنی بنویسی بعد بدی به ابزار Lex تا کد رو تولید کنه. همونطور که قبلا هم گفته بودم از ابزار Lex ورژنهای مختلفی وجود داره. به این شکل که یکی از این ابزارها کد c تولید میکنه یکی کد C#‎ تولید میکنه یکی جاوا تولید میکنه و الی آخر. ولی دقیقا مطمئن نیستم که ابزار Lex برای تولید کد vb6 وجود داره یا نه. ولی VB.Net هست.

    خوب ولی اگه این ابزار برای تولید کد vb6 وجود نداشته باشه باید به یکی از دو روش زیر استفاده کنی

    1. اينکه بياي خودت براي کليه کليدها يه عبارت منظم بنويسي و بعد دياگرام بکشي براش وبعد با استفاده از وبي اون ديگرام رو تبديل به کد کني. (کار آسونيه فقط براي کليدهاي زياد واقعا زمانبره).
    2. اين روش رو من پيشنهاد ميکنم. برنامه CPP رو طوري بنويسي که رشته ي ورودي رو به صورت پارامتر بخونه و رشته مورد نظر رو تو خروجي چاپ کنه. بعد از اين برنامه يه فايل exe توليد کني. اونوقت ميتوني از اين فايل تو برنامه وبي استفاده کني.

    مثلا: اگه فايل exe تو اسم Lexer رو داشته باشه با اجرا به صورت:

    Lexer.exe "Khoooooobiiiiiii"
    تو خروجي چي چاپ ميکنه؟ Khobi

    اونوقت مياي تو برنامه VB اين فايل رو به صورت زير اجرا ميکني.
    shell("Lexer.exe "+""""+SString+""""+" >C:\1.txt",VBHide)
    SString همون کليديه که کاربر وارد کرده. پس اگه کاربر Khoooooooooobbbbbbbbbiiiiiii رو وارد کرده باشه با اجرا به صورت کد بالا تو زبان vb کليد Khobi ميره تو فايل c:\1.txt. بعد ديگه خود بخوان شرح اين ماجرا

    باز اگه خواستی بگو در مورد روش اول و روش دوم توضیح بدم
    آخرین ویرایش به وسیله quiet_programmer : جمعه 01 بهمن 1389 در 19:19 عصر

  19. #19
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    1. اينکه بياي خودت براي کليه کليدها يه عبارت منظم بنويسي و بعد دياگرام بکشي براش وبعد با استفاده از وبي اون ديگرام رو تبديل به کد کني. (کار آسونيه فقط براي کليدهاي زياد واقعا زمانبره).
    در این مورد توضیح میدی؟

  20. #20

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    زیاد وارد نیستم ولی فکر می کنم بتونی با الگوریتم ژنتیک و پیدا کردن توالی khoobi در رشته مورد نظرت به جواب برسی. یعنی اگر نتیجه مقایسه دو رشته یک توالی 6 تایی (تعداد کارکتر هایkhoobi) بود.(یعنی توالی کاملی از رشته معیار در رشته ورودی وجود داشته باشد)
    ولی در این حالت این چیز ها رو هم به عنوان ورودی صحیح می گیره: khouooooubi یا kXXhooooooooooobiiiiiii

  21. #21
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    سلام. شرمنده که دیر کردم به خاطر کنکور و درس

    آره میگفتم برای این کار اول باید با عبارات منظم آشنابشی و بعد بتونی براش دیاگرام بکشی. مثلا الان من یه دیاگرام برای کلمه Khoobi و Khobam رسم کردم.

    Name:  Untitled.png
Views: 677
Size:  15.6 کیلوبایت

    تو این دیاگرام رو به شکل زیر کد میکنی. فرض میکنیم یه کلمه توسط کاربر نوشته شده میخوایم ببینیم که این کلمه توسط این دیاگرام قابل قبوله یا نه.
    اول یه کاراکتر میخونی اگه برابر K بود به State بعدی میری ولی اگه چیزی بجز K خونده شد مثلا F اونوقت تو نمیتونی به حالت دیگه بری پس این رشته ی ورودی توسط این گرامر قابل قبول نیست ولی اگه بازم k خونده شد تو همون State باقی میمونی تا یه o بخونی بعد با دیدن O به حالت بعدی میری. بعد یه کاراکتر دیگه میخونی اگه o بود میری به State بعدی و اگه b بود به اون Stateی میری که یال B هدایت میکنه و همینطور ادامه میدی تا به Final State برسی. Final State هم همونیه که با 2تا دایره نشون داده شده. اگه تونستی توسط یه رشته ی ورودی برسی به Final State پس اون رشته توسط گرامر یا بطور دقیق تر آتوماتون پذیرفته شده و تو میتونی توی Final State بگی که کاربر منظورش از این رشته چی بوده.

    امیدوارم که متوجه شدی باشی. من رفتم تا 30ام بهمن. چون کنکور دارم ولی اگه متوجه نشدی پیشنهاد میکنم اگه اهل مطالع باشی کتاب نظریه زبانها و ماشین (پیتر لینز) رو مطالعه کنی اگر هم که نه اونوقت میتونی از کسی که درس نطریه رو پاس کرده کمک بگیری.

    موفق باشی. امیدوارم تا 30ام مشکلت حل شده باشه.

    البته بخشین تو این دیاگرام H از قلم افتاده

  22. #22
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    35
    پست
    4,768

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    سلام،
    اگه بازم k خونده شد تو همون State باقی میمونی تا یه o بخونی بعد با دیدن O به حالت بعدی میری. بعد یه کاراکتر دیگه میخونی اگه o بود میری به State بعدی و اگه b بود به اون Stateی میری که یال B هدایت میکنه
    نیازی به دو State برای حرف O نیست. میشه هر دو رو ترکیب کرد. مگه نه؟


    _behnam_ @
    من که تو همون پست شماره 8 گفتم از عبارات با قاعده استفاده کنید.
    برای اینکه بتونید از عبارات با قاعده در VB6 استفاده کنید، باید از کتابخانه vbscript استفاده کنید. (از منوی Project، گزینه References رو انتخاب کنید و بعد از بین لیست dll ها گزینه Microsoft VBScript Regular Expressions 5.5 رو انتخاب کنید)
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  23. #23
    کاربر دائمی آواتار quiet_programmer
    تاریخ عضویت
    دی 1389
    محل زندگی
    زنجان
    سن
    38
    پست
    289

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    با سلام.

    چون جناب behnam عزیز فرموده بودند که Khoobi باید اکسبت بشه نه Khobi بخاطر اونه که دوتا State برای O در نظر گرفتم.

    راستی اگه امکان داره در مورد Regular Experssions تو محیط vb توضیح بدبد؟

  24. #24
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    35
    پست
    4,768

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    چون جناب behnam عزیز فرموده بودند که Khoobi باید اکسبت بشه نه Khobi بخاطر اونه که دوتا State برای O در نظر گرفتم.
    این کار اشکالی نداره، اما یک کار اضافی هست.

    راستی اگه امکان داره در مورد Regular Experssions تو محیط vb توضیح بدبد؟
    بحث عبارات باقاعده که مفصله ولی برای مثال همین khobi و khoooooooobi رو توضیح میدم.

    بعد از اینکه کتابخونه مذکور رو اضافه کردید، کد زیر رو بنویسید:

    Dim objRegExp As RegExp
    Dim collMatches As MatchCollection
    Set objRegExp = New RegExp

    objRegExp.Pattern = "kho*bi"
    Set collMatches = objRegExp.Execute("khoooooooooooooobi")
    MsgBox collMatches(0)
    به همین سادگی به همین خوشمزگی!
    Pattern ما اینجا kho*bi هست. علامت ستاره (*) یکی از کاراکترهای ویژه هست به معنی تکرار. یعنی کاراکتر قبلیش (حرف o) در صورت تکرار پذیرفته است.
    رشته موردنظرتون رو برای تطبیق باید بدید به متود Execute. خروجیش روی یک مجموعه Set میشه که برای دسترسی به عناصر اون مجموعه باید از For Each استفاده کنید. اما چون اینجا یک تطبیق بیشتر نداریم، نیازی به For Each نیست و مستقیم Index شماره 0 رو نمایش میدیم.

    به طور پیشفرض به حروف کوچک و بزرگ حساس هست. برای Insensitive کردن باید خاصیت IgnoreCase رو True کنید:
    objRegExp.IgnoreCase = True
    موفق باشید/
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  25. #25
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    نقل قول نوشته شده توسط xxxxx_xxxxx مشاهده تاپیک
    این کار اشکالی نداره، اما یک کار اضافی هست.

    بحث عبارات باقاعده که مفصله ولی برای مثال همین khobi و khoooooooobi رو توضیح میدم.

    بعد از اینکه کتابخونه مذکور رو اضافه کردید، کد زیر رو بنویسید:

    Dim objRegExp As RegExp
    Dim collMatches As MatchCollection
    Set objRegExp = New RegExp

    objRegExp.Pattern = "kho*bi"
    Set collMatches = objRegExp.Execute("khoooooooooooooobi")
    MsgBox collMatches(0)
    به همین سادگی به همین خوشمزگی!
    Pattern ما اینجا kho*bi هست. علامت ستاره (*) یکی از کاراکترهای ویژه هست به معنی تکرار. یعنی کاراکتر قبلیش (حرف o) در صورت تکرار پذیرفته است.
    رشته موردنظرتون رو برای تطبیق باید بدید به متود Execute. خروجیش روی یک مجموعه Set میشه که برای دسترسی به عناصر اون مجموعه باید از For Each استفاده کنید. اما چون اینجا یک تطبیق بیشتر نداریم، نیازی به For Each نیست و مستقیم Index شماره 0 رو نمایش میدیم.

    به طور پیشفرض به حروف کوچک و بزرگ حساس هست. برای Insensitive کردن باید خاصیت IgnoreCase رو True کنید:
    objRegExp.IgnoreCase = True
    موفق باشید/
    یه مشکل هست . اگه کلمه همخونی نداشته باشه اررور میده . چطوری جلو اررور رو بگیرم ؟

  26. #26
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    35
    پست
    4,768

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    یه مشکل هست . اگه کلمه همخونی نداشته باشه اررور میده . چطوری جلو اررور رو بگیرم ؟
    دو راه دارید.
    یکی اینکه قبل از ارسال رشته موردنظرتون به متود Execute ابتدا اونو به متود Test بدید. متود Test کارش این هست که بررسی کنه ببینه آیا چیزی تطبیق میکنه یا نه. اگر جواب مثبت باشه، True برمیگردونه، در غیر اینصورت False.
    If objRegExp.Test("khooooooobi") = True Then
    این کارو باید قبل از Execute انجام بدید.
    ترجیحاً رشته خودتون رو توی یک متغیر قرار بدید و اون متغیر رو به این متودها بدید. نه اینطوری که من نوشتم.

    راه دوم اینه که قبل از اینکه آیتم شماره 0 رو نمایش بدید، ببرسی کنید ببینید اصلاً MatchCollection شما آیتمی داره یا نه:
    If collMatches.Count > 0 Then MsgBox collMatches(0)
    Property پیشفرض در MatchCollection همون Item هست. من برای خلاصه سازی، Item رو نمی نویسم. وگرنه اصلش اینطوریه:
    If collMatches.Count > 0 Then MsgBox collMatches.Item(0)
    کلاس RegExp انعطاف پذیری بالایی داره. به طور مثال شما میتونید توی برنامه تون، کل جمله ای که کاربر به روبات میگه رو با یکبار ارسال به متود Execute تحلیل کنید. برای تحلیل رشته های چندخطی باید خاصیت MultiLine رو True کنید. و برای اینکه اگر بیش از یک تطبیق در رشته تون وجود داشت، همه اش رو برگردونه باید خاصیت Global رو True کنید. و برای اینکه به همه آیتم های تطبیق شده دسترسی داشته باشید خیلی راحت با یک For Each میتونید همشون رو دریافت کنید.

    موفق باشید/
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  27. #27
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    آقایی XXXXX_XXXXX میشه اگه واستون زحمتی نیست کاراکترهای ویژه RegExp رو همراه با کارایشون رو اینجا قرار بدید تا من و دیگران ازشون استفاده کنیم؟

    ممنون/

  28. #28
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    35
    پست
    4,768

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    سلام،
    همه علامت ها رو دقیق خاطرم نیست. (به همین دلیل هم به اشتباه گفتم از علامت * استفاده کنید. در حالی که برای برنامه شما باید از علامت + استفاده بشه) میتونید از تاپیک زیر ببینید:
    معرفی برخی علائم عبارات منظم
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  29. #29
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    آقای XXXXX_XXXXX واقعا ممنون ,
    واقعا راهنمایاتون همون چیزی بود که میخواستم

  30. #30

    نقل قول: هوش مصنوعی در برنامه چت با روبات

    هوش مصنوعی خیلی رشته خوبیه، مخصوصا رشته پردازش تصویرش
    در کل کاربرد هوش مصنوعی کلا گستردس و مثل یک ابزار هست که هر شخصی می تونه ازش استفاده خوب یا بد کنه
    در رابطه با هوش مصنوعی آکادمی همراه اول یک مقاله خوب نوشته که واقعا عالی بود
    بهتون پیشنهاد میدم که بخونید ...
    اینم لینکش:
    https://hamrah.academy/blog/artificial-intelligence/

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •