(1) catégoriser les mots dans un texte, (2) lire un texte catégorise, (3) mise en oeuvre d'un dictionnaire catégorisé
On utilisera les programmes déjà écrits auxquels on ajoutera les modifications nécessaires pour l'objectif visé.
Texte de travail :
bébé (CAT=NOM,GENRE=MASC,NOMBRE=SING) tonique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) et (CAT=CONJ,TYPE=COORDIN)dynamique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) ne (CAT=ADV,TYPE=NEG,VAL=NE) lache (CAT=VERBE,PERS=3,NOMBRE=SING) pas (CAT=ADV,TYPE=NEG,VAL=PAS) . (CAT=PONC,TYPE=FORTE)
Programme 1
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
$i = 0;
$Ligne = 0;
READ: while(<>)
{
#saute les lignes vides
next READ if (/^$/);
s/\)[^ ]/\) /g;
s/[ ]+/ /g;
chop;
$Ligne++;
$Lignes[$Ligne] = $_ ;
@Mots = split(/\) /);
for $motcat (@Mots) {
print "mot traite : $motcat \n";
$motcat =~ /\D/ or next ;
$motcat = "$motcat".")";
print "$motcat \n";
$motcat =~ /(.*) \(/;
$mot = $1;
print "Forme : $mot \n";
$motcat =~ /\((.*)/;
$cat = "($1";
print "Cat : $cat \n";
rangemot;
}
}
print "Lecture/Ecriture dico1 \n";
foreach $mot (@dico1)
{
print "mot in dico1 : $mot\n";
print DIC1 "$mot\n";
}
print "Lecture/Ecriture dico2 \n";
foreach $item (sort keys %dico2)
{
print "(mot : $item) => Description in dico2 : $dico2{$item}\n";
print DIC2 "$dico2{$item}\n";
}
close(DIC1);
close(DIC2);
Programme 2
Texte de travail :
la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=NOM,GENRE=FEM,NOMBRE=SING) brise (CAT=VERBE,PERS=3,NOMBRE=SING) la (CAT=CLIT) brise (CAT=NOM,GENRE=FEM,NOMBRE=SING) la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=ADJ,GENRE=FEM,NOMBRE=SING) brise (CAT=NOM,GENRE=FEM,NOMBRE=SING) la (CAT=DET,GENRE=FEM,NOMBRE=SING) brise (CAT=VERBE,PERS=3,NOMBRE=SING)
Programme 3
Texte de travail :
#!/usr/bin/perl
# lircateg2.pl
#-----------------------------------------------------------------------------------
# SEANCE 2 - PERL : LIRE TEXTE CATEGORISE
#-------------------------------------------------------------------------
#
sub rangemot {
$existmot = 0;
foreach $motInDico1 (@dico1)
{
if ($motInDico1 eq $mot)
{
print "Mot deja recense dans dico1 \n";
$existmot=1;
}
}
if ($existmot == 0)
{
$dico1[$i]=$mot;
$i = $i + 1;
}
if (exists ($dico2{$mot}))
{
$existcat = 0;
foreach $catInDico2 (@{$dico2{$mot}})
{
if ($catInDico2 eq $cat)
{
$existcat=1;
}
}
if ($existcat == 0)
{
push(@{$dico2{$mot}},$cat);
print "Mot deja recense dans dico2, nouvelle categorie \n";
}
else
{
print "Mot deja recense dans dico2, et categorie deja recensee \n";
}
}
else
{
@{$dico2{$mot}}=();
push(@{$dico2{$mot}},$cat);
}
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
$i = 0;
$Ligne = 0;
READ: while(<>)
{
#saute les lignes vides
next READ if (/^$/);
s/([^ ])$/$1 /;
s/[ ]+/ /g;
chop;
$Ligne++;
$Lignes[$Ligne] = $_ ;
@Mots = split(/\) /);
for $motcat (@Mots) {
print "mot traite : $motcat \n";
$motcat =~ /\D/ or next ;
$motcat = "$motcat".")";
print "$motcat \n";
$motcat =~ /(.*) \(/;
$mot = $1;
print "Forme : $mot \n";
$motcat =~ /\((.*)/;
$cat = "($1";
print "Cat : $cat \n";
rangemot;
}
}
print "Lecture/Ecriture dico1 \n";
foreach $mot (@dico1)
{
print "mot in dico1 : $mot\n";
print DIC1 "$mot\n";
}
print "Lecture/Ecriture dico2 \n";
foreach $item (sort keys %dico2)
{
print "(mot : $item) => Description in dico2 :\n";
@descriptionMot =@{$dico2{$item}};
print "$item\n";
print DIC2 "$item\n";
foreach $categorie (@descriptionMot)
{
print "\t\tCategorie : $categorie\n";
print DIC2 "\t\tCategorie : $categorie\n";
}
}
close(DIC1);
close(DIC2);
bébé (CAT=NOM,GENRE=MASC,NOMBRE=SING) tonique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) et (CAT=CONJ,TYPE=COORDIN)
dynamique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) très (CAT=ADV)
accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING)
des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) très (CAT=ADV)
accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING)
des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN)
ne (CAT=ADV,TYPE=NEG,VAL=NE) lache (CAT=VERBE,PERS=3,NOMBRE=SING)
pas (CAT=ADV,TYPE=NEG,VAL=PAS) . (CAT=PONC,TYPE=FORTE)
la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=NOM,GENRE=FEM,NOMBRE=SING)
brise (CAT=VERBE,PERS=3,NOMBRE=SING) la (CAT=CLIT) glace (CAT=NOM,GENRE=FEM,NOMBRE=SING)
la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=ADJ,GENRE=FEM,NOMBRE=SING)
brise (CAT=NOM,GENRE=FEM,NOMBRE=SING) la (CAT=DET,GENRE=FEM,NOMBRE=SING)
glace (CAT=VERBE,PERS=3,NOMBRE=SING)
Programme 4
Texte de travail :
#!/usr/bin/perl
# lirecateg3.pl
#-----------------------------------------------------------------------------------
# SEANCE 2 - PERL : LIRE TEXTE CATEGORISE
#-------------------------------------------------------------------------
#
sub rangemot {
$existmot = 0;
foreach $motInDico1 (@dico1)
{
if ($motInDico1 eq $mot)
{
print "Mot deja recense dans dico1 \n";
$existmot=1;
}
}
if ($existmot == 0)
{
$dico1[$i]=$mot;
$i = $i + 1;
}
if (exists ($dico2{$mot}))
{
$existcat = 0;
foreach $catInDico2 (@{$dico2{$mot}})
{
if ($catInDico2 eq $cat)
{
$existcat=1;
}
}
if ($existcat == 0)
{
push(@{$dico2{$mot}},$cat);
print "Mot deja recense dans dico2, nouvelle categorie \n";
}
else
{
print "Mot deja recense dans dico2, et categorie deja recensee \n";
}
}
else
{
@{$dico2{$mot}}=();
push(@{$dico2{$mot}},$cat);
}
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
open(TEXTESSLIGNE,">textessligne.txt");
$i = 0;
$Ligne = 0;
$texte = "";
READ: while(<>)
{
#saute les lignes vides
next READ if (/^$/);
s/\)([^ ])/\) $1/g;
s/[ ]+/ /g;
chomp;
$Ligne++;
$Lignes[$Ligne] = $_ ;
$texte = "$texte"." $_"
}
$_ = $texte;
print TEXTESSLIGNE "$texte";
print "$texte";
s/^ ([^ ])/$1/;
s/\)([^ ])/\) $1/g;
s/[ ]+/ /g;
@Mots = split(/\) /);
for $motcat (@Mots) {
print "mot traite : $motcat \n";
$motcat =~ /\D/ or next ;
$motcat = "$motcat".")";
print "$motcat \n";
$motcat =~ /(.*) \(/;
$mot = $1;
print "Forme : $mot \n";
$motcat =~ /\((.*)/;
$cat = "($1";
print "Cat : $cat \n";
rangemot;
}
print "Lecture/Ecriture dico1 \n";
foreach $mot (@dico1)
{
print "mot in dico1 : $mot\n";
print DIC1 "$mot\n";
}
print "Lecture/Ecriture dico2 \n";
foreach $item (sort keys %dico2)
{
print "(mot : $item) => Description in dico2 :\n";
@descriptionMot =@{$dico2{$item}};
print "$item\n";
print DIC2 "$item\n";
foreach $categorie (@descriptionMot)
{
print "\t\tCategorie : $categorie\n";
print DIC2 "\t\tCategorie : $categorie\n";
}
}
close(TEXTESSLIGNE);
close(DIC1);
close(DIC2);
£ bébé (CAT=NOM,GENRE=MASC,NOMBRE=SING) tonique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) et (CAT=CONJ,TYPE=COORDIN) dynamique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) ne (CAT=ADV,TYPE=NEG,VAL=NE) lache (CAT=VERBE,PERS=3,NOMBRE=SING) pas (CAT=ADV,TYPE=NEG,VAL=PAS) . (CAT=PONC,TYPE=FORTE) la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=NOM,GENRE=FEM,NOMBRE=SING) brise (CAT=VERBE,PERS=3,NOMBRE=SING) la (CAT=CLIT) glace (CAT=NOM,GENRE=FEM,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE)
£ la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=ADJ,GENRE=FEM,NOMBRE=SING) brise (CAT=NOM,GENRE=FEM,NOMBRE=SING) la (CAT=DET,GENRE=FEM,NOMBRE=SING) glace (CAT=VERBE,PERS=3,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE)
Programme 5
Texte de travail :
#!/usr/bin/perl
# lircateg4.pl
#-----------------------------------------------------------------------------------
# SEANCE 2 - PERL : LIRE TEXTE CATEGORISE
#-------------------------------------------------------------------------
#
sub rangemot {
$existmot = 0;
foreach $motInDico1 (@dico1)
{
if ($motInDico1 eq $mot)
{
print "Mot deja recense dans dico1 \n";
$existmot=1;
}
}
if ($existmot == 0)
{
$dico1[$i]=$mot;
$i = $i + 1;
}
if (exists ($dico2{$mot}))
{
$existcat = 0;
foreach $catInDico2 (@{$dico2{$mot}})
{
if ($catInDico2 eq $cat)
{
$existcat=1;
}
}
if ($existcat == 0)
{
push(@{$dico2{$mot}},$cat);
print "Mot deja recense dans dico2, nouvelle categorie \n";
}
else
{
print "Mot deja recense dans dico2, et categorie deja recensee \n";
}
}
else
{
@{$dico2{$mot}}=();
push(@{$dico2{$mot}},$cat);
}
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
open(TEXTESSLIGNE,">textessligne.txt");
$i = 0;
$paragrapheNb = 0;
$texte = "";
READ: while(<>){
#saute les lignes vides
next READ if (/^$/);
if (/£/) {
$_=$_." ";
s/£(.*)/$1/;
s/^ ([^ ])/$1/;
s/\)([^ ])/\) /g;
s/[ ]+/ /g;
chomp;
$Paragraphes[$paragrapheNb] = $_ ;
$paragrapheNb++;
}
}
for $paragraphe (@Paragraphes) {
$_ = $paragraphe;
print TEXTESSLIGNE "£$paragraphe\n\n";
print "$paragraphe";
# s/^ ([^ ])/$1/;
# s/\)([^ ])/\) $1/g;
# s/[ ]+/ /g;
@Mots = split(/\) /);
for $motcat (@Mots) {
print "mot traite : $motcat \n";
$motcat =~ /\D/ or next ;
$motcat = "$motcat".")";
print "$motcat \n";
$motcat =~ /(.*) \(/;
$mot = $1;
print "Forme : $mot \n";
$motcat =~ /\((.*)/;
$cat = "($1";
print "Cat : $cat \n";
rangemot;
}
}
print "Lecture/Ecriture dico1 \n";
foreach $mot (@dico1)
{
print "mot in dico1 : $mot\n";
print DIC1 "$mot\n";
}
print "Lecture/Ecriture dico2 \n";
foreach $item (sort keys %dico2)
{
print "(mot : $item) => Description in dico2 :\n";
@descriptionMot =@{$dico2{$item}};
print "$item\n";
print DIC2 "$item\n";
foreach $categorie (@descriptionMot)
{
print "\t\tCategorie : $categorie\n";
print DIC2 "\t\tCategorie : $categorie\n";
}
}
close(TEXTESSLIGNE);
close(DIC1);
close(DIC2);
£ bébé (CAT=NOM,GENRE=MASC,NOMBRE=SING) tonique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) et
(CAT=CONJ,TYPE=COORDIN) dynamique (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE)
très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE) suit
(CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux (CAT=NOM,GENRE=MASC,NOMBRE=PLUR)
et (CAT=CONJ,TYPE=COORDIN) très (CAT=ADV) accrocheur (CAT=ADJ,GENRE=MASC,NOMBRE=SING) .
(CAT=PONC,TYPE=FORTE) suit (CAT=VERBE,PERS=3,NOMBRE=SING) des (CAT=PREP,VAL=DES) yeux
(CAT=NOM,GENRE=MASC,NOMBRE=PLUR) et (CAT=CONJ,TYPE=COORDIN) ne (CAT=ADV,TYPE=NEG,VAL=NE) lache (CAT=VERBE,PERS=3,NOMBRE=SING) pas (CAT=ADV,TYPE=NEG,VAL=PAS) . (CAT=PONC,TYPE=FORTE) la (CAT=DET,GENRE=FEM,NOMBRE=SING)
petite (CAT=NOM,GENRE=FEM,NOMBRE=SING) brise (CAT=VERBE,PERS=3,NOMBRE=SING) la (CAT=CLIT) glace
(CAT=NOM,GENRE=FEM,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE)
£ la (CAT=DET,GENRE=FEM,NOMBRE=SING) petite (CAT=ADJ,GENRE=FEM,NOMBRE=SING) brise
(CAT=NOM,GENRE=FEM,NOMBRE=SING) la (CAT=DET,GENRE=FEM,NOMBRE=SING)
glace (CAT=VERBE,PERS=3,NOMBRE=SING) . (CAT=PONC,TYPE=FORTE)
#!/usr/bin/perl
# lircateg5.pl
#-----------------------------------------------------------------------------------
# SEANCE 2 - PERL : LIRE TEXTE CATEGORISE
#-------------------------------------------------------------------------
#
sub rangemot {
$existmot = 0;
foreach $motInDico1 (@dico1)
{
if ($motInDico1 eq $mot)
{
$existmot=1;
}
}
if ($existmot == 0)
{
$dico1[$i]=$mot;
$i = $i + 1;
}
if (exists ($dico2{$mot}))
{
$existcat = 0;
foreach $catInDico2 (@{$dico2{$mot}})
{
if ($catInDico2 eq $cat)
{
$existcat=1;
}
}
if ($existcat == 0)
{
push(@{$dico2{$mot}},$cat);
}
}
else
{
@{$dico2{$mot}}=();
push(@{$dico2{$mot}},$cat);
}
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
open(TEXTESSLIGNE,">textessligne.txt");
$i = 0;
$paragrapheNb = 0;
$texte = "";
READ: while(<>){
#saute les lignes vides
next READ if (/^$/);
if (/£/) {
if ($i == 0) {
print "Premier paragraphe : on ne fait rien \n";
$i++;
}
else {
$Paragraphes[$paragrapheNb] = $texte ;
$paragrapheNb++;
print "Texte 2 : $texte\n";
$texte="";
}
print "Ligne : $_\n";
$ligne = $_;
chomp($ligne);
$texte = "$texte"."$ligne";
print "Texte 1 : $texte\n";
print "paranb 1 : $paragrapheNb \n";
}
else {
print "paranb 2 : $paragrapheNb \n";
print "Ligne 2 : $_\n";
$ligne = $_;
chomp($ligne);
$texte = "$texte"." $ligne";
print "Texte 3 : $texte\n";
}
}
$Paragraphes[$paragrapheNb] = $texte ;
for $paragraphe (@Paragraphes) {
$_ = $paragraphe;
print TEXTESSLIGNE "$paragraphe\n\n";
print "$paragraphe\n";
$_=$_." ";
s/£(.*)/$1/;
s/^ ([^ ])/$1/;
s/\)([^ ])/\) $1/g;
s/[ ]+/ /g;
@Mots = split(/\) /);
for $motcat (@Mots) {
$motcat =~ /\D/ or next ;
$motcat = "$motcat".")";
$motcat =~ /(.*) \(/;
$mot = $1;
$motcat =~ /\((.*)/;
$cat = "($1";
rangemot;
}
}
foreach $mot (@dico1)
{
print DIC1 "$mot\n";
}
foreach $item (sort keys %dico2)
{
@descriptionMot =@{$dico2{$item}};
print DIC2 "$item\n";
foreach $categorie (@descriptionMot)
{
print DIC2 "\t\tCategorie : $categorie\n";
}
}
close(TEXTESSLIGNE);
close(DIC1);
close(DIC2);