27. oktober 2006 - 22:20Der er
8 kommentarer og 1 løsning
mente du funktion
Hej Eksperter
Jeg er virkelig kommet i et hovedbrud Jeg ønsker at lave en søgefunktion som indeholder en "mente du..." funktion ligesom google indeholder. Jeg har tænkt på at ligge alle søgeord i en database, hvis det søgeord giver et resultat. Men problemet ligger i at sammenligne søgeordene med dem i databasen og finde dem der ligner, selvom der måske er en stavefejl. Håber nogen kan hjælpe mig med det, da den er lidt svær synes jeg
Den er ikke bare lidt svær, den er meget svær. Det kaldes mønstergenkendelse, og det er noget vi mennesker gør uden overhovedet at tænke, mens computere er er gevaldigt dårlige til det.
Det bedste resultat fås som regel ved at anvende flere forskellige teknikker på een gang, men selv det bedste er ikke for godt, du har utvivlsomt bemærket de besynderlige ord stavehontrollen forslår når du skrive i en tekst editor med stavekontrol.
du kan lave forskellige signaturer der gør det lidt nemmere at sannenligne ord.
alfabetisk: et bitset med 28(29) bit, hvis ordet indeholder 'a' eller 'A' sættes bit 0, hvis ordet indeholder 'b' eller 'B' sættes bit 1, osv. du kan så måle forskellige ords 'nærhed' til hinanden ved at tælle hvormange bit i deres signatur de har fælles: 'hus' -> 00000001000000000010100000 'hund' -> 00010001000001000000100000 ved at ANDe de signatur bitsettet for hus og hund sammen får du 00000001000000000000100000 2 bit sat så de to ord har da lidt tilfælles.
men hviket af de to ord har mest tilfælles med 'sund' ? 'sund' -> 00010000000001000010100000 (hund,sund) giver 3 (hus,sund) giver 2 (men 'hus' er jo også et bogstav kortere)
Det giver en en vis mulighed for at genkende nære ord, men den er meget grov og ofte helt i shoven (meny,hymen) giver 4 :-(
Du kan lave en lignende signatur med bogstavpar det giver langt bedre resultater, men dit bitset skal så være 29*29 bit langt. (bit 0 er 'aa', bit 1 er 'ab', ..., bit 29 er 'ba', ...) og så lange bitset er svære at regne med i de fleste sprog.
Hvis det kun er noggle få søgeord der skal genkendes kan det muligvis være en hjælp til i det mindste at begrænse din "mente du xxx?" liste til ikke alt for mange ord.
En nogenlunde nem tilføjelse til ovenstående er også at teste på positionen af de fælles bogstaver. ovenfor fandt vi 4 fælles bogstaver i 'meny' og 'hymen' 'm' er fælles og: bogstav 1 af 4 i 'meny' i et 64-bit bitset kan vi repræsentere det med de 16 første bit sat bogstav 3 af 5 i 'hymen' i et 64-bit bitset kan vi repræsentere det med de 13 midterste bit sat igen kan vi ANDe de to bitset sammen og se om 'm' har nogenlunde samme position (bit til fælles)
Ved at gøre det for alle de fælles bogstaver finder vi så ud af at ordene 'meny' og 'hymen' slet ikke ligner hinanden. og ligervis at 'sund' og 'hund' ligner hinanden langt mere end 'sund' og 'hus'.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.