Corrispondenza di stringhe sfocateNel 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
Re: Corrispondenza stringa fuzzyPoiché il delimitatore di stringa di Python è un carattere di virgolette singole (cfr. virgolette JSL), è necessario eseguire l'escape. Dovresti anche inserire le seguenti due righe all'inizio della funzione:
Substitute Into(str1, "'", "\'");
Substitute Into(str2, "'", "\'");
Re: Corrispondenza stringa fuzzyProprio in seguito, mi sono imbattuto in un pacchetto aperto Python che fornisce tutti i tipi di misure di somiglianza delle stringhe. Sembra davvero ben fatto. È a:
https://github.com/luozhouyang/python-string-similarità
È stato semplice scrivere una piccola funzione JSL che racchiude una delle funzioni Python in questo pacchetto, ad esempio, ho deciso di utilizzare l'algoritmo Jaro-Winkler implementato lì. La mia funzione si presenta così:
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.)
Re: Corrispondenza stringa fuzzyPotresti essere in grado di usare Script di modifica più breve per farne uno. L'esempio nell'indice di scripting assembla una stringa di caratteri condivisi dalle due stringhe in ordine.