Inhoudsopgave:

Hoe maak je een A.I. Deel 2: 9 stappen
Hoe maak je een A.I. Deel 2: 9 stappen

Video: Hoe maak je een A.I. Deel 2: 9 stappen

Video: Hoe maak je een A.I. Deel 2: 9 stappen
Video: Wilco en de leugendetector | Alles Kids | Afl. 3 2024, November
Anonim
Hoe maak je een A. I. Deel 2
Hoe maak je een A. I. Deel 2

Dit is deel 2 over de stappen die ik heb genomen om een AI op een Windows-computer te bouwen, met behulp van een gratis database, een programmeerontwikkelingstool en de gratis ingebouwde TTS-engine die bij Windows wordt geleverd.

Het woord "Windows" is van Microsoft.

Het woord 'Dragon' is van Nuance.

Stap 1: Hoe maak je een AI deel 2

Hoe maak je een AI deel 2
Hoe maak je een AI deel 2

Kies een programmeertaal en krijg wat tools

Er zijn veel programmeertalen. Sommige zijn gespecialiseerd voor A. I. Mijn favoriet is Visual Basic, dus dat heb ik gebruikt. Ik werk ook met SQL-serverdatabases, dus die heb ik ook gebruikt.

U kunt gratis versies hiervan downloaden van de Microsoft-website. Zoek gewoon naar "EXPRESS" op de Microsoft-website. [Visual Studio Express en SQL server Express]

Andere talen die u misschien wilt gebruiken, zijn: Python, C#, C++, Java, Prolog, Lisp, IPL

en vele anderen. AIML is een "Markup Language" die erg interessant is.

Ik wilde een beter programma voor "spraakherkenning" dan het programma dat bij Windows wordt geleverd, dus kocht ik de DRAGON-software. Ik gebruik het standaard "Text-to-speech"-programma dat bij Windows is geleverd.

Stap 2: Ontwerp uw systeem:

Ontwerp uw systeem
Ontwerp uw systeem

Verdeel uw grote projecten in een aantal kleinere projecten. Ik verdeelde mijn programmacode in modules.

Ik heb mijn code opgedeeld in verschillende modules zodat een bepaalde functie makkelijker te vinden is.

Ik heb modules met de naam "Procesinvoer", "Process-AI", "Procesuitvoer", "Gebruikersinterface" en een paar andere. Sommige van mijn functies moeten toegankelijk zijn voor alle andere codemodules, dus ik heb die functies in een "gemeenschappelijke" module geplaatst waar alles wordt gedeeld

Stap 3: Functies die zijn ingebouwd in de programmeertaal:

Functies die in de programmeertaal zijn ingebouwd
Functies die in de programmeertaal zijn ingebouwd

Verschillende talen kunnen hiervoor verschillende namen hebben, maar alle talen op hoog niveau hebben vergelijkbare functies.

LCase of ToLower: converteert een tekenreeks naar kleine letters. Ik converteer alles naar kleine letters voordat ik een databasezoekopdracht doe - ook al zijn de meeste dingen "hoofdletterongevoelig" - voor het geval dat.

Vervangen: Vervang een string binnen een string in een andere string. U kunt een tekenreeks vervangen door een lege tekenreeks "" om er vanaf te komen. Ik ontdoe me van punten, vraagtekens, komma's en andere leestekens.

Splitsen: splitst een string op in afzonderlijke stukken en plaatst ze in een array. Deze functie splitst een tekenreeks op een willekeurig teken of "scheidingsteken". Ik splitste een zin op een "spatieteken" " " om een reeks woorden te maken. Dit wordt door de AI-goeroes "Tokenizing" genoemd.

Ik gebruik de afzonderlijke woorden om query's te maken die worden gebruikt om de database te doorzoeken. (Meer hierover in mijn volgende artikel)

Stap 4: Combineer ingebouwde functies om uw eigen functies te creëren

Dit is een "visual basic" voorbeeld. Gebruik je programmeertaal om zoiets te bouwen.

Natuurlijk moet je veel code schrijven en veel functies bouwen in de programmeertaal van je keuze.

Stap 5: Wat doen de modules? "Invoerprocessor"

Wat doen de modules? "Invoerprocessor"
Wat doen de modules? "Invoerprocessor"

Er kunnen honderd verschillende manieren zijn om de AI dezelfde vraag te stellen. Bijvoorbeeld; "Hoe laat is het?", "Heb je tijd?" "Weet je hoe laat het is?", "Kun je me vertellen hoe laat het is?" Omdat de gebruiker gewoon om de tijd vraagt, converteer ik elk van deze invoer naar een enkele uitvoer genaamd "Query Time" met behulp van een database "opzoektabel".

U kunt code schrijven om door een tabel te lopen totdat deze een overeenkomst vindt, of als u een SQL-database gebruikt, kunt u een SQL-query schrijven, zoals …

"Selecteer uitvoer van tabelnaam waarbij Input = '" wat dan ook '"

…En dan stuur ik de uitvoer, "Query Time", naar de volgende codemodule; "Verwerk AI"

Naast vragen zijn er veel manieren om "Hallo" te zeggen

Hallo, Hallo, wat is er, hey, hola, hoe gaat het?, groeten, welkom, begroetingen, hallo ….

Al deze worden gereduceerd tot "Groeten"

Wanneer de AI-processor "Greeting" ziet, stuurt deze "Greeting" naar de outputprocessor, die een willekeurige begroeting uit een databasetabel kiest en deze hardop uitspreekt.

Stap 6: "AI-processor"

"AI-processor"
"AI-processor"

Process AI is de grootste codemodule. Het is zo groot dat ik het ook in secties heb verdeeld.

De invoer wordt gecontroleerd om te zien of de gebruiker een commando heeft uitgesproken of een vraag heeft gesteld. De AI kan zich ook in een van de verschillende "modi" bevinden, wat betekent dat de code "Proces AI" verwacht dat de gebruiker een vraag BEANTWOORDT, in plaats van een vraag te STELLEN.

Als de gebruiker geen commando heeft uitgesproken en de AI zich niet in een speciale "Modus" bevindt, bouwt en voert het een aantal zoekopdrachten uit, uit combinaties van de woorden in de "woordenreeks". Alle zoekresultaten worden opgeslagen in een tabel en elk zoekresultaat krijgt een "score" die aangeeft in hoeverre het resultaat overeenkomt met wat de gebruiker had uitgesproken. De tabel wordt gesorteerd op score en het resultaat met de hoogste score wordt naar de uitvoer gestuurd als het een bepaalde drempel overschrijdt. Als alle scores onder de drempel liggen, kan de AI reageren met "Ik weet het niet" of "Dat berekent niet"

Stap 7: De tabel "output en scores"

De
De

De output van de AI van mijn input "Wat deed de kip?"

Stap 8: "Uitvoerprocessor"

"Uitvoerprocessor"
"Uitvoerprocessor"

Dit doet verschillende "niet-gerelateerd" uitziende dingen, maar ze hebben allemaal te maken met het krijgen van de tekst van de AI-processor naar de gebruiker.

Hier is een lijst.

1. Tekst uit de database mag in kleine letters zijn en geen leestekens hebben.. Subroutines zullen de eerste letter met een hoofdletter schrijven en aan het einde een punt of vraagteken plaatsen.

2. Een andere subroutine zet apostrofs terug in samentrekkingen, of zet samentrekkingen weer om in volledige woorden (d.w.z. "cant" wordt vervangen door "kan niet")

3. De tekst-naar-spraak-engine spreekt sommige woorden niet uit zoals ik wil, dus de "Uitvoerprocessor" vervangt die woorden door een fonetische spelling. Ik heb database-zoektabellen om deze vast te houden, vergelijkbaar met die in de "invoerprocessor"

4. Als de AI geen passend antwoord in de database vindt, kan hij zeggen "Ik weet het niet", maar ik wil niet dat hij dit steeds opnieuw zegt. Echte mensen variëren in hun reacties. Er is dus een tabel met "Common Output"-frases en een functie die er willekeurig een kiest (en nooit dezelfde twee keer achter elkaar zal kiezen.)

5. De gratis "text-to-speech" (TTS)-engine geeft een programmeur niet veel opties voor de manier waarop zinnen worden uitgesproken, maar je hebt wel een beetje controle over de toonhoogte en de snelheid van fonemen. De term hiervoor is 'prosodie'. Ik heb een aantal "prosodie" -codes toegevoegd aan de tekst in mijn database, en wanneer de "Output Processor" deze ziet, past hij de toonhoogte en snelheid in de TTS-engine aan terwijl elk woord wordt uitgesproken.

6. Soms is de TTS gewoon moeilijk te begrijpen, dus naast het hardop uitspreken van woorden, toon ik ze ook in grote letters op mijn computerscherm. Dit deel van de "Gebruikersinterface" is een raster dat de laatste 6 regels van een gesprek toont (Gebruikersinvoer en AI-uitvoer) en omhoog schuift wanneer nieuwe regels worden toegevoegd.

Stap 9: Blijf eraan werken

Blijf eraan werken
Blijf eraan werken

Mijn input was "Vertel het aan niemand"

Ik werk nog steeds aan mijn AI-systeem en het zal waarschijnlijk nooit echt "klaar" zijn. Naarmate ik meer functies toevoeg, zal ik meer artikelen schrijven.

Misschien zullen sommige van mijn ideeën je inspireren om een AI te bouwen die beter is dan de mijne

Aanbevolen: