INHOUDSOPGAWE:

Hoe om 'n A.I. Deel 2: 9 stappe
Hoe om 'n A.I. Deel 2: 9 stappe

Video: Hoe om 'n A.I. Deel 2: 9 stappe

Video: Hoe om 'n A.I. Deel 2: 9 stappe
Video: Wacht tot je Ziet hoe de Mooiste Tweeling ter Wereld er NU Uitziet! 2024, November
Anonim
Hoe om 'n A. I. Deel 2
Hoe om 'n A. I. Deel 2

Dit is deel 2 oor stappe wat ek geneem het om 'n AI op 'n Windows -rekenaar te bou, met behulp van 'n gratis databasis, programmeer -ontwikkelingshulpmiddel en die gratis ingeboude TTS -enjin wat by Windows kom.

Die woord "Windows" behoort aan Microsoft.

Die woord "draak" behoort aan Nuance.

Stap 1: Hoe om 'n AI deel 2 te maak

Hoe om 'n AI deel 2 te maak
Hoe om 'n AI deel 2 te maak

Kies 'n programmeertaal en kry hulpmiddels

Daar is baie programmeertale. Sommige spesialiseer in A. I. My gunsteling is Visual Basic, so dit is wat ek gebruik het. Ek werk ook met SQL -bedienerdatabasisse, so ek het dit ook gebruik.

U kan hierdie weergawes gratis aflaai van die Microsoft -webwerf. Soek net 'EXPRESS' op die Microsoft -webwerf. [Visual Studio Express en SQL server Express]

Ander tale wat u vir ons wil hê, is: Python, C#, C ++, Java, Prolog, Lisp, IPL

en vele ander. AIML is 'n 'opmaaktaal' wat baie interessant is.

Ek wou 'n beter 'spraakherkenning' -program hê as die wat by Windows kom, so ek het die DRAGON -sagteware gekoop. Ek gebruik die standaard 'Teks-na-spraak'-program wat by Windows kom.

Stap 2: Ontwerp u stelsel:

Ontwerp u stelsel
Ontwerp u stelsel

Verdeel u groot projekte in 'n klomp kleiner projekte. Ek het my programkode in modules verdeel.

Ek het my kode in verskillende modules verdeel sodat 'n spesifieke funksie makliker gevind kan word.

Ek het modules met die naam "Prosesinvoer", "Proses AI", "Prosesuitvoer", "Gebruikerskoppelvlak" en 'n paar ander. Sommige van my funksies moet toeganklik wees vir al die ander kode modules, so ek plaas die funksies in 'n 'gewone' module waar alles gedeel word

Stap 3: Funksies wat in die programmeertaal ingebou is:

Funksies wat in die programmeertaal ingebou is
Funksies wat in die programmeertaal ingebou is

Verskillende tale kan verskillende name hiervoor hê, maar alle tale op hoë vlak het soortgelyke funksies.

LCase of ToLower: Skakel 'n string om na alle kleinletters. Ek omskep alles in kleinletters voordat ek 'n databasis-soektog doen-alhoewel die meeste dinge 'hooflettergevoelig' is-net vir ingeval.

Vervang: Vervang 'n string in 'n string in 'n ander string. U kan 'n string vervang deur 'n leë string "" om daarvan ontslae te raak. Ek raak ontslae van punte, vraagtekens, kommas en ander leestekens.

Split: Verdeel 'n string in individuele stukke en plaas dit in 'n array. Hierdie funksie verdeel 'n string op enige karakter, of "Skeidingsteken". Ek verdeel 'n sin oor 'n 'spasie -karakter' '' 'om 'n verskeidenheid woorde te maak. Dit word deur die AI Gurus 'Tokenizing' genoem.

Ek gebruik die individuele woorde om navrae te bou wat gebruik word om in die databasis te soek. (Meer hieroor in my volgende artikel)

Stap 4: Kombineer ingeboude funksies om u eie funksies te skep

Dit is 'n 'visuele basiese' voorbeeld. Gebruik u programmeertaal om so iets te bou.

U moet natuurlik baie kode skryf en baie funksies bou met behulp van die programmeertaal van u keuse.

Stap 5: Wat doen die modules? "Invoerverwerker"

Wat doen die modules? "Invoerverwerker"
Wat doen die modules? "Invoerverwerker"

Daar kan honderd verskillende maniere wees om dieselfde vraag aan die AI te stel. Byvoorbeeld; "Hoe laat is dit?", "Het u tyd?" "Weet u hoe laat dit is?", "Kan u my die huidige tyd van die dag vertel?" Aangesien die gebruiker net die tyd vra, omskakel ek enige van hierdie insette na 'n enkele uitset genaamd "Soektyd" met behulp van 'n databasis "opsoek" -tabel.

U kan kode skryf om deur 'n tabel te loop totdat dit 'n pasmaat vind, of as u 'n SQL -databasis gebruik, kan u 'n SQL -navraag skryf, soos …

'Kies Uitvoer uit tabelnaam waar Invoer =' 'wat ook al' '

… En dan stuur ek die uitset, “Soektyd”, na die volgende kode module; "Verwerk AI"

Behalwe vrae, is daar baie maniere om 'Hallo' te sê

Hallo, hallo, wat gaan aan, hallo, hoe gaan dit ?, groete, welkom, groete, groete …

Al hierdie is verminder tot "Groet"

As die AI -verwerker 'Groet' sien, stuur dit 'Groet' na die uitvoerverwerker, wat 'n ewekansige groet uit 'n databasistabel haal en dit hardop uitspreek.

Stap 6: “AI -verwerker”

"AI verwerker"
"AI verwerker"

Proses AI is die grootste kode module. Dit is so groot dat ek dit ook in afdelings verdeel het.

Die invoer word nagegaan om te sien of die gebruiker 'n opdrag spreek of 'n vraag stel. Die AI kan ook in een van die verskillende "modusse" wees, wat beteken dat die "Process AI" -kode van die gebruiker verwag om 'n vraag te beantwoord in plaas van 'n vraag te vra.

As die gebruiker nie 'n opdrag uitgespreek het nie en die AI nie in 'n spesiale 'modus' is nie, bou en voer 'n klomp navrae uit kombinasies van die woorde in die 'woordereeks'. Al die navraagresultate word in 'n tabel gestoor, en elke navraagresultaat kry 'n "telling" oor hoe noukeurig die resultaat pas by wat die gebruiker gespreek het. Die tabel word gesorteer volgens die telling, en die resultaat met die hoogste telling word na die uitset gestuur as dit 'n sekere drempel oorskry. As al die tellings onder die drempel is, reageer die AI moontlik met 'Ek weet nie' of 'Dit bereken nie'

Stap 7: Die tabel "uitset en tellings"

Die
Die

Die KI se weergawe van my insette "Wat het die hoender gedoen?"

Stap 8: “Uitsetverwerker”

"Uitset verwerker"
"Uitset verwerker"

Dit doen verskillende 'onverwante' dinge, maar dit het alles te doen met die ontvangs van die teks van die AI -verwerker aan die gebruiker.

Hier is 'n lys.

1. Die teks uit die databasis kan in kleinletters wees en geen leestekens bevat nie.. Subroutines maak 'n hoofletter en plaas 'n punt of 'n vraagteken aan die einde.

2. 'n Ander subprogram sal apostrofe weer in kontraksies plaas, of kontraksies in volle woorde omskakel (dit wil sê: "cant" word vervang deur "can not")

3. Die teks-na-spraak-enjin spreek sommige woorde nie uit soos ek wil nie, dus vervang die 'Output Processor' die woorde met 'n fonetiese spelling. in die "invoerverwerker"

4. As die AI nie 'n geskikte antwoord in die databasis kry nie, kan dit sê "ek weet nie", maar ek wil nie hê dat dit dit oor en oor en oor moet sê nie. Regte mense wissel hul reaksies. Daar is dus 'n tabel met 'Common Output' frases en 'n funksie wat een willekeurig kies (en nooit dieselfde een twee keer in 'n ry sal kies nie.)

5. Die gratis 'teks-na-spraak'-enjin (TTS) -enjin bied 'n programmeerder nie baie opsies vir die manier waarop sinne uitgespreek word nie, maar u het 'n bietjie beheer oor die toonhoogte en die snelheid van foneme. Die term hiervoor is "Prosody". Ek het 'n paar 'prosody' -kodes in die teks in my databasis gevoeg, en as die' Output Processor 'dit sien, pas dit die toonhoogte en spoed in die TTS -enjin aan soos elke woord gespreek word.

6. Soms is die TTS net moeilik om te verstaan, dus behalwe om hardop woorde te sê, vertoon ek dit ook in groot letters op my rekenaarskerm. Hierdie deel van die 'Gebruikerskoppelvlak' is 'n rooster wat die laaste 6 reëls van 'n gesprek (gebruikersinvoer en AI -uitset) wys en na bo rol soos nuwe reëls bygevoeg word.

Stap 9: Hou aan werk daaraan

Hou aan werk daaraan
Hou aan werk daaraan

My insette was "Moenie vir iemand vertel nie"

Ek werk nog steeds aan my AI -stelsel, en dit sal waarskynlik nooit werklik gedoen word nie. Namate ek meer funksies byvoeg, sal ek meer artikels skryf.

Miskien sal sommige van my idees u inspireer om 'n AI te bou wat beter is as myne

Aanbeveel: