Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Soundex-Algorithmus für Deutsch (https://www.delphipraxis.net/36037-soundex-algorithmus-fuer-deutsch.html)

MathiasSimmack 16. Dez 2004 14:37

Re: Soundex-Algorithmus für Deutsch
 
Zitat:

Zitat von sakura
Zitat:

Zitat von MathiasSimmack
es gibt lediglich den Unterschied zwischen alter und neuer Rechtschreibung. Dagegen dürfte "Maße" und "Masse" nicht das gleiche Ergebnis haben.

Falsch, auch diese beiden würden das gleiche Ergebnis erzeugen. Es geht beim SoundEx nicht um die Rechtschreibung, im Gegenteil, SoundEx versucht diese vollständig zu egalisieren ;-)

Gut, dann habe ich den Sinn von SoundEx bisher nicht verstanden. :oops:

Zitat:

Ein Deutscher würde vielleicht den Unterschied zwischen Hrn. Masse und Hrn. Maße erkennen, [...]
:mrgreen: Sieht irgendwie aus wie Hirnmasse.

urs.liska 16. Dez 2004 17:17

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

Kernel32.DLL 16. Dez 2004 19:18

Re: Soundex-Algorithmus für Deutsch
 
Zitat:

Zitat von MathiasSimmack
Mir persönlich ist das Thema aber ohnehin egal :mrgreen:

Richtig, mir ist das Thema im Prinzip auch egal. Ich wollte lediglich verdeutlichen, dass es momentan noch zwei Möglichkeiten gibt, das Wort "nass" zu schreiben und das so die Aussage glkgereons nicht hundertprozentig hinhaut.

Zitat:

Zitat von MathiasSimmack
, mir ging´s nur um den Vergleich von unserem Cornel; von wg "ich sehe den sprachlichen Unterschied nicht". ;)

Das war beabsichtigt. So was nennt man Rhetorische Figur
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

Acaenitus 7. Nov 2005 19:02

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

Teekeks 15. Feb 2009 20:14

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:
(* ------------------------------------------------------ *)
(*                    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.
gruß Teekeks


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
Seite 3 von 3     123   

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