Indholdsfortegnelse:

Sådan laver du en A.I. Del 2: 9 trin
Sådan laver du en A.I. Del 2: 9 trin

Video: Sådan laver du en A.I. Del 2: 9 trin

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

Dette er del 2 om trin, jeg tog for at bygge en AI på en Windows -computer, ved hjælp af en gratis database, programmeringsudviklingsværktøj og den gratis indbyggede TTS -motor, der følger med Windows.

Ordet "Windows" tilhører Microsoft.

Ordet "Dragon" tilhører Nuance.

Trin 1: Sådan laver du en AI del 2

Sådan laver du en AI del 2
Sådan laver du en AI del 2

Vælg et programmeringssprog og få nogle værktøjer

Der er mange programmeringssprog. Nogle er specialiseret til A. I. Min favorit er Visual Basic, så det er det, jeg brugte. Jeg arbejder også med SQL -serverdatabaser, så jeg brugte det også.

Du kan downloade gratis versioner af disse fra Microsofts websted. Bare søg efter "EXPRESS" på Microsofts websted. [Visual Studio Express og SQL server Express]

Andre sprog, du måske vil have til os, er: Python, C#, C ++, Java, Prolog, Lisp, IPL

og mange andre. AIML er et "Markup Language", der er meget interessant.

Jeg ville have et bedre "talegenkendelse" -program end det, der følger med Windows, så jeg købte DRAGON -softwaren. Jeg bruger standardprogrammet "Tekst til tale", der fulgte med Windows.

Trin 2: Design dit system:

Design dit system
Design dit system

Opdel dine store projekter i en flok mindre projekter. Jeg opdelte min programkode i moduler.

Jeg opdelte min kode i forskellige moduler, så en bestemt funktion er lettere at finde.

Jeg har moduler med navnet "Process Input", "Process AI", "Process Output", "User Interface" og et par andre. Nogle af mine funktioner skal være tilgængelige for alle de andre kodemoduler, så jeg placerer disse funktioner i et "fælles" modul, hvor alt deles

Trin 3: Funktioner, der er indbygget i programmeringssproget:

Funktioner, der er indbygget i programmeringssproget
Funktioner, der er indbygget i programmeringssproget

Forskellige sprog kan have forskellige navne til disse, men alle sprog på højt niveau har lignende funktioner.

LCase eller ToLower: Konverterer en streng til alle små bogstaver. Jeg konverterer alt til små bogstaver, før jeg foretager en databasesøgning-selvom de fleste ting er "store og små ufølsomme"-bare i tilfælde.

Erstat: Udskift en streng inde i en streng i en anden streng. Du kan erstatte en streng med en tom streng “” for at slippe af med den. Jeg slipper for perioder, spørgsmålstegn, kommaer og andre tegnsætningstegn.

Split: Opdeler en streng i individuelle stykker og sætter dem i en matrix. Denne funktion vil opdele en streng på et hvilket som helst tegn, eller “Afgrænser”. Jeg delte en sætning på et "mellemrumstegn" "" for at lave en række ord. Dette kaldes "Tokenizing" af AI Gurus.

Jeg bruger de enkelte ord til at bygge forespørgsler, der bruges til at søge i databasen. (Mere om dette i min næste artikel)

Trin 4: Kombiner indbyggede funktioner for at oprette dine egne funktioner

Dette er et "visuelt grundlæggende" eksempel. Brug dit programmeringssprog til at bygge sådan noget.

Selvfølgelig skal du skrive en masse kode og opbygge mange funktioner ved hjælp af det valgte programmeringssprog.

Trin 5: Hvad gør modulerne? "Inputprocessor"

Hvad gør modulerne? "Input -processor"
Hvad gør modulerne? "Input -processor"

Der kan være hundrede forskellige måder at stille AI det samme spørgsmål på. For eksempel; "Hvad er klokken?", "Har du tid?" "Ved du hvad klokken er?", "Kan du fortælle mig det aktuelle tidspunkt på dagen?" Da brugeren bare beder om tiden, konverterer jeg et hvilket som helst af disse input til et enkelt output kaldet "forespørgsels tid" ved hjælp af en database "slå op" -tabel.

Du kan skrive kode for at gå gennem en tabel, indtil den finder et match, eller hvis du bruger en SQL -database, kan du skrive en SQL -forespørgsel, som …

"Vælg Output fra TableName, hvor Input = '" uanset' '

… Og så sender jeg output, “Forespørgselstid”, til det næste kodemodul; "Process AI"

Udover spørgsmål er der mange måder at sige “Hej”

Hej, Hej, hvad sker der, hej, hola, hvordan har du det ?, hilsener, velkommen, hilsner, hej ….

Alle disse er reduceret til "Hilsen"

Når AI -processoren ser “Hilsen” sender den “Hilsen” til outputprocessoren, som vælger en tilfældig hilsen fra en databasetabel og taler den højt.

Trin 6: "AI -processor"

"AI -processor"
"AI -processor"

Process AI er det største kodemodul. Det er så stort, at jeg også har delt det i sektioner.

Inputtet kontrolleres for at se, om brugeren talte en kommando eller stillede et spørgsmål. AI kan også være i en hvilken som helst af flere "tilstande", hvilket betyder, at "Process AI" -koden forventer, at brugeren SVARER et spørgsmål, i stedet for at SPØRGE et spørgsmål.

Hvis brugeren ikke talte en kommando, og AI ikke er i en særlig "tilstand", bygger og udfører den en masse forespørgsler ud af kombinationer af ordene i "ordmatrix". Alle forespørgselsresultaterne gemmes i en tabel, og hvert forespørgselsresultat får en "score" om, hvor tæt resultatet svarer til det, brugeren havde talt. Tabellen sorteres efter scoren, og resultatet med den højeste score sendes til output, hvis den overskrider en bestemt tærskel. Hvis alle scoringer er under tærsklen, svarer AI muligvis med "Jeg ved det ikke" eller "Det beregner ikke"

Trin 7: "Output og Scores" -tabellen

Det
Det

AI'ens output fra mit input "Hvad lavede kyllingen?"

Trin 8: "Outputprocessor"

"Outputprocessor"
"Outputprocessor"

Dette gør flere "ikke -relaterede" ting, men de har alle at gøre med at få teksten fra AI -processoren til brugeren.

Her er en liste.

1. Tekst fra databasen kan være i små bogstaver og ikke have nogen tegnsætning.. Subroutiner vil markere det første bogstav og sætte en punktum eller et spørgsmålstegn i slutningen.

2. En anden underprogram vil sætte apostrofer tilbage i sammentrækninger eller konvertere sammentrækninger tilbage til fulde ord (dvs. "cant" erstattes med "kan ikke")

3. Tekst-til-tale-motoren udtaler ikke nogle ord, som jeg kan lide, så "Output Processor" erstatter disse ord med en fonetisk stavemåde. Jeg har database "slå op" -tabeller for at holde disse, svarende til den ene i "inputprocessoren"

4. Hvis AI ikke finder et passende svar i databasen, kan det sige "jeg ved det ikke", men jeg vil ikke have det til at sige dette igen og igen og igen. Rigtige mennesker varierer deres svar. Så der er en tabel med "Common Output" -fraser og en funktion, der vælger en tilfældigt (og vil aldrig vælge den samme to gange i træk.)

5. Den gratis "tekst-til-tale" -motor (TTS) giver ikke en programmør mange muligheder for den måde, sætninger tales på, men du har lidt kontrol over tonehøjden og hastigheden af fonemer. Betegnelsen for dette er "Prosody". Jeg tilføjede nogle "prosody" -koder til teksten i min database, og når "Output Processor" ser disse, justerer den tonehøjde og hastighed i TTS -motoren, efterhånden som hvert ord bliver talt.

6. Nogle gange er TTS bare svært at forstå, så udover at tale ord højt, viser jeg dem også med store bogstaver på min computerskærm. Denne del af "Brugergrænsefladen" er et gitter, der viser de sidste 6 linjer i en samtale (Brugerindgang og AI -output) og ruller op, når nye linjer tilføjes.

Trin 9: Bliv ved med at arbejde på det

Bliv ved med at arbejde på det
Bliv ved med at arbejde på det

Mit input var "Fortæl det ikke til nogen"

Jeg arbejder stadig på mit AI -system, og det vil sandsynligvis aldrig rigtig blive "gjort". Når jeg tilføjer flere funktioner, vil jeg skrive flere artikler.

Måske vil nogle af mine ideer inspirere dig til at bygge en AI, der er bedre end min

Anbefalede: