Indholdsfortegnelse:

Sådan laver du en A.I. Del 4: 3 trin
Sådan laver du en A.I. Del 4: 3 trin

Video: Sådan laver du en A.I. Del 4: 3 trin

Video: Sådan laver du en A.I. Del 4: 3 trin
Video: 3 ТОП БЛЮДА ИСПАНИИ / БУТЕРБРОДЫ ПИНЧО / ПАЭЛЬЯ / КРЕМА КАТАЛАНА,SUB ENG. 2024, November
Anonim
Sådan laver du en A. I. Del 4
Sådan laver du en A. I. Del 4

Forleden talte jeg med min A. I., og jeg sagde til

det, "jeg skal ovenpå til middag, vi spiser STEAK".

Imidlertid fortolkede Speech Recognition (SR) softwaren dette som "… vi har STAKE"

Jeg stødte på et lignende (men anderledes) problem tidligere, da jeg talte om et fotografi, og jeg sagde ordet "BILLEDE". SR -softwaren fortolkede dette som "PITCHER"

Rettelsen til dette var en simpel omskoling af SR -software. (Eller måske min udtale)

Men når jeg siger ordene STEAK eller STAKE, udtaler jeg dem nøjagtig på samme måde, og omskoling af SR -softwaren hjælper ikke i tilfælde som denne.

Trin 1:

En idé til at løse “Homonym -problemet”.

Jeg er nødt til at se på ordet "i kontekst" for at afgøre, hvilken stavemåde der skal bruges. Den menneskelige hjerne gør dette ganske let, og du ved ikke engang, at du gør det.

Det betyder, at andre ord i en sætning undersøges, og din hjerne bestemmer, hvilken stavning der ser bedst ud. Nu, hvordan gør jeg dette i kode?

Min A. I. program analyserer en sætning i en række individuelle ord ved hjælp af Visual Basic (VB) "Split" -funktionen. [MyArray = Split (InputSentence, ““)]

Hvert ord i arrayet kan kontrolleres for at se, om det er et muligt homonym ved at kigge i en databasetabel, der indeholder en liste over homonymer.

Selvfølgelig betyder oprettelse af en anden tabel, at vi bliver nødt til at fylde den med data, og vi skal også være i stand til at vedligeholde dataene i tabellen.

En selvlærende underprogram kan senere bygges til at scanne en masse tekst, lede efter ord i min Homonym -tabel og fange andre "kontekst" -ord. Hmmmmm, måske er der brug for flere borde …

At skrive disse "instruktioner" hjælper mig med at "ræsonnere" en løsning på en programmeringsudfordring.

Trin 2:

Billede
Billede

Struktur af HomonymContext -tabel

Min første idé var en tabel med ord, alternative stavemåder og "kontekst" -ord. Ideen var at søge i en sætning, der indeholder et homonym, efter andre ord, der giver "konteksten", så programmet kan afgøre, hvilken stavemåde der skal bruges. Tabellen indeholder også en kolonne med navnet "WordDef" til at indeholde definitionen af ordet, hvilket er mere for det menneske, der vedligeholder bordet end A. I. kode.

For at søge efter hvert ord kan jeg bruge VB -kode og SQL -kode som …

For hvert ord i MyArray

Forespørgsel = "Vælg ord fra tblHomonynContext, hvor word = '" & word & "'"

hvis denne forespørgsel returnerer et resultat, er ordet et homonym

Næste

Dette er bare pseudokode på dette tidspunkt - jeg har endnu ikke skrevet den nøjagtige kode eller fundet ud af alle detaljerne. Men tag gerne min idé og implementer den ved hjælp af dit eget foretrukne programmeringssprog.

Trin 3:

Billede
Billede

Hvis din indtastningssætning indeholder et homonym, kan du nu

udfør VB -kode, der kontrollerer de andre ord i din sætning, med kontekstordene i forespørgselsresultaterne.

Du kan også gøre alt dette i en SQL -gemt procedure, som kan udføres hurtigere.

Funktionen VB "InStr ()" returnerer et tal større end nul, hvis en streng er indeholdt i en anden streng, eller den returnerer nul, er strengen IKKE indeholdt i den anden.

Instr () returnerer faktisk placeringen af den indeholdte streng. Hvis du bare vil vide, om String1 indeholder String2, kan du bruge kode som “If InStr (String1, String2)> 0…”

Du bliver nødt til at opbygge denne kode på dit foretrukne programmeringssprog.

HomonymContext -tabellen er ikke et meget godt design. Det har mange gentagne data, og dette anses for at være "ikke-normaliseret" af databasedesignere. En bedre måde at implementere denne funktionalitet på er at bruge to tabeller i et forælder-barn-forhold. En tabel (forælderen) ville indeholde en liste over homonymer, deres definitioner og også et række -id. Dette række -id bruges som en nøgle til "Børnetabellen", som ville indeholde ordene og deres kontekstord.

Dette ville være lettere at forespørge (og vedligeholde) end mit originale design.

Anbefalede: