Autor Thema: "weicher" Stringvergleich  (Gelesen 3086 mal)

Offline Aladdin Sane

  • Aktives Mitglied
  • ***
  • Beiträge: 181
  • Geschlecht: Männlich
  • Sowieso...
"weicher" Stringvergleich
« am: 29.11.04 - 19:17:54 »
Hallo,

ich bin auf der Suche nach einer Funktion, die zwei Strings vergleicht und einen boole'schen Wert
zurückgibt, je nachdem wie ähnlich sich die Strings sind.

z.B. soll der Vergleich "Vogel" mit "Vogl" true liefern, hingegen der Vergleich zweier total unterschiedlicher
Strings mit false ausgewertet werden.

Kennt einer von euch so eine Funktion in LS?

Ich weiß auch gar nicht wie man eine solche Funktion nennt - "weicher" Stringvergleich ist sicher nicht
korrekt....

Gruß
pASCAL

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: "weicher" Stringvergleich
« Antwort #1 am: 29.11.04 - 19:21:27 »
Soundex nennt man das. Schau Dir mal die entsprechende @function (die keine LS-Entsprechung hat) an, vielleicht hilft Dir die schon. Allerdings ist die etwas anglophon. Wie gesagt - schau mal.
Wenn das schon passt, kannst Du die mit Evaluate in LS verwenden. Ansonsten musst Du Dir sowas selber bauen. Hierzu wegen entsprechenden theroretischen Grundlagen nach Soundex googlen.

HTH,
Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: "weicher" Stringvergleich
« Antwort #2 am: 29.11.04 - 19:27:41 »
Soundex heisst die Technologie und der logische Operator, den es dazu gäbe, wenn er implementiert wäre, heist "like", dieser wurde hingegen sowohl in Formula wie auch in LS nicht ganz nach der üblichen Definition verwendet :(
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: "weicher" Stringvergleich
« Antwort #3 am: 30.11.04 - 00:18:40 »
Dieserart Stringnormierung wäre aber ein hochinteressantes Thema. Ich würde mich sehr freuen, wenn das hier im Forum weiter diskutiert würde.  :)
Neben einer Ähnlichkeitsbetrachtung von "Vogel", Vogl", "Vögel", "Vögeln", "Vogels" etc. (das vierte Beispiel bitte ich jetzt ausdrücklich nicht misszuverstehen) kann sowas ja auch in weiter gefassten Konstellationen auftreten:
"Müller GmbH, 83313, Siegsdorf, Rupertistrasse 3, Tel. 08662/498722" soll erkannt werden als Duplikat von
"Müller Fichtenmopped Service, 83313, Hammer, Rupertistr., Tel. +49(0)8662/49 87-0"

Eine echte Herausforderung (ich hab's schon gemacht - wie gut das Resultat ist, sei diskutabel, aber so schlecht isses nicht ;-).

Grosse Bitte: Keine o.g. Telefonnummer benutzen - da geht unser Dorfhäuptling 'ran ;-) (oder die Zentrale der Gemeindeverwaltung), und wir wollen ja hier nix provozieren wie die Spider Murphy Gang Anfang der 80er mit "Skandal im Sperrbezirk", als sie "Rosi's" Telefonnummer mit 32-16-8 (he - waren die binär angehaucht ?) angaben, die dann nur noch sehr kurz die Rufnummer des Münchner Landratsamts war  ;D

Bernhard
« Letzte Änderung: 30.11.04 - 21:04:20 von koehlerbv »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: "weicher" Stringvergleich
« Antwort #4 am: 30.11.04 - 20:28:06 »
Jo, hochinteressant und sehr weitläufig. Hab ich leider bisher auch noch nie wirklich in die Tiefe verfolgt.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Aladdin Sane

  • Aktives Mitglied
  • ***
  • Beiträge: 181
  • Geschlecht: Männlich
  • Sowieso...
Re: "weicher" Stringvergleich
« Antwort #5 am: 01.12.04 - 18:24:58 »
Okay danke.

Ich denke mir dann mal was aus...

Gruß
pASCAL

Offline Aladdin Sane

  • Aktives Mitglied
  • ***
  • Beiträge: 181
  • Geschlecht: Männlich
  • Sowieso...
Re: "weicher" Stringvergleich
« Antwort #6 am: 01.12.04 - 19:24:20 »
Ich habe etwas gefunden:

http://www.vbarchiv.net/archiv/tipp_384.html

Die Funktion Soundex ist in VBA programmiert - man kann sie eigentlich
unverändert in LS übernommen werden:

Man übergibt der Funktion einen String und erhält einen Code.
Wenn der Code gleich ist, sind die Strings "ähnlich".

das Beispiel mit den Vögeln gibt folgende Werte zurück:

soundex("Vogl")   -> V24
soundex("Vogel") -> V24
soundex("Vögel") -> V24

aber:
soundex("Vögels") -> V242
soundex("Vogels") -> V243

und:
soundex("vögeln") -> V245

Dass "vögeln" <> "Vögels" ist, finde etwas unerwartet, aber man kann ja
vielleicht den Algorithmus etwas variieren...

Gruß
pASCAL

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: "weicher" Stringvergleich
« Antwort #7 am: 01.12.04 - 20:11:57 »
Hab den Algorithmus mal angeschaut und dem ehemaligen Sprachwissenschaftler fällt schon gleich die Idee auf, die dahinter steckt: eine Gewichtung der einzelnen Laute, und zudem ist das jetzt eine Version, die auf die deutsche Sprache ausgerichtet ist. Das in Notes vorhandene @Soundex wird da wohl eher englischlastig sein.

Die für Dich erstaunliche Differenz zwischen "VÖGELN" und "VÖGELS" ist nicht weiter erstaunlich, die Aehnlichkeit ist bei uns im Kopf durch Assoziation vorhanden und lässt sich technisch bisher kaum wirklich abbilden, sprich wenn Du den Algorithmus ändern möchtest, wirst Du ihn sehr rasch derart verwässern, dass die Unterschiede zu gering werden und Du damit deutlich zu viele ähnliche Resultate bekommst.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: "weicher" Stringvergleich
« Antwort #8 am: 01.12.04 - 20:41:57 »
Bedenklicher finde ich an dieser Implementierung (die weitestgehend dem @Soundex entspricht), dass "Fogel" und "Vogel" nicht das gleiche Ergebnis abliefert.

Wenn man sich eine eigene Routine programmiert, muss man natürlich auch wissen, was man normieren und damit vergleichbar machen möchte.

Bei einem Adressvergleich liegt der Verdacht sehr nahe, dass es sich bei
07743 Jena, Wagnergasse 20
und
07745 Jena (Innenstadt), Richard-Wagner-Strasse 20 (?)
um die gleiche Adresse handelt.
Solch ein Vergleich ist natürlich was ganz anderes als im NAB gemacht wird in der Ansicht ($Users), wenn es um den Vergleich zwischen "Müller" und "Mueller" geht.

Auf jeden Fall ist's aber ein faszinierendes Thema !

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz