Innehållsförteckning:

Hur man gör en A.I. Del 2: 9 steg
Hur man gör en A.I. Del 2: 9 steg

Video: Hur man gör en A.I. Del 2: 9 steg

Video: Hur man gör en A.I. Del 2: 9 steg
Video: Мужская Стрижка Площадка Пошагово дома | Уроки мужских стрижек | Мужская стрижка на жесткие волосы 2024, Juli
Anonim
Hur man gör en A. I. Del 2
Hur man gör en A. I. Del 2

Detta är del 2 om steg jag tog för att bygga en AI på en Windows -dator, med hjälp av en gratis databas, programmeringsutvecklingsverktyg och den gratis inbyggda TTS -motorn som levereras med Windows.

Ordet "Windows" tillhör Microsoft.

Ordet "Dragon" tillhör Nuance.

Steg 1: Hur man gör en AI del 2

Hur man gör en AI del 2
Hur man gör en AI del 2

Välj ett programmeringsspråk och få några verktyg

Det finns många programmeringsspråk. Vissa är specialiserade på A. I. Min favorit är Visual Basic, så det är vad jag använde. Jag arbetar också med SQL -serverdatabaser, så jag använde det också.

Du kan ladda ner gratisversioner av dessa från Microsofts webbplats. Sök bara efter "EXPRESS" på Microsofts webbplats. [Visual Studio Express och SQL server Express]

Andra språk du kanske vill ha till oss är: Python, C#, C ++, Java, Prolog, Lisp, IPL

och många andra. AIML är ett”Markup Language” som är mycket intressant.

Jag ville ha ett bättre”taligenkänningsprogram” än det som följer med Windows, så jag köpte DRAGON -programvaran. Jag använder standardprogrammet "Text-till-tal" som medföljde Windows.

Steg 2: Design ditt system:

Design ditt system
Design ditt system

Dela upp dina stora projekt i ett gäng mindre projekt. Jag delade in min programkod i moduler.

Jag delade upp min kod i olika moduler så att en viss funktion är lättare att hitta.

Jag har moduler som heter "Process Input", "Process AI", "Process Output", "User Interface" och några andra. Några av mina funktioner måste vara tillgängliga för alla andra kodmoduler, så jag lägger dessa funktioner i en "gemensam" modul där allt delas

Steg 3: Funktioner som är inbyggda i programmeringsspråket:

Funktioner som är inbyggda i programmeringsspråket
Funktioner som är inbyggda i programmeringsspråket

Olika språk kan ha olika namn för dessa, men alla språk på hög nivå har liknande funktioner.

LCase eller ToLower: Konverterar en sträng till alla små bokstäver. Jag konverterar allt till små bokstäver innan jag gör en databassökning-även om det mesta är”skiftlägeskänsligt”-för säkerhets skull.

Ersätt: Ersätt en sträng inuti en sträng i en annan sträng. Du kan ersätta en sträng med en tom sträng “” för att bli av med den. Jag blir av med punkter, frågetecken, kommatecken och andra skiljetecken.

Split: Delar upp en sträng i enskilda bitar och lägger dem i en array. Denna funktion kommer att dela en sträng på valfritt tecken, eller "Avgränsare". Jag delar upp en mening på ett "mellanslagstecken" "" för att skapa en rad ord. Detta kallas "Tokenizing" av AI Gurus.

Jag använder de enskilda orden för att bygga frågor som används för att söka i databasen. (Mer om detta i min nästa artikel)

Steg 4: Kombinera inbyggda funktioner för att skapa dina egna funktioner

Detta är ett "visuellt grundläggande" exempel. Använd ditt programmeringsspråk för att bygga upp något liknande.

Naturligtvis måste du skriva mycket kod och bygga många funktioner med det valda programmeringsspråket.

Steg 5: Vad gör modulerna? "Inmatningsprocessor"

Vad gör modulerna? "Inmatningsprocessor"
Vad gör modulerna? "Inmatningsprocessor"

Det kan finnas hundra olika sätt att ställa samma fråga för AI. Till exempel; "Vad är klockan?", "Har du tid?" "Vet du vad klockan är?", "Kan du berätta för mig aktuell tid på dygnet?" Eftersom användaren bara frågar efter tiden, konverterar jag någon av dessa ingångar till en enda utgång som kallas "Frågetid" med hjälp av en databas "slå upp" -tabell.

Du kan skriva kod för att gå igenom en tabell tills den hittar en matchning, eller om du använder en SQL -databas kan du skriva en SQL -fråga, som …

"Välj utmatning från tabellnamn där inmatning =" "vad som helst""

… Och sedan skickar jag utmatningen,”Frågetid”, till nästa kodmodul; "Process AI"

Förutom frågor finns det många sätt att säga "Hej"

Hej, hej, vad händer, hej, hallå, hur går det ?, hälsningar, välkommen, hälsningar, hej….

Alla dessa reduceras till "hälsning"

När AI -processorn ser "Greeting" skickar den "Greeting" till outputprocessorn, som väljer en slumpmässig hälsning från en databastabell och talar högt.

Steg 6: "AI -processor"

"AI -processor"
"AI -processor"

Process AI är den största kodmodulen. Det är så stort att jag delade upp det i sektioner också.

Ingången kontrolleras för att se om användaren talade ett kommando eller ställde en fråga. AI kan också vara i någon av flera "lägen" vilket innebär att "Process AI" -koden förväntar sig att användaren SVARAR en fråga istället för att FRÅGA en fråga.

Om användaren inte talade ett kommando och AI inte är i ett speciellt "läge" så bygger och kör den en massa frågor, ur kombinationer av orden i "ordmatrisen". Alla sökresultat lagras i en tabell, och varje sökresultat får en "poäng" om hur nära resultatet matchar det som användaren hade talat. Tabellen sorteras efter poängen och resultatet med den högsta poängen skickas till utgången om den överskrider ett visst tröskelvärde. Om alla poäng ligger under tröskeln kan AI svara med "Jag vet inte" eller "Det beräknas inte"

Steg 7: "Utdata och poäng" -tabellen

De
De

AI: s utmatning från min ingång "Vad gjorde kycklingen?"

Steg 8: "Utmatningsprocessor"

"Utmatningsprocessor"
"Utmatningsprocessor"

Detta gör flera "orelaterade" saker men de har alla att göra med att få texten från AI -processorn till användaren.

Här är en lista.

1. Text från databasen kan vara med små bokstäver och inte ha några skiljetecken.. Subroutines kommer att versera den första bokstaven och sätta en punkt eller ett frågetecken på slutet.

2. En annan subrutin kommer att sätta tillbaka apostrofer till sammandragningar eller omvandla sammandragningar till fulla ord (dvs "kan inte" ersättas med "kan inte")

3. Text-till-tal-motorn uttalar inte vissa ord som jag gillar, så "Output Processor" ersätter dessa ord med en fonetisk stavning. Jag har databas "slå upp" -tabeller för att hålla dessa, liknande den i "inmatningsprocessorn"

4. Om AI inte hittar ett lämpligt svar i databasen kan det säga "jag vet inte" men jag vill inte att det ska säga det om och om igen och om igen. Verkliga människor varierar sina svar. Så det finns en tabell med "Common Output" -fraser och en funktion som väljer en slumpmässigt (och kommer aldrig att välja samma två gånger i rad.)

5. Den kostnadsfria "text-till-tal" -motorn (TTS) ger inte en programmerare många alternativ för hur meningar talas, men du har lite kontroll över tonhöjden och fonemernas hastighet. Termen för detta är "Prosody". Jag lade till några "prosody" -koder i texten i min databas, och när "Output Processor" ser dessa justerar den tonhöjden och hastigheten i TTS -motorn när varje ord talas.

6. Ibland är TTS bara svårt att förstå, så förutom att tala ord högt, visar jag dem också med stora bokstäver på min datorskärm. Denna del av "Användargränssnitt" är ett rutnät som visar de sex senaste raderna i en konversation (användarinmatning och AI -utmatning) och rullar upp när nya rader läggs till.

Steg 9: Fortsätt arbeta med det

Fortsätt arbeta med det
Fortsätt arbeta med det

Min input var "Berätta inte för någon"

Jag arbetar fortfarande med mitt AI -system, och det kommer förmodligen aldrig att bli "klart". När jag lägger till fler funktioner kommer jag att skriva fler artiklar.

Kanske kommer några av mina idéer att inspirera dig att bygga en AI som är bättre än min

Rekommenderad: