Fuzzy-String-MatchIm Bereich „Neu kodieren“ gibt es eine Option zum Gruppieren von Zeichenfolgen, die einen Fuzzy-Abgleich ermöglicht.
Gibt es eine JSL-Funktion für den Fuzzy-String-Abgleich? Wenn ja, habe ich Probleme, es zu finden. Hilfe!
John
Betreff: Fuzzy-String-MatchDa das Zeichenfolgentrennzeichen von Python ein einfaches Anführungszeichen ist (vgl. JSL-Anführungszeichen), muss es maskiert werden. Sie sollten außerdem die folgenden zwei Zeilen am Anfang der Funktion einfügen:
Substitute Into(str1, "'", "\'");
Substitute Into(str2, "'", "\'");
Betreff: Fuzzy-String-MatchIm Anschluss bin ich auf ein offenes Python-Paket gestoßen, das alle möglichen String-Ähnlichkeitsmaße bereitstellt. Es scheint wirklich gut gemacht zu sein. Es ist bei:
https://github.com/luozhouyang/python-string-similarity
Es war unkompliziert, eine kleine JSL-Funktion zu schreiben, die eine der Python-Funktionen in diesem Paket umschließt. Ich habe mich beispielsweise für die Verwendung des dort implementierten Jaro-Winkler-Algorithmus entschieden. Meine Funktion sieht so aus:
JaroWinkler = Function( {str1, str2},
{arg, rslt},
arg = Eval Insert(
"\[
from strsimpy.jaro_winkler import JaroWinkler;
jarowinkler = JaroWinkler();
rslt = jarowinkler.similarity('^str1^', '^str2^')
]\"
);
Python Init();
Python Submit( arg );
rslt = Python Get( rslt );
Python Term();
rslt;
);
<BR /><BR />
rslt = JaroWinkler( "My string", "My tsring" );
Show( rslt ); // Log displays the following: rslt = 0.974074074074074;<BR />(Ich verwende Python 3.8 auf einem Mac. strsimpy ist von numpy abhängig, das in Ihrem Python installiert sein muss.)
Betreff: Fuzzy-String-MatchMöglicherweise können Sie es verwenden Kürzestes Bearbeitungsskript um eins zu machen. Das Beispiel im Skriptindex setzt eine Zeichenfolge aus den Zeichen zusammen, die die beiden Zeichenfolgen der Reihe nach teilen.