Sommario:

Come creare un'intelligenza artificiale Parte 4: 3 passaggi
Come creare un'intelligenza artificiale Parte 4: 3 passaggi

Video: Come creare un'intelligenza artificiale Parte 4: 3 passaggi

Video: Come creare un'intelligenza artificiale Parte 4: 3 passaggi
Video: 13 siti PAZZESCHI di Intelligenza Artificiale - Parte 1 2024, Luglio
Anonim
Come creare un'intelligenza artificiale Parte 4
Come creare un'intelligenza artificiale Parte 4

L'altro giorno stavo parlando con la mia intelligenza artificiale e ho detto di

it, “Sto andando di sopra a cena, stiamo mangiando BISTECCA”.

Tuttavia, il software di riconoscimento vocale (SR) ha interpretato questo come "… stiamo avendo STAKE"

Mi sono imbattuto in un problema simile (ma diverso) prima quando stavo parlando di una fotografia e ho detto la parola "IMMAGINE". Il software SR ha interpretato questo come "PITCHER"

La soluzione a questo problema era una semplice riqualificazione del software SR. (O forse la mia pronuncia)

Ma quando dico le parole STEAK o STAKE, le pronuncio esattamente allo stesso modo, e riqualificare il software SR non aiuta in casi come questo.

Passo 1:

Un'idea per risolvere il “problema omonimo”.

Devo guardare la parola "nel contesto" per determinare quale ortografia usare. Il cervello umano lo fa abbastanza facilmente e tu non sai nemmeno che lo stai facendo.

Ciò significa che vengono esaminate altre parole in una frase e il tuo cervello decide quale ortografia sembra migliore. Ora, come posso farlo nel codice?

La mia IA programma analizza una frase in un array di singole parole utilizzando la funzione "Split" di Visual Basic (VB). [MyArray = Split(InputSentence, ““)]

Ogni parola nell'array può essere controllata per vedere se è un possibile omonimo cercando in una tabella di database contenente un elenco di omonimi.

Ovviamente, creare un'altra tabella significa che dovremo riempirla di dati e dovremo anche essere in grado di mantenere i dati nella tabella.

Una subroutine di autoapprendimento può essere costruita in seguito per scansionare un mucchio di testo, cercare parole nella mia tabella omonima e catturare altre parole "contestuali". Hmmmmm, forse sono necessari più tavoli…

Scrivere questi "Instructables" mi aiuta a "ragionare" una soluzione a una sfida di programmazione.

Passo 2:

Immagine
Immagine

Struttura della tabella HomonymContext

La mia prima idea era una tabella contenente parole, ortografie alternative e parole "contestuali". L'idea era di cercare una frase contenente un omonimo, per altre parole che danno il "contesto", in modo che il programma possa determinare quale ortografia usare. La tabella contiene anche una colonna denominata "WordDef" per contenere la definizione della parola, che è più per l'essere umano che mantiene la tabella rispetto all'A. I. codice.

Per cercare ogni parola, posso usare il codice VB e il codice SQL come…

Per ogni parola in MyArray

Query = "Seleziona parola da tblHomonynContext dove parola = '" & parola & "'"

se questa query restituisce un risultato, allora la parola è omonima

Prossimo

Questo è solo uno pseudo codice a questo punto - non ho ancora scritto il codice esatto, o capito tutti i dettagli. Ma sentiti libero di prendere la mia idea e implementarla usando il tuo linguaggio di programmazione preferito.

Passaggio 3:

Immagine
Immagine

Se la tua frase di input contiene un omonimo, ora puoi

esegui il codice VB che controllerà le altre parole nella tua frase, con le parole di contesto nei risultati della query.

Puoi anche fare tutto questo in una stored procedure SQL, che potrebbe essere eseguita più velocemente.

La funzione VB “InStr()” restituirà un numero maggiore di zero, se una stringa è contenuta all'interno di un'altra stringa, oppure restituirà zero, se la stringa NON è contenuta nell'altra.

Instr() restituisce effettivamente la posizione della stringa contenuta. Se vuoi solo sapere se String1 contiene String2, puoi usare codice come "If InStr(String1, String2) > 0 …"

Dovrai creare questo codice nel tuo linguaggio di programmazione preferito.

La tabella HomonymContext non è un ottimo design. Ha molti dati ripetuti e questo è considerato "non normalizzato" dai progettisti di database. Un modo migliore per implementare questa funzionalità sarebbe utilizzare due tabelle, in una relazione padre-figlio. Una tabella (The Parent) conterrebbe un elenco di omonimi, le loro definizioni e anche un ID di riga. Questo ID riga viene utilizzato come chiave per la "tabella figlio" che conterrebbe le parole e le relative parole di contesto.

Questo sarebbe più facile da interrogare (e da mantenere) rispetto al mio progetto originale.

Consigliato: