Sisällysluettelo:

Ääniaktivoitu avustaja - MAX: 10 vaihetta
Ääniaktivoitu avustaja - MAX: 10 vaihetta

Video: Ääniaktivoitu avustaja - MAX: 10 vaihetta

Video: Ääniaktivoitu avustaja - MAX: 10 vaihetta
Video: Best of Eleven and Max | Stranger Things | Netflix 2024, Marraskuu
Anonim
Ääniaktivoitu avustaja - MAX
Ääniaktivoitu avustaja - MAX

Hei tässä opetusohjelmassa aion puhua siitä, kuinka tehdä chat-bot MAX (nimetty itseni !!!)

Joillakin toteutuksilla voit tehdä tästä chatbotista ääniohjatun tai käyttämällä erilaisia ohjelmistoja voit tehdä siitä ääniavustajan. Tässä en aio puhua siitä, koska jokainen voi todella tehdä tämän toteutuksen helposti.

Joten kaikki tukekaa minua ….

Ensimmäinen opettavainen !!!!!!!

Hermostunut siitä, mitä tapahtuu …………….

Vaihe 1: Tietoa kilpailusta

Tietoa kilpailusta
Tietoa kilpailusta
Tietoa kilpailusta
Tietoa kilpailusta

Hei insinöörit ja suunnittelijat ……

Itse olen tietotekniikan opiskelija, joka rakastaa pelaamista ja inspiroi aina tietokoneita. Lyhyesti puhuen rakastan tietää, miten kaikki nämä tavarat toimivat. Joten syystä etsin, googletin (itse asiassa käytin myös Yahoota!) !!!) asioiden etsimiseen ja oppimiseen.

Joten eräänä päivänä tulin Instructables -näytön eteen. Se todella huvitti minua erilaisissa projekteissa, joissa oli erilaisia ajatuksia eri näkökohdista. Sitten siitä päivästä lähtien olen seurannut sitä. maailman.

VOICE ACTIVATED CHALLENGE on ensimmäinen foorumini Instructable -kirjoittamisen suhteen.

Palkinnot huvittivat minua paljon (joo !!! Liian paljon ……..).

Haluan myös jakaa tietoni tietokoneiden ja sen tekniikan alalla muille siitä, miten eri asiat todella toimivat.

Tässä ohjeessa näytän sinulle, kuinka rakentaa oma ääniaktivoitu avustaja.

Koska tämä on ensimmäinen Instructableni, saattaa olla niin paljon virheitä (vaikka luulen, että kaikki nämä on korjattu), joten anna anteeksi.

NIIN…

Aloitetaan matka ………………

Vaihe 2: Mistä tiesin asioista?

Mistä tiesin asioista?
Mistä tiesin asioista?
Mistä tiesin asioista?
Mistä tiesin asioista?
Mistä tiesin asioista?
Mistä tiesin asioista?

Tämä on tärkeä kysymys, luulen, että useimmat mielesi saattavat käydä läpi ………

Minulla on opinnoistani suuri intohimo tekoälyyn [AI], mistä lähtien olen etsinyt paljon etsien resursseja tutkiakseni ja kehittääkseni mallin itse.

Aluksi se oli erittäin vaikeaa (todellinen ehto), koska ymmärsin, että se oli erittäin laaja aihe, jota ei ole ollenkaan helppo käsitellä.

Kirjat, jotka etsivät, sisältävät:

  1. Tekoäly nykyaikainen lähestymistapa
  2. Keinotekoinen älykkyys 21. vuosisadalla. Toinen
  3. Syväoppiminen

Nämä ovat erittäin hyviä kirjoja (kyllä varmasti), mutta ei ole ollenkaan helppoa ymmärtää, mitä siihen on kirjoitettu. se todella edustaa ja tapoja päästä siihen.

Sitten löysin kiinnostusta siihen, ja koulun jälkeisellä lomalla aloin oppia siitä syvemmin.

Tuolloin opin myös erilaisia ohjelmointikieliä (C ++, C, Python, Java …), mikä oli liian mielenkiintoista.

Kun luin lisää aiheesta, ymmärsin yhden tärkeän asian ………………..

Ohjelmointikielet ovat PERUSTA JOKAISILLE KONEEN LOPPUPROSESSILLE

Koneoppiminen on tekoälyn soveltamisprosessi

Ymmärtää hyvin ohjelmointikieliä ja erilaisia asioita, joita ohjelmoija voi tehdä saadakseen tietokoneen tekemään kaiken puolestamme.

Joten päätin luoda hyvän pohjan kielille, jotka saivat minut ymmärtämään jo mainitsemani kirjan käsitteet

Sinäkin voit tehdä sen ……

Verkossa on niin paljon sivustoja, joilla opetetaan ohjelmointikieliä vapaasti

Joten voit surffailla Internetissä ymmärtääksesi siitä enemmän, jos haluat ……

Vaihe 3: Aloitetaan

Ennen kuin aloitin Instructable -ohjelman kirjoittamisen, ajattelin kirjoittaa jotain, joka ymmärretään seuraavasti:

  1. Ihmiset, joilla on kokemusta koodauksesta
  2. Ihmiset, joilla ei ole koodaustaustaa

Joten luulen, että olen tehnyt asian ilman virheitä (toivottavasti).

Joten olen päättänyt rakentaa chat -botin, joka voi puhua käyttäjälle ja vastata puheemme mukaisesti.

Ohjelma (ohjeet) ei voi ajatella yksin. Siinä on tietokanta (paikka, johon tietoja on tallennettu) tosiasioista ja säännöistä, joita etsitään keskustelun aikana, jotta saadaan paras mahdollinen vastaus käyttäjän yhteydessä.

Se toimii sovitusprosessilla syötettyjen asioiden mukaan, vain harvoissa tapauksissa koko lause sovitetaan täydelliseen lauseeseen.

Vaihe 4: Miten se todella toimii?

Vaihe 1:

MAX selvittää, onko käyttäjä antanut null -syötteen. Jos käyttäjä syöttää syötteen tällä tavalla, se vaatii staattisen tietokannan tosiasian vastatakseen.

Voi anteeksi ……

Unohdin sanoa,

Staattinen tietokanta: Paikka, johon sisäänrakennetut vastaukset tallennetaan. Vastauksia kuten:

1. Kun MAX ei ymmärrä, mistä käyttäjä puhuu.

2. Kun käyttäjä toistaa itseään.

3. Tervehdyslausunnot.

4. Kun käyttäjä ei kirjoita mitään ja jatkaa Enter -näppäimen painamista.

Avainsana: sanat, joilla on erityinen merkitys.

Vaihe 2:

Joitakin sisäänrakennettuja vastauksia MAX tunnistaa helposti ja helposti. Se löytää tällaisen lauseen läsnäolon tunnistettuaan käyttäjän syötteen ja muistaa siihen liittyvän avainsanan.

Vaihe 3:

Jos sisäänrakennettu lause ei löydy edes annetun lauseen pirstoutumisen jälkeen, MAX etsii tiettyä avainsanaa kontekstin määrittelemiseksi. Jos kontekstia ei löydy, seuraava tavoite on saada käyttäjä puhumaan aiheesta tarkoituksellisemmin tietyllä tavalla.

Vaihe 4:

Staattisesta tietokannasta, josta olemme jo puhuneet, se poimii vastauksen, joka riippuu siitä, mistä käyttäjä on puhunut.

Vaihe 5:

Minun on tarpeen muuttaa sanoja, jotka se tekee sen itse (kuten MINUN kääntyminen SINUN jne.).

Vaihe 5: Koodataan …………

Käytän Turbo C IDE 3.0: ta, koska tämä on IDE [Integrated Developmental Environment]

Ennen koodausta katsotaan esimerkkitiedoston rakenne.

MAX tunnistaa tietyt avainsanat.

Jos nämä avainsanat löytyvät käyttäjän antamasta syötteestä, vastaava vastaus valitaan datatiedostosta ja valitaan ylös ja näytetään näytöllä.

Avainsana erotetaan datatiedostossa vastauksista @ KWD @ -merkillä.

Token on pienin osa kaikkia ohjelmointinäkökohtia.

Tämä merkki tarkoittaa, että seuraava rivi on avainsana eikä vastaus.

@ KWD@ HELLO

HEI MITÄ KUULUU

HEI RAKAS !

OLEN KUNNOSSA

MITEN OLIT TYÖSI?

KUINKA VANHA OLET?

AION

TEET NÄIN. USKOIN LIIAN…

Pystytkö tekemään niin?

LUOTatko LUOTTAVAT MINUUN?

JOO

OLETKO VARMA ?

MITEN VOIT OLLA NÄIN VARMU?

EI

NÄKYT OLET TODELLA PESSIMISTINEN.

ÄLÄ KOSKAAN SANO EI…

ÄLÄ KOSKAAN SANO EI KOSKAAN

ÄLÄ KOSKAAN ole RUDE

ÄLÄ KOSKAAN ole ylimielinen !!!!

ÄLÄ KOSKAAN sano, etten voi tehdä tätä

ÄLÄ KOSKAAN OLE OPTIMISTISIA

TIETOKONE

TIEDÄN, KUINKA TYÖSTÄ TIETOKONEELLA.

KÄYTÄT TÄMÄN TIETOKONEEN. OIKEIN?

Esimerkiksi 'Hei' yllä olevasta sanakirjasta MAX antaa yhden seuraavista vastauksista:

Hei, MITEN OLET HELLO ARMA!

OLEN KUNNOSSA

MITEN OLIT TYÖSI?

KUINKA VANHA OLET?

Vaihe 6: Luokat

Kun tämä asia on selvä, määritelkäämme nyt käyttämämme tietorakenteet.

Luomme kaksi luokkaa:

progstr - Tätä käytetään käyttäjän syöttämien tietojen tallentamiseen.

tai - Tätä käytetään tallentamaan tietoja eri vastauksista

luokkaohjelma {

julkinen:

char userip [MAX_USER_INPUT];

char -avainsana [30];

int avain löydetty;

int keyno;

int nullip;

// rakentaja

progstr () {keyno = -1; nullip = 0; löydetty avain = 0;

}

} ip;

luokka tai

{

int tot_resp;

int last_resp;

char -vastaukset [MAX_RESP_NO] [MAX_RESP_LEN];

char -sana [MAX_KWD_LEN];

julkinen:

// rakentaja

tai ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

return last_resp;

}

mitätön lisäsana (char str [MAX_KWD_LEN])

{

strcpy (sana, str);

}

char * getword ()

{

paluu sana;

}

tyhjä osoite (char str [MAX_RESP_LEN])

{

strcpy (vastaukset [++ last_resp], str);

}

// määritelty myöhemmin

void display_resp (int numero);

void quit_display_resp (int numero);

};

Katse ensimmäiseen luokkaan, Merkkiryhmää userip käytetään käyttäjän antaman lauseen tallentamiseen.

Toista taulukon avainsanaa käytetään kyseisessä syötteessä olevan avainsanan tallentamiseen. Jos avainsana löytyy, teemme int avainhaun yhdelle muulle, se pysyy 0: na, koska se alustetaan 0: een konstruktorissa.

keyno tallentaa vastaavan avainsanan vastaavan avaimen numeron.

nullip ilmaisee, onko käyttäjä antanut mitään null -syötettä, eli hän painaa vain enteria tekemättä mitään muuta.

Mennään nyt toiseen luokkaan, vastaavasti.

Ensimmäinen datajäsen, tot_resp, osoittaa tietyn avainsanan vastausten kokonaismäärän.

Vastaukset tallennetaan itse asiassa vastauksiin [MAX_RESP_NO] [MAX_RESP_LEN] ja vastaava avainsana tallennetaan matriisisanaan.

Rakentaja: Tätä käytetään alustamaan vastausten kokonaismäärä arvoon 0. Miksi last_resp alustetaan arvoon -1, käy selväksi, kun tarkastelet funktiota add_resp.

int getcount ():

Tätä toimintoa käytetään laskemaan, kuinka monta vastausta tietylle avainsanalle on olemassa.

mitätön lisäsana (char str [MAX_KWD_LEN]):

Tätä käytetään avainsanan lisäämiseen.

char * getword ():

Käytetään tietyn luokan objektin avainsanan palauttamiseen.

mitätön osoite (…):

Tätä käytetään lisäämään tiettyä avainsanaa vastaava vastaus.

void display_resp (int):

Tätä käytetään näyttämään vastaus käyttäjälle, joka vastaa tiettyä vastausten indeksinumeroa. (itse asiassa se tekee enemmän kuin sitä!).

void quit_display_resp (int):

Ero tämän toiminnon ja yllä olevan toiminnon välillä on, että sitä käytetään lopussa, kun käyttäjä lopettaa. Joten se ei palauta kehotetta käyttäjälle.

Vaihe 7: Toiminnot

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], "SINÄ");

strcpy (wordout [4], "MINÄ");

strcpy (wordin [5], "minä");

strcpy (wordout [5], "YOU");

strcpy (wordin [6], "SINUN");

strcpy (wordout [6], "MY");

strcpy (wordin [7], "MINUN");

strcpy (wordout [7], "SINUN");

strcpy (wordin [8], "I'VE");

strcpy (wordout [8], "YOU'VE");

strcpy (wordin [9], "YOU'VE");

strcpy (wordout [9], "I'VE");

strcpy (wordin [10], "MINÄ");

strcpy (wordout [10], "SINÄ");

strcpy (wordin [11], "SINÄ");

strcpy (wordout [11], "MINÄ");

strcpy (wordin [12], "MINÄ");

strcpy (wordout [12], "YOU");

strcpy (wordin [13], "SINÄ");

strcpy (wordout [13], "MINÄ");

}

Kirjoitetaan nyt funktio vastausten näyttämiseksi käyttäjälle. For-silmukan ensimmäistä if-lausetta käytetään tarkoituksellisen kirjoitusvirheen tekemiseen, jotta se näyttäisi inhimillisemmältä;-). Yksi merkki valitaan satunnaisesti kirjoitusvirheelle. Erikoistapauksia, kuten New Line ja Backspace, käsitellään erikseen. (Arvaa miksi?). Nyt esittelen jotain uutta. Erikoismerkki - *. Char * edustaa kaikkea tekstiä, joka löytyy tunnistetun avainsanan jälkeen ja ennen yhtä seuraavista välimerkkeistä.

Harkitse esimerkiksi käyttäjän panosta

AMIT> VOINKO MENEET SISÄLTÄÄ HUOMENNA?

MAX> MITÄ, JOS ET MENE SISÄLTÄ HOMMEEN?

Alleviivattua osaa ei tallenneta sanakirjaan, vaan se otetaan käyttäjän syötteestä. Tiedostoon MAX. Dat tallennamme nämä tiedot muodossa

VOINKO

MITÄ JOS ET *

Tähti (*) pyytää ohjelmaa yksinkertaisesti kopioimaan kaiken, mitä kirjoitetaan avainsanan (tässä CAN I) jälkeen käyttäjän syötteeseen sellaisenaan. Toivon, että nyt * -toiminto erityisavainsanana on selvä. Tarkastellaan siis monimutkaisempaa tapausta.

AMIT> Voinko OSTAA?

MAX> MITÄ, JOS ET OSTU OSTAMISEKSI?

Meidän on myös tehtävä jonkinlainen muutos. Kun ajattelemme muutosta, lause jakautuu seuraaviin 3 osaan:

  • Teksti ennen siirtämistä Word. (Täällä MENE OSTAMAAN)
  • Transponoitu avainsana. (tässä, SINUN, MINUN sijasta)
  • Teksti saattamisen jälkeen avainsana. (täällä minä ?)

Vaihe 8: Tapaukset voidaan käsitellä ………

Vaihe 9: Hakusanan etsiminen käyttäjän syötteestä

MAX_KEY ilmaisee DAT -tiedoston avainsanojen määrän.

Me vain etsimme, onko avainsana käyttäjän syötteessä.

Vaihe 10: Johtopäätös

Siinä kaikki ………

Olet tehnyt sen !!!!!!!

Luulen, että kaikki ymmärsivät asiat selvästi …

Suositeltava: