Corrispondenza di stringhe fuzzyNel riquadro Ricodifica è disponibile un'opzione per raggruppare le stringhe che consente la corrispondenza fuzzy.
Esiste una funzione JSL per eseguire la corrispondenza di stringhe fuzzy? Se c'è, ho difficoltà a trovarlo. Aiuto!
John
Ri: Corrispondenza di stringhe fuzzyPoiché il delimitatore di stringa di Python è un carattere a virgolette singole (cfr. virgolette doppie JSL), è necessario eseguire l'escape. Dovresti anche inserire le seguenti due righe all'inizio della funzione:
Substitute Into(str1, "'", "\'");
Substitute Into(str2, "'", "\'");
Ri: Corrispondenza di stringhe fuzzySolo in follow-up, mi sono imbattuto in un pacchetto aperto Python che fornisce tutti i tipi di misure di somiglianza delle stringhe. Sembra essere davvero ben fatto. È a:
https://github.com/luozhouyang/python-string-similarity
È stato semplice scrivere una piccola funzione JSL che racchiuda una delle funzioni Python in questo pacchetto, ad esempio, ho deciso di utilizzare l'algoritmo Jaro-Winkler implementato lì. La mia funzione è simile a questa:
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 />(Sto usando Python 3.8 su Mac. strsimpy ha una dipendenza da numpy, che deve essere installato nel tuo Python.)
Ri: Corrispondenza di stringhe fuzzyPotresti essere in grado di utilizzare Script di modifica più breve per farne uno. L'esempio nell'indice di scripting assembla una stringa dei caratteri che le due stringhe condividono in ordine.