Բովանդակություն:

Ձայնի ակտիվացված օգնական - MAX ՝ 10 քայլ
Ձայնի ակտիվացված օգնական - MAX ՝ 10 քայլ

Video: Ձայնի ակտիվացված օգնական - MAX ՝ 10 քայլ

Video: Ձայնի ակտիվացված օգնական - MAX ՝ 10 քայլ
Video: Ինչպես միացնել iphone-ի թարթող լույսը զանգի ժամանակ // Как включить вспышку при звонках 2024, Հուլիսի
Anonim
Ձայնի ակտիվացված օգնական - MAX
Ձայնի ակտիվացված օգնական - MAX

Հեյ, այս Ուղեցույցում ես խոսելու եմ այն մասին, թե ինչպես կարելի է ստեղծել չաթ-բոտ MAX (անունս ինքս եմ !!!)

Որոշակի կիրառումով դուք կարող եք վերահսկել այս chatbot ձայնը կամ տարբեր ծրագրակազմի օգտագործմամբ այն դարձնել որպես ձայնային օգնական: Ես այստեղ չեմ պատրաստվում խոսել դրա մասին, քանի որ յուրաքանչյուրն անկեղծորեն կարող է հեշտությամբ կատարել այս իրականացումը:

Բոլորը խնդրում եմ աջակցել ինձ ……

Իմ առաջին հրահանգը !!!!!!!

Նյարդային զգացողություն այն մասին, թե ինչ է տեղի ունենալու …………….

Քայլ 1: Իմանալով մրցույթի մասին

Իմանալով մրցույթի մասին
Իմանալով մրցույթի մասին
Իմանալով մրցույթի մասին
Իմանալով մրցույթի մասին

Բարև ինժեներներ և դիզայներներ ……..

Ես ինքս համակարգչային գիտության ուսանող եմ սիրում խաղալ խաղեր և միշտ ոգեշնչված եմ համակարգիչներով: Հակիրճ խոսելով ՝ ես սիրում եմ իմանալ, թե ինչպես են աշխատում այս բոլոր իրերը: Այսպիսով, որպես պատճառ, ես շարունակում էի փնտրել, googling (ինֆեկտ, ես օգտագործում էի նաև Yahoo !!! !!!) իրերը որոնելու և սովորելու համար:

Այսպիսով, մի օր եկա Instructables- ի էկրանին: Դա իսկապես զվարճացրեց ինձ տարբեր նախագծերի միջոցով ՝ տարբեր ասպեկտներով տարբեր գաղափարներով: Հետո այդ օրվանից ես հետևում եմ դրան: Մրցույթի էջն ինձ իսկապես զվարճացրեց թե՛ մրցանակներով, թե՛ նախագծերով, որոնք ներկայացվել էին տարբեր մարդկանց կողմից աշխարհը:

VOICE ACTIVED CHALLENGE- ը իմ առաջին հարթակն է `Instructable գրելու առումով:

Մրցանակներն ինձ շատ զվարճացրին (Այո !!! Չափից շատ ……..):

Նաև ցանկանում եմ իմ գիտելիքները փոխանցել Համակարգիչների և դրա տեխնոլոգիայի ոլորտում ուրիշներին, թե ինչպես են տարբեր բաներ իրականում աշխատում:

Այս Instructable- ում ես ձեզ ցույց եմ տալիս, թե ինչպես կառուցել ձեր սեփական ձայնային ակտիվացված օգնականը:

Քանի որ դա իմ առաջին հրահանգն է, հնարավոր է, որ շատ սխալներ լինեն (չնայած ես կարծում եմ, որ դրանք բոլորը շտկված են), ուստի ներեք դրա համար:

Ո SOրեմն…

Եկեք սկսենք ճանապարհորդությունը ……………………

Քայլ 2. Որտեղի՞ց գիտեի իրերի մասին:

Որտեղի՞ց գիտեի իրերի մասին
Որտեղի՞ց գիտեի իրերի մասին
Որտեղի՞ց գիտեի իրերի մասին
Որտեղի՞ց գիտեի իրերի մասին
Որտեղի՞ց գիտեի իրերի մասին
Որտեղի՞ց գիտեի իրերի մասին

Սա, կարծում եմ, կլինի հիմնական հարցը, որը կարող է անցնել ձեր մտքերի մեծ մասի միջով ………

Ես արհեստական ինտելեկտի [ԱԻ] նկատմամբ մեծ կիրք ունեմ իմ դպրոցական տարիքից, որից ես շատ եմ փնտրել ռեսուրսներ փնտրելու և ինքնուրույն մոդել մշակելու համար:

Սկզբում դա շատ դժվար էր (իսկական վիճակ), քանի որ ես հասկացա, որ դա շատ ընդարձակ թեմա էր, որն ամենևին էլ հեշտ չէ կարգավորել:

Դիտված գրքերը ներառում են.

  1. Արհեստական բանականությունը ժամանակակից մոտեցում է
  2. Artificial. Intelligence.in.the.21st. Century.2nd. Sedition
  3. Խորը ուսուցում

Սրանք շատ լավ գրքեր են (այո, անշուշտ), բայց ամենևին էլ հեշտ չէ հասկանալ այն, ինչ գրված է դրա վրա: Հետո ես այն մի կողմ դրեցի և շարունակեցի փնտրել այն ռեսուրսները, որոնք կարճ պատկերացում են տալիս, թե ինչ այն իսկապես ներկայացնում է և դրան հասնելու ուղիներ:

Հետո ես հետաքրքրություն գտա դրա մեջ: Դպրոցից հետո արձակուրդի ընթացքում ես սկսեցի ավելի խորը սովորել դրա մասին:

Այդ ժամանակ ես սովորեցի նաև ծրագրավորման տարբեր լեզուներ (C ++, C, Python, Java…), որոնք չափազանց հետաքրքիր էին:

Թեմայի մասին ավելի շատ կարդալուց ես հասկացա մի կարևոր բան ………………..

Theրագրավորման լեզուները ամեն մեքենայի ուսուցման գործընթացի հիմքն են:

Մեքենայական ուսուցումը AI- ի կիրառման գործընթացն է:

Understandingրագրավորման լեզուների և տարբեր բաների գերազանց իմացությամբ, որոնք կարող են կատարվել ՝ կախված ծրագրավորողից ՝ համակարգիչ պատրաստելու համար ՝ մեզ համար ամեն ինչ անելու համար:

Այսպիսով, ես որոշեցի լավ հիմք ստեղծել այն լեզուների վրա, որոնք ինձ ստիպեցին հասկանալ գրքի վրա արդեն նշածս հասկացությունները:

Դուք նույնպես կարող եք դա անել ………

Soանցում այնքան շատ կայքեր կան, որոնք ծրագրավորման լեզուներ անվճար սովորեցնում են:

Soանկության դեպքում կարող եք նավարկել ինտերնետով ՝ դրա մասին ավելի շատ հասկանալու համար ………

Քայլ 3: Եկեք սկսենք

Նախքան Instructable- ի մասին գրելն սկսելը, ես մտածեցի գրել այնպիսի բան, որը հասկանալի լինի.

  1. Մարդիկ, ովքեր ունեն կոդավորման փորձ
  2. Մարդիկ ՝ առանց որևէ կոդավորման նախապատմության

Այսպիսով, ես կարծում եմ, որ ես դա արել եմ առանց որևէ սխալի (հուսանք):

Այսպիսով, ես որոշեցի կառուցել զրուցարան բոտ, որը կարող է խոսել օգտվողի հետ և կարող է արձագանքել ըստ մեր զրույցի:

(Րագիրը (հրահանգների փաթեթ) չի կարող ինքնուրույն մտածել: Այն ունի փաստերի և կանոնների տվյալների շտեմարան (այն վայրը, որտեղ տվյալները պահվում են), որոնք որոնվում են խոսակցության պահին ՝ օգտվողի հետ կապված հնարավորինս լավագույն պատասխանը տալու համար:

Այն աշխատում է համապատասխանեցման գործընթացով ՝ կախված մուտքագրված իրերից, միայն հազվադեպ դեպքերում է մի ամբողջ նախադասություն համընկնում ամբողջական նախադասության հետ:

Քայլ 4: Ինչպե՞ս է այն իրականում աշխատում:

Քայլ 1:

MAX- ը պարզում է, արդյոք օգտագործողը որևէ անվավեր մուտքագրում կատարե՞լ է: Եթե օգտագործողը, երբ մուտքագրում է մուտքագրումը նման եղանակով, ապա ստատիկ տվյալների շտեմարանից փաստը վերցնում է արձագանքելու համար:

ՕՀ, կներեք ……

Մոռացա ասել,

Ստատիկ տվյալների շտեմարան. Տեղ, որտեղ պահվում են ներկառուցված պատասխանները: Պատասխաններ, ինչպիսիք են ՝

1. Երբ MAX- ը չի հասկանում, թե ինչի մասին է խոսում օգտվողը:

2. Երբ օգտագործողը կրկնում է իրեն:

3. Ողջույնի հայտարարությունների համար:

4. Երբ օգտվողը ոչինչ չի գրում և պարզապես շարունակում է սեղմել Enter:

Հիմնաբառ ՝ հատուկ նշանակություն ունեցող բառեր:

Քայլ 2:

Կան որոշ ներկառուցված պատասխաններ, որոնք MAX- ը կարող է հեշտությամբ և հեշտությամբ ճանաչել: Այն գտնում է ցանկացած նման նախադասության առկայությունը օգտվողների մուտքը նույնականացնելուց հետո և հիշում է դրա հետ կապված հիմնաբառը:

Քայլ 3:

Եթե ներկառուցված նախադասություն չի գտնվում նույնիսկ տվյալ նախադասության մասնատումից հետո, ապա MAX- ը որոնում է կոնկրետ հիմնաբառ `համատեքստը սահմանելու համար: Եթե ենթատեքստ չի հայտնաբերվում, ապա հաջորդ նպատակն է ստիպել օգտվողին թեմայի մասին ավելի դիտավորյալ խոսել հատուկ ձևով:

Քայլ 4:

Ստատիկ տվյալների շտեմարանից, որի մասին մենք արդեն խոսել ենք, այն կստանա պատասխանը, որը կախված է այն բանից, թե ինչի մասին է օգտվողը խոսել:

Քայլ 5:

Ես կարիք ունեմ բառերը փոխելու, դա ինքը կանի (օրինակ ՝ իմի փոխարկումը ձերին և այլն …):

Քայլ 5: Եկեք ծածկագրենք …………

Ես օգտագործում եմ Turbo C IDE 3.0, քանի որ սա IDE- ն է [Ինտեգրված զարգացման միջավայր]

Նախքան կոդավորումը, եկեք տեսնենք ընտրանքային տվյալների ֆայլի կառուցվածքը:

MAX- ը ճանաչում է որոշակի հիմնաբառեր:

Եթե այս հիմնաբառերը գտնվում են օգտագործողի կողմից տրամադրվող մուտքի մեջ, ապա տվյալների ֆայլից ընտրվում է համապատասխան պատասխան և ընտրվում և ցուցադրվում է էկրանին:

Տվյալների ֆայլում հիմնաբառ առանձնացված է @ KWD @ թոքենի պատասխաններից:

Token- ը ծրագրավորման յուրաքանչյուր ասպեկտի ամենափոքր մասն է:

Այս նշանը նշանակում է, որ հաջորդ տողը հիմնաբառ է և ոչ թե պատասխան:

@ KWD@ ԲԱՐԵՎ

ԲԱՐԵՒ ԻՆՉՊԵՍ ԵՍ

ԲԱՐԵՒ, ՍԻՐԵԼԻՍ !

ԵՍ ԼԱՎ ԵՄ

ԻՆՉՊԵՍ ԷՐ ՁԵՐ ԱՇԽԱՏԱՆՔԸ:

ՔԱՆԻ ՏԱՐԵԿԱՆ ԵՍ?

ԿԼԻՆԵՄ

ԱՅՍՊԵՍ ԿԿԱՆՔ. Ես էլ եմ դրան հավատում…

ԿԱՐՈ ԵՍ ԱՅԼ ԱՌԵԼ

Կհավատա՞ս ինձ:

ԱՅՈ

ՀԱՄՈԶՎԱԾ ԵՍ ?

ԻՆՉՊԵ՞Ս ԿԱՐՈ ԵՍ ԱՅՍՊԵՍ Վստահ լինել:

ՈՉ

Թվում է, թե դու շատ հոռետես ես:

ԵՐԲԵՔ ԱՍԵԼ ՈՉ…

ԵՐԲԵՔ ՄԻ ԱՍԱ ԵՐԲԵՔ

ԵՐԲԵՔ ԿԱՐԴԻ ՉԵՍ

ԵՐԲԵՔ Մի՛ եղիր ամբարտավան !!!!

ԵՐԲԵՔ Չասեմ, որ սա չեմ կարող անել

ԵՐԲԵՔ ԼԱՎԱԳՈՅՆ չլինեք

ՀԱՄԱԿԱՐԳՉԱՅԻՆ

ԳԻՏԵՄ ԻՆՉՊԵՍ ԱՇԽԱՏԵԼ ՀԱՄԱԿԱՐԳՉԱՅԻՆ.

ԴՈ CՔ ԱՌԱԻՆ ՕԳՏԱԳՈՐՈՄ ԵՔ ՀԱՄԱԿԱՐԳՉԱՅԻՆ: ՃԻՇՏ ?

Օրինակ ՝ «Բարև», վերը նշված բառարանից MAX- ը կտա հետևյալ պատասխաններից մեկը.

ԱI, ԻՆՉՊԵՍ ԵՍ ԲԱՐԵԿԱԱ DE սիրելիս:

ԵՍ ԼԱՎ ԵՄ

ԻՆՉՊԵՍ ԷՐ ՁԵՐ ԱՇԽԱՏԱՆՔԸ:

ՔԱՆԻ ՏԱՐԵԿԱՆ ԵՍ?

Քայլ 6: Դասընթացներ

Երբ այս բանը պարզ է, եկեք այժմ սահմանենք տվյալների կառուցվածքները, որոնք մենք կօգտագործենք:

Մենք ստեղծում ենք երկու դաս.

progstr - Սա օգտագործվում է օգտագործողի մուտքի հետ կապված տեղեկատվությունը պահելու համար:

resp - Սա օգտագործվում է տարբեր պատասխանների վերաբերյալ տեղեկատվությունը պահելու համար

դասի առաջընթաց {

հանրային:

char օգտվող [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];

չար բառ [MAX_KWD_LEN];

հանրային:

// կոնստրուկտոր

պատասխան ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

վերադարձ last_resp;

}

անվավեր հավելում (նշանի փող [MAX_KWD_LEN])

{

strcpy (բառ, փող);

}

char * getword ()

{

վերադարձ բառ;

}

անվավեր լրացում (նշանի փող [MAX_RESP_LEN])

{

strcpy (պատասխանում է [++ last_resp], փող);

}

// որոշվել է ավելի ուշ

void display_resp (int num);

անվավեր quit_display_resp (int num);

};

Նայելով առաջին դասին, Նիշերի զանգվածի օգտագործողը օգտագործվում է օգտագործողի կողմից տրամադրված նախադասությունը պահելու համար:

Մեկ այլ զանգվածային հիմնաբառ օգտագործվում է այդ մուտքում գտնված հիմնաբառի պահպանման համար, եթե այդպիսիք կան: Եթե հիմնաբառ է գտնվել, մենք int- ն ենք keyfound մեկ այլի համար, այն մնում է 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 display_resp (int):

Սա օգտագործվում է պատասխանի համար տրված ինդեքսի համարին համապատասխանող պատասխանը օգտագործողին ցուցադրելու համար: (իրականում դա ավելին է անում, քան դա):

դատարկ 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], «ԴՈ»);

strcpy (wordout [4], «ME»);

strcpy (wordin [5], «I»);

strcpy (wordout [5], «YOU»);

strcpy (wordin [6], «ՁԵՐ»);

strcpy (wordout [6], «ԻՄ»);

strcpy (wordin [7], «ԻՄ»);

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], «Ես եմ»);

strcpy (wordout [10], «YOU'RE»);

strcpy (wordin [11], «ԴՈ'»);

strcpy (wordout [11], «Ես եմ»);

strcpy (wordin [12], «ME»);

strcpy (wordout [12], «YOU»);

strcpy (wordin [13], «ԴՈ»);

strcpy (wordout [13], «ME»);

}

Եկեք հիմա գրենք պատասխաններ օգտագործողին ցուցադրելու համար: Առաջին if հայտարարությունը for loop- ում օգտագործվում է դիտավորյալ մուտքագրման սխալ թույլ տալու համար, որպեսզի այն ավելի մարդկային տեսք ունենա;-): Մուտքագրման սխալի համար պատահականորեն ընտրվում է մեկ նիշ: Առանձին դիտարկվում են հատուկ դեպքեր, ինչպիսիք են New Line- ը և Backspace- ը: (Մտածեք ինչու): Հիմա նոր բան եմ ներկայացնում: Հատուկ կերպար - *. Char * - ը ներկայացնում է հայտնաբերված հիմնաբառից հետո գտնված ամբողջ տեքստը և հետևյալ կետադրական նշաններից մեկից առաջ:

Օրինակ, հաշվի առեք օգտագործողի մուտքը

AMIT> ԿԱՐՈ Ե՞Ք ՎԱOMԸ ԳՆԵԼ:

MAX> Ի՞ՆՉ ԵԹԵ ՎԱORԸ ՉԵՔ ԳՆԵԼ:

Ընդգծված հատվածը չի պահվում բառարանում, այլ վերցված է օգտվողի մուտքից: MAX. Dat ֆայլում մենք պահում ենք այս տեղեկատվությունը որպես

ԿԱՐՈՂ ԵՄ

ԻՆՉ ԵԹԵ ՉԵՔ *

Աստղը (*) խնդրում է ծրագրին պարզապես պատճենել այն, ինչ մուտքագրվում է օգտագործողի մուտքի հիմնաբառից հետո (այստեղ ԿԱՐՈ Է), ինչպես որ այն կա: Հուսով եմ, որ այժմ * որպես հատուկ հիմնաբառ գործառույթը պարզ է: Այսպիսով, եկեք դիտարկենք ավելի բարդ դեպք:

AMIT> ԿԱՐՈ ԵՄ ԳՆԵԼ ԳՆՈՄ:

ՄԱՔՍ> Ի՞ՆՉ ԵԹԵ ՉԵՍ ԳՆՈՄ

Մենք նույնպես պետք է որոշակի վերափոխում կատարենք: Երբ մտածում ենք փոխակերպման մասին, նախադասությունը բաժանվում է հետևյալ 3 բաժինների.

  • Տեքստը բառի փոխադրումից առաջ: (այստեղ, ԳՆԵԼ ԳՆՈՄ)
  • Տեղափոխված հիմնաբառ: (այստեղ ՝ ՁԵՐ, ԻՄ -ի փոխարեն)
  • Տեքստ փոխադրումից հետո հիմնաբառ: (այստեղ, ես՞)

Քայլ 8: Գործերը կարող են լուծվել մինչև ………

Քայլ 9. Օգտվողի ներածման մեջ հիմնաբառ որոնելը

MAX_KEY- ը ցույց է տալիս DAT ֆայլում հիմնաբառերի քանակը:

Մենք այստեղ պարզապես որոնում ենք, թե արդյոք հիմնաբառը առկա է Օգտվողի ներածման մեջ:

Քայլ 10: Եզրակացություն

Այսքանը ………

Դուք դա արել եք !!!!!!!

Կարծում եմ, որ բոլորը հստակորեն հասկանում էին իրերը ……

Խորհուրդ ենք տալիս: