![]() |
Re: Soundex-Algorithmus für Deutsch
Zitat:
Zitat:
|
Re: Soundex-Algorithmus für Deutsch
@sakura
super, danke. konnte es mir noch nicht genau ansehe (weil mein kleiner auf dem schoß sitzt und quengelt), aber das ist wohl genau, was ich suche. Urs |
Re: Soundex-Algorithmus für Deutsch
Zitat:
Zitat:
Falls dichs interessiert: Ich würde es als Oxymoron bezeichnen, aber darüber kann man sich streiten. (Und das sollte hier nicht näher ausgeführt werden) mfg Daniel |
Re: Soundex-Algorithmus für Deutsch
[quote="sakura"]@urs....
Ich habe mal aus unseren Sourcen den SoundEx fürs Deutsche extrahiert. Da wir damals keine angenehme Lösung fürs Deutsche gefunden haben, ist der auf dem Mist eines Kollegen gewachsen, aber recht einfach zu verstehen und funktioniert (zumindest für unsere Kunden) wie gewünscht. :zwinker: Hallo, mich würde interessieren, wie Euer Soundex funktioniert, speziell welche Phonetischen Gruppen und welche Regeln. Ich arbeite allerdings mit VBA und nicht mit Delphi. Könnte ich die Informationen in Textform bekommen? Grüsse Anton |
Re: Soundex-Algorithmus für Deutsch
Hi!
Ich verwende schon ewig einen Soundex Algorytmus der Eigentlich für das Amerikanische gedacht war, aber von meinem Vater leicht angepasst wurde. Er funktioniert est super und es hat sich bis heute noch keiner beschwert... hier ist er:
Delphi-Quellcode:
gruß Teekeks
(* ------------------------------------------------------ *)
(* SOUNDEX.PAS *) (* Phonetisches Suchen mit Pascal *) (* (c) 1990 Bodo Joest & TOOLBOX *) (* Leichte Änderungen für Delphi32 JB, 2001 *) (* Anpassung für ersten Laut von Jens During *) (* ------------------------------------------------------ *) UNIT Sound_Ex; INTERFACE FUNCTION SoundEx(CONST Idx: String): String; IMPLEMENTATION FUNCTION UpString(CONST Txt : String): String; VAR i : INTEGER; BEGIN Result := Txt; FOR i := 1 TO Length(Result) DO Result[i] := UpCase(Result[i]); END; FUNCTION SoundEx(CONST Idx : String): String; { Umwandlung eines Strings in eine Phonemkette } CONST { Phoneme } BFPV = ['B', 'F', 'P', 'V']; CGJKQSXZ = ['C', 'G', 'J', 'K', 'Q', 'S', 'X', 'Z']; DT = ['D', 'T']; L = ['L']; MN = ['M', 'N']; R = ['R']; VAR i : INTEGER; Code : String[5]; CodeLen : BYTE ABSOLUTE Code; Index : String; BEGIN Index := UpString(Idx); //Code := Index[1]; //Änderung JD,Phonemkennung ab Laut 1!! Code := ''; i := 1; WHILE (i <= Length(Index)) AND (CodeLen < 5) DO BEGIN IF (Index[i] IN BFPV) AND (Code[CodeLen] <> '1') THEN Code := Code + '1' ELSE IF (Index[i] IN CGJKQSXZ) AND (Code[CodeLen] <> '2') THEN Code := Code + '2' ELSE IF (Index[i] IN DT) AND (Code[CodeLen] <> '3') THEN Code := Code + '3' ELSE IF (Index[i] IN L) AND (Code[CodeLen] <> '4') THEN Code := Code + '4' ELSE IF (Index[i] IN MN) AND (Code[CodeLen] <> '5') THEN Code := Code + '5' ELSE IF (Index[i] IN R) AND (Code[CodeLen] <> '6') THEN Code := Code + '6'; Inc(i); END; Code := Code + '0000'; Result := Code; END; END. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz