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

Langage Perl Discussion :

correcteur d'orthographe perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 1
    Par défaut correcteur d'orthographe perl
    j 'essaye de developper un programme perl pour un correcteur d'orthographe automatique
    comment modifier ce programme pour que je puisse enlever le caractere qui s'ajoute apres le test.

    Enoncé :
    Un correcteur d'orthographe. Les correcteurs d'orthographe font des hypothèses sur les erreurs que l'utilisateur a pu faire. Ainsi, on peut appliquer plusieurs opérations :
    suppression d'une lettre, ajout d'une lettre, modifier une lettre, inversion de deux lettres adjacentes. Les correcteurs proposent des nouveaux mots, obtenus par ces opérations. Un dictionnaire,
    tblwordform, est disponible pour vérifier que les nouveaux mots existent. Pour proposer des suggestions pour l'ajout, l'insertion ou la supprésion de lettres, on peut se servir de trigrammes de caractères (séquences de 3 lettres), qui permettront de les modifier.
    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
    printprint "Enter a word:\n";
    chomp(my $word = <STDIN>);
    my @word = split //, $word;
    my $dico = "manger"; #mot qui sera remplace après par un dico
     
     
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      foreach my $ajout('m'  .. 'o') {
        splice(@altered_word, $letter, 0, $ajout);
        my $altered_word = join "", @altered_word;
        print " Trying " , $altered_word, "\n";
        if ($altered_word eq $dico) {
          print "\n$word seems to be misspelled. It should be $altered_word";
          last;
      }
    }
    Enter a word:
    mager
    Trying mmager
    Trying nmmager
    Trying onmmager
    Trying mmager
    Trying mnmager
    Trying monmager
    Trying mamger
    Trying manmger
    Trying maonmger
    Trying magmer
    Trying magnmer
    Trying magonmer
    Trying magemr
    Trying magenmr
    Trying mageonmr

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonsoir,

    Un programme Perl se doit de commencer par certaines instruction, ce qui n'est pas le cas chez vous. Pas de shebang, de use strict...

    printprint ne veut rien dire.

    Bon, voici votre programme avec les bonnes entêtes, merci de corriger les messages d'erreurs.

    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
    #!/usr/bin/perl
    #===============================================================================
    # Auteur :
    # Date   :
    # But    :
    #===============================================================================
    use Carp;
    use strict;
    use warnings;
     
    print "Enter a word:\n";
    chomp( my $word = <STDIN> );
    my @word = split //, $word;
    my $dico = "manger";    #mot qui sera remplace après par un dico
     
    foreach my $letter ( 0 .. $#word ) {
      my @altered_word = @word;
      foreach my $ajout ( 'm' .. 'o' ) {
        splice( @altered_word, $letter, 0, $ajout );
        my $altered_word = join "", @altered_word;
        print " Trying ", $altered_word, "\n";
        if ( $altered_word eq $dico ) {
          print "\n$word seems to be misspelled. It should be $altered_word";
          last;
        }
      }

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par missrita Voir le message
    comment modifier ce programme pour que je puisse enlever le caractere qui s'ajoute apres le test.
    Enter a word:
    mager
    Trying mmager
    Trying nmmager
    Trying onmmager
    Trying mmager
    Trying mnmager
    Trying monmager
    Trying mamger
    Trying manmger
    Trying maonmger
    Trying magmer
    Trying magnmer
    Trying magonmer
    Trying magemr
    Trying magenmr
    Trying mageonmr
    Qu'entends-tu par enlever ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Si tu cherches dans un dictionnaire de mots, tous ceux qui ont une distance de Levenstein inférieure ou égale à 2, tu devrais trouver tous les mots approchant que propose un correcteur orthographique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    use Text::Levenshtein qw(distance);
    use feature qw(:5.10);
     
    open my $DICO, "<", "/usr/share/dict/french"; #fichier dictionnaire à un mot par ligne
    chomp(my @dico = <$DICO>);
    say "Entrer un mot :";
    chomp(my $mot = <STDIN>);
    say "Mots approchés:";
    say $_ foreach grep fastdistance($mot, $_) <= 2, @dico;
    (pas testé).

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    tu as oublié le shebang philou !

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Si tu cherches dans un dictionnaire de mots, tous ceux qui ont une distance de Levenstein inférieure ou égale à 2, tu devrais trouver tous les mots approchant que propose un correcteur orthographique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl
    use Text::Levenshtein qw(distance);
    use feature qw(:5.10);
     
    open my $DICO, "<", "/usr/share/dict/french"; #fichier dictionnaire à un mot par ligne
    chomp(my @dico = <$DICO>);
    say "Entrer un mot :";
    chomp(my $mot = <STDIN>);
    say "Mots approchés:";
    say $_ foreach grep fastdistance($mot, $_) <= 2, @dico;
    (pas testé).

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Écris à l'arrache, et même pas testé ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Correcteur d'orthographe dans les textbox
    Par Benawa dans le forum IHM
    Réponses: 1
    Dernier message: 30/08/2006, 20h52
  2. Correcteur d'orthographe
    Par bilb0t dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 10h41
  3. Réponses: 17
    Dernier message: 08/01/2006, 19h05
  4. Correcteur d'orthographe
    Par gege2061 dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 11/08/2005, 18h24
  5. [WORD] Chargement du correcteur d'orthographe
    Par digabriel dans le forum VBA Word
    Réponses: 1
    Dernier message: 08/08/2005, 23h46

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