Tartalomjegyzék:

Hanggal aktivált asszisztens - MAX: 10 lépés
Hanggal aktivált asszisztens - MAX: 10 lépés

Videó: Hanggal aktivált asszisztens - MAX: 10 lépés

Videó: Hanggal aktivált asszisztens - MAX: 10 lépés
Videó: КАК НАСТРОИТЬ L4D2 2024, November
Anonim
Hanggal aktivált asszisztens - MAX
Hanggal aktivált asszisztens - MAX

Szia, ebben az utasításban arról fogok beszélni, hogyan készíts egy chat-bot MAX-ot (magam nevű !!!)

Bizonyos megvalósításokkal ezt a chatbot hangvezérelhetővé teheti, vagy különféle szoftverek használatával hangsegédként is használható. Itt most nem fogok erről beszélni, mivel mindenki könnyen meg tudja valósítani ezt a megvalósítást.

Szóval mindenki kérem támogasson …….

Az első oktatható !!!!!!!

Ideges érzés, hogy mi fog történni …………….

Lépés: Ismerkedés a versenyről

Tudni a versenyről
Tudni a versenyről
Tudni a versenyről
Tudni a versenyről

Szia tervezők és mérnökök …..

Én magam, egy számítástechnika hallgató szeretek játszani, és mindig inspirálódtam a számítógépeken. Röviden beszélve szeretem tudni, hogy mindezek a jelen dolgok hogyan működnek. Tehát ezért folyton kerestem, googleztam (valójában a Yahoo -t is használtam !!!) !!!) a dolgok keresésére és tanulására.

Így egy nap az Instructables képernyője elé kerültem. Nagyon szórakoztatott engem különböző projekteken keresztül, különféle ötletekkel különböző szempontok szerint. Ettől a naptól kezdve folyamatosan követem a pályát. A versenyoldal igazán szórakoztatott engem mind a díjakkal, mind a projektekkel kapcsolatban, amelyeket különböző emberek nyújtottak be világ.

A HANG AKTIVÁLT KIHÍVÁS az első platformom az Instructable írásához.

A nyeremények nagyon szórakoztattak (Igen !!! Túl sok ……..).

Továbbá szeretném megosztani másokkal a számítástechnika és a technológia területén szerzett tudásomat arról, hogyan működnek a különböző dolgok.

Ebben az utasításban megmutatom, hogyan hozhat létre saját hanggal aktivált asszisztenst.

Mivel ez az első Instructable, sok hiba lehet (bár azt hiszem, ezeket mind kijavították), ezért bocsásson meg.

ÍGY…

Kezdjük az utat ………………

2. lépés: Honnan tudtam a dolgokról?

Hol tudtam a dolgokról?
Hol tudtam a dolgokról?
Hol tudtam a dolgokról?
Hol tudtam a dolgokról?
Hol tudtam a dolgokról?
Hol tudtam a dolgokról?

Ez egy fontos kérdés lesz, azt hiszem, a legtöbb elméd átesett …….

Iskoláimból nagy szenvedélyem van a mesterséges intelligencia [AI] iránt, ettől kezdve sokat kutattam a források után, hogy tanulmányozhassam és önállóan dolgozhassak ki egy modellt.

Kezdetben nagyon nehéz volt (valódi állapot), mivel megértettem, hogy ez egy nagyon széles téma, amelyet egyáltalán nem könnyű kezelni.

A keresett könyvek a következők:

  1. Mesterséges intelligencia - modern megközelítés
  2. Mesterséges intelligencia a 21. században. Második
  3. Mély tanulás

Ezek nagyon jó könyvek (bizonyára igen), de egyáltalán nem könnyű megérteni az erről szóló dolgokat. Aztán félretettem, és tovább kerestem azokat az erőforrásokat, amelyek rövid elképzelést adnak arról, valóban azt képviseli, és hogyan lehet hozzá jutni.

Aztán találtam érdeklődést ez iránt. Az iskola utáni vakáción keresztül mélyebben elkezdtem tanulni róla.

Abban az időben különféle programozási nyelveket is megtanultam (C ++, C, Python, Java …), ami túlságosan is érdekes.

A témáról bővebben olvasva megértettem egy fontos dolgot ………………..

A programozási nyelvek MINDEN GÉPTANULÁSI FOLYAMAT ALAPJAI

A gépi tanulás az AI alkalmazásának folyamata

Jól ismeri a programozási nyelveket és különféle dolgokat, amelyeket a programozó attól függően tehet meg, hogy a számítógép bármit megtegyen értünk.

Ezért úgy döntöttem, hogy jó alapot teremtek azokon a nyelveken, amelyek megértették a könyvben szereplő fogalmakat, amelyeket már említettem

Te is meg tudod csinálni ……

Nagyon sok olyan webhely van jelen a weben, amelyek szabadon taníthatnak programozási nyelveket

Így böngészhet az interneten, hogy többet megtudjon róla, ha szeretné ………

3. lépés: Kezdjük

Mielőtt elkezdeném írni az Instructable -t, arra gondoltam, hogy írjak valamit, amit a következők értenek:

  1. Emberek, akiknek van tapasztalatuk a kódolásban
  2. Kódoló háttér nélküli emberek

Szóval azt hiszem, hiba nélkül megcsináltam a dolgot (remélhetőleg).

Ezért úgy döntöttem, hogy létrehozok egy chatbotot, amely képes beszélni a felhasználóval, és válaszolni tud a beszélgetésünknek megfelelően.

A program (utasításkészlet) nem tud önállóan gondolkodni. Van egy adatbázisa (egy hely, ahol adatokat tároltak) tényekről és szabályokról, amelyeket a beszélgetés során keresnek, hogy a lehető legjobb választ adják a felhasználóval kapcsolatban.

Úgy működik, hogy az egyeztetési folyamat a beírt dolgoktól függ, csak ritka esetekben egy teljes mondat egy teljes mondathoz illeszkedik.

4. lépés: Hogyan működik valójában?

1. lépés:

A MAX megtudja, hogy a felhasználó adott -e null értéket. Ha a felhasználó ilyen módon ír be, akkor a statikus adatbázisból származó tényre kell válaszolnia.

Oh Bocsánat ……

Elfelejtettem mondani,

Statikus adatbázis: Az a hely, ahol a beépített válaszokat tárolják. Olyan válaszok, mint:

1. Amikor a MAX nem érti, miről beszél a felhasználó.

2. Amikor a felhasználó megismétli önmagát.

3. Az üdvözlő kijelentésekhez.

4. Ha a felhasználó nem gépel be semmit, és folyamatosan nyomja meg az Enter billentyűt.

Kulcsszó: különleges jelentéssel bíró szavak.

2. lépés:

Vannak beépített válaszok, amelyeket a MAX könnyen és könnyen felismer. A felhasználók által bevitt adatok azonosítása után megállapítja az ilyen mondatok jelenlétét, és megjegyzi a kapcsolódó kulcsszót.

3. lépés:

Ha az adott mondat töredezettsége után sem található beépített mondat, akkor a MAX megkeresi az adott kulcsszót a kontextus meghatározásához. Ha nem talál kontextust, akkor a következő cél, hogy a felhasználó tudatosabban, meghatározott módon beszéljen a témáról.

4. lépés:

A statikus adatbázisból, amelyről már beszéltünk, felveszi azt a választ, amely attól függ, hogy a felhasználó miről beszélt.

5. lépés:

Szükség van arra, hogy megváltoztassam azokat a szavakat, amelyeket ő maga fog megcsinálni (például az ÉNEK megtérése a tiétekre stb.).

5. lépés: Kódoljunk …………

Turbo C IDE 3.0 -t használok, mivel ez az IDE [integrált fejlesztési környezet]

A kódolás előtt nézzük meg a minta adatfájl szerkezetét.

A MAX felismer bizonyos kulcsszavakat.

Ha ezeket a kulcsszavakat megtalálja a felhasználó által megadott bemenetben, akkor a megfelelő választ választja ki az adatfájlból, majd kiválasztja és megjeleníti a képernyőn.

Egy kulcsszót az adatfájlban a válaszoktól @ KWD @ token választ el.

A token minden programozási szempont legkisebb része.

Ez a jelző azt jelzi, hogy a következő sor kulcsszó, és nem válasz.

@ KWD@ HELLO

SZIA HOGY VAGYTOK

HELLO KEDVES !

JÓL VAGYOK

HOGYAN VOLT A MUNKA?

HÁNY ÉVES VAGY?

FOGOK

TE MEGTESZED. Én is HISZEM…

KÉPES leszel erre?

BÍZHAT Bennem?

IGEN

BIZTOS VAGY EBBEN ?

HOGYAN LEHET ennyire biztos?

NEM

NAGYON PESZIMISTIKUSNAK LÁTOD.

SOHA NE MONDJ NEMET…

SOHA NE MOND HOGY SOHA

SOHA ne legyél durva

SOHA ne légy arrogáns !!!!

SOHA NE MONDJA, HOGY NEM TUDOM EZT

SOHA NEM LEHET OPTIMISTIKUS

SZÁMÍTÓGÉP

TUDOM, HOGYAN MŰKÖDÉS SZÁMÍTÓGÉPEN.

JELENLEG SZÁMÍTÓGÉPET HASZNÁL. JOBB ?

Például: „Hello”, a fenti szótárból a MAX az alábbi válaszok egyikét adja:

Szia, HOGY VAGYSZON Kedves!

JÓL VAGYOK

HOGYAN VOLT A MUNKA?

HÁNY ÉVES VAGY?

6. lépés: Osztályok

Ha ez a dolog világos, akkor most határozzuk meg az adatszerkezeteket, amelyeket használni fogunk.

Két osztályt hozunk létre:

progstr - Ez a felhasználó bemeneti adatainak tárolására szolgál.

ill - Ezt a különféle válaszokra vonatkozó információk tárolására használják

osztály progstr {

nyilvános:

char userip [MAX_USER_INPUT];

char kulcsszó [30];

int keyfound;

int keyno;

int nullip;

// konstruktor

progstr () {keyno = -1; nullip = 0; kulcsfontosságú = 0;

}

} ip;

osztály ill

{

int tot_resp;

int last_resp;

char válaszok [MAX_RESP_NO] [MAX_RESP_LEN];

char szó [MAX_KWD_LEN];

nyilvános:

// konstruktor

vagy ()

{

tot_resp = 0;

last_resp = -1;

}

int getcount ()

{

return last_resp;

}

érvénytelen addword (char str [MAX_KWD_LEN])

{

strcpy (szó, str);

}

char * getword ()

{

visszatérő szó;

}

érvénytelen cím (char str [MAX_RESP_LEN])

{

strcpy (válaszok [++ last_resp], str);

}

// később definiálva

void display_resp (int szám);

void quit_display_resp (int szám);

};

Első osztályra tekintve, A userip karakter tömb a felhasználó által megadott mondat tárolására szolgál.

Egy másik tömb kulcsszó tárolja az adott bemenetben található kulcsszót, ha van ilyen. Ha kulcsszót találunk, int kulcskeresést végezünk 1 másikkal, ez 0 marad, mivel 0 -ra van inicializálva a konstruktorban.

A keyno tárolja a megfelelő kulcsszó megfelelő kulcsszámát.

A nullip azt jelzi, hogy a felhasználó adott -e Null bemenetet, azaz csak az enter billentyűt nyomja meg, anélkül, hogy bármit is tenne.

Most jöjjön a második osztály, ill.

Az első adattag, a tot_resp az adott kulcsszó összes válaszának számát jelzi.

A válaszok valójában a [MAX_RESP_NO] [MAX_RESP_LEN] válaszokban vannak tárolva, és a megfelelő kulcsszó a tömbszóban van tárolva.

Konstruktor: Ezzel a 0 -ra adott válaszok teljes számát inicializálhatja. Miért inicializálják a last_resp értékét -1 -re, az világos lesz, ha megnézzük az add_resp függvényt.

int getcount ():

Ez a funkció arra szolgál, hogy megszámolja, hány válasz van egy adott kulcsszóra.

érvénytelen addword (char str [MAX_KWD_LEN]):

Ez kulcsszó hozzáadására szolgál.

char * getword ():

Egy adott objektumhoz tartozó kulcsszó visszaadására, ill.

érvénytelen cím (…):

Ez egy adott kulcsszónak megfelelő válasz hozzáadására szolgál.

void display_resp (int):

Ez arra szolgál, hogy megjelenítse a választ a felhasználónak, amely a válaszok adott indexszámának felel meg. (valójában ennél többet tesz!).

void quit_display_resp (int):

A különbség a fenti és a fenti funkció között az, hogy a végén használják, amikor a felhasználó kilép. Tehát nem adja vissza a kérést a felhasználónak.

7. lépés: Funkciók

void initialize_global ()

{

strcpy (wordin [0], "VAN");

strcpy (wordout [0], "AM");

strcpy (wordin [1], "AM");

strcpy (wordout [1], "VAN");

strcpy (wordin [2], "VOLT");

strcpy (wordout [2], "WAS");

strcpy (wordin [3], "WAS");

strcpy (wordout [3], "VOLT");

strcpy (wordin [4], "TE");

strcpy (wordout [4], "ME");

strcpy (wordin [5], "én");

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

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

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

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

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

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

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

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

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

strcpy (wordin [10], "ÉN");

strcpy (wordout [10], "TE VAGY");

strcpy (wordin [11], "TE VAGY");

strcpy (wordout [11], "ÉN");

strcpy (wordin [12], "ÉN");

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

strcpy (wordin [13], "TE");

strcpy (wordout [13], "ME");

}

Most írjunk egy függvényt a válaszok megjelenítésére a felhasználó számára. Az első if utasítás a for ciklusban szándékos gépelési hibát követ el, hogy emberibbnek tűnjön;-). Gépelési hiba esetén véletlenszerűen egy karaktert választanak ki. Az olyan különleges eseteket, mint a New Line és a Backspace, külön is figyelembe vesszük. (Gondolkodj, miért?). Most bemutatok valami újat. Különleges karakter - *. A Char * az összes azonosított kulcsszó után és az alábbi írásjelek előtt talált szöveget jelenti.

Például vegye figyelembe a felhasználói bevitelt

AMIT> HOLNAP BELÉPHETEM?

MAX> MI HA HOLNAP NEM LESZ BELÉPÉSRE?

Az aláhúzott rész nem tárolódik a szótárban, inkább a felhasználói bevitelből származik. A MAX. Dat fájlban ezeket az információkat tároljuk

TUDOK

MI HA NEM *

A csillag (*) arra kéri a programot, hogy egyszerűen másolja át a felhasználó által megadott kulcsszó (itt CAN I) után beírtakat. Remélem, hogy most már világos a * speciális kulcsszó funkciója. Lássunk tehát egy bonyolultabb esetet.

AMIT> VÁSÁROLHAT?

MAX> MI VAN, HA NEM MEG VÁSÁROLNI?

El kell végeznünk némi átalakítást is. Ha az átalakításra gondolunk, a mondat a következő 3 részre oszlik:

  • Szöveg az átültetés előtt Word. (itt, VÁSÁRLÁS VEL)
  • Az átültetett kulcsszó. (itt, a tied, az enyém helyett)
  • Szöveg az átültetés után Kulcsszó. (itt én ?)

8. lépés: Az esetek kezelhetők ………

9. lépés: Kulcsszó keresése a felhasználó bemenetében

A MAX_KEY jelzi a kulcsszavak számát a DAT fájlban.

Mi itt egyszerűen azt keressük, hogy a kulcsszó jelen van -e a Felhasználói bevitelben.

10. lépés: Következtetés

Ez minden ………

Megtetted !!!!!!!

Szerintem mindenki érti a dolgokat ……

Ajánlott: