Comparaison de deux mots

Comparaison de deux mots - Perl - Programmation

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!!

Reply

Marsh Posté le 08-09-2010 à 14:33:15   

Reply

Marsh Posté le 08-09-2010 à 14:47:11    

tu as regardé du côté de la distance de leveinstein ?

Reply

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é..

Reply

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed