salve,
Sono neofita di perl ma vagamente esperto di programmazione.
Ho il programma cleandict come segue.
codice:
#!/usr/local/bin/perl -w
#
# -- Script usato per pulire il dizionario preso da festival
# e renderlo un semplice lista di parole fonemi f OO n e1 m i
#
# TODO
# manca la maiuscola di ... strano accento.
#
use feature "switch";
use Encode;
#use PerlIO::encoding;
#$srcdic="lessico_italiano_500K.dic";
#$dstdic="it-500kNorm.dic";
$srcdic="vocali.txt";
$dstdic="vocaliout.txt";
#encoding ISO-8859-1 is latin-1
open(SRCDIC, "<:encoding(iso-8859-1)", $srcdic) or die;
open(DSTDIC, ">:encoding(iso-8859-1)", $dstdic) or die;
$newline = encode("iso-8859-1", "\n");
$nlinee=0;
while ($linea = <SRCDIC>){
$nlinee++;
@lista = split(//, $linea);
$got=0;
$deep=0;
for $i (@lista){
#print "[INFO processing=\"".$i."\"| got=".$got." deep=".$deep."]\n";
given ($i)
{
when (/["]/) {
if( $got == 0){
$got = 1
}else{
$got = 0;
$tmp = encode("iso-8859-1", " ");
print DSTDIC $tmp;
}
}
when ( /[(]/ ) {
if ($deep == 3){
$tmp = encode("iso-8859-1", " ");
print DSTDIC $tmp;
}
$deep++;
}
when ( /[)]/ ) { $deep-- }
when (/[ 1-9a-zA-Zèéìíùúàáòó]/){
if($got || $deep > 3){
$enc = encode("iso-8859-1", $i);
print DSTDIC $enc;
}
}
}
}
print DSTDIC $newline;
}
close(SRCDIC);
close(DSTDIC);
print "processed ".$nlinee." parole\n";
devo trasformare vocali.txt:
("é" C (((e1) 1)))
("è" V-S1_IP (((E1) 1)))
("é" S-NS (((e1) 1)))
("ì" P-MS (((i1) 1)))
("ì" P-NP (((i1) 1)))
("ì" P-NS (((i1) 1)))
("ì" R-MP (((i1) 1)))
("ì" S-NN (((i1) 1)))
("í" C (((i1) 1)))
("ù" B (((u1) 1)))
("ù" S-NN (((u1) 1)))
("ú" C (((u1) 1)))
("à" C (((a1) 1)))
("á" C (((a1) 1)))
("ò" C (((O1) 1)))
("ó" C (((o1) 1)))
in vocaliout.txt:
é e1
è E1
é e1
ì i1
ì i1
ì i1
ì i1
ì i1
í i1
ù u1
ù u1
ú u1
à a1
á a1
ò O1
ó o1
con il programma allegato non riesco comunque ad ottenere un file in output di tipo latin1 (iso-8859-1) e tralaltro nemmeno la prima colonna di vocali.
in piu' lanciando sui due file il comando da shell (ubuntu 9.04)
ottengo
codice:
vocaliout.txt: text/plain charset=us-ascii
vocali.txt: text/plain charset=iso-8859-1
(NB il programma serve per dizionari piu grossi, ma questo e' l'esempio buggoso da risolvere).
Any ideas?
grazie