/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Fonetisk søgning
Fra : Arne Feldborg


Dato : 13-11-08 15:18

Hejsa....

Hvilke muligheder har man som almindelig amatør, dvs. indenfor
overkommelige økonomiske rammer, for at etablere en form for fonetisk
søgning på navne i en database (MySql).

Og her tænker jeg ikke på SoundEx som er uegnet til danske forhold.
Foskellige former for såkaldte "Fuzz" søgninger er vel sådan set ok, men
bygger i lidt for høj grad på et tilfældighedsprincip.

Hvilke andre muligheder er der . Nogen der har erfaring med det.?

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

 
 
Gert Krabsen (13-11-2008)
Kommentar
Fra : Gert Krabsen


Dato : 13-11-08 16:07

Arne Feldborg skrev:
> Hejsa....
>
> Hvilke muligheder har man som almindelig amatør, dvs. indenfor
> overkommelige økonomiske rammer, for at etablere en form for fonetisk
> søgning på navne i en database (MySql).
>
> Og her tænker jeg ikke på SoundEx som er uegnet til danske forhold.
> Foskellige former for såkaldte "Fuzz" søgninger er vel sådan set ok, men
> bygger i lidt for høj grad på et tilfældighedsprincip.
>
> Hvilke andre muligheder er der . Nogen der har erfaring med det.?

En eller anden gang burde vi tage os sammen til at få sendt en spion ind
for at checke algoritmerne i telefonoplysningens søgesystem

Arne Vajhøj (14-11-2008)
Kommentar
Fra : Arne Vajhøj


Dato : 14-11-08 03:23

Arne Feldborg wrote:
> Hvilke muligheder har man som almindelig amatør, dvs. indenfor
> overkommelige økonomiske rammer, for at etablere en form for fonetisk
> søgning på navne i en database (MySql).
>
> Og her tænker jeg ikke på SoundEx som er uegnet til danske forhold.
> Foskellige former for såkaldte "Fuzz" søgninger er vel sådan set ok, men
> bygger i lidt for høj grad på et tilfældighedsprincip.
>
> Hvilke andre muligheder er der . Nogen der har erfaring med det.?

Den simple metode må være at lave et ekstra felt i tabellen, hvor
du gemmer en fonetisk variant af ordet, og så i applikationen
laver en funktion der konverterer ord til en unik fonetisk
variant.

For 20 år siden havde jeg noget Pascal kode der lavede noget
lignende.

Det er nok svært at lave 99.99% korrekt men 95% korrekt burde
være nemt.

Arne

Arne Feldborg (14-11-2008)
Kommentar
Fra : Arne Feldborg


Dato : 14-11-08 16:05

Arne Vajhøj <arne@vajhoej.dk> skrev Thu, 13 Nov 2008 21:23:21 -0500


>Den simple metode må være at lave et ekstra felt i tabellen, hvor
>du gemmer en fonetisk variant af ordet, og så i applikationen
>laver en funktion der konverterer ord til en unik fonetisk
>variant.
>
Tjo, det havde jeg jo også fundet frem til.

Men til det skal der jo bruges et sæt såkaldte transformationsregler,
a'la det der bruges i SounEx bare tilpasset danske forhold. De forsøg
jeg hidtil har set har ikke virket overbevisende.

Men jeg ved jo at det findes, feks. hos teleselskaberne (som Gert også
nævner) og i visse online ordbøger. spørgsmålet er bare, om der findes
noget som vi andre almindelige folk kan bruge.

Bare med begyndelses bogstav "A" i intervallet "Aa..." til "An..." har
jeg registreret 500 forskellige stavemåder af efternavne - men det
dækker vel højst over 75 forskellige navne.

Problemet er dog egentlig ikke de mange stavemåder, men at de kommer ind
imellem andre navne der staves på lignende måde - men udtales helt
anderledes.

Tag bare et eksempel som Adser - Aser - Asser. Det er nøjagtig det samme
navn og udtales også på samme måde, men er placeret vist forskelligt i
en alfabetisk søgning. Og selvom du udviser en vis opfindsomhed mht.
wildcards, så får du en masse 'uvedkommende' navne med i en søgning.

>Det er nok svært at lave 99.99% korrekt men 95% korrekt burde
>være nemt.
>
Hvis det var tilfældet, så er mærkeligt, at det ikke er mere udbredt.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Martin (14-11-2008)
Kommentar
Fra : Martin


Dato : 14-11-08 20:23

Arne Feldborg wrote:
> Arne Vajhøj <arne@vajhoej.dk> skrev Thu, 13 Nov 2008 21:23:21 -0500
>
>
>> Den simple metode må være at lave et ekstra felt i tabellen, hvor
>> du gemmer en fonetisk variant af ordet, og så i applikationen
>> laver en funktion der konverterer ord til en unik fonetisk
>> variant.
>>
> Tjo, det havde jeg jo også fundet frem til.
>
> Men til det skal der jo bruges et sæt såkaldte transformationsregler,
> a'la det der bruges i SounEx bare tilpasset danske forhold. De forsøg
> jeg hidtil har set har ikke virket overbevisende.
>
> Men jeg ved jo at det findes, feks. hos teleselskaberne (som Gert også
> nævner) og i visse online ordbøger. spørgsmålet er bare, om der findes
> noget som vi andre almindelige folk kan bruge.
>
> Bare med begyndelses bogstav "A" i intervallet "Aa..." til "An..." har
> jeg registreret 500 forskellige stavemåder af efternavne - men det
> dækker vel højst over 75 forskellige navne.
>
> Problemet er dog egentlig ikke de mange stavemåder, men at de kommer ind
> imellem andre navne der staves på lignende måde - men udtales helt
> anderledes.
>
> Tag bare et eksempel som Adser - Aser - Asser. Det er nøjagtig det samme
> navn og udtales også på samme måde, men er placeret vist forskelligt i
> en alfabetisk søgning. Og selvom du udviser en vis opfindsomhed mht.
> wildcards, så får du en masse 'uvedkommende' navne med i en søgning.
>
>> Det er nok svært at lave 99.99% korrekt men 95% korrekt burde
>> være nemt.
>>
> Hvis det var tilfældet, så er mærkeligt, at det ikke er mere udbredt.
>

Nu ved jeg ikke særlig meget om dette, men på min mobiltelefon (Nokia
6220 Classic) har jeg slået noget til, så den prøver at udtale navnet på
den der ringer.
Det lyder faktisk rimelig OK (med visse undtagelser).

"Programmet" der blev downloadet til det danske sprog fyldte omkring
100-200kb.

Måske noget lignede findes i Android (et opensource mobil operativ
system) så kunne man hente sourcen og se hvordan det var opbygget.

Eller hvad med Windows' egen talerobot, svjv så findes den også på
dansk. Her kunne man måske også finde ud af hvordan det var opbygget.
Evt. så en af linux dist. er der måske også noget lign i.

PS
Hvis jeg er helt på vild spor, så bare ignorer denne :D

Arne Feldborg (19-11-2008)
Kommentar
Fra : Arne Feldborg


Dato : 19-11-08 01:39

Martin <martin@aarhof.invalid> skrev Fri, 14 Nov 2008 20:23:01 +0100


>Nu ved jeg ikke særlig meget om dette, men på min mobiltelefon (Nokia
>6220 Classic) har jeg slået noget til, så den prøver at udtale navnet på
>den der ringer.
>Det lyder faktisk rimelig OK (med visse undtagelser).
>
Du har nok ret i, at en fonetisk søgning må bygge på nogen af de samme
principper, som dem der ligger bag talesyntese.

Men om det direkte kan overførers fra det ene system til det andet er
måske nok mere problematisk.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Arne Vajhøj (24-11-2008)
Kommentar
Fra : Arne Vajhøj


Dato : 24-11-08 02:25

Arne Feldborg wrote:
> Arne Vajhøj <arne@vajhoej.dk> skrev Thu, 13 Nov 2008 21:23:21 -0500
>> Den simple metode må være at lave et ekstra felt i tabellen, hvor
>> du gemmer en fonetisk variant af ordet, og så i applikationen
>> laver en funktion der konverterer ord til en unik fonetisk
>> variant.
>>
> Tjo, det havde jeg jo også fundet frem til.
>
> Men til det skal der jo bruges et sæt såkaldte transformationsregler,
> a'la det der bruges i SounEx bare tilpasset danske forhold. De forsøg
> jeg hidtil har set har ikke virket overbevisende.
>
> Men jeg ved jo at det findes, feks. hos teleselskaberne (som Gert også
> nævner) og i visse online ordbøger. spørgsmålet er bare, om der findes
> noget som vi andre almindelige folk kan bruge.
>
> Bare med begyndelses bogstav "A" i intervallet "Aa..." til "An..." har
> jeg registreret 500 forskellige stavemåder af efternavne - men det
> dækker vel højst over 75 forskellige navne.
>
> Problemet er dog egentlig ikke de mange stavemåder, men at de kommer ind
> imellem andre navne der staves på lignende måde - men udtales helt
> anderledes.
>
> Tag bare et eksempel som Adser - Aser - Asser. Det er nøjagtig det samme
> navn og udtales også på samme måde, men er placeret vist forskelligt i
> en alfabetisk søgning. Og selvom du udviser en vis opfindsomhed mht.
> wildcards, så får du en masse 'uvedkommende' navne med i en søgning.
>
>> Det er nok svært at lave 99.99% korrekt men 95% korrekt burde
>> være nemt.
>>
> Hvis det var tilfældet, så er mærkeligt, at det ikke er mere udbredt.

20 minutters eksperiementeren ledte mig til følgende:

public static String convert(String s) {
String s2 = s.toLowerCase();
s2 = s2.replace("æ", "ae");
s2 = s2.replace("ø", "oe");
s2 = s2.replace("å", "aa");
s2 = s2.replace("u", "v");
s2 = s2.replace("ph", "f");
s2 = s2.replace("ch", "k");
s2 = s2.replace("th", "t");
s2 = s2.replace("ds", "s");
s2 = s2.replace("c", "k");
s2 = s2.replace("z", "s");
s2 = s2.replace("x", "s");
StringBuilder sb = new StringBuilder();
sb.append(s2.charAt(0));
for(int i = 1; i < s2.length(); i++) {
if("aeiouyæøå".indexOf(s2.charAt(i)) < 0
&& s2.charAt(i) != s2.charAt(i-1)) {
sb.append(s2.charAt(i));
}
}
return sb.toString();
}

Jeg ved ikke om den er 75, 90 eller 95% god - men du kan
da bygge videre på den.

Arne


Arne Vajhøj (24-11-2008)
Kommentar
Fra : Arne Vajhøj


Dato : 24-11-08 02:55

Arne Vajhøj wrote:
> Arne Feldborg wrote:
>> Arne Vajhøj <arne@vajhoej.dk> skrev Thu, 13 Nov 2008 21:23:21 -0500
>>> Den simple metode må være at lave et ekstra felt i tabellen, hvor
>>> du gemmer en fonetisk variant af ordet, og så i applikationen
>>> laver en funktion der konverterer ord til en unik fonetisk
>>> variant.
>>>
>> Tjo, det havde jeg jo også fundet frem til.
>>
>> Men til det skal der jo bruges et sæt såkaldte transformationsregler,
>> a'la det der bruges i SounEx bare tilpasset danske forhold. De forsøg
>> jeg hidtil har set har ikke virket overbevisende.
>>
>> Men jeg ved jo at det findes, feks. hos teleselskaberne (som Gert også
>> nævner) og i visse online ordbøger. spørgsmålet er bare, om der findes
>> noget som vi andre almindelige folk kan bruge.
>>
>> Bare med begyndelses bogstav "A" i intervallet "Aa..." til "An..." har
>> jeg registreret 500 forskellige stavemåder af efternavne - men det
>> dækker vel højst over 75 forskellige navne.
>>
>> Problemet er dog egentlig ikke de mange stavemåder, men at de kommer ind
>> imellem andre navne der staves på lignende måde - men udtales helt
>> anderledes.
>>
>> Tag bare et eksempel som Adser - Aser - Asser. Det er nøjagtig det samme
>> navn og udtales også på samme måde, men er placeret vist forskelligt i
>> en alfabetisk søgning. Og selvom du udviser en vis opfindsomhed mht.
>> wildcards, så får du en masse 'uvedkommende' navne med i en søgning.
>>
>>> Det er nok svært at lave 99.99% korrekt men 95% korrekt burde
>>> være nemt.
>>>
>> Hvis det var tilfældet, så er mærkeligt, at det ikke er mere udbredt.
>
> 20 minutters eksperiementeren ledte mig til følgende:
>
> public static String convert(String s) {
> String s2 = s.toLowerCase();
> s2 = s2.replace("æ", "ae");
> s2 = s2.replace("ø", "oe");
> s2 = s2.replace("å", "aa");
> s2 = s2.replace("u", "v");
> s2 = s2.replace("ph", "f");
> s2 = s2.replace("ch", "k");
> s2 = s2.replace("th", "t");
> s2 = s2.replace("ds", "s");
> s2 = s2.replace("c", "k");
> s2 = s2.replace("z", "s");
> s2 = s2.replace("x", "s");
> StringBuilder sb = new StringBuilder();
> sb.append(s2.charAt(0));
> for(int i = 1; i < s2.length(); i++) {
> if("aeiouyæøå".indexOf(s2.charAt(i)) < 0
> && s2.charAt(i) != s2.charAt(i-1)) {
> sb.append(s2.charAt(i));
> }
> }
> return sb.toString();
> }
>
> Jeg ved ikke om den er 75, 90 eller 95% god - men du kan
> da bygge videre på den.

Og så kom jeg selv lige i tanke om en hel stribe ekstra, så:

public static String convert(String s) {
String s2 = s.toLowerCase();
s2 = s2.replace("æ", "ae");
s2 = s2.replace("ø", "oe");
s2 = s2.replace("å", "aa");
s2 = s2.replace("u", "v");
s2 = s2.replace("ph", "f");
s2 = s2.replace("ch", "k");
s2 = s2.replaceAll("([gkrst])(h)", "$1");
s2 = s2.replace("ds", "s");
s2 = s2.replace("nd", "n");
s2 = s2.replace("c", "k");
s2 = s2.replace("d", "t");
s2 = s2.replace("w", "v");
s2 = s2.replace("z", "s");
s2 = s2.replace("x", "s");
StringBuilder sb = new StringBuilder();
sb.append(s2.charAt(0));
for(int i = 1; i < s2.length() & sb.length() <= 5; i++) {
if("aeiouyæøå".indexOf(s2.charAt(i)) < 0
&& s2.charAt(i) != s2.charAt(i-1)) {
sb.append(s2.charAt(i));
}
}
return sb.toString();
}

Arne

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407944
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste