Ähnliche Zeichenketten vergleichen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Ähnliche Zeichenketten vergleichen

Beitrag von Jan »

Moin,

wie geht Ihr da ran? Es geht um eine Adressprüfung. Da gibt es leider von Kundenseite immer wieder Tippfehler. Buchstabendreher. Buchstabendopplungen. Doppelte Buchstaben nur einfach. Usw.

Also: "Matthias Meyer" ist nur eine Fehlschreibung von "Mathias Meyer". "Hambug" ist Fehlschreibung von "Hamburg". "Bambreg" ist Fehlschreibung von "Bamberg".

Gibt es irgend eine Möglichkeit zu sagen, das die so ähnlich sind das die Wahrscheinlichkeit einer Übereinstimmung im relevanten Bereich liegt? Ich könnte natürlich aufaddieren, welcher Buchstabe wie oft vorkommt. Damit würde ich aber nur Dreher erkennen. Zu viele oder doppelte Buchstaben eher nicht. Könnte man natürlich erweitern, wie oft die Treffer je Buchstaben übereinstimmen, und dann eine Grenze setzen. Was man aber wieder aushebeln könnte wenn man sich auf der Tastatur nur verrutscht hat, also versehentlich die Nachbartaste erwischt hat.

Es geht mir nicht darum, ob der Kunde Straße, Strasse, oder Str. schreibt. Auch Umlaute oder ß/ss sind irrelevant. Ebenfalls ob Bestandteile mit Bindenstrich oder Leerzeichen oder gar nicht getrennt sind. Sowas schon erkenne ich alles schon.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von georg »

Hallo, Jan -


dafür gibt es die Funktion SoundEx(). Mehr Infos dazu: https://de.wikipedia.org/wiki/Soundex

War früher mal Bestandteil von Clipper, Alaska liefert mit der 2.0 allerdings nur ein Beispiel einer C-API mit. Aber das sollte sich nach reinem Xbase++ portieren lassen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Tom »

Das nennt man "unscharfe Suche", Jan:

https://de.wikipedia.org/wiki/Unscharfe_Suche

Bestes und bekanntestes Beispiel ist der Soundex-Algorithmus: https://de.wikipedia.org/wiki/Soundex - den gab's auch mal in/für Clipper.

Es gibt diverse Herangehensweisen. Man kann Datenbanken aufbauen oder verwenden, die übliche Falschschreibungen enthalten und dazulernen (Hamburg -> Hambrug). Man kann Die Buchstaben zählen, nur Konsonanten vergleichen, Bewertungen ansetzen. In allen Varianten wird man aber nicht immer alles finden - oder eben auch vieles, das nicht zutrifft. Es kommt darauf an, was man erreichen will. Eine Suchmaschine muss anders vorgehen als eine Adresssuche - und um die scheint es Dir zu gehen. Wir haben in diesem Bereich befriedigende Ergebnisse dadurch erzielt, dass wir nur Konsonanten suchen, wofür dann gesonderte Felder nötig waren.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Jan »

Hallo Tom,

"unscharfe Suche" ist gut. Ich hatte u. a. Levenshtein gefunden und ähnliches, das schien mir aber irgendwie nicht ganz das zu sein, was ich wollte (wobei die gehobene Mathe nie wirklich meine Stärke im Studium war :-( )

Ja, an Soundex kann ich mich auch noch gut erinnern. War nicht wirklich zu gebrauchen, weil das auf englische Phonetik gemünzt war, was bei deutschen Begriffen oft ungeahnte Ergebnisse gebracht hatte.

Eine extra Datenbank wäre hier vermutlich sinnlos, weil die gleichen Fehler eher seltener vorkommen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von brandelh »

Das ist ja ein Hammer von Alaska ... eine in Clipper (Tools) vorhandene Funktion als C-Code mitzuliefern, damit man das C-API einbinden lernen kann :roll:

Und wie aktuell der Code ist ... :D
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von ramses »

Wenn du es mit Firmenadressen zu tun hast hilft aich eine automatische Abfrage im Firmenregister und On-Line Telefonbuch ...

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Jan »

Carlo,

leider nein. 99 % Privatadressen. Und auch nicht alles Deutschland.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von ramses »

Hallo Jan

meine bevorzugte Lösung für dieses Problem ist dass der Mensch vor dem Bildschirm die Verantwortung dafür übernehmen soll.
Für etwas ist er schliesslich ja da. ....
Ein mir bekannter Weg den viele anwenden ist neu erfasste Adressen in eine "Kontrollliste" zu setzten die noch jemand kontrolliert und freigibt. ....
Die Post kann auch mit vielen Schreibfehlern umgehen, wenigstens unsere.
Neuere Statistiken besagen dass 37% unserer Bevölkerung Migrationshintergrund haben. Entsprechend viele Varianten der Namen gibt es.
Soundex und Co. haben hier keine Chance.

Gruss Carlo
Valar Morghulis

Gruss Carlo
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von georg »

Hallo, Jan -


man kann m.E. den SoundEx-Algorithmus ja anpassen - da Alaska ihn nicht mehr als Funktion implementiert hat, steht es Dir ja frei, ihn an die deutsche Phonetik anzupassen.

Ich habe mich lange nicht mehr mit der Adressthematik beschäftigt, aber früher gab es Textdateien seitens der Deutschen Bundespost, über die man für eine Strasse und einen Ort die Postleitzahl ermitteln konnte. Das wäre für mich - hätte ich aktuell dieses Problem vor der Brust - ein erster Schritt, die Anschrift korrekt zu bekommen (gilt natürlich nur, wenn wir von deutschen Anschriften reden). Was die Namen angeht, würde ich SoundEx() neu implementieren. Damit kannst Du die Unebenheiten der von Alaska bereitgestellten Version glätten und anpassen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Fr, 12. Okt 2018 11:0799 % Privatadressen. Und auch nicht alles Deutschland.
beim Namen kann man nichts machen ... wer weiss ob er wirklich Meeeiier heisst ?

bei der Adresse mache ich einen Abgleich über Mappoint EU.
Auch wenn die Version älter ist macht es zu 99% keine Probleme ... sonst eben Google View.
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Rudolf »

Hallo,
ich hätte noch pubic domain Code von Andy Leighton für die Levenshtein Näherung falls jemand benötigt.
Grüße
Rudolf
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Tom »

Daran wäre ich auch interessiert, Rudolf. Vielleicht können wir das hier gemeinsam optimieren oder so.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Jan »

Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von Rudolf »

Hallo Tom,
hätte ich gerne getan, aber wie immer die Unsicherheit was rechtlich erlaubt ist. Ich bin da nicht sicher ob Public Domain erlaubt dass ich den Code verteile. Villeicht war ich voreilig bei dem Angebot. Nachdem wir in Österreich schon alle Türschilder mit Namen gegen Nummern austauschen müssen wegen dem DSVGI, genügt eine kleine Unachtsamkeit um "kriminell" zu werden ;-) Wenn jemand hier der Meinung ist dass es unbedenklich ist, dann gerne.
Grüße
Rudolf
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ähnliche Zeichenketten vergleichen

Beitrag von AUGE_OHR »

hi,

reden wir von der Verifizierung bei der Eingabe oder vom "unscharfen" suchen :?:
gruss by OHR
Jimmy
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Ähnliche Zeichenketten vergleichen

Beitrag von nightcrawler »

statt SOUNDEX (für englisch optimiert) lieber die Kölner Phonetik: https://www.jd-engineering.de/german-so ... mentation/
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten