Comparaison de deux mots - Perl - Programmation
Marsh Posté le 08-09-2010 à 14:56:51
Merci, ceci répond à ma question .
Elle est trouvable ici : http://www.mgilleland.com/ld/ldperl2.htm
Je suis quand même étonné que Perl n'offre pas plus simple, vu que le traitement des chaines de caractères est sa spécialité..
Marsh Posté le 08-09-2010 à 15:12:20
Comme toujours avec perl, il fallait voir sur CPAN s'il n'y avait pas un module ad-hoc, et miracle, on en trouve deux: Text::Levenshtein qui l'implémente en pur perl, et Text::LevenshteinXS qui l'implémente plus efficacement avec un module compilé.
A+,
Marsh Posté le 08-09-2010 à 15:16:51
http://en.wikipedia.org/wiki/Bitap_algorithm
Si t'as besoin de compter les insertions/suppressions, -> distance de leveinstein.
Si tu veux compter que les substitutions (donc des mots de même longueur) -> distance de Hamming.
Marsh Posté le 08-09-2010 à 15:31:59
Heu, on a Hamming (nb de substitutions) cas particulier de Leveinstein (nb de substitutions et d'insertions/suppressions) cas particulier de Wagner-Fischer (un poids particulier pour l'égalité, la substitution et l'insertion/suppression) et de Brew (pas de poids pour l'égalité, des poids particuliers pour la substitution, l'insertion et la suppression).
Il y en a d'autres: Jaro, Jaro-Winkler, qui sont un peu des distances inversées: plus la distance augmente, plus les chaines se ressemblent.
A+,
Marsh Posté le 08-09-2010 à 14:33:15
Bonjour, je débute en Perl et j'aimerais utiliser une fonction qui renvoie le nombre de lettres différentes entre deux chaînes.
Par exemple :
dupont - dupond : renvoirait 1
lumiere - laniere : renvoirait 2
appeler - apeler : renvoirait 1
Vous m'avez compris
J'ai beau chercher sur internet, je n'ai pas trouvé.
IMPORTANT : Les chaînes à comparer sont composées de lettres, mais il peut y avoir d'autres caractères (pas de \n). Ils sont traîtés également.
Merci de votre aide!!