BàO 3


Boite à outils 3 : Extraction terminologique


Après avoir récupéré les fichiers étiquetés, il permet d'extraire les patrons morphosyntaxiques


Liste de patron à traiter:


  NOM ADJ

  NOM PREP NOM


En sortie, nous récuperons une liste de patron en forme TXT.


Script:


Le script pour extraire le patron NOM ADJ:

      
#--------------------------------------------
# le patron cherché ici est du type NOM ADJ";
#--------------------------------------------
my $rubrique = "$ARGV[0]";
open(FILE,"<:encoding(utf8)","$rubrique.xml") or die "NE PEUT PAS OUVIRE LE FICHIER !";
open(OUTPUT,">>:encoding(utf8)","N_ADJ_$rubrique.txt") or die "NE PEUT PAS OUVIRE LE FICHIER !";

my @lignes=<FILE>;
close(FILE);
while (my $ligne=shift(@lignes))
{
  chomp $ligne;
  my $sequence = "";
  my $longueur = 0;
  if ( $ligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/) 
  {
    my $forme = $1;
    $sequence.=$forme;
    $longueur = 1;
    my $nextligne = $lignes[0];
    if ( $nextligne =~ /<element><data type=\"type\">ADJ<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/) 
    {
      my $forme = $1;
      $sequence.=" ".$forme;
      $longueur = 2;
    }
  }
  
  if ($longueur == 2) 
  {
    print "$sequence\n";
    print OUTPUT "$sequence\n";
  }
}
close OUTPUT;
      
      


Pour voir le script complet, cliquez sur le lien suivant



Le script pour extraire le patron NOM PREP NOM:

      

#--------------------------------------------------------
# le patron cherché ici est du type NOM PREP NOM";
#--------------------------------------------------------
use utf8;
binmode(STDIN, ':encoding(utf8)');
binmode(STDOUT, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');

my $rubrique = "$ARGV[0]";
open(FILE,"<:encoding(utf8)","$rubrique.xml") or die "NE PEUT PAS OUVIRE LE FICHIER !";
open(OUTPUT,">>:encoding(utf8)","N_PRP_N_$rubrique.txt") or die "NE PEUT PAS OUVIRE LE FICHIER !";

my @lignes=<FILE>;
close(FILE);
while (my $ligne=shift(@lignes))
{
  chomp $ligne;
  my $sequence = "";
  my $longueur = 0;
  if ($ligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/) 
  {
    my $forme = $1;
    $sequence.=$forme;
    $longueur = 1;
    my $nextligne = $lignes[0];
    if ($nextligne =~ /<element><data type=\"type\">PRP<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/) 
    {
      my $forme = $1;
      $sequence.=" ".$forme;
      $longueur = 2;
      my $nextligne = $lignes[1];
      if($nextligne =~ /<element><data type=\"type\">NOM<\/data><data type=\"lemma\">[^<]+<\/data><data type=\"string\">([^<]+)<\/data><\/element>/)
      {
        my $forme=$1;
        $sequence.=" ".$forme;
        $longueur = 3;
      }   
    }
  }
  
  if ($longueur == 3) 
  {
    print "$sequence\n";
    print OUTPUT "$sequence\n";
  }
}
close OUTPUT;

      
      

Pour voir le script complet, cliquez sur le lien suivant


Fichier sortie TXT

Rubrique 3208:   NOM_ADJ   

Rubrique 3208:   NOM_PREP_NOM   


Rubrique 3210:   NOM_ADJ   

Rubrique 3210:   NOM_PREP_NOM   


Rubrique 3224:   NOM_ADJ   

Rubrique 3224:   NOM_PREP_NOM   


Rubrique 823353:   NOM_ADJ XML   

Rubrique 823353:   NOM_PREP_NOM XML