INHOUDSOPGAWE:

Hoe om 'n A.I. Deel 4: 3 stappe
Hoe om 'n A.I. Deel 4: 3 stappe

Video: Hoe om 'n A.I. Deel 4: 3 stappe

Video: Hoe om 'n A.I. Deel 4: 3 stappe
Video: #volgCoCo deel 6: Hoe slim is je hond? Hond achteruit leren lopen. Puppy pootje aanleren 2024, November
Anonim
Hoe om 'n A. I. Deel 4
Hoe om 'n A. I. Deel 4

Die ander dag het ek met my A. I. gepraat, en ek het gesê

dit, "Ek gaan boontoe om te eet, ons eet STEAK".

Die Speech Recognition (SR) sagteware het dit egter geïnterpreteer as "… we are STAKE"

Ek het vroeër 'n soortgelyke (maar ander) probleem teëgekom toe ek oor 'n foto gepraat het, en ek het die woord "BEELD" gesê. Die SR -sagteware interpreteer dit as 'PITCHER'

Die oplossing hiervoor was 'n eenvoudige heropleiding van SR -sagteware. (Of miskien my uitspraak)

Maar as ek die woorde STEAK of STAKE sê, spreek ek dit presies op dieselfde manier uit, en die opleiding van die SR -sagteware sal nie help in gevalle soos hierdie nie.

Stap 1:

Een idee om die 'Homoniemprobleem' op te los.

Ek moet na die woord “in konteks” kyk om te bepaal watter spelling ek moet gebruik. Die menslike brein doen dit redelik maklik, en jy weet nie eers dat jy dit doen nie.

Dit beteken dat ander woorde in 'n sin ondersoek word, en u brein besluit watter spelling die beste lyk. Nou, hoe doen ek dit in kode?

My A. I. program ontleed 'n sin in 'n verskeidenheid individuele woorde met behulp van die Visual Basic (VB) "Split" -funksie. [MyArray = Verdeel (InputSentence, ““)]

Elke woord in die skikking kan gekontroleer word of dit 'n moontlike homoniem is deur in 'n databasistabel te kyk wat 'n lys homonieme bevat.

Die skep van 'n ander tabel beteken natuurlik dat ons dit met data moet vul, en dat ons ook die data in die tabel moet kan onderhou.

U kan later 'n selfonderrigroutine bou om 'n klomp teks te skandeer, op soek na woorde in my Homonym -tabel en ander 'konteks' -woorde vas te lê. Hmmmmm, miskien is daar verskeie tafels nodig …

Deur hierdie 'instruksies' te skryf, help ek 'n oplossing vir 'n programmeringsuitdaging.

Stap 2:

Beeld
Beeld

Struktuur van HomonymContext -tabel

My eerste idee was 'n tabel met woorde, alternatiewe spellings en 'konteks' -woorde. Die idee was om 'n sin met 'n homoniem te soek, met ander woorde wat die 'konteks' gee, sodat die program kan bepaal watter spelling gebruik moet word. Die tabel bevat ook 'n kolom met die naam 'WordDef' om die definisie van die woord te bevat, wat meer is vir die mens wat die tafel onderhou as die A. I. kode.

Om elke woord te soek, kan ek VB -kode en SQL -kode gebruik, soos …

Vir elke woord in MyArray

Query = "Kies woord uit tblHomonynContext waar word = '" & word & "'"

as hierdie navraag 'n resultaat lewer, dan is die woord 'n homoniem

Volgende

Dit is op hierdie stadium net 'n pseudokode - ek het nog nie die presiese kode geskryf nie, of al die besonderhede uitgevind. Maar neem gerus my idee en implementeer dit met u eie gunsteling programmeertaal.

Stap 3:

Beeld
Beeld

As u insetsin 'n homoniem bevat, kan u dit nou doen

voer die VB -kode uit wat die ander woorde in u sin sal kontroleer, met die kontekswoorde in die resultate van die navraag.

U kan dit ook alles doen in 'n SQL -gestoorde prosedure, wat vinniger kan uitgevoer word.

Die funksie VB "InStr ()" gee 'n getal groter as nul, as een string in 'n ander string voorkom, of as dit nul gee, is die string NIE in die ander nie.

Instr () gee eintlik die posisie van die string in. As u net wil weet of String1 String2 bevat, kan u kode gebruik soos "As InStr (String1, String2)> 0 …"

U moet hierdie kode in u gunsteling programmeertaal bou.

Die HomonymContext -tabel is nie 'n baie goeie ontwerp nie. Dit bevat baie herhaalde data, en dit word deur databasisontwerpers as 'nie-genormaliseerd' beskou. 'N Beter manier om hierdie funksie te implementeer, is deur twee tabelle in 'n ouer-kind verhouding te gebruik. Een tabel (The Parent) bevat 'n lys van homonieme, hul definisies en 'n ry -ID. Hierdie ry -ID word gebruik as 'n sleutel tot die 'Kindertabel', wat die woorde en die kontekswoorde daarvan bevat.

Dit sou makliker wees om navraag te doen (en om dit te onderhou) as my oorspronklike ontwerp.

Aanbeveel: