Cuprins:

Cum să faci un A.I. Partea 4: 3 pași
Cum să faci un A.I. Partea 4: 3 pași

Video: Cum să faci un A.I. Partea 4: 3 pași

Video: Cum să faci un A.I. Partea 4: 3 pași
Video: ALGORITMUL SECRET CARE REZOLVA CUBUL RUBIK 2024, Noiembrie
Anonim
Cum să faci un A. I. Partea 4
Cum să faci un A. I. Partea 4

Zilele trecute vorbeam cu A. I.-ul meu și i-am spus

„Mă duc sus la cină, luăm STEAK”.

Cu toate acestea, software-ul de recunoaștere a vorbirii (SR) a interpretat acest lucru ca „… avem MIZĂ”

Am întâmpinat o problemă similară (dar diferită) mai devreme când vorbeam despre o fotografie și am spus cuvântul „IMAGINE”. Software-ul SR a interpretat acest lucru ca „PITCHER”

Soluția pentru acest lucru a fost o simplă recalificare a software-ului SR. (Sau poate pronunția mea)

Dar când spun cuvintele STEAK sau STAKE, le pronunț exact la fel, iar recalificarea software-ului SR nu va ajuta în astfel de cazuri.

Pasul 1:

O idee pentru a rezolva „Problema omonimă”.

Trebuie să mă uit la cuvântul „în context” pentru a determina ce ortografie să folosesc. Creierul uman face asta destul de ușor și nici măcar nu știi că o faci.

Aceasta înseamnă că alte cuvinte dintr-o propoziție sunt examinate, iar creierul tău decide care ortografie arată cel mai bine. Acum, cum fac asta în cod?

A. I. programul analizează o propoziție într-o serie de cuvinte individuale utilizând funcția „Split” a Visual Basic (VB). [MyArray = Split (InputSentence, „„)]

Fiecare cuvânt din matrice poate fi verificat pentru a vedea dacă este un omonim posibil, căutând într-un tabel de baze de date care conține o listă de omonime.

Desigur, crearea unui alt tabel înseamnă că va trebui să îl completăm cu date și, de asemenea, va trebui să putem păstra și datele din tabel.

Un subrutin de autoînvățare poate fi construit mai târziu pentru a scana o grămadă de text, căutând cuvinte în tabelul meu omonim și să capteze alte cuvinte de „context”. Hmmmmm, poate sunt necesare mai multe tabele …

Scrierea acestor „Instructabile” mă ajută să „argumentez” o soluție la o provocare de programare.

Pasul 2:

Imagine
Imagine

Structura tabelului HomonymContext

Prima mea idee a fost un tabel care conține cuvinte, ortografii alternative și cuvinte „Context”. Ideea a fost căutarea unei propoziții care conține un omonim, pentru alte cuvinte care dau „contextul”, astfel încât programul să poată stabili ce ortografie să utilizeze. Tabelul conține, de asemenea, o coloană numită „WordDef” pentru a menține definiția cuvântului, care este mai mult pentru omul care întreține tabelul decât A. I. cod.

Pentru a căuta fiecare cuvânt, pot folosi codul VB și codul SQL ca …

Pentru fiecare Cuvânt din MyArray

Interogare = "Selectați Word din tblHomonynContext unde word = '" & word & "'"

dacă această interogare returnează un rezultat, atunci cuvântul este un omonim

Următorul

Acesta este doar pseudo cod în acest moment - încă nu am scris codul exact sau nu am aflat toate detaliile. Dar nu ezitați să luați ideea mea și să o implementați folosind propriul limbaj de programare preferat.

Pasul 3:

Imagine
Imagine

Dacă propoziția de intrare conține un omonim, acum puteți

executați cod VB care va verifica celelalte cuvinte din propoziția dvs., cu cuvintele de context din rezultatele interogării.

De asemenea, puteți face acest lucru într-o procedură stocată SQL, care se poate executa mai repede.

Funcția VB „InStr ()” va returna un număr mai mare decât zero, dacă un șir este conținut într-un alt șir sau va întoarce zero, șirul NU este conținut în celălalt.

Instr () returnează de fapt poziția șirului conținut. Dacă doriți doar să știți dacă String1 conține String2, puteți utiliza codul cum ar fi „If InStr (String1, String2)> 0 …”

Va trebui să construiți acest cod în limbajul de programare preferat.

Tabelul HomonymContext nu este un design foarte bun. Are o mulțime de date repetate, iar acest lucru este considerat a fi „Non-Normalizat” de către proiectanții de baze de date. O modalitate mai bună de a implementa această funcționalitate ar fi utilizarea a două tabele, într-o relație părinte-copil. Un tabel (The Parent) ar conține o listă de omonime, definițiile acestora, precum și un ID de rând. Acest ID de rând este folosit ca cheie pentru „tabelul copil” care ar conține cuvintele și cuvintele de context ale acestora.

Acest lucru ar fi mai ușor de interogat (și de întreținut) decât designul meu original.

Recomandat: