Innehållsförteckning:

Hur man gör en A.I. Del 4: 3 steg
Hur man gör en A.I. Del 4: 3 steg

Video: Hur man gör en A.I. Del 4: 3 steg

Video: Hur man gör en A.I. Del 4: 3 steg
Video: Как сделать Печь 3,5 на 4 кирпича для отопления частного дома своими руками 2024, Juli
Anonim
Hur man gör en A. I. Del 4
Hur man gör en A. I. Del 4

Häromdagen pratade jag med min A. I., och jag sa till

det, "jag ska gå upp till middag, vi äter STEAK".

Men programvaran för taligenkänning (SR) tolkade detta som "… vi har STAKE"

Jag stötte på ett liknande (men annorlunda) problem tidigare när jag pratade om ett fotografi, och jag sa ordet "BILD". SR -programvaran tolkade detta som "PITCHER"

Fixen för detta var en enkel omskolning av SR -programvara. (Eller kanske mitt uttal)

Men när jag säger orden STEAK eller STAKE uttalar jag dem exakt på samma sätt, och omskolning av SR -programvaran hjälper inte i fall som detta.

Steg 1:

En idé att lösa "Homonymproblemet".

Jag måste titta på ordet "i sammanhang" för att avgöra vilken stavning jag ska använda. Den mänskliga hjärnan gör det ganska enkelt, och du vet inte ens att du gör det.

Det betyder att andra ord i en mening undersöks, och din hjärna bestämmer vilken stavning som ser bäst ut. Nu, hur gör jag detta i kod?

Min A. I. programmet analyserar en mening i en uppsättning enskilda ord med hjälp av Visual Basic (VB) "Split" -funktionen. [MyArray = Split (InputSentence, ““)]

Varje ord i matrisen kan kontrolleras för att se om det är en möjlig homonym genom att titta i en databastabell som innehåller en lista med homonymer.

Naturligtvis innebär att skapa en annan tabell att vi kommer att behöva fylla den med data, och vi måste också kunna behålla data i tabellen.

En självlärande subrutin kan byggas senare för att skanna en massa text, leta efter ord i min Homonymtabell och fånga andra "sammanhang" -ord. Hmmmmm, kanske behövs flera bord …

Att skriva dessa "instruktioner" hjälper mig att "resonera" en lösning på en programmeringsutmaning.

Steg 2:

Bild
Bild

Struktur för HomonymContext -tabell

Min första idé var en tabell med ord, alternativa stavningar och "sammanhang" -ord. Tanken var att söka i en mening som innehåller en homonym, efter andra ord som ger "sammanhanget", så att programmet kan avgöra vilken stavning som ska användas. Tabellen innehåller också en kolumn med namnet "WordDef" för att innehålla definitionen av ordet, vilket är mer för människan som underhåller bordet än A. I. koda.

För att söka efter varje ord kan jag använda VB -kod och SQL -kod som …

För varje ord i MyArray

Query = "Välj ord från tblHomonynContext där word = '" & word & "'"

om den här frågan returnerar ett resultat, är ordet en homonym

Nästa

Det här är bara pseudokod vid denna tidpunkt - jag har ännu inte skrivit den exakta koden eller tagit reda på alla detaljer. Men ta gärna min idé och implementera den med ditt eget favorit programmeringsspråk.

Steg 3:

Bild
Bild

Om din inmatningssats innehåller en homonym kan du nu

kör VB -kod som kontrollerar de andra orden i din mening, med sammanhangsorden i sökresultaten.

Du kan också göra allt detta i en SQL -lagrad procedur, som kan köras snabbare.

VB "InStr ()" -funktionen returnerar ett tal som är större än noll, om en sträng finns i en annan sträng, eller om den returnerar noll, är strängen INTE i den andra.

Instr () returnerar faktiskt positionen för den innehållna strängen. Om du bara vill veta om String1 innehåller String2 kan du använda kod som "If InStr (String1, String2)> 0 …"

Du måste bygga den här koden på ditt favoritprogrammeringsspråk.

HomonymContext -tabellen är inte en mycket bra design. Den har många upprepade data, och detta anses vara "icke-normaliserat" av databasdesigners. Ett bättre sätt att implementera denna funktionalitet skulle vara att använda två tabeller, i en förälder-barn-relation. En tabell (föräldern) skulle innehålla en lista över homonymer, deras definitioner och även ett rad -ID. Detta rad -ID används som en nyckel till "Barntabellen" som skulle innehålla orden och deras sammanhangsord.

Detta skulle vara lättare att fråga (och underhålla) än min ursprungliga design.

Rekommenderad: