Résumé : Calcule le taux de différences entre deux chaînes de caractères en se focalisant sur le nombre de caractères de chaque type, la position des caractères communs et la différence de longueur.
Description :
Description
Ce script pourvoit l'eggdrop du package Related_Differential_Report 1.21
Le rapport de relation différentielle est une extrapolation du principe de la Distance de Levenshtein.
Rappelons que la distance de Levenshtein calcule le nombre de caractères qu'il est nécessaire d'ajouter, modifier, déplacer ou supprimer pour passer d'une chaîne de caractères à une autre.
Le rapport de relation différentielle (RDR) fait à peu près la même chose, à ceci près que la position des caractères n'a aucune importance pour lui.
Il calcule le taux de différences entre deux chaînes de caractères en se focalisant sur le nombre de caractères de chaque type.
De plus, les caractères conservant la même position entre les deux chaînes de caractères (en partant du début ou de la fin) ajoutent un bonus de similarité qui sera pris en compte dans le résultat final.
Enfin, une pénalité est appliquée si la longueur des deux chaînes de caractères présente une trop grande différence.
La valeur retournée est comprise entre 0 et 100, 0 signifiant qu'il n'y a aucune différence entre les deux chaînes de caractères, et 100 signifiant qu'elles sont très dissemblables.
Intérêt
Permet à un correcteur orthographique de faire des suggestions pour tel mot mal orthographié, en proposant d'autres mots dont le RDR par rapport au premier est faible.
Permet à une pseudo-IA de type chatterbot d'avoir une tolérance orthographique : si tel mot comparé à tel autre a un RDR inférieur à une tolérance donnée, on peut décider qu'il est équivalent.
Comparé à la méthode de la Distance de Levenshtein, RDR est plus souple en ce sens qu'il permettra par exemple de détecter deux phrases formulées différemment comme étant la même phrase puisque l'ordre des mots importe peu.
Syntaxe
::RDR::RDR [-allchars] <1ère chaîne de caractères> <2ème chaîne de caractères>
Si l'option -allchars est spécifiée, tous les caractères seront pris en compte. Si elle ne l'est pas, seuls les caractères alphanumériques et les espaces seront traités.
Dans le but d'accroître la rapidité d'exécution, la validité de la syntaxe de la commande n'est pas vérifiée. Veillez donc à la respecter scrupuleusement, sans quoi le script ne fonctionnera pas comme prévu et vous n'en serez pas explicitement averti.
Description
Ce script pourvoit l'eggdrop du package Related_Differential_Report 1.21
Le rapport de relation différentielle est une extrapolation du principe de la Distance de Levenshtein.
Rappelons que la distance de Levenshtein calcule le nombre de caractères qu'il est nécessaire d'ajouter, modifier, déplacer ou supprimer pour passer d'une chaîne de caractères à une autre.
Le rapport de relation différentielle (RDR) fait à peu près la même chose, à ceci près que la position des caractères n'a aucune importance pour lui.
Il calcule le taux de différences entre deux chaînes de caractères en se focalisant sur le nombre de caractères de chaque type.
De plus, les caractères conservant la même position entre les deux chaînes de caractères (en partant du début ou de la fin) ajoutent un bonus de similarité qui sera pris en compte dans le résultat final.
Enfin, une pénalité est appliquée si la longueur des deux chaînes de caractères présente une trop grande différence.
La valeur retournée est comprise entre 0 et 100, 0 signifiant qu'il n'y a aucune différence entre les deux chaînes de caractères, et 100 signifiant qu'elles sont très dissemblables.
Intérêt
Permet à un correcteur orthographique de faire des suggestions pour tel mot mal orthographié, en proposant d'autres mots dont le RDR par rapport au premier est faible.
Permet à une pseudo-IA de type chatterbot d'avoir une tolérance orthographique : si tel mot comparé à tel autre a un RDR inférieur à une tolérance donnée, on peut décider qu'il est équivalent.
Comparé à la méthode de la Distance de Levenshtein, RDR est plus souple en ce sens qu'il permettra par exemple de détecter deux phrases formulées différemment comme étant la même phrase puisque l'ordre des mots importe peu.
Syntaxe
::RDR::RDR [-allchars] <1ère chaîne de caractères> <2ème chaîne de caractères>
Si l'option -allchars est spécifiée, tous les caractères seront pris en compte. Si elle ne l'est pas, seuls les caractères alphanumériques et les espaces seront traités.
Dans le but d'accroître la rapidité d'exécution, la validité de la syntaxe de la commande n'est pas vérifiée. Veillez donc à la respecter scrupuleusement, sans quoi le script ne fonctionnera pas comme prévu et vous n'en serez pas explicitement averti.
Changelog
Version 1.21 par MenzAgitat (17/06/2015)297 téléchargements
Correction : si les deux chaînes de caractères comparés étaient de longueur différente, le taux de différences retourné différait selon qu'on comparait string1 à string2 ou string2 à string1.
Modification de la fonction servant à calculer le taux de différences afin d'affiner la pertinence des résultats.
Ajout : une pénalité est appliquée au score final les deux chaînes de caractères comparées sont de longueur différentes.
Ajout : une aide à la syntaxe est donnée dans l'erreur retournée par la commande ::RDR::RDR si elle est utilisée sans arguments.
Le code a été commenté afin d'en faciliter la compréhension.
Quelques optimisations.
Correction : comparer deux chaînes de caractères vides provoquait une erreur.