27. kasu praktikoa: zuzentzaile ortografikoa

Moduluen laguntzaz, zuzentzaile ortografiko baten lehen bertsioa landuko dugu ariketa honetan. Gure zuzentzaile ortografikoak, hitz bat jaso eta zuzen ala oker idatzitakoa den esango digu. Oker idatzitako hitza bada, programak harentzako alternatiba zuzenak proposatu behar ditu. Laguntza gisa, programak hiztegi-fitxategi bat jasoko du (xuxen.txt), fitxategi horretan agertzen ez diren hitzak okertzat jo eta proposamenak aurkeztuko dituelarik.
     Idaztean egin ohi ditugun 3 oinarrizko errore mota antzemango ditu programak:
1.- Karaktere bat ezabatu. Adibidez: “eztia” idatzi beharrean “etia”.
2.- Behar baino karaktere bat gehiago idatzi. Adibidez: “edo” idatzi beharrean
“edos”.
3.- Transposizioa: hitzeko 2 karaktere posizioz nahastea. Adibidez: “idatzi”
beharrean “idazti”.
     Hona hemen programaren exekuzio-adibidea:

>perl xuxentzaile.pl xuxen.txt
Sartu hitz bat:
zihur
*****************
Aukerak
*****************
0 bihur
1 mihur
2 zigur
3 zimur
4 ziur
5 zizur
6 zuhur
>

     Aurretik esan bezala, Perl-ek eskaintzen duen LevenshteinXS modulua erabiliko dugu ariketa honetan. Modulu honek bi string-en arteko distantzia kalkulatzen duen distance() funtzioa dakar. String-en arteko distantzia, Levenshtein distantzia deiturikoa, string batetik bestera iristeko beharrezko den karaktere ordezkapen, ezabaketa edo gehitze kopurua izango da.

Adibidez:
print (distance(“gaur”, “haur”));                 # 1 pantailaratuko du
print (distance(“bare”, “gore”));                 # 2 pantailaratuko du

Hona programaren algoritmoa:
1. Teklatutik hitza jaso: $hitza
2. Hiztegi-fitxategia zabaldu
3. Hiztegiko $xuxen sarrera bakoitzeko
         3.1. Baldin ($hitza == $xuxen)
                 bistaratu “hitza zuzena da”
         3.2. Bestela,
                 baldin (distance($hitza, $xuxen) <= 1)
                          Gehitu $hitza proposamen-zerrendan
4. Bistaratu proposamen-zerrenda

    Hona hemen programa:

xuxentzaile.pl
 #!/usr/bin/perl
 use warnings;
 use strict;
 use Text::LevenshteinXS;
 my ($xuxen, $hitza, $ondo, @aukerak);
 print(“Sartu hitz bat:n”);
 $hitza = <STDIN>;
 chomp($hitza);
 $ondo = 0;
 open(FITX, $ARGV[0])     or die(“Ezin fitxategia zabaldu!”);
 while (($ondo != 1) && ($xuxen = <FITX>)) {
        chomp($xuxen);
        if (distance($hitza, $xuxen) == 0) {
               $ondo = 1;
        }
        elsif (distance($hitza, $xuxen) <= 1) {
                 push(@aukerak, $xuxen);
        }
 }
 print(“*****************n”);
 print(“Aukerakn”);
 print(“*****************n”);
 if ($ondo) {
        print(“hitza zuzenan”);
 }
 else {
        for ($i=0; $i <= $#aukerak; $i++) {
                 print(“$i $aukerak[$i]n”);
        }
 }
 close(FITX);

Jaitsi   xuxentzaile.pl   fitxategia

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude