Tartalomjegyzék:
- Lépés: Ismerkedés a versenyről
- 2. lépés: Honnan tudtam a dolgokról?
- 3. lépés: Kezdjük
- 4. lépés: Hogyan működik valójában?
- 5. lépés: Kódoljunk …………
- 6. lépés: Osztályok
- 7. lépés: Funkciók
- 8. lépés: Az esetek kezelhetők ………
- 9. lépés: Kulcsszó keresése a felhasználó bemenetében
- 10. lépés: Következtetés
Videó: Hanggal aktivált asszisztens - MAX: 10 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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
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?
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:
- Mesterséges intelligencia - modern megközelítés
- Mesterséges intelligencia a 21. században. Második
- 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:
- Emberek, akiknek van tapasztalatuk a kódolásban
- 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:
Hanggal aktivált LED -ek: 8 lépés
Hanggal aktivált LED -ek: A Webduino a Chrome internetes böngészőt használja mindenféle elektronikus alkatrész vezérlésére, így képesnek kell lennünk a Chrome által kínált összes többi funkció használatára. Ebben a projektpéldában a Chrome beszéd API -ját fogjuk használni. A Google hangfelismerésének használata
Hanggal aktivált BT: 3 lépés (képekkel)
Voice Activated BT: Hangvezérelt otthoni automatizálás Arduino használatával: Ebben a projektben iam hangfunkciót használ az otthoni eszközök vezérlésére. Ez a projekt az otthoni automatizálási sorozatom része. Ez a projekt nagyon könnyen használható a való életben. Bármilyen korú ember irányíthat
Hanggal aktivált relé kapcsoló (Arduino): 6 lépés (képekkel)
Hanggal aktivált relé kapcsoló (Arduino): Üdv mindenkinek! Ebben a projektben megmutatom, hogyan lehet hangutasításokat végrehajtani az Arduino projektekhez. Hangutasítások segítségével megmutatom, hogyan vezérelhető a relé kapcsoló modul
Hanggal aktivált médiakészülékek Alexa használatával: 9 lépés (képekkel)
Hanggal aktivált médiaberendezések az Alexa használatával: Az itt kifejlesztett egység lehetővé teszi, hogy a készülékek, például a TV, az erősítő, a CD- és DVD -lejátszók hangutasításokkal vezéreljék az Alexa és az Arduino segítségével. Ennek az egységnek az az előnye, hogy csak hangutasításokat kell adnia. Ez a készülék minden olyan készülékkel használható, amely
Hanggal aktivált kamera vaku: 13 lépés (képekkel)
Hanggal aktivált fényképezőgép vaku: megmutatom, hogyan lehet hanggal aktiválni a villogó fényt a fényképezőgép vakujával. Ezt használhatja Halloween partira