فهرست مطالب:

دستیار صوتی فعال - حداکثر: 10 مرحله
دستیار صوتی فعال - حداکثر: 10 مرحله

تصویری: دستیار صوتی فعال - حداکثر: 10 مرحله

تصویری: دستیار صوتی فعال - حداکثر: 10 مرحله
تصویری: افزایش سرعت مطالعه : چگونه با یک تکنیک ساده ده برابر سریعتر حفظ کنیم؟ 2024, جولای
Anonim
دستیار صوتی فعال - MAX
دستیار صوتی فعال - MAX

سلام در این دستورالعمل من قصد دارم در مورد نحوه ایجاد یک ربات چت MAX (با نام خودم !!!)

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

پس لطفا همه از من حمایت کنند ……

اولین دستورالعمل من !!!!!!!

احساس عصبی بودن در مورد آنچه قرار است رخ دهد …………….

مرحله 1: آگاهی از مسابقه

اطلاع از مسابقه
اطلاع از مسابقه
اطلاع از مسابقه
اطلاع از مسابقه

سلام مهندسین و طراحان ……..

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

بنابراین یک روز به صفحه نمایش Instructables آمدم. این واقعاً مرا در پروژه های مختلف با ایده های مختلف در جنبه های مختلف سرگرم کرد. سپس از آن روز من آن را دنبال می کنم. صفحه مسابقه واقعاً من را در مورد جوایز و پروژه هایی که توسط افراد مختلف در سراسر جهان ارائه شده است سرگرم کرد. جهان

VOICE ACTIVATED CHALLEGE اولین پلتفرم من در زمینه نوشتن دستورالعمل است.

جوایز من را بسیار سرگرم کرد (بله !!! خیلی زیاد ……..).

همچنین می خواهم دانش خود را در زمینه رایانه و فناوری آن در مورد نحوه عملکرد چیزهای مختلف در اختیار دیگران قرار دهم.

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

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

بنابراین…

اجازه دهید سفر را شروع کنیم ………………

مرحله 2: از کجا در مورد چیزها می دانستم؟

از کجا از چیزها مطلع بودم؟
از کجا از چیزها مطلع بودم؟
از کجا از چیزها مطلع بودم؟
از کجا از چیزها مطلع بودم؟
از کجا از چیزها مطلع بودم؟
از کجا از چیزها مطلع بودم؟

این سوال مهمی خواهد بود که من فکر می کنم اکثر ذهن شما ممکن است از آن عبور کرده باشد ………

من از دوران تحصیل علاقه زیادی به هوش مصنوعی (AI) دارم ، از این رو من به دنبال منابع زیادی برای مطالعه و توسعه یک مدل به تنهایی بوده ام.

در ابتدا بسیار دشوار بود (شرایط واقعی) همانطور که فهمیدم این یک موضوع بسیار وسیع بود که رسیدگی به آن آسان نیست.

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

  1. هوش مصنوعی رویکردی مدرن
  2. Artificial. Intelligence.in.the.21st. Century.2nd. Edition
  3. یادگیری عمیق

اینها کتابهای بسیار خوبی هستند (بله مطمئنا) اما درک مطالبی که در آن نوشته شده است به هیچ وجه آسان نیست. سپس آن را در کنار خود نگه داشتم و به دنبال منابعی می گردم که یک ایده مختصر در مورد آنچه این واقعا نماینده و راه هایی برای رسیدن به آن است.

سپس من علاقه ای به آن پیدا کردم. از طریق تعطیلات پس از تحصیل ، شروع به یادگیری عمیق تر آن کردم.

در آن زمان زبانهای برنامه نویسی مختلفی (C ++ ، C ، Python ، Java …) را نیز آموختم که بسیار جالب بود.

با مطالعه بیشتر در مورد موضوع ، من یک نکته مهم را درک کردم ………………..

زبانهای برنامه نویسی پایه ای برای هر فرآیند یادگیری ماشین است

یادگیری ماشین فرایند استفاده از هوش مصنوعی است

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

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

شما نیز می توانید این کار را انجام دهید ……

وب سایت های زیادی وجود دارد که به طور رایگان زبان های برنامه نویسی را آموزش می دهند

بنابراین می توانید در اینترنت گشت و گذار کنید تا در صورت تمایل در مورد آن بیشتر بدانید ………

مرحله 3: اجازه دهید ما شروع کنیم

من قبل از شروع به نوشتن دستورالعمل ، فکر کردم چیزی بنویسم که برای آن قابل درک باشد:

  1. افرادی که تجربه برنامه نویسی دارند
  2. افرادی که هیچ سابقه کد نویسی ندارند

بنابراین من فکر می کنم این کار را بدون هیچ گونه اشتباهی انجام داده ام (امیدوارم).

بنابراین تصمیم گرفتم یک ربات چت بسازم که بتواند با کاربر صحبت کند و مطابق صحبت ما پاسخ دهد.

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

بسته به موارد وارد شده ، با تطبیق فرآیند کار می کند ، فقط در موارد نادر یک جمله کامل با یک جمله کامل مطابقت دارد.

مرحله 4: در واقع چگونه کار می کند؟

مرحله 1:

MAX متوجه می شود که آیا کاربر ورودی تهی داده است یا خیر. اگر کاربر به گونه ای ورودی ارائه دهد ، واقعیت را از پایگاه داده ایستا می گیرد تا پاسخ دهد.

اوه ببخشید ……

فراموش کردم بگم ،

پایگاه داده استاتیک: مکانی که پاسخ های داخلی در آن ذخیره می شود. پاسخ هایی مانند:

1. هنگامی که MAX در مورد آنچه که کاربر در مورد آن صحبت می کند نفهمید.

2. هنگامی که کاربر خود را تکرار می کند.

3. برای اظهارات تبریک.

4. هنگامی که کاربر چیزی را تایپ نمی کند و فقط به فشار دادن Enter ادامه می دهد.

کلید واژه: کلمات دارای معنی خاص

گام 2:

برخی از پاسخ های ساخته شده وجود دارد که MAX می تواند به راحتی و به آسانی تشخیص دهد. پس از شناسایی ورودی کاربران ، وجود چنین جمله ای را پیدا می کند و کلمه کلیدی مرتبط را به خاطر می آورد.

مرحله 3:

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

مرحله 4:

از پایگاه داده استاتیک که قبلاً در مورد آن صحبت کرده ایم ، پاسخ را بستگی به آنچه کاربر در مورد آن صحبت کرده است ، دریافت می کند.

مرحله 5:

من نیاز به تغییر کلمات دارم که خود آن را انجام می دهد (مانند تبدیل MY به YOUR و غیره …)

مرحله 5: اجازه دهید کدگذاری کنیم …………

من از Turbo C IDE 3.0 استفاده می کنم زیرا این IDE [محیط توسعه یکپارچه] است

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

MAX کلمات کلیدی خاصی را تشخیص می دهد.

اگر این کلمات کلیدی در ورودی ارائه شده توسط کاربر یافت می شود ، سپس پاسخ مربوطه از فایل داده انتخاب شده و انتخاب و روی صفحه نمایش داده می شود.

یک کلمه کلیدی در فایل داده از پاسخ با کد KWD @ جدا شده است.

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

این توکن نشان می دهد که خط بعدی یک کلمه کلیدی است و نه یک پاسخ.

@ KWD@ سلام

سلام. چطوری

سلام عزیزم !

من خوبم

شغل شما چگونه بود؟

شما چند سال دارید؟

من خواهم

شما نیز چنین خواهید کرد. من هم آن را باور دارم…

آیا می توانید این کار را انجام دهید؟

آیا به من اعتماد خواهی کرد؟

آره

مطمئنی ؟

چگونه می توانید اینقدر مطمئن باشید؟

نه

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

هرگز نگویید نه…

هرگز نگو هرگز

هرگز بی ادب نباشید

هرگز مغرور نشو !!!!

هرگز نگویید من نمی توانم این کار را انجام دهم

هرگز خوشبین نباشید

کامپیوتر

من می دانم چگونه در کامپیوتر کار کنم.

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

به عنوان مثال ، "سلام" ، از دیکشنری فوق ، MAX یکی از پاسخ های زیر را ارائه می دهد:

سلام ، شما چطور هستید عزیز!

من خوبم

شغل شما چگونه بود؟

شما چند سال دارید؟

مرحله ششم: کلاسها

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

ما دو کلاس ایجاد می کنیم:

progstr - این برای ذخیره اطلاعات مربوط به ورودی کاربر استفاده می شود.

resp - این برای ذخیره اطلاعات در مورد پاسخ های مختلف استفاده می شود

پیشرفت کلاس {

عمومی:

کاربر کاربر [MAX_USER_INPUT] ؛

کلید واژه char [30]؛

int keyfound ؛

int keyno؛

int nullip؛

// سازنده

progstr () {keyno = -1؛ nullip = 0؛ keyfound = 0؛

}

} ip؛

پاسخ کلاس

{

int tot_resp؛

int last_resp؛

پاسخ های char [MAX_RESP_NO] [MAX_RESP_LEN] ؛

کلمه char [MAX_KWD_LEN] ؛

عمومی:

// سازنده

پاسخ ()

{

tot_resp = 0؛

last_resp = -1؛

}

int getcount ()

{

بازگشت last_resp؛

}

کلمه اضافی باطل (خط شار [MAX_KWD_LEN])

{

strcpy (word ، str) ؛

}

char * getword ()

{

کلمه بازگشت ؛

}

void addresp (خط شار [MAX_RESP_LEN])

{

strcpy (پاسخ [++ last_resp] ، str) ؛

}

// بعداً تعریف شد

void display_resp (int num)؛

void quit_display_resp (int num)؛

};

با نگاهی به کلاس اول ،

آرایه کاربری userip برای ذخیره جمله ارائه شده توسط کاربر استفاده می شود.

کلمه کلیدی آرایه دیگری برای ذخیره کلمه کلیدی ، در صورت وجود ، در آن ورودی استفاده می شود. اگر یک کلمه کلیدی پیدا شود ، int را keyfound می کنیم تا 1 مورد دیگر ، 0 باقی می ماند ، زیرا در سازنده به 0 مقدار اولیه شده است.

keyno شماره کلید مربوطه کلید واژه مربوطه را ذخیره می کند.

nullip نشان می دهد که آیا کاربر ورودی Null داده است ، یعنی فقط Enter را فشار می دهد بدون اینکه کار دیگری انجام دهد.

حالا اجازه دهید به کلاس دوم برسیم ، پاسخ.

اولین عضو داده ، tot_resp تعداد پاسخ های کل کلمه کلیدی مشخص شده را نشان می دهد.

پاسخها در واقع در پاسخها [MAX_RESP_NO] [MAX_RESP_LEN] ذخیره می شوند و کلمه کلیدی مربوطه در کلمه آرایه ذخیره می شود.

سازنده: این برای مقداردهی اولیه تعداد کل پاسخ ها به 0 استفاده می شود. چرا last_resp به -1 تنظیم می شود وقتی به تابع add_resp نگاه کنید مشخص می شود.

int getcount ():

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

کلمه اضافی باطل (خط شار [MAX_KWD_LEN]):

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

char * getword ():

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

void addresp (…):

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

void display_resp (int):

این برای نمایش پاسخ به کاربر که مربوط به یک شماره شاخص معین برای پاسخ ها است ، استفاده می شود. (در واقع بیشتر از این کار می کند!).

void quit_display_resp (int):

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

مرحله 7: توابع

void initialize_global ()

{

strcpy (wordin [0] ، "ARE") ؛

strcpy (wordout [0] ، "AM") ؛

strcpy (wordin [1] ، "AM") ؛

strcpy (wordout [1] ، "ARE") ؛

strcpy (wordin [2] ، "WERE") ؛

strcpy (wordout [2] ، "WAS") ؛

strcpy (wordin [3] ، "WAS") ؛

strcpy (wordout [3] ، "WERE") ؛

strcpy (wordin [4] ، "YOU") ؛

strcpy (wordout [4] ، "ME") ؛

strcpy (wordin [5] ، "I") ؛

strcpy (wordout [5] ، "YOU") ؛

strcpy (wordin [6] ، "YOUR") ؛

strcpy (wordout [6] ، "MY") ؛

strcpy (wordin [7] ، "MY") ؛

strcpy (wordout [7] ، "YOUR") ؛

strcpy (wordin [8] ، "IVE") ؛

strcpy (wordout [8] ، "YOU'VE") ؛

strcpy (wordin [9] ، "YOU'VE") ؛

strcpy (wordout [9] ، "IVE") ؛

strcpy (wordin [10] ، "I'm") ؛

strcpy (wordout [10] ، "YOU'RE") ؛

strcpy (wordin [11] ، "YOU'RE") ؛

strcpy (wordout [11] ، "I'm") ؛

strcpy (wordin [12] ، "ME") ؛

strcpy (wordout [12] ، "YOU") ؛

strcpy (wordin [13] ، "YOU") ؛

strcpy (wordout [13] ، "ME") ؛

}

اجازه دهید اکنون یک تابع برای نمایش پاسخ ها به کاربر بنویسیم. اولین جمله if در حلقه for برای ایجاد یک اشتباه تایپ عمدی استفاده می شود تا بیشتر شبیه انسان شود ؛-). یک کاراکتر به طور تصادفی برای خطای تایپ انتخاب می شود. موارد خاصی مانند New Line و Backspace جداگانه در نظر گرفته می شوند. (فکر کنید چرا؟). حالا چیز جدیدی را معرفی می کنم. یک شخصیت خاص - *. Char * نشان دهنده تمام متن یافت شده پس از کلید واژه مشخص شده و قبل از یکی از علائم نگارشی زیر است.

به عنوان مثال ، ورودی کاربر را در نظر بگیرید

AMIT> آیا می توانم فردا به داخل کشور بروم؟

MAX> اگر فردا به INDORE نروید چه؟

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

ایا می تونم

اگر نمی کنید *

Star (*) از برنامه می خواهد که به سادگی هر چیزی که بعد از کلمه کلیدی (در اینجا CAN I) تایپ می شود را در ورودی کاربر ، همانطور که هست ، کپی کند. امیدوارم در حال حاضر عملکرد * به عنوان کلمه کلیدی خاص مشخص باشد. بنابراین ، اجازه دهید یک مورد پیچیده تر را در نظر بگیریم.

AMIT> آیا می توانم به خرید بروم؟

MAX> اگر به خرید نمی روید؟

ما همچنین باید تغییراتی را انجام دهیم. وقتی به تغییر فکر می کنیم ، جمله به 3 بخش زیر تقسیم می شود:

  • متن قبل از انتقال کلمه (در اینجا ، به SHOPPING با)
  • کلمه کلیدی Transposed (اینجا ، شما ، به جای من)
  • کلید واژه Text After Transposition. (اینجا ، من؟)

مرحله 8: موارد را می توان با ………

مرحله 9: جستجوی یک کلمه کلیدی در ورودی کاربر

MAX_KEY تعداد کلمات کلیدی در فایل DAT را نشان می دهد.

ما در اینجا به سادگی جستجو می کنیم که آیا کلمه کلیدی در ورودی کاربر وجود دارد یا خیر.

مرحله 10: نتیجه گیری

این همه ………

تو انجامش دادی !!!!!!!

من فکر می کنم همه چیز را به وضوح درک کرده اند ……

توصیه شده: