.*.*|o) {
+ $lemma = $1;
+ $par = $2;
} elsif ($linia =~ m|.*.*|o) {
$lemma = $1;
$par = $2;
+ } elsif ($linia =~ m|.*.*|o) {
+ $lemma = $1;
+ $par = $2;
} else {
next;
}
@@ -69,11 +80,69 @@
}
}
+# llegeixo el fitxer bilingüe: n, adj, adv, np, abbr
+sub llegir_bidix {
+ my ($fitx, $r_struct) = @_;
+ my ($lemma_cat, $lemma_srd, $morf, $morf2);
+
+# derrotaderrota
+# properimbeniente
+# aqueixcustu
+
+
+ while (my $linia = <$fitx>) {
+ chop $linia;
+ $linia =~ s|| |og;
+#print "1. fitxer $nfitx, $linia\n" if $nfitx eq 'cat' && $linia =~ /comarca/o;
+ if ($linia =~ m| *([^<]*)([^<]*) *([^<]*)([^<]*) *([^<]*).*([^<]*) *([^<]*).*([^<]*){$morf}{$lemma_cat} = $lemma_srd;
+#print "r_struct->{$morf}{$lemma_cat} = $r_struct->{$morf}{$lemma_cat}\n" if $morf =~ /vblex/o;
+print "r_struct->{$morf}{$lemma_cat} = $r_struct->{$morf}{$lemma_cat}\n" if $lemma_cat =~ /conegut/o;
+#print "r_struct->{$morf}{$lemma_cat} = $r_struct->{$morf}{$lemma_cat}\n";
+ }
+}
+
my %dix_srd = ();
my %dix_cat = ();
+my %dix_bi = ();
llegir_dix('srd', $fdixsrd, \%dix_srd);
llegir_dix('cat', $fdixcat, \%dix_cat);
+llegir_bidix($fdixbi, \%dix_bi);
; # saltem la primera línia
my ($stem_cat, $stem_srd, $gen_cat, $gen_srd, $num_cat, $num_srd, $lemma_cat, $lemma_srd);
@@ -80,7 +149,6 @@
while (my $linia = ) {
chop $linia;
$linia =~ s/[^a-z\t]+$//o;
-# $linia =~ tr/[A-ZÀÈÌÒÙÉÍÓÚ/a-zàèìòùéíóú/;
my @dades = split /\t/, $linia;
for (my $i=0; $i<=$#dades; $i++) {
$dades[$i] =~ s/^ +//o;
@@ -89,7 +157,8 @@
next unless $dades[3]; # línia buida
next if $dades[5] =~ /\?/o; # dubtes
-print "99. $. dades[1] = $dades[1]\n" if length $dades[1] == 1; # una sola lletra
+ next if length $dades[1] == 1; # una sola lletra
+#print "99. $. dades[1] = $dades[1]\n" if length $dades[1] == 1; # una sola lletra
$stem_cat = $dades[1];
$stem_cat =~ s| +| |og;
@@ -102,6 +171,22 @@
}
$stem_cat =~ s| ||og;
+ my $gram_cat = $dades[2];
+ $gram_cat =~ s/^ */og;
+ $gram_cat =~ s/> *$//og;
+ $gram_cat =~ s/>/og;
+ # verifico que la paraula no estigui ja en en diccionari bilingüe
+ if ($dix_bi{$gram_cat}{$lemma_cat}) {
+#print "No es carrega: dix_bi{$gram_cat}{$lemma_cat} = $dix_bi{$gram_cat}{$lemma_cat}\n";
+ next;
+ }
+ if ($gram_cat eq 'nm' && $dix_bi{n}{$lemma_cat}) { # sovint apareixen com a nm paraules que són n (i.e. m+f)
+#print "No es carrega: dix_bi{$gram_cat}{$lemma_cat} = $dix_bi{$gram_cat}{$lemma_cat}\n";
+ next;
+ }
+print "Sí es carrega: dix_bi{$gram_cat}{$lemma_cat} = $dix_bi{$gram_cat}{$lemma_cat}\n";
+
+
$dades[3] =~ s|,|;|og;
#print "11. $linia - stem_cat=$stem_cat, lemma_cat=$lemma_cat, dades[3]=$dades[3]\n" if $lemma_cat eq 'parella';
@@ -146,6 +231,7 @@
$gram_srd = $gram_cat;
}
#print "12. $linia - stem_srd=$stem_srd, lemma_srd=$lemma_srd, gram_cat = $gram_cat, gram_srd = $gram_srd\n" if $lemma_cat eq 'parella';
+#print "12. $linia - stem_srd=$stem_srd, lemma_srd=$lemma_srd, gram_cat = $gram_cat, gram_srd = $gram_srd\n";
# sortida: diccionari bilingüe
if ($gram_cat eq 'vblex') {
@@ -159,9 +245,17 @@
} elsif ($gram_cat eq 'adv') {
# comprovo que és en el diccionari monolingüe
+ unless ($dix_srd{$gram_srd}{$lemma_srd}) {
+ if ($gram_srd eq 'adv') {
+ # generem el paradigma al diccionari sard
+ my $par_srd = 'bene__adv';
+ printf $fsrd " %s\n", $lemma_srd, $stem_srd, $par_srd;
+ } else {
print STDERR "Falta $lemma_srd <$gram_srd>\n" unless $dix_srd{$gram_srd}{$lemma_srd};
# print "dix_srd{$gram_srd}{$lemma_srd} = $dix_srd{$gram_srd}{$lemma_srd}\n";
- next unless $dix_srd{$gram_srd}{$lemma_srd};
+ next;
+ }
+ }
my $rl = ' r="RL"' unless $primer;
printf $fbi " %s%s
\n", $stem_cat, $stem_srd;
@@ -248,6 +342,7 @@
my $par_srd = $dix_srd{$gram_srd}{$lemma_srd};
# comprovo que és en el diccionari monolingüe
print STDERR "FALTA CAT $lemma_cat <$gram_cat>\n" unless $par_cat; # seria estranyíssim no trobar-lo!
+# print STDERR "dades[1] = #$dades[1]#, length = ", length($dades[1]), "\n" unless $par_cat;
next unless $par_cat;
print STDERR "Falta srd $lemma_srd <$gram_srd>\n" unless $par_srd;
next unless $par_srd;
@@ -318,6 +413,8 @@
printf $fbi " %s%s
\n", $stem_cat, $stem_srd;
} elsif ($par_cat eq 'acompanyant__n' && $par_srd eq 'dentista__n') {
printf $fbi " %s%s
\n", $stem_cat, $stem_srd;
+ } elsif ($par_cat eq 'acompanyant__n' && $par_srd eq 'albanes/e__n') {
+ printf $fbi " %s%s
\n", $stem_cat, $stem_srd;
} elsif ($par_cat eq 'acompanyant__n' && $par_srd eq 'mesa__n') {
printf $fbi " %s%s
\n", $stem_cat, $stem_srd;
} elsif ($par_cat eq 'acompanyant__n' && $par_srd eq 'pane__n') {
@@ -366,13 +463,50 @@
# comprovo que és en el diccionari monolingüe
print STDERR "FALTA CAT $lemma_cat <$gram_cat>\n" unless $par_cat; # seria estranyíssim no trobar-lo!
next unless $par_cat;
- print STDERR "Falta srd $lemma_srd <$gram_srd>\n" unless $par_srd;
- next unless $par_srd;
+ unless ($par_srd) {
+ # generem el paradigma al diccionari sard
+ if ($gram_srd eq 'np> %s
\n", $lemma_srd, $stem_srd, $par_srd;
+ } elsif ($gram_srd eq 'np> %s
\n", $lemma_srd, $stem_srd, $par_srd;
+ } elsif ($gram_srd =~ /^np> %s
\n", $lemma_srd, $stem_srd, $par_srd;
+ } elsif ($gram_srd eq 'np>