Sisukord:
- 1. samm: teadmised konkursist
- 2. samm: kust ma asjade kohta teadsin?
- Samm: alustame
- Samm: kuidas see tegelikult töötab?
- Samm: kodeerime …………
- 6. samm: klassid
- Samm 7: Funktsioonid
- 8. samm: juhtumitega saab tegeleda ………
- 9. samm: märksõna otsimine kasutaja sisendist
- 10. samm: järeldus
Video: Häälega aktiveeritud assistent - MAX: 10 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Hei selles juhendatavas, ma räägin sellest, kuidas teha vestlusbot MAX (nimega mina !!!)
Mõne rakendusega saate muuta selle vestlusboti hääljuhtimiseks või mitmesuguse tarkvara abil häälassistendiks. Ma ei hakka sellest siin rääkima, sest igaüks saab selle rakendamise tõeliselt hõlpsalt teostada.
Nii et kõik palun toetage mind ….
Minu esimene juhendatav !!!!!!!
Närviline, mis juhtuma hakkab …………….
1. samm: teadmised konkursist
Tere insenerid ja disainerid ….
Mina ise, arvutiteaduse üliõpilane, armastan mängida ja olen alati arvutitest inspireeritud. Lühidalt rääkides meeldib mulle teada, kuidas kõik need asjad praegu välja töötavad. Nii et ma otsisin ja guugeldasin (tegelikult kasutasin ka Yahoo'i !!!) !!!) asjade otsimiseks ja õppimiseks.
Nii et ühel päeval jõudsin ma Instructabeli ekraani ette. See tõepoolest lõbustas mind erinevate projektide kaudu, millel oli mitmesuguseid ideid erinevatest aspektidest. Sellest ajast alates jätkan sellega kursis olemist. Võistlusleht lõbustas mind nii auhindade kui ka projektide üle, mille on esitanud erinevad inimesed kogu maailmas maailma.
VOICE ACTIVATED CHALLENGE on minu esimene platvorm Instructable'i kirjutamise osas.
Auhinnad lõbustasid mind väga (jah !!! Liiga palju ……..).
Samuti soovin jagada teistele oma teadmisi arvutite ja selle tehnoloogia valdkonnas erinevate asjade tegeliku toimimise kohta.
Selles juhendis näitan teile, kuidas luua oma häälega aktiveeritud assistent.
Kuna see on minu esimene juhendatav, võib seal olla nii palju vigu (kuigi ma arvan, et need kõik on parandatud), andke selle eest andeks.
NII…
Alustame teekonda ………………
2. samm: kust ma asjade kohta teadsin?
See saab olema suur küsimus, ma arvan, et enamik teie meeltest võib läbi käia ………..
Mul on koolipõlves suur kirg tehisintellekti [AI] vastu, sellest olen otsinud palju, otsides ressursse, et õppida ja ise mudel välja töötada.
Esialgu oli see väga raske (tõeline tingimus), sest ma sain aru, et see oli väga lai teema, mida pole üldse lihtne käsitleda.
Otsitud raamatud sisaldavad järgmist:
- Tehisintellekt kaasaegne lähenemine
- Kunstlik. Intelligentsus 21. sajandil. 2. lisa
- Sügav õppimine
Need on väga head raamatud (jah kindlasti), kuid sellest ei ole üldse lihtne aru saada. Sellele vaatamata jätsin selle kõrvale ja otsisin ressursse, mis annavad lühikese ettekujutuse sellest, mida see tõesti kujutab endast ja viise selleni jõudmiseks.
Siis leidsin selle vastu huvi. Pärast koolist puhkust hakkasin seda sügavamalt tundma õppima.
Sel ajal õppisin ka erinevaid programmeerimiskeeli (C ++, C, Python, Java …), mis oli liiga huvitav.
Teemat lähemalt lugedes sain aru ühest olulisest asjast ………………..
Programmeerimiskeeled on IGA MASINA ÕPPEPROTSESSI PÕHIMÕTE
Masinõpe on tehisintellekti rakendamise protsess
Suurepärane arusaam programmeerimiskeeltest ja mitmesugustest asjadest, mida programmeerija saab teha, et arvuti teeks meie heaks midagi.
Seega otsustasin luua hea baasi nendele keeltele, mis panid mind mõistma juba mainitud raamatus esitatud mõisteid
Ka sina saad seda teha ……
Veebis on nii palju veebisaite, kus programmeerimiskeeli vabalt õpetada
Nii et kui soovite, saate Internetis surfata, et sellest rohkem aru saada ……
Samm: alustame
Mõtlesin enne Instructable'i kirjutamise alustamist kirjutada midagi sellist, millest saaks aru:
- Inimesed, kellel on kodeerimise kogemus
- Inimesed ilma igasuguse kodeerimiseta
Nii et ma arvan, et olen teinud asja ilma vigadeta (loodetavasti).
Seega olen otsustanud luua vestlusboti, mis oskab kasutajaga rääkida ja saab meie jutu järgi vastata.
Programm (juhiste kogum) ei suuda iseseisvalt mõelda. Sellel on andmebaas (koht, kuhu andmeid on salvestatud) faktidest ja reeglitest, mida otsitakse rääkimise ajal, et anda kasutajale parim võimalik vastus.
See toimib sobitamisprotsessiga sõltuvalt sisestatud asjadest, ainult harvadel juhtudel sobitatakse terve lause terviklausega.
Samm: kuidas see tegelikult töötab?
Samm 1:
MAX selgitab välja, kas kasutaja on sisestanud null sisendi. Kui kasutaja sisestab sellisel viisil, võtab see vastuseks staatilisest andmebaasist fakti.
Oi vabandust ……
Unustasin öelda,
Staatiline andmebaas: koht, kuhu sisseehitatud vastused salvestatakse. Vastused nagu:
1. Kui MAX ei saa aru, millest kasutaja räägib.
2. Kui kasutaja kordab ennast.
3. Tervitusavalduste jaoks.
4. Kui kasutaja ei kirjuta midagi ja jätkab sisestusklahvi vajutamist.
Märksõna: erilise tähendusega sõnad.
2. samm:
Sisseehitatud vastused on mõned, mida MAX suudab hõlpsasti ja hõlpsalt ära tunda. Pärast kasutajate sisendi tuvastamist leiab see sellise lause olemasolu ja mäletab sellega seotud märksõna.
3. samm:
Kui isegi pärast antud lause killustamist ei leita sisseehitatud lauset, otsib MAX konteksti määratlemiseks konkreetset märksõna. Kui konteksti ei leita, on järgmiseks eesmärgiks panna kasutaja teemal teadlikumalt ja konkreetsel viisil rääkima.
4. samm:
Staatilisest andmebaasist, millest me juba rääkisime, saab see vastuse, mis sõltub sellest, millest kasutaja on rääkinud.
5. samm:
Mul on vaja muuta sõnu, mida ta ise teeb (näiteks MINU muutmine TEISEKS jne.).
Samm: kodeerime …………
Ma kasutan Turbo C IDE 3.0, kuna see on IDE [integreeritud arengukeskkond]
Enne kodeerimist vaatame näidisfaili struktuuri.
MAX tuvastab teatud märksõnu.
Kui need märksõnad leitakse kasutaja sisendist, valitakse andmefailist vastav vastus, mis valitakse üles ja kuvatakse ekraanil.
Märksõna eraldatakse andmefailis vastustest @ KWD @ märgiga.
Token on kõigi programmeerimise aspektide väikseim osa.
See märk tähistab, et järgmine rida on märksõna, mitte vastus.
@ KWD@ TERE
TERE, KUIDAS LÄHEB
TERE, KALLIS !
MINA OLEN FINE
KUIDAS SINU TÖÖ OLI?
KUI VANA SA OLED?
MA HAKKAN
SINA TEED NII. MA ISELDIN LIIGA…
KAS SINA SAAD NII?
KAS SA USALDAD MINU?
JAH
OLED SA KINDEL ?
KUIDAS SA SAAD NII KINDLASTI OLLA?
EI
TUNNED, ET OLED VÄGA PESSIMISTILINE.
ÄRGE kunagi öelge EI…
ÄRA IIAL ÜTLE IIAL
ÄRGE KUNAGI JULGE
ÄRGE KUNAGI OLGE arrogantne !!!!
ÄRGE KUNAGI ÜTLE, ET MA EI TOHI seda teha
ÄRGE KUNAGI OLGE OPTIMISTILINE
ARVUTI
MA TEAN, KUIDAS ARVUTIS TÖÖTADA.
KASUTAD HETKEL ARVUTIT. ÕIGE?
Näiteks ülaltoodud sõnastikust "Tere" annab MAX ühe järgmistest vastustest.
Tere, KUIDAS OLETE KALLIS!
MINA OLEN FINE
KUIDAS SINU TÖÖ OLI?
KUI VANA SA OLED?
6. samm: klassid
Kui see asi on selge, määratleme nüüd andmestruktuurid, mida kasutame.
Loome kaks klassi:
progstr - seda kasutatakse kasutaja sisenditeabe salvestamiseks.
resp - Seda kasutatakse erinevate vastuste kohta teabe salvestamiseks
klassi programm {
avalik:
sümbol userip [MAX_USER_INPUT];
char märksõna [30];
int keyfound;
int keyno;
int nullip;
// konstruktor
progstr () {keyno = -1; nullip = 0; võtmeotsing = 0;
}
} ip;
klass resp
{
int tot_resp;
int last_resp;
sümbolivastused [MAX_RESP_NO] [MAX_RESP_LEN];
char sõna [MAX_KWD_LEN];
avalik:
// konstruktor
resp ()
{
tot_resp = 0;
viimane_resp = -1;
}
int getcount ()
{
return last_resp;
}
tühine lisasõna (char str [MAX_KWD_LEN])
{
strcpy (sõna, str);
}
char * getword ()
{
tagasiside;
}
tühine aadress (char str [MAX_RESP_LEN])
{
strcpy (vastused [++ last_resp], str);
}
// määratletud hiljem
tühine display_resp (int number);
tühine quit_display_resp (int number);
};
Vaadates esimest klassi, Märgimassiivi userip kasutatakse kasutaja antud lause salvestamiseks.
Teist massiivi märksõna kasutatakse selles sisendis leiduva märksõna salvestamiseks. Kui leitakse märksõna, leiame int võtme 1 -le, see jääb 0 -ks, kuna see on konstruktoris lähtestatud 0 -le.
keyno salvestab vastava märksõna vastava võtme numbri.
nullip näitab, kas kasutaja on andnud null -sisendi, st ta lihtsalt vajutab sisestusklahvi ilma midagi muud tegemata.
Tulgem nüüd teise klassi, resp.
Esimene andmeliik tot_resp näitab antud märksõna vastuste koguarvu.
Vastused on tegelikult salvestatud vastustesse [MAX_RESP_NO] [MAX_RESP_LEN] ja vastav märksõna salvestatakse massiivsõnasse.
Konstruktor: seda kasutatakse vastuste koguarvu lähtestamiseks väärtusele 0. Miks last_resp lähtestatakse väärtuseks -1, selgub funktsioonist add_resp.
int getcount ():
Selle funktsiooni abil saab kokku lugeda, kui palju vastuseid antud märksõnale on.
tühine lisasõna (char str [MAX_KWD_LEN]):
Seda kasutatakse märksõna lisamiseks.
char * getword ():
Kasutatakse konkreetse klassi objekti märksõna tagastamiseks.
tühine aadress (…):
Seda kasutatakse antud märksõnale vastuse lisamiseks.
tühine display_resp (int):
Seda kasutatakse kasutajale vastuse kuvamiseks, mis vastab vastuste antud indeksnumbrile. (tegelikult teeb see rohkemgi!).
void quit_display_resp (int):
Selle funktsiooni ja ülaltoodud funktsiooni erinevus seisneb selles, et seda kasutatakse lõppkokkuvõttes, kui kasutaja lõpetab. Niisiis, see ei tagasta kasutajale viipasid.
Samm 7: Funktsioonid
void initialize_global ()
{
strcpy (wordin [0], "ON");
strcpy (wordout [0], "AM");
strcpy (wordin [1], "AM");
strcpy (wordout [1], "ON");
strcpy (wordin [2], "OLI");
strcpy (wordout [2], "WAS");
strcpy (wordin [3], "WAS");
strcpy (wordout [3], "OLI");
strcpy (wordin [4], "SINA");
strcpy (wordout [4], "MINA");
strcpy (wordin [5], "mina");
strcpy (wordout [5], "SINA");
strcpy (wordin [6], "SINU");
strcpy (wordout [6], "MINU");
strcpy (wordin [7], "MINU");
strcpy (wordout [7], "SINU");
strcpy (wordin [8], "I'VE");
strcpy (wordout [8], "YOU'VE");
strcpy (wordin [9], "YOU'VE");
strcpy (wordout [9], "I'VE");
strcpy (wordin [10], "MINA");
strcpy (wordout [10], "SINA");
strcpy (wordin [11], "SINA");
strcpy (wordout [11], "MINA");
strcpy (wordin [12], "MINA");
strcpy (wordout [12], "SINA");
strcpy (wordin [13], "SINA");
strcpy (sõna [13], "MINA");
}
Kirjutame nüüd funktsiooni vastuste kuvamiseks kasutajale. Esimest if-lauset silmusesse for kasutatakse tahtliku tippimisvea tegemiseks, et see näeks inimlikum välja;-). Trükivea jaoks valitakse juhuslikult üks märk. Erijuhtumeid, nagu New Line ja Backspace, käsitletakse eraldi. (Mõtle, miks?). Nüüd tutvustan midagi uut. Eriline tegelane - *. Char * tähistab kogu teksti, mis leiti PÄRAST tuvastatud märksõna ja enne ühte järgmistest kirjavahemärkidest.
Mõelge näiteks kasutaja sisendile
AMIT> KAS MA SAAN HOMME SISESTADA?
MAX> MIDA KUI EI HOMME SISESTADA?
Allajoonitud osa ei salvestata sõnastikku, vaid see võetakse kasutaja sisendist. Failis MAX. Dat salvestame selle teabe kujul
KAS MA SAAN
Mis siis, kui te ei tee *
Täht (*) palub programmil lihtsalt kopeerida kõik, mis on sisestatud kasutaja märksõna (siin CAN I) järel, nii nagu see on. Loodan, et nüüd on * kui erilise märksõna funktsioon selge. Niisiis, kaalume keerulisemat juhtumit.
AMIT> KAS MA SAAN OSTA?
MAX> MIDA KUI TE EI OSTLE?
Peame ka mõne ümberkujundamise läbi viima. Kui me mõtleme ümberkujundamisele, jagatakse lause järgmisteks osadeks:
- Tekst enne ülevõtmist Word. (siit minge ostlema)
- Ülevõetud märksõna. (siin, SINU, MINU asemel)
- Tekst pärast ülevõtmist Märksõna. (siin, mina?)
8. samm: juhtumitega saab tegeleda ………
9. samm: märksõna otsimine kasutaja sisendist
MAX_KEY näitab märksõnade arvu DAT -failis.
Siin me lihtsalt otsime, kas märksõna on kasutaja sisendis olemas.
10. samm: järeldus
See on kõik ………
Sa oled seda teinud !!!!!!!
Ma arvan, et kõik said asjadest selgelt aru …
Soovitan:
Mitme kanaliga Sonoff - häälega aktiveeritud tuled: 4 sammu (piltidega)
Mitmekanaliline Sonoff-häälega aktiveeritud tuled: 5 aastat tagasi läksid minu köögi tuled do-do teed. Raja valgustus oli ebaõnnestunud ja leti all olev valgustus oli lihtsalt rämps. Tahtsin ka valgustuse kanaliteks jagada, et saaksin ruumi paremini valgustada
Häälega aktiveeritud LED -id: 8 sammu
Häälega aktiveeritud LED -id: Webduino kasutab Chrome'i Interneti -brauserit igasuguste elektrooniliste komponentide juhtimiseks, seega peaksime saama kasutada kõiki muid Chrome'i pakutavaid funktsioone. Selles projekti näites kasutame Chrome'i kõne API -d. Google'i häältuvastuse kasutamine
Häälega aktiveeritud kaugjuhtimispuldi nupp: 4 sammu (piltidega)
Häälega aktiveeritud kaugjuhtimispuldi nupp: kui olete näinud minu teisi juhendeid, teate, et meie pojal on lihasdüstroofia. See on üks projekt, et muuta asjad tema jaoks paremini kättesaadavaks. Meil on uks, mida juhib garaažiukse avamise pult. See on olnud fantastiline
Häälega aktiveeritud BT: 3 sammu (piltidega)
Häälega aktiveeritud BT: hääljuhtimisega koduautomaatika Arduino abil: Selles projektis kasutan koduseadmete juhtimiseks häälfunktsiooni. See projekt on osa minu koduautomaatika seeriast. Seda projekti on reaalses elus väga lihtne kasutada. Igas vanuses inimesed saavad kontrollida
Häälega aktiveeritud releelüliti (Arduino): 6 sammu (piltidega)
Häälega aktiveeritud releelüliti (Arduino): Tere kõigile! Selles projektis näitan teile, kuidas oma Arduino projektide jaoks häälkäsklusi rakendada. Häälkäskluste abil näitan teile, kuidas juhtida releelüliti moodulit