Innholdsfortegnelse:

Hvordan lage en A.I. Del 4: 3 trinn
Hvordan lage en A.I. Del 4: 3 trinn

Video: Hvordan lage en A.I. Del 4: 3 trinn

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

Her om dagen snakket jeg med min A. I., og jeg sa til

det, "jeg skal oppe til middag, vi spiser Biff".

Imidlertid tolket programvaren for talegjenkjenning (SR) dette som "… vi har STAKE"

Jeg støtte på et lignende (men annerledes) problem tidligere da jeg snakket om et fotografi, og jeg sa ordet "BILDE". SR -programvaren tolket dette som "PITCHER"

Rettelsen for dette var en enkel omskolering av SR -programvare. (Eller kanskje min uttale)

Men når jeg sier ordene STEAK eller STAKE, uttaler jeg dem nøyaktig på samme måte, og omskolering av SR -programvaren vil ikke hjelpe i tilfeller som dette.

Trinn 1:

En idé for å løse "Homonym -problemet".

Jeg må se på ordet "i kontekst" for å finne ut hvilken stavemåte jeg skal bruke. Den menneskelige hjerne gjør dette ganske enkelt, og du vet ikke engang at du gjør det.

Dette betyr at andre ord i en setning blir undersøkt, og hjernen din bestemmer hvilken stavemåte som ser best ut. Nå, hvordan gjør jeg dette i kode?

Min A. I. programmet analyserer en setning i en rekke individuelle ord ved hjelp av Visual Basic (VB) "Split" -funksjonen. [MyArray = Split (InputSentence, ““)]

Hvert ord i matrisen kan kontrolleres for å se om det er et mulig homonym ved å se i en databasetabell som inneholder en liste over homonymer.

Selvfølgelig betyr det å lage en annen tabell at vi må fylle den med data, og vi må også kunne vedlikeholde dataene i tabellen.

En selvlærende subrutine kan bygges senere for å skanne en haug med tekst, se etter ord i Homonym -tabellen min og fange andre "kontekst" -ord. Hmmmmm, kanskje det trengs flere bord …

Å skrive disse "instruksjonene" hjelper meg med å "resonnere ut" en løsning på en programmeringsutfordring.

Steg 2:

Bilde
Bilde

Struktur av HomonymContext -tabell

Min første idé var en tabell som inneholdt ord, alternative stavemåter og "kontekst" -ord. Tanken var å søke i en setning som inneholder et homonym, etter andre ord som gir "konteksten", slik at programmet kan avgjøre hvilken stavemåte som skal brukes. Tabellen inneholder også en kolonne som heter "WordDef" for å inneholde definisjonen av ordet, noe som er mer for mennesket som vedlikeholder bordet enn A. I. kode.

For å søke i hvert ord kan jeg bruke VB -kode og SQL -kode som …

For hvert ord i MyArray

Query = "Velg ord fra tblHomonynContext hvor word = '" & word & "'"

hvis denne spørringen returnerer et resultat, er ordet et homonym

Neste

Dette er bare pseudokode på dette tidspunktet - jeg har ennå ikke skrevet den eksakte koden, eller funnet ut alle detaljene. Men ta gjerne ideen min og implementer den ved hjelp av ditt eget favoritt programmeringsspråk.

Trinn 3:

Bilde
Bilde

Hvis inndatasetningen inneholder et homonym, kan du nå

kjør VB -kode som vil kontrollere de andre ordene i setningen din, med kontekstordene i søkeresultatene.

Du kan også gjøre alt dette i en SQL -lagret prosedyre, som kan utføres raskere.

VB “InStr ()” -funksjonen vil returnere et tall større enn null, hvis en streng er inneholdt i en annen streng, eller den vil returnere null, er den strengen IKKE inneholdt i den andre.

Instr () returnerer faktisk posisjonen til den inneholdte strengen. Hvis du bare vil vite om String1 inneholder String2, kan du bruke kode som "If InStr (String1, String2)> 0 …"

Du må bygge denne koden på ditt favoritt programmeringsspråk.

HomonymContext -tabellen er ikke en veldig god design. Den har mange gjentatte data, og dette anses å være "ikke-normalisert" av databasedesignere. En bedre måte å implementere denne funksjonaliteten på er å bruke to tabeller, i et forhold mellom foreldre og barn. En tabell (The Parent) ville inneholde en liste over homonymer, deres definisjoner, og også en rad -ID. Denne rad -ID -en brukes som en nøkkel til "Barnetabellen" som vil inneholde ordene og kontekstordene deres.

Dette ville være lettere å spørre (og vedlikeholde) enn det originale designet mitt.

Anbefalt: