Innholdsfortegnelse:

Hvordan lage en A.I. Del 2: 9 trinn
Hvordan lage en A.I. Del 2: 9 trinn

Video: Hvordan lage en A.I. Del 2: 9 trinn

Video: Hvordan lage en A.I. Del 2: 9 trinn
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! 2024, November
Anonim
Hvordan lage en A. I. Del 2
Hvordan lage en A. I. Del 2

Dette er del 2 om trinnene jeg tok for å bygge en AI på en Windows -datamaskin, ved hjelp av en gratis database, programmeringsutviklingsverktøy og den gratis innebygde TTS -motoren som følger med Windows.

Ordet "Windows" tilhører Microsoft.

Ordet "Dragon" tilhører Nuance.

Trinn 1: Hvordan lage en AI del 2

Hvordan lage en AI del 2
Hvordan lage en AI del 2

Velg et programmeringsspråk og få noen verktøy

Det er mange programmeringsspråk. Noen er spesialiserte for A. I. Min favoritt er Visual Basic, så det er det jeg brukte. Jeg jobber også med SQL -serverdatabaser, så jeg brukte det også.

Du kan laste ned gratis versjoner av disse fra Microsofts nettsted. Bare søk etter "EXPRESS" på Microsofts nettsted. [Visual Studio Express og SQL server Express]

Andre språk du kanskje vil ha for oss er: Python, C#, C ++, Java, Prolog, Lisp, IPL

og mange andre. AIML er et "Markup Language" som er veldig interessant.

Jeg ønsket et bedre "talegjenkjenning" -program enn det som følger med Windows, så jeg kjøpte DRAGON -programvaren. Jeg bruker standard "Tekst-til-tale" -programmet som fulgte med Windows.

Trinn 2: Design systemet ditt:

Design ditt system
Design ditt system

Del de store prosjektene dine i en haug med mindre prosjekter. Jeg delte programkoden min i moduler.

Jeg delte koden min i forskjellige moduler slik at en bestemt funksjon er lettere å finne.

Jeg har moduler som heter "Process Input", "Process AI", "Process Output", "User Interface" og noen få andre. Noen av funksjonene mine må være tilgjengelige for alle de andre kodemodulene, så jeg legger disse funksjonene i en "vanlig" modul der alt deles

Trinn 3: Funksjoner som er bygd inn i programmeringsspråket:

Funksjoner som er bygd inn i programmeringsspråket
Funksjoner som er bygd inn i programmeringsspråket

Ulike språk kan ha forskjellige navn på disse, men alle språk på høyt nivå har lignende funksjoner.

LCase eller ToLower: Konverterer en streng til alle små bokstaver. Jeg konverterer alt til små bokstaver før jeg foretar et databasesøk-selv om det meste er "ufølsomt"-bare for sikkerhets skyld.

Erstatt: Erstatt en streng inne i en streng i en annen streng. Du kan erstatte en streng med en tom streng “” for å bli kvitt den. Jeg blir kvitt punktum, spørsmålstegn, kommaer og andre skilletegn.

Split: Deler opp en streng i individuelle stykker og legger dem i en matrise. Denne funksjonen vil dele en streng på et hvilket som helst tegn, eller "skilletegn". Jeg delte en setning på et "mellomromstegn" "" for å lage en rekke ord. Dette kalles "Tokenizing" av AI Gurus.

Jeg bruker de enkelte ordene til å bygge spørringer som brukes til å søke i databasen. (Mer om dette i min neste artikkel)

Trinn 4: Kombiner innebygde funksjoner for å lage dine egne funksjoner

Dette er et "visuelt grunnleggende" eksempel. Bruk programmeringsspråket til å bygge noe slikt.

Selvfølgelig må du skrive mye kode og bygge mange funksjoner ved å bruke programmeringsspråket du ønsker.

Trinn 5: Hva gjør modulene? "Inndataprosessor"

Hva gjør modulene? "Inndataprosessor"
Hva gjør modulene? "Inndataprosessor"

Det kan være hundre forskjellige måter å stille AI det samme spørsmålet. For eksempel; "Hva er klokken?", "Har du tid?" "Vet du hva klokken er?", "Kan du fortelle meg nåværende tid på dagen?" Siden brukeren bare ber om tiden, konverterer jeg hvilken som helst av disse inngangene til en enkelt utgang kalt "Forespørselstid" ved hjelp av en "oppslag" -tabell i databasen.

Du kan skrive kode for å gå gjennom en tabell til den finner et treff, eller hvis du bruker en SQL -database, kan du skrive en SQL -spørring, som …

"Velg Output fra TableName hvor Input = '" uansett'"

… Og så sender jeg utgangen, “Forespørselstid”, til neste kodemodul; "Prosess AI"

I tillegg til spørsmål, er det mange måter å si "Hei"

Hei, hallo, hva skjer, hei, hola, hvordan går det ?, hilsener, velkommen, hilsener, hei ….

Alle disse er redusert til "Hilsen"

Når AI -prosessoren ser "Greeting" sender den "Greeting" til utdataprosessoren, som vil plukke en tilfeldig hilsen fra en databasetabell og snakke høyt.

Trinn 6: "AI -prosessor"

"AI -prosessor"
"AI -prosessor"

Prosess AI er den største kodemodulen. Det er så stort at jeg delte det i seksjoner også.

Inngangen kontrolleres for å se om brukeren snakket en kommando, eller stilte et spørsmål. AI kan også være i en hvilken som helst av flere "moduser", noe som betyr at "Process AI" -koden forventer at brukeren SVARER et spørsmål, i stedet for å SPØRE et spørsmål.

Hvis brukeren ikke snakket en kommando og AI ikke er i en spesiell "modus", bygger den og utfører en haug med spørringer, ut fra kombinasjoner av ordene i "ordmatrisen". Alle søkeresultatene er lagret i en tabell, og hvert spørreresultat får en "score" for hvor tett resultatet stemmer med det brukeren hadde talt. Tabellen sorteres etter poengsummen, og resultatet med den høyeste poengsummen sendes til utgangen hvis den overskrider en viss terskel. Hvis alle poengsummene er under terskelen, kan AI svare med "Jeg vet ikke" eller "Det beregner ikke"

Trinn 7: Tabellen "output and Scores"

De
De

AI -utgangen fra inputen min "Hva gjorde kyllingen?"

Trinn 8: “Output Processor”

"Utdataprosessor"
"Utdataprosessor"

Dette gjør flere "ikke -relaterte" ting, men de har alle å gjøre med å få teksten fra AI -prosessoren til brukeren.

Her er en liste.

1. Tekst fra databasen kan være med små bokstaver, og ikke ha noen tegnsetting.. Subroutines vil bruke den første bokstaven med store bokstaver, og sette et punktum eller spørsmålstegn på slutten.

2. En annen subrutine vil sette apostrofer tilbake i sammentrekninger, eller konvertere sammentrekninger til fulle ord (dvs. "skrå" blir erstattet med "kan ikke")

3. Tekst-til-tale-motoren uttaler ikke noen ord slik jeg liker, så "Output Processor" erstatter disse ordene med en fonetisk stavemåte. Jeg har database "slå opp" -tabeller for å holde disse, lik den i "inngangsprosessoren"

4. Hvis AI ikke finner et passende svar i databasen, kan den si "jeg vet ikke", men jeg vil ikke at den skal si dette om og om igjen og om igjen. Ekte mennesker varierer svarene sine. Så det er en tabell med "Common Output" -fraser og en funksjon som plukker en tilfeldig (og vil aldri velge den samme to ganger på rad.)

5. Den gratis "tekst-til-tale" -motoren (TTS) gir ikke en programmerer mange alternativer for måten setninger tales på, men du har litt kontroll over tonehøyden og hastigheten til fonemer. Begrepet for dette er "Prosody". Jeg la til noen "prosody" -koder i teksten i databasen min, og når "Output Processor" ser disse, justerer den tonehøyde og hastighet i TTS -motoren etter hvert som hvert ord blir sagt.

6. Noen ganger er TTS bare vanskelig å forstå, så i tillegg til å si ord høyt, viser jeg dem også med store bokstaver på datamaskinens skjerm. Denne delen av "Brukergrensesnitt" er et rutenett som viser de siste 6 linjene i en samtale (Brukerinngang og AI -utgang) og ruller opp når nye linjer legges til.

Trinn 9: Fortsett å jobbe med det

Fortsett å jobbe med det
Fortsett å jobbe med det

Innspillet mitt var "Ikke si det til noen"

Jeg jobber fortsatt med AI -systemet mitt, og det vil sannsynligvis aldri virkelig bli "gjort". Etter hvert som jeg legger til flere funksjoner, vil jeg skrive flere artikler.

Kanskje noen av ideene mine vil inspirere deg til å bygge en AI som er bedre enn min

Anbefalt: