Correspondance de chaîne floueDans le volet Recoder, il existe une option pour regrouper les chaînes qui permet une correspondance approximative.
Existe-t-il une fonction JSL pour effectuer une correspondance de chaîne floue ? Si c'est le cas, j'ai du mal à le trouver. Aider!
John
Re : Correspondance de chaîne floueComme le délimiteur de chaîne de Python est un guillemet simple (cf. guillemet double JSL), il doit être échappé. Vous devez également mettre les deux lignes suivantes au début de la fonction :
Substitute Into(str1, "'", "\'");
Substitute Into(str2, "'", "\'");
Re : Correspondance de chaîne floueJuste pour suivre, j'ai rencontré un package ouvert Python qui fournit toutes sortes de mesures de similarité de chaînes. Ça a l'air d'être vraiment bien fait. C'est à:
https://github.com/luozhouyang/python-string-similarity
Il était simple d'écrire une petite fonction JSL qui encapsule l'une des fonctions Python de ce package, par exemple, j'ai décidé d'utiliser l'algorithme Jaro-Winkler tel qu'il est implémenté ici. Ma fonction ressemble à ceci :
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 />(J'utilise Python 3.8 sur Mac. strsimpy dépend de numpy, qui doit être installé dans votre Python.)
Re : Correspondance de chaîne floueVous pourrez peut-être utiliser Script d'édition le plus court pour en faire un. L'exemple de l'index de script assemble une chaîne de caractères que les deux chaînes partagent dans l'ordre.