Mardi 7 avril 2009
2
07
/04
/Avr
/2009
19:06
#/usr/bin/perl
# use locale; force le \w à prendre les accentués.
open(FICCORDIAL, "$ARGV[0]");
open (OUT, ">sortiepatrons.txt");
#i=0;#new (facultative) car en perl on a pas besoin d'initialiser le compteur, car perl initialise par défaut à =0.****
#$compt=1; #l'initialisation d'un compteur doit toujours être mise au dessus de la while principale. mais l'incrémentation en bas doit être au niveau de ce que on traite***
while ($ligne= <FICCORDIAL>) { #ou my $ligne = $_;
#next if ($ligne=~/\r/); #ne fait aucun traitement si la ligne contient un \r
next if ($ligne!~/\t/); #ne fait aucun traitement si la ligne ne cotient pas un \t donc toutes les lignes sauf celles qui contiennent un \r # ou on met à la place de cette if un "next if
($ligne!~/\t/)"if (($ligne=~/\t/) && ($ligne!~/\./) && ($ligne!~/PCT/)){
chomp $ligne; #enlève LF # ou $ligne=~s/\n//g;#
#print "$ligne\n";
#@tab=<FICCORDIAL>;
#print @tab[0];
if ($ligne !~/PCT/){ #on s"arrete à la ponctuation.
# ou $ligne =~/(\w+)\t(\w+)\t(\w+)/; # $1, $2, $3; H le \w prend aussi les noms numériques.
@decoup=split(/\t/, $ligne); # sur la ligne V*3 , une liste @
#print "@decoup\n";
push (@token, $decoup[0]); #insérer toute .. ou push (@token, @decoup[0]);
push (@lemme, $decoup[1]); # push (@token, $1 ..)
push (@partof, $decoup[2]);
$i++;#new****
#print "$i\n";
#print "@partof\n";
#print "@token\n"; dans cette if, tous les tableaux sont affichés en trapèzes.
}
else {
#print "@token\n";
#ici le tableau n'est pas le même que celui d'en haut, car seules les ph completes sont reprises.
#print "@partof\n";
#print "@token\n";
#print "ENTREE\n";
#my $reponse=<STDIN>;
open(FICPATRONS, "$ARGV[1]");
while ($patrons=<FICPATRONS>) { #while (<FICPATRONS>)
#ou# my $ligne1= $_ ; autre méthode pour lire les lignes d'un fichier en utilisant $_ prédéfinie.
chomp $patrons;
my $compare="";
#foreach my $element(@partof) { #c'est une autre solution pour mettre le contenu d'un tableau @ dans une scalaire $.
# $compare=$compare."\t".$element; ##$compare.="\t".$element #la
concaténation se fait dans un ordre logique de gauche à droite des éléments.
# }
#print "$compare\n";
$compare=join("\t", @partof);
#print "$compare\n";
#print "@partof[8] ";
#print "@partof[9]\n";
#le joineur est mis entre "", le spliteur entre / /.la var $compare
#contient tt les lignes étiquetées de cat gram. le joint recolle en prenant la ligne du tableau et la transforme en une chaine de carac dont les éléments sont séparés par un \t
#print "$compare\n";
my $j=0; #new
my $k=0;#new
while ($compare=~/$patrons/g) { # ou if ( / /); mais ne prend pas les répétitions sur un même ligne de pat.txt
my $avant = $`;#new
my $apres = $';#new
#print "$&\n";
#print "$avant\n";
#print "$apres\n";
while ($avant=~/\t/g) {$j++};#new#while et non if , car répète la recherche sur la meme ligne.
while ($apres=~/\t/g) {$k++};#new
#print "$i\n";
#print $j;
#print $k;
print OUT "@token[$j..$i-$k-1]\n"; #avec foreach on [$j-1..$i-$k-1]; donc le"-1" est additionnel pour enlever "\t" dans la concaténation : ligne 38 #new
#print "\n";
$j=0;#new
$k=0;#new #peut être mise ici ou dans la while qui compare while / /g;
# $compt++; #*** voir en haut.
#print "@token\n";
#print "$compare\n";
#print "correspondance!\n"
}
}
$i=0;#new #sert à vider cette var.
@token=();
@lemme=();
@partof=();
}
}
Sortie : 121 patrons
suppression totale
commission Copé
soldat américain
magazine américain
caractère exceptionnel
procédure pénale
football professionnel
esthétique domestique
exposition L'
esthétique médiatique
Orange détenteurs
presse économique
esthétique médiatique
exposition L'
design étonnant
monde entier
site participatif
chaînes thématiques
version initiale
départs volontaires
dérive partisane
chaîne privée
Par Nassim & Marco.
0
Dimanche 29 mars 2009
7
29
/03
/Mars
/2009
15:38
Nous avons commencé à extraire le patron NCFS ADJFS à partir de la
sortie .cnr étiquetée avec "Cordial".
Nous présentons dans un premier temps la sortie étiquetée. Notons que les trois colonnes de cette sortie sont séparées par un "\t" et que la ponctuation (PCT) a, comme nous allons le
voir, un rôle fondamental dans la structure du script Perl.
Sortie étiquetée :
L' le DETDMS
objectif objectif NCMS
de de PREP
la le DETDFS
commission commission NCFS
Copé Copé NPI
est être VINDP3S
une un DETIFS
suppression suppression NCFS
totale total ADJFS
en en PREP
2011 2011 NCMIN
. . PCTFORTE
\r
Parmi parmi PREP
les le DETDPIG
nouvelles nouveau ADJFP
tendances tendance NCFP
, , PCTFAIB
le le DETDMS
bio bio ADJINV
et et COO
l' le DETDMS
art de vivre art de vivre NCMS
. . PCTFORTE
\r
Script :
#/usr/bin/perl
open(FICCORDIAL, "$ARGV[0]");
while ($ligne= <FICCORDIAL>) {
next if ($ligne!~/\t/);
chomp $ligne;
if ($ligne!~/PCT/){ #traitement initial et passage au "else" dès qu'on rencontre un PCT dans $ARGV[0]
(sortcordial.cnr).
@decoup=split(/\t/, $ligne);
push (@token, $decoup[0]);
push (@lemme, $decoup[1]);
push (@partof, $decoup[2]);
}
else { #deuxième traitement qui consiste à lire le fichier de patrons et à le comparer avec ce qui a été stocké dans la variable @partof dans le
traitement initial. Cette dernière est d'abord affectée à une variable scalaire (transofrmation d'un tableau @ en une variable scalaire $) et ce grâce à la commande "join". Les éléments
de chaque string seront délimités par un "\t" (tabulation). Il est également possible d'utiliser une boucle "foreach" avec comme instruction la concaténation systématique des éléments dans
un string composé de catégories grammaticales avec un "\t". La concaténation peut se faire de deux manières (cf. infra ***).
print "@token\n";
print "ENTREE\n";
my $reponse=<STDIN>;
open(FICPATRONS, "$ARGV[1]");
while ($patrons=<FICPATRONS>) {
chomp $patrons;
$compare=""; #initialiser à vide un variable scalaire qui va contenir les lignes de partof comparées avec le ou les patrons.
$compare=join("\t", @partof); #foreach my $element(@partof) {
# ***$compare=$compare."\t".$element
##$compare.="\t".$element
# }
while ($compare=~/$patrons/g) {
print "$compare\n"; # imprime au fur et à mesure la ligne (string) de $compare où la correspondance est positive.
print "correspondance!\n"
}
}
@token=(); # vider les tableaux.
@lemme=();
@partof=();
}
}
Ligne de commande : perl etikcordial.pl (script) sortcordial.cnr (premier argument ou $ARGV[0])
patrons.txt (deuxième argument ou $ARGV[1]) > resultatpatrons2.txt
Résultats :
L' objectif de la commission Copé est une suppression totale en 2011
ENTREE
DETDMS NCMS PREP DETDFS NCFS NPI VINDP3S DETIFS NCFS ADJFS PREP NCMIN
correspondance!
Parmi les nouvelles tendances
ENTREE
le bio et l' art de vivre
ENTREE
Les deux consoles trustent les jeux classés dans le top 100 des ventes
ENTREE
Cinq nouveaux titres sont en gestation
ENTREE
Le Britannique Tim Hetherington a remporté le grand prix du World Press de la photographie d' actualité
ENTREE
Sacré Photo de l' année 2007
ENTREE
son cliché d' un soldat américain épuisé dans un bunker en Afghanistan a été publié dans le magazine américain Vanity Fair
ENTREE
La direction de l' hebdomadaire souligne le caractère exceptionnel
ENTREE
voire inédit
ENTREE
de la procédure pénale pour faux
ENTREE
PREP DETDFS NCFS ADJFS PREP NCMIN
correspondance!
Par Nassim & Marco.
0
Mardi 24 mars 2009
2
24
/03
/Mars
/2009
19:35
Voici la feuille de style xsl pour afficher l'extraction de patrons sur FIREFOX :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body bgcolor="white">
<p align="justify"><xsl:apply-templates select="//element"/></p>
</body>
</html>
</xsl:template>
<xsl:template match="element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'ADJ')]])">
<br />
<br />
<font color="blue">
<strong>
<xsl:value-of select="./data[3]" />
 
</strong>
</font>
<xsl:text />
</xsl:when>
<xsl:when test="(./data[contains(text(),'ADJ')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]])">
<font color="red">
<strong>
<xsl:value-of select="./data[3]" />
</strong>
</font> <br/>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Par Nassim & Marco.
0
Lundi 23 mars 2009
1
23
/03
/Mars
/2009
16:38
Pour avoir plus de patrons "NOM ADJ", nous avons ajouté la rubrique Médias ou 0,2-3236,1-0,0.xml. Et voici le résultat avec
Cooktop :
commission Copé
suppression totale
Tim Hetherington
World Press
soldat américain
magazine américain
caractère exceptionnel
procédure pénale
football professionnel
esthétique domestique
esthétique médiatique
presse économique
esthétique médiatique
design étonnant
monde entier
site participatif
chaînes thématiques
version initiale
départs volontaires
dérive partisane
recettes publicitaires
affaires étrangères
sites Internet
groupe imaginaire
chaîne cryptée
site nouvelobs
journalistes français
histoires croisées
difficulté croissante
mixage digital
musique classique
Jason Bonham
formation britannique
festival musical
chaîne cryptée
service public
données personnelles
géant informatique
ligne norvégien
groupe japonais
standard Blu-ray
service public
Laurence Parisot
conseil général
fibre optique
autorités nigériennes
autorisation officielle
série documentaire
Salon électronique
chauffeur nigérien
chaîne publique
groupe Le
Neuilly Bondy
journaliste suisse
équipe locale
convivialité américains
société Le
juge nigérien
géant américain
position dominante
électronique grand
télévision mobile
audiovisuel public
site Internet
source proche
site communautaire
internaute blonde
téléphonie mobile
appareil rudimentaire
stations musicales
journalistes français
suppression inopinée
ressources publicitaires
chaînes publiques
box ADSL
football professionnel
romans autobiographiques
portrait intime
chaîne thématique
bouquet numérique
chaîne unique
coupes budgétaires
Côte ouest
site Internet
directrice générale
Street Journal
Syndicat national
édition phonographique
groupe américain
estimations inférieures
chaînes privées
télévision publique
site Internet
journal économique
Groupe Le
Syndicat national
tennis mondial
documentaires libanais
clichés habituels
mouvements capitalistiques
quotidiens régionaux
Groupe Le
plates-formes musicales
président français
Films Animaliers
succès commerciaux
festivals internationaux
pays émergents
série policière
critique acerbe
téléviseurs prêts
administrateur judiciaire
quotidien israélien
communauté arabe
téléphone mobile
jeux portable
jeux portable
évolutions technologiques
modèle traditionnel
part entière
niveau mondial
marché grand
public occidental
liste exhaustive
terroristes potentiels
groupe japonais
vin américain
Par Nassim & Marco.
0
Jeudi 19 mars 2009
4
19
/03
/Mars
/2009
23:39
Voici notre feuille de style xsl:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'ADJ')]])">
<br />
<br />
<font color="blue">
<strong>
<xsl:value-of select="./data[3]" />
 
</strong>
</font>
<xsl:text />
</xsl:when>
<xsl:when test="(./data[contains(text(),'ADJ')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]])">
<font color="red">
<strong>
<xsl:value-of select="./data[3]" />
</strong>
</font>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Par Nassim & Marco.
0