Français
Source/ Codesnippets

String-Ähnlichkeit: Jaro-Winkler Algorithmus

 

p.specht

qui Jaro-Algorithmus est un mesure pour gemeinsame marque, qui dedans de "nicht plus que qui halben Longueur qui längeren Zeichenkette" liegen, sous Berücksichtigung de Transpositionen (Verdrehungen). Winkler modifizierte cette Algorithmus, um cela Faktum trop berücksichtigen, dass Unterschiede am Anfang qui Zeichenkette signifikanter sommes comme Unterschiede am Ende qui Zeichenkette. Jaro et Jaro-Winkler eignen sich pour den comparaison kleinerer Zeichenketten comment Wörter et Namen.

Pour weitere Stringähnlichkeitsvergleiche kennt on den Levenshtein-Algorithmus ou bien qui Kölner Phonetik. Levenshtein zählt le nombre qui Bearbeitungen (Einfügungen, Löschungen ou bien Substitutionen), qui erforderlich sommes, um une Zeichenkette dans l'autre trop konvertieren.
Damerau-Levenshtein ist une modifizierte Version, qui Transpositionen aussi comme Einzelbearbeitung betrachtet. quoique qui Ausgabe qui ganzzahlige Nombre de Bearbeitungen ist, peux cet standardisiert volonté, um une Ähnlichkeitswert par une Formel trop conservé

dans qui Praxis ist es important, une Methode trop choisir, qui qui Art qui Zeichenketten entspricht, qui on comparer veux. Manche Verfahre sommes viel aufwändiger comme etwa qui Berechnung einer phonetischen Vorab-Kodierung. de qui Geschwindigkeit her ist qui Reihenfolge: 1. Jaro, 2. Jaro-Winkler, 3. Levenshtein, 4. Damerau-Levenshtein, wobei entre schnellstem et langsamsten Algorithmus un facteur 2 jusqu'à 3 liegt..

Titre de la fenêtre "Jaro-Winkler String-Ähnlichkeit"
'Q: https://rosettacode.org/wiki/Jaro_distance#Pascal
'Thema: https://en.wikipedia.org/wiki/Jaro%E2%80%93Winkler_distance
'Dissertation [Christen 2006]: Systemvergleich Jaro - Levenshtein
'https://users.cecs.anu.edu.au/~Peter.Christen/publications/tr-cs-06-02.pdf
'(D) Demo translation, 2018-10-28 by P.Specht, Vienna/EU
'sans chacun Gewähr! No warranty whatsoever!
CLS:font 2
imprimer format$("0.#######", JaroWinkler("DWAYNE","DUANE"))
imprimer format$("0.#######", JaroWinkler("MARTHA","MARHTA"))
imprimer format$("0.#######", JaroWinkler("DIXON","DICKSONX"))
imprimer format$("0.#######", JaroWinkler("JELLYFISH","SMELLYFISH"))
' Solloutput:
' 0.822222
' 0.944444
' 0.766667
' 0.896296
waitinput
FIN

Proc JaroWinkler :parameters s1$,s2$

    declare l1&,l2&,match_distance&,matches&,i&,k&,trans&,gr&,kl&
    declare bs1&[255],bs2&[255]'max string length is here 255
    l1&=len(s1$):l2&=len(s2$)

    ifnot l1&:ifnot l2&:return 1:d'autre:return 0:endif:endif

        match_distance&= si(l1&>l2&,l1&,l2&)\2-1
        '  matches&=0
        '  trans&=0

        Whileloop l1&:i&=&Boucle

            gr&=i&-match_distance&
            kl&=i&+match_distance&

            whileloop si(1>gr&,1,gr&),si(kl&<l2&,kl&,l2&):k&=&Boucle

                cas bs2&[k&]:continue
                cas mid$(s1$,i&,1)<>mid$(s2$,k&,1):continue
                bs1&[i&]=1:bs2&[k&]=1'1=true
                inc matches&:pause

            endwhile

        endwhile

        casenot matches&:return 0
        k&=1

        whileloop l1&:i&=&Boucle

            casenot bs1&[i&]:continue
            :whilenot bs2&[k&]:inc k&:endwhile
            cas mid$(s1$,i&,1)<>mid$(s2$,k&,1):inc trans&
            inc k&

        endwhile

        trans&=trans&\2
        return ((matches&/l1&)+(matches&/l2&)+((matches&-trans&)/matches&))/3

    endproc

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
29.05.2021  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

1.831 Views

Untitledvor 0 min.
Erhard Wirth14.06.2024
p.specht21.11.2021
R.Schneider20.11.2021
Uwe Lang20.11.2021
plus...

Themeninformationen

cet Thema hat 1 participant:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie