Мазмұны:

Дауысты белсендірілген көмекші - MAX: 10 қадам
Дауысты белсендірілген көмекші - MAX: 10 қадам

Бейне: Дауысты белсендірілген көмекші - MAX: 10 қадам

Бейне: Дауысты белсендірілген көмекші - MAX: 10 қадам
Бейне: Голубая стрела (1958) фильм 2024, Шілде
Anonim
Дауысты белсендірілген көмекші - MAX
Дауысты белсендірілген көмекші - MAX

Эй, бұл нұсқаулықта мен MAX чат-ботын қалай жасау керектігі туралы айтатын боламын (есімім !!!)

Кейбір енгізу арқылы сіз бұл чатботты дауысты басқара аласыз немесе әр түрлі бағдарламалық қамтамасыз етуді қолдана отырып, оны дауыстық көмекші ретінде жасай аласыз. Мен бұл жерде бұл туралы айтқым келмейді, өйткені әркім бұл бағдарламаны шынымен оңай жасай алады.

Сондықтан баршаңыз мені қолдауларыңызды сұраймын. …

Менің бірінші нұсқаулық !!!!!!!

Не болатынын жүйке сезімі сезінеді …………….

1 -қадам: Байқау туралы білу

Байқау туралы білу
Байқау туралы білу
Байқау туралы білу
Байқау туралы білу

Сәлем инженерлер мен дизайнерлер …….

Мен өзім информатика пәнінің студенті ойынды жақсы көремін және әрқашан компьютерде шабыттанамын. Қысқаша әңгімелесу мен осы заттардың қалай жұмыс істейтінін білуді ұнатамын, сондықтан мен іздеуді жалғастыра бердім, гуглинг (мен Yahoo -ды бұрын қолданғанмын !!! !!!) заттарды іздеуге және үйренуге арналған.

Бір күні мен Instructables экранының алдына келдім. Бұл мені әр түрлі жобалар арқылы әр түрлі идеялармен қуантты, содан кейін мен оны үнемі қадағалап отырамын. Байқау беті мені сыйлықтармен де, әр түрлі адамдар ұсынған жобалармен де қызықтырды. әлем

VOICE ACTIVATED CHALLENGE - бұл нұсқаулықты жазудағы менің алғашқы алаңым.

Сыйлықтар мені қатты қызықтырды (Ия !!! Тым көп ……..).

Сонымен қатар, мен компьютерлер мен олардың технологиясы саласындағы өз білімімді басқалармен әр түрлі заттардың қалай жұмыс істейтіні туралы бөліскім келеді.

Бұл нұсқаулықта мен сізге дауыспен қосылатын көмекшіні қалай құруға болатынын көрсетемін.

Бұл менің бірінші нұсқаулығым болғандықтан, көптеген қателіктер болуы мүмкін (менің ойымша, бәрі түзетілген деп ойлаймын), сондықтан кешіріңіз.

СОНДЫҚ …

Саяхаттан бастайық ……………

2 -қадам: Мен заттар туралы қайдан білдім?

Мен заттар туралы қайдан білдім?
Мен заттар туралы қайдан білдім?
Мен заттар туралы қайдан білдім?
Мен заттар туралы қайдан білдім?
Мен заттар туралы қайдан білдім?
Мен заттар туралы қайдан білдім?

Менің ойымша, бұл сіздің басты мәселеңіз болуы мүмкін басты сұрақ.

Мен жасанды интеллектке деген қызығушылығым жоғары, сондықтан мен өз бетімше модельді әзірлеу үшін ресурстарды іздедім.

Бастапқыда бұл өте қиын (шынайы жағдай), мен түсіндім, бұл өте кең тақырып, оны өңдеу оңай емес.

Қаралған кітаптарға мыналар кіреді:

  1. Жасанды интеллект заманауи тәсіл
  2. Жасанды. Интеллект 21 -ші ғасырда.2 -ші басылымда
  3. Терең оқыту

Бұл өте жақсы кітаптар (иә, әрине), бірақ онда жазылған нәрсені түсіну оңай емес, содан кейін мен оны бір жақта ұстадым және не туралы қысқаша түсінік беретін ресурстарды іздеуді жалғастырдым. бұл шын мәнінде және оған жетудің жолдары.

Содан кейін мен оған қызығушылық таптым. Мектептен кейінгі демалыста мен бұл туралы тереңірек біле бастадым.

Сол кезде мен әр түрлі бағдарламалау тілдерін үйрендім (C ++, C, Python, Java ….), бұл өте қызықты.

Тақырып бойынша көбірек оқығанда мен бір маңызды нәрсені түсіндім ………………..

Бағдарламалау тілдері - әрбір машинаны үйрену процесінің негізі

Машиналық оқыту - бұл AI қолдану процесі

Бағдарламалау тілдері мен әр түрлі нәрселер туралы өте жақсы түсінікпен, біз үшін бәрін жасай алатын компьютерді жасау үшін бағдарламашыға байланысты.

Сондықтан мен жоғарыда аталған кітапта берілген ұғымдарды түсінуге мүмкіндік беретін тілдерге жақсы негіз құруды шештім

Сіз де осылай жасай аласыз ……

Интернетте бағдарламалау тілдерін еркін үйрететін көптеген веб -сайттар бар

Егер сіз қаласаңыз, бұл туралы көбірек білу үшін Интернетті аралай аласыз ……

3 -қадам: бастайық

Нұсқауды жазуды бастамас бұрын мен түсінетін нәрсені жазуды ойладым:

  1. Кодтау тәжірибесі бар адамдар
  2. Ешқандай кодтық фоны жоқ адамдар

Сондықтан мен бұл жұмысты қатесіз жасадым деп ойлаймын (үміттенемін).

Сондықтан мен қолданушымен сөйлесе алатын және біздің әңгімемізге сәйкес жауап бере алатын чат -бот құруды шештім.

Бағдарлама (нұсқаулар жиынтығы) өздігінен ойлана алмайды. Онда деректер мен ережелер туралы мәліметтер базасы (деректер сақталатын орын) бар, олар қолданушыға байланысты жауап беретін ең жақсы жауап беру үшін сөйлесу кезінде ізделеді.

Ол енгізілген нәрсеге байланысты сәйкестендіру арқылы жұмыс істейді, тек сирек жағдайларда толық сөйлем толық сөйлемге сәйкес келеді.

4 -қадам: Бұл іс жүзінде қалай жұмыс істейді?

1 -қадам:

MAX қолданушы нөлдік кіріс енгізгенін біледі. Егер пайдаланушы енгізуді осылайша енгізген болса, оған жауап беру үшін статикалық дерекқордан фактіні алады.

Кешіріңіз ……

Мен айтуды ұмытып кеттім,

Статикалық мәліметтер базасы: кірістірілген жауаптар сақталатын орын. Мынадай жауаптар:

1. MAX қолданушы не туралы айтып отырғанын түсінбесе.

2. Қолданушы өзін қайталаған кезде.

3. Сәлемдесу мәлімдемелері үшін.

4. Пайдаланушы ештеңе жазбай, Enter пернесін басуды жалғастыра бергенде.

Кілт сөз: ерекше мағынасы бар сөздер.

2 -қадам:

Кейбір жауаптар бар, оларды MAX оңай және оңай тани алады. Ол пайдаланушылардың енгізуін анықтағаннан кейін осындай сөйлемнің болуын табады және байланысты кілт сөзді есте сақтайды.

3 -қадам:

Егер берілген сөйлемді бөлгеннен кейін де кіріктірілген сөйлем табылмаса, онда MAX контексті анықтау үшін арнайы кілт сөзді іздейді. Егер контекст табылмаса, онда келесі мақсат - пайдаланушыны тақырып бойынша нақты түрде әдейі сөйлеуге мәжбүрлеу.

4 -қадам:

Біз сөйлескен статикалық деректер қорынан ол пайдаланушы не туралы сөйлескеніне байланысты жауапты алады.

5 -қадам:

Мен сөздерді өзгертуді қажет етеді (мысалы, MY -ді СІЗГЕ түрлендіру және т.б.).

5 -қадам: бізге код беріңіз …………

Мен Turbo C IDE 3.0 қолданамын, себебі бұл IDE [Біріктірілген даму ортасы]

Кодтау алдында деректер файлының үлгісін көрейік.

MAX белгілі бір кілт сөздерді таниды.

Егер бұл кілт сөздер пайдаланушы ұсынатын кірістен табылса, онда деректер файлынан сәйкес жауап таңдалып алынады және экранда көрсетіледі.

Деректер файлында жауаптардан @ KWD @ белгісі арқылы кілт сөз бөлінеді.

Токен - бағдарламалаудың барлық аспектілерінің ең кіші бөлігі.

Бұл таңба келесі жолды жауап емес, кілт сөз екенін білдіреді.

@ KWD@ Сәлем

СӘЛЕМ ҚАЛАЙСЫҢ

СӘЛЕМ ҚЫМБАТТЫМ !

МЕН ЖАҚСЫМЫН

ЖҰМЫСЫҢЫЗ ҚАЛАЙ БОЛДЫ?

СЕН ҚАНША ЖАСТАСЫҢ?

МЕН БОЛАМЫН

СЕН ОСЫЛАЙМЫН. МЕН СЕНЕМІН …

Сіз осылай жасай аласыз ба?

Маған сенесіз бе?

ИӘ

СІЗ СЕНІМДІСІЗ БЕ ?

ҚАЛАЙ СЕНІМДІ бола аласың?

ЖОҚ

Сіз өте пессимист болып көрінесіз.

ЕШҚАШАН ЖОҚ деме …

ЕШҚАШАН ЕШҚАШАН ДЕП АЙТПА

ЕШҚАШАН АДАМ БОЛМАҢЫЗ

ЕШҚАШАН МАҚТАНБАҢЫЗ !!!!

ЕШҚАШАН Осыны істей алмаймын деп айтпа

ЕШҚАШАН ОПТИМИСТ болмаңыз

КОМПЬЮТЕР

Мен компьютерде қалай жұмыс істеу керектігін білемін.

Сіз қазіргі уақытта компьютерді қолданасыз. ДҰРЫС?

Мысалы, 'Сәлем', жоғарыдағы сөздіктен MAX келесі жауаптардың бірін береді:

Сәлем, ҚАЛАЙЫҢ ҚАЛАЙЫН ҚҰРМЕТТІМ!

МЕН ЖАҚСЫМЫН

ЖҰМЫСЫҢЫЗ ҚАЛАЙ БОЛДЫ?

СЕН ҚАНША ЖАСТАСЫҢ?

6 -қадам: Сыныптар

Бұл түсінікті болғаннан кейін, енді біз қолданатын деректер құрылымын анықтайық.

Біз екі сынып құрамыз:

progstr - Бұл пайдаланушының енгізуге қатысты ақпаратын сақтау үшін қолданылады.

resp - Бұл әр түрлі жауаптар туралы ақпаратты сақтау үшін қолданылады

класс прогстр {

қоғамдық:

char userip [MAX_USER_INPUT];

char кілт сөзі [30];

int keyound;

int keyno;

int nullip;

// конструктор

progstr () {keyno = -1; nullip = 0; кілт = 0;

}

} ip;

сынып респ

{

int tot_resp;

int last_resp;

char жауаптары [MAX_RESP_NO] [MAX_RESP_LEN];

char сөзі [MAX_KWD_LEN];

қоғамдық:

// конструктор

resp ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

last_resp қайтару;

}

жарамсыз сөз (char str [MAX_KWD_LEN])

{

strcpy (сөз, str);

}

char * getword ()

{

қайтару сөзі;

}

жарамсыз addresp (char str [MAX_RESP_LEN])

{

strcpy (жауаптар [++ last_resp], str);

}

// кейін анықталды

жарамсыз display_resp (int num);

жарамсыз quit_display_resp (int num);

};

Бірінші сыныпқа қарап, Userip таңбалар жиыны пайдаланушы ұсынған сөйлемді сақтау үшін қолданылады.

Басқа кірістірілген кілт сөзді, егер бар болса, сақтау үшін басқа массив кілт сөзі қолданылады. Егер кілт сөз табылса, біз Int 1 -ді 1 -ге жасаймыз, ол 0 болып қалады, себебі ол конструкторда 0 -ге инициализацияланған.

keyno сәйкес кілт сөздің сәйкес нөмірін сақтайды.

nullip пайдаланушының Null енгізгенін көрсетеді, яғни ол ештеңе жасамай enter пернесін басады.

Енді екінші сыныпқа келейік, респ.

Бірінші деректер мүшесі, tot_resp берілген кілт сөз үшін жалпы жауаптардың санын көрсетеді.

Жауаптар іс жүзінде [MAX_RESP_NO] [MAX_RESP_LEN] жауаптарында сақталады және сәйкес кілтсөз массив сөзінде сақталады.

Конструктор: Бұл жауаптардың жалпы санын 0 -ге инициализациялау үшін қолданылады. Last_resp неге -1 -ге инициализацияланған, add_resp функциясын қараған кезде түсінікті болады.

int getcount ():

Бұл функция берілген кілт сөзге қанша жауап бар екенін санау үшін қолданылады.

жарамсыз сөз (char str [MAX_KWD_LEN]):

Бұл кілт сөзді қосу үшін қолданылады.

char * getword ():

Белгілі бір жауаптылық объектісінің кілт сөзін қайтару үшін қолданылады.

void addresp (…):

Бұл берілген кілт сөзге сәйкес жауапты қосу үшін қолданылады.

жарамсыз display_resp (int):

Бұл жауаптар үшін берілген индекс нөміріне сәйкес келетін пайдаланушыға жауапты көрсету үшін қолданылады. (іс жүзінде бұл одан да көп жасайды!).

жарамсыз quit_display_resp (int):

Бұл функция мен жоғарыдағы функцияның айырмашылығы - бұл пайдаланушы жұмыстан шыққан кезде қолданылады. Осылайша, ол пайдаланушыға шақыруды қайтармайды.

7 -қадам: Функциялар

void initialize_global ()

{

strcpy (wordin [0], «ARE»);

strcpy (сөз [0], «AM»);

strcpy (wordin [1], «AM»);

strcpy ([1], «ARE» сөздері);

strcpy (wordin [2], «БІРДЕ»);

strcpy (сөзбе -сөз [2], «БОЛДЫ»);

strcpy (wordin [3], «БОЛДЫ»);

strcpy (сөз тіркесі [3], «БІРДЕ»);

strcpy (wordin [4], «СІЗ»);

strcpy (сөзбе -сөз [4], «ME»);

strcpy (wordin [5], «Мен»);

strcpy (сөз [5], «СІЗ»);

strcpy (wordin [6], «СЕНІҢ»);

strcpy (сөз [6], «МЕНІҢ»);

strcpy (wordin [7], «MY»);

strcpy (сөз [7], «СЕНІҢ»);

strcpy (wordin [8], «IVE»);

strcpy (сөз тіркесі [8], «СЕНІҢ»);

strcpy (wordin [9], «СЕНІҢ»);

strcpy ([9], «Мен келемін»);

strcpy (wordin [10], «Мен»);

strcpy (сөз тіркесі [10], «СЕНІҢ»);

strcpy (wordin [11], «СЕНІҢ»);

strcpy (сөзбе -сөз [11], «МЕН»);

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

strcpy (сөзбе -сөз [12], «СІЗ»);

strcpy (wordin [13], «СІЗ»);

strcpy (сөзбе -сөз [13], «ME»);

}

Енді пайдаланушыға жауаптарды көрсету функциясын жазайық. For цикліндегі бірінші if операторы адамдық болып көрінуі үшін әдейі теру қатесін жасау үшін қолданылады;-). Теру қателігі үшін кездейсоқ бір таңба таңдалады. New Line және Backspace сияқты ерекше жағдайлар бөлек қарастырылады. (Неліктен деп ойлайсыз?). Енді мен жаңа нәрсе енгіземін. Ерекше кейіпкер - *. Char * анықталған кілт сөзден КЕЙІН және келесі тыныс белгілерінің алдында табылған барлық мәтінді білдіреді.

Мысалы, пайдаланушының енгізуін қарастырыңыз

AMIT> МЕН ЕРТЕҢ ИНДОРАҒА БАРУҒА БОЛАДЫМЫ?

MAX> ЕРТЕН КЕЛІСІҢІЗДЕ БОЛМАСАҢЫЗ ҚАНДАЙ?

Асты сызылған бөлік сөздікте сақталмайды, керісінше ол пайдаланушы кірістерінен алынады. MAX. Dat файлында біз бұл ақпаратты келесідей сақтаймыз

БІЛЕМІН

ҚАЛМАСАҢЫЗ *

Жұлдыз (*) бағдарламадан пайдаланушы кірісіндегі кілт сөзден кейін (мұнда CAN I) терілгендерді көшіруді сұрайды. Мен енді * арнайы кілт сөз ретінде функциясы түсінікті деп үміттенемін. Сонымен, неғұрлым күрделі жағдайды қарастырайық.

AMIT> МЕН САУДАға бара аламын ба?

MAX> САУДАҒА БАРМАСАҢЫЗ ҚАНДАЙ?

Біз сондай -ақ кейбір трансформация жасауымыз керек. Трансформация туралы ойлағанда, сөйлем келесі 3 бөлімге бөлінеді:

  • Word ауыспас бұрын мәтін. (мұнда, САТЫП АЛУҒА ӨТІҢІЗ)
  • Transposed кілт сөзі. (мұнда, сенікі, менің орнымда)
  • Ауыстырудан кейінгі кілт сөз. (мұнда, мен?)

8 -қадам: істерді шешуге болады ………

9 -қадам: Пайдаланушы енгізуінде кілт сөзді іздеу

MAX_KEY DAT файлындағы кілт сөздердің санын көрсетеді.

Біз мұнда кілт сөздің Пайдаланушы енгізуінде бар -жоғын тексереміз.

10 -қадам: Қорытынды

Бар болғаны ………

Сіз жасадыңыз !!!!!!!

Менің ойымша, бәрі түсінікті болды …

Ұсынылған: