replacePronTrs.pl 1.62 KB
#!/usr/bin/perl
use strict;

# récupère les prononciations dans les balises Event
# Exemples :
#<Event desc="2 millions 5" type="pronounce" extent="begin"/>
#2,5 millions
#<Event desc="2 millions 5" type="pronounce" extent="end"/>
#
# ça fait 2 dimanches qu'on est levés à 7h
#<Event desc="7 heures" type="pronounce" extent="previous"/>
#
#<Event desc="JDD point FR" type="pronounce" extent="next"/>
#jdd.fr, ça c'est important,


my @lines=();

while(<>) {
	chomp;
	push(@lines,$_);
}

for(my $i = 0;$i < scalar(@lines);$i++) {
	# le plus simple : previous et next
	if($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"next\"\/\>/) {
		my @tabLineTmp = split(' ',$lines[$i+1]);
		($tabLineTmp[0]) = ($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"next\"\/\>/);
		$lines[$i+1] = join(" ",@tabLineTmp);
	}
	
	elsif($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"previous\"\/\>/) {
		my @tabLineTmp = split(' ',$lines[$i-1]);
		if (scalar(@tabLineTmp) > 0) {
			($tabLineTmp[scalar(@tabLineTmp)-1]) = ($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"previous\"\/\>/);
			$lines[$i-1] = join(" ",@tabLineTmp);
		}
	}
	
	# Plus compliqué le cas du begin / end : on suppose qu'ils sont pas assez "vicieux" pour mettre plusieurs lignes...
	# donc en fait, on va faire comme si c'était un next mais sur toute la phrase suivante
	elsif($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"begin\"\/\>/) {
		($lines[$i+1]) =  ($lines[$i] =~ /\<Event desc=\"(.*)\" type=\"pronounce\" extent=\"begin\"\/\>/);
	}
}

# on réaffiche le tout modifié
foreach(@lines) {
	print "$_\n";
}