IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Je ne trouve pas l'algorithme du phonex en perl


Sujet :

Modules Perl

  1. #1
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut Je ne trouve pas l'algorithme du phonex en perl
    Salut,
    Cela fait des heures que je cherche une implémentation du phonex en perl. Sauriez vous où je pourrai la trouver?
    Merci
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Si jamais tu n'en trouves pas, tu devrais facilement pouvoir l'écrire. Les expressions régulières sont très puissantes en Perl.
    Quelque chose comme cela par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #!/usr/local/bin/perl
     
    use strict;
    use warnings;
     
     
     
     
     
    #----------- Soundex.pl    algorithme original de Russel & O’Dell datant de 1918
     
     
     
    my $word = 'le petit chien est blanc-crème'; 
     
    # Compte tenu que les tables de caractères modernes, permettent maintenant de saisir des lettres majuscules accentuées, il est nécessaire de transcrire ces lettres en lettres simples. 
    # En particulier, dans la langue française, le c majuscule avec cédille (Ç ) sera transformé en S. De même que le caractère Œ (dans le mot cœur par exemple) sera transformé en E.
    $word=~ s/é|è|ê|oe/E/g;
    $word=~ s/ç/S/g;
     
    #    *  On retranscrit le mot en majuscules
    $word = uc($word);
     
    #    * On conserve la première lettre du mot
    my ($first_letter, $rest) = ($word =~ /^([A-Z])(.*)$/);  
     
    #    * On élimine ensuite toutes les voyelles, le H et le W
    $rest =~ s/H|W|A|E|I|O|E|U|Y//g;
     
    #    * On transcode ensuite les lettres restantes à l’aide de la table suivante
    =h
    Lettre  			Type de consonnance  	code
    B F P V 			Bilabiales 			1
    C G J K Q S X Z 		Labiodentales 		2
    D T 				Dentales 			3
    L 				Alvéolaires 			4
    M N 				Vélaires 			5
    R 				Laryngales 			6
    =cut
    $rest =~ tr/BFPVCGJKQSXZDTLMNR/111122222222334556/;
     
    # De plus il est nécessaire de supprimer les espaces morts avant et après le mot ainsi que les blancs et le tiret.
    $rest =~ s/\s|-//g;   
     
    #    *  On élimine ensuite toutes les paires consécutives de chiffres dupliquées 
    # => restera 1 (série impaire) ou 0 (série paire) chiffre
    # recherche et suppression des paires de chiffres
    $rest =~ s/(\d)\1//g;   
     
    #    * On ne conserve que 4 caractères du Soundex ainsi obtenu, et on le complète par des zéros le cas échéant
    # les 4 premiers?
    my $L = length($rest);  
    if ($L>4){
    	$rest = substr($rest, 0, 4); 
    }
    elsif($L<4){
    	my $zero_num = 4 - $L;
    	$rest .= '0' x $zero_num;
    }
     
    # on replace la première lettre du mot ??
    $word = $first_letter . $rest;
    print $word."\n";
    -- Jasmine --

  3. #3
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Ok, mais je parle du phonex. J'ai déjà commençé à l'écrire. Je le mettrai peut être en ligne si j'y arrive
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bien, bien, on n'est jamais si bien servi que par soi-même. Si tu as besoin d'aide, n'hésite pas.
    -- Jasmine --

  5. #5
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Salut,
    J'ai fini mon projet et je me demandais si je pouvais mettre mon code perl pour l'algorithme du phonex sur le site. Si vous pensez que c'est pas une mauvaise idée, comment procéder?
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    J'aurais tendance à dire que LA bonne idée, c'est d'en faire un module CPAN, mais bon, c'est un peu de boulot aussi.
    Par contre, ton code aura certainement une chance d'être utile, testé, repris,...

Discussions similaires

  1. [jonas]eclipse ne trouve pas le plugin
    Par Stessy dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 17/07/2007, 11h43
  2. Le compilateur ne trouve pas glut32.dll
    Par Vathal dans le forum GLUT
    Réponses: 3
    Dernier message: 26/01/2004, 12h34
  3. je ne trouve pas la bonne syntaxe
    Par poelvo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2003, 01h30
  4. [TP]trouve pas le graph.tpu
    Par kaygee dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 13/06/2003, 12h49
  5. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo