Statistics
| Revision:

root / tmp / org.txm.dictionary.rcp / src / org / txm / dictionary / functions / tsv / reformat-afrlex.pl @ 470

History | View | Annotate | Download (1.6 kB)

1
#Reformatage du lexique de l'ancien français afrlex au format :
2
#une association "forme	msd	lemme	ref" par ligne
3

    
4
use strict;
5
#use warnings;
6

    
7
my $file = "afrlex";
8

    
9
open (IN,$file) || die "Cannot read from $file\n";
10
open (OUT, ">$file.$$") || die "Cannot write to $file.$$\n";
11

    
12
print OUT "form\tmsd\tlemma\tlemma-source\n";
13

    
14
my @lines = <IN>; close IN;
15

    
16
for my $line (@lines) {
17
#	print $line;
18
	if ($line =~ m/^([^\t]*)\t(.*)$/) {
19
		#la forme est le premier segment avant tabulation
20
		my $form = $1;
21
		#le reste sont des annotations : msd + lemmes
22
		my $annotations = $2;
23
		until ($annotations =~ m/^\s*$/) {
24
			#on traite les annotations en boucle par paire de valeurs séparées par une tabulation
25
			$annotations =~ m/^\t?([^\t]*)\t([^\t]*)(.*)$/;
26
			#la 1ère valeur est l'étiquette morphosyntaxique
27
			my $msd = $1;
28
			#la seconde est un ensemble lemme_source éventuellement multiples avec séparation par type
29
			my $lemmesrefs = $2;
30
			$annotations = $3;
31
			#s'il y a un "_", on parse
32
			if ($lemmesrefs =~ m/^([^_]*)_([^_]*)$/) {
33
				my @lemmes = split/\|/, $1;
34
				my @refs = split/\|/, $2;
35
				my $counter = 0;
36
				foreach my $lemme (@lemmes) {
37
					print OUT "$form\t$msd\t$lemme\t$refs[$counter]\n";
38
					$counter++;
39
				}
40
			}
41
			#sinon on copie simplement
42
			else {
43
				my @lemmes = split/\|/, $lemmesrefs;
44
				foreach my $lemme (@lemmes) {
45
					print OUT "$form\t$msd\t$lemme\t\n";
46
				}
47
			}
48
		}
49
	}
50
	else {
51
		print "ERROR in line format: $line\n"
52
	}
53
}
54

    
55
close OUT;
56
rename "$file.$$","$file-tab" || die "Cannot write to $file-tab\n";
57

    
58
print "Press <Enter> to finish";
59
<STDIN>