#!/usr/bin/perl
#  PhraseLM10AutourPivot2FenetresPourIM.pl

<<DOC; 
B. Habert
mar mar 28 19:04:10 CEST 2006

               PhraseLM10AutourPivot2FenetresPourIM.pl :


Format d'entrée : 

<doc>  <par.>   <phrase><lemme> <forme> <cat>   <POS>
683121  2       4       le      L'      DetMS   D
683121  2       4       accalmie        accalmie        NomFS   N
683121  2       4       permettre       devrait permettre       VCONJS  V
683121  2       4       de      de      Prep    O
683121  2       4       récupérer       récupérer       VINF    V
683121  2       4       de      d'      Prep    O
683121  2       4       autre   autres  AdjFP   A
683121  2       4       trace   traces  NomFP   N
683121  2       4       de      de      Prep    O
683121  2       4       fioul   fioul   NomMS   N

Etiquetage par le TreeTagger des phrases contenant un pivot donné.

Les POS (Part Of Speech) sont les suivantes :

A   Adjectif
Cc  Conjonction de coordination
Cs  Conjonction de subordination
D   Déterminant
E   Erreur 
N   Nom commun
NP  Nom propre
O   PrépOsition
P   Pronom
R   AdveRbe
T   PoncTuation
V   Verbe

Exemple d'appel : 

Format de sortie :

Le format d'entrée de la chaîne pour l'Information Mutuelle (IM)
le_D
accalmie_N
permettre_V
de_O
récupérer_V
de_O
autre_A
trace_N
de_O
fioul_N
en_O
mer_N
,_T
au moyen de_O
...
fioul_N
ce_D
week_N
-_T
end_N
<FinFenetre/>
un_D
village_N
destiner_V
à_O
noyer_V
sous_O
le_D
...

A faire :

Bugs et problèmes :

DOC



$ChaineUsage = "Usage : PhraseLM10AutourPivot2FenetresPourIM.pl <lignes tabulées de la forme : <doc>  <par.>   <phrase><lemme> <forme> <cat>   <POS> >\n" ; 
if (@ARGV != 1) {die $ChaineUsage ; }  
$FichierEntree = $ARGV[0] ;  
open(ENTREE, $FichierEntree) ;  

$Trace = 0 ; 
$PourWindows = 1 ;
if ($PourWindows == 0) {
  $FinLigne     = "\n" ; 
}
else {
  $FinLigne     = "\r\n" ; 
}
$PonctuationsFortes              = "[.?!]" ;
$CategoriePonctuation            = "Typo" ;
$LignePrecedentePonctuationForte = 0 ;
$SeparateurLemmeCategorie        = "_" ;

while ($Ligne = <ENTREE>){
  if ($Trace == 1) {print $Ligne ; }
  if ($PourWindows == 1) {
      $LigneSansFinLigne = substr($Ligne, 0, length($Ligne) - 2) ;
  }
  else {
      $LigneSansFinLigne = substr($Ligne, 0, length($Ligne) - 1) ;
  }
  @ListeChamps = split(/\t/, $LigneSansFinLigne) ;

  $DocumentCourant     = $ListeChamps[0] ; 
  $ParagrapheCourant   = $ListeChamps[1] ; 
  $PhraseCourante      = $ListeChamps[2] ; 
  $Lemme               = $ListeChamps[3] ; 
  $Forme               = $ListeChamps[4] ; 
  $Categorie           = $ListeChamps[5] ; 
  $POS                 = $ListeChamps[6] ;  
  
  if ($Categorie eq $CategoriePonctuation 
      && $Lemme =~ /$PonctuationsFortes/) {
    print "<FinFenetre/>$FinLigne" ; 
    $LignePrecedentePonctuationForte = 1 ;
  }
  else {
    print "$Lemme$SeparateurLemmeCategorie$POS$FinLigne" ; 
    $LignePrecedentePonctuationForte = 0 ;
  }
}
if ($LignePrecedentePonctuationForte == 0) {
    print "<FinFenetre/>$FinLigne" ; 
}
