🧰 UtlKit

Comment Utiliser la Similarité de Chaînes : Distance de Levenshtein et Score en Pourcentage entre Deux Chaînes, dans le Navigateur

Deux chaînes de texte, comparées avec la distance d'édition de Levenshtein, une similarité en pourcentage à partir de la plus grande longueur moins la distance, et le script d'édition complet, le tout calculé dans le navigateur.

L'outil de Similarité de Chaînes prend deux chaînes de texte, String A et String B, qui sont par défaut kitten et sitting, et calcule dans le navigateur la distance d'édition de Levenshtein entre les deux. À chaque frappe, le résultat se recalcule en direct : trois cartes de statistiques impriment la distance, le pourcentage de similarité et le nombre d'opérations, comme 3, 57.1% et 7 par défaut, et en dessous une barre de progression et un script d'édition numéroté et coloré par type, qui liste chaque pas du premier caractère au dernier. Tout est un passage de programmation dynamique dans le navigateur sur les deux chaînes : rien n'est envoyé nulle part et aucun envoi n'a lieu à aucun moment.

Que la boîte reçoit et ce qu'elle rend

L'entrée est deux champs de texte d'une ligne, côte à côte, étiquetés String A et String B, en police monospace, et rien d'autre n'est demandé. Les valeurs par défaut sont kitten dans A et sitting dans B, et les mêmes deux mots figurent comme marqueurs des champs. La sortie est trois cartes en rangée : la distance en entier brut, la similarité en pourcentage avec un chiffre après la virgule, et le nombre d'opérations en entier brut. Sous les cartes, une barre de progression se remplit au même pourcentage, et une liste défilante imprime le script d'édition complet, chaque ligne numérotée à partir de 1, chaque ligne colorée par son type : remplacement en jaune, insertion en bleu, suppression en rouge, et correspondance en couleur atténuée du texte. Il n'y a pas de bouton : le résultat se recalcule pendant que vous tapez, parce que tout le calcul est une lecture avec mémoire des deux valeurs des champs.

Comment la distance est calculée

La distance est la distance de Levenshtein classique, construite avec une table de programmation dynamique de (longueur de A + 1) par (longueur de B + 1) cases. Chaque case prend le minimum de trois voisines plus un coût : la case du haut plus un, qui est une suppression ; la case de gauche plus un, qui est une insertion ; et la diagonale plus un coût de zéro quand les deux caractères sont égaux et un quand ils ne le sont pas, qui est une correspondance ou un remplacement. La comparaison est caractère par caractère et sensible à la casse, donc K et k sont des caractères différents. Pour les valeurs par défaut, kitten contre sitting, la table est 7 par 8, 56 cases, et la case en bas à droite lit 3 : remplacer le k par un s, remplacer le e par un i, et insérer le g. book contre back est 2, les deux positions du o ; flaw contre lawn est 2, la suppression du f et l'insertion du n à la fin.

Ce que montre la liste des opérations

La liste est un retour en arrière à travers la table terminée, en marchant du coin en bas à droite jusqu'au coin en haut à gauche. À chaque pas, le parcours préfère une correspondance quand les deux caractères actuels sont égaux, puis un remplacement, puis une insertion, puis une suppression, et les pas collectés sont imprimés en sens inverse, du premier au dernier. Ce parcours donne un script d'édition minimal valide, pas le seul : des choix différents de même coût à un ex æquo donneraient une autre liste de même longueur. Les correspondances figurent aussi dans la liste, donc le nombre d'opérations est la longueur du script, pas la distance. kitten contre sitting imprime 7 opérations pour une distance de 3, les quatre correspondances étant i, t, t et n ; kitten contre lui-même imprime 6 opérations, toutes correspondances, pour une distance de 0 ; flaw contre lawn imprime 5, les deux éditions plus trois correspondances.

Comment le pourcentage de similarité est lu

Le pourcentage est la longueur la plus grande moins la distance, divisée par la longueur la plus grande, fois cent, imprimé avec un chiffre après la virgule. Pour les valeurs par défaut, 7 moins 3 divisé par 7, il lit 57.1%, qui tombe dans la bande jaune : le nombre et la barre passent au vert à 70 ou plus, au jaune à 40 ou plus, et au rouge en dessous de 40. Des chaînes identiques lisent 100.0% à distance 0. Un seul retournement de casse, Kitten contre kitten, est une distance de 1 sur une longueur de 6, lisant 83.3%. Un accent compte comme une différence de caractère : café contre cafe est une distance de 1, lisant 75.0%. Et une paire de substitution compte pour deux unités, donc le smiley dans a😀b contre ab est une distance de 2, lisant 50.0%.

Quand le résultat est vide

Si l'un des deux champs est vide après le rognage, le résultat est null et rien sous les deux entrées ne se rend : ni cartes, ni barre, ni liste. Les espaces blancs à l'intérieur ou aux bords ne sont pas rognés de la comparaison, ils servent seulement à vérifier le vide, donc un espace final est une édition : key avec un espace final contre key est une distance de 1, lisant 75.0% sur la longueur de 4. Contre une chaîne vide, la distance est toute la longueur de l'autre côté, c'est pourquoi abc contre le côté vide calcule 3 et 0.0%, même si la page ne le montre pas tant que le champ reste vide.

Combien les chaînes peuvent-elles être longues

Il n'y a pas de limite de longueur dans le code. Le coût est la taille de la table, (longueur de A + 1) fois (longueur de B + 1) cases, donc le travail croît avec le produit des deux longueurs : kitten contre sitting fait 56 cases, deux chaînes de 1 000 caractères font un million de cases environ, et deux de 10 000 font cent millions, que la page calculera mais lentement. Les entrées sont des champs d'une ligne, donc les chaînes très longues sont tapées ou collées sur une ligne.

De quoi il ne s'agit pas

L'outil compare, il ne transforme pas le texte : pour retirer les espaces et les lignes en trop avant de comparer, utilisez le Nettoyeur d'Espaces ; pour retourner une chaîne de bout en bout, c'est le travail de l'Inverseur de Texte ; et pour compter les caractères sans une deuxième chaîne, c'est le travail du Compteur et Analyseur de Caractères. Pour le pas à pas de l'outil d'inversion, voyez le guide d'inversion de texte.

Outils Associés

Questions Fréquentes

L'outil de Similarité de Chaînes envoie-t-il mes chaînes vers un serveur ?

Non. Les deux champs sont lus par la page, et le seul calcul est la table de Levenshtein, construite caractère par caractère dans le navigateur, donc les chaînes ne quittent jamais l'appareil et aucune requête réseau n'a lieu à aucun moment. Il n'y a ni historique ni comparaison stockée : fermer ou recharger l'onglet jette les deux champs et le résultat.

Pourquoi le nombre d'opérations est-il plus élevé que la distance ?

La liste des opérations est un retour en arrière à travers la table terminée, et les correspondances figurent aussi dedans. kitten contre sitting a une distance de 3, mais le script a 7 lignes, les quatre correspondances étant i, t, t et n. La distance ne compte que les éditions, les lignes de remplacement, d'insertion et de suppression ; le nombre d'opérations est la longueur du script entier.

La comparaison distingue-t-elle les majuscules des minuscules ?

Oui. La table compare les caractères avec un test d'égalité qui distingue K de k, donc Kitten contre kitten est une distance de 1 sur une longueur de 6, lisant 83.3%, et non une distance de 0. Si vous voulez une comparaison qui ignore la casse, passez les deux champs dans la même forme avant de les coller.

Pourquoi un accent change-t-il autant la note ?

Une lettre accentuée est un caractère différent de sa forme sans accent, donc elle coûte une édition : café contre cafe est une distance de 1, lisant 75.0%. Il en va de même pour un smiley, que la page compte pour deux unités, donc a😀b contre ab est une distance de 2, lisant 50.0%. La distance suit les caractères tels qu'ils sont dans les champs.

Que signifie la couleur du pourcentage ?

Le nombre et la barre de progression partagent trois bandes : vert à 70 ou plus, jaune à 40 ou plus, et rouge en dessous de 40. La valeur par défaut, 57.1% pour kitten contre sitting, est dans la bande jaune. La couleur est une lecture du même pourcentage, pas un verdict à part.

Articles Associés