Création d’une page html contenant 3 tableaux de 13
colonnes avec script bash
PLAN
I MISE A JOUR
II SCRIPT
III RESULTAT
I MISE A JOUR
1.1 Contexte
Le texte dump
d'une page html est assez gros. Il est donc necessaire d'"abréger" le
texte selon notre besoin pour avoir un résultat d'analyses beaucoup plus
pertinent. Dans cette version du script, nous avons envisagé d'extraire 2
lignes avant et 2 lignes après du motif pour composer notre
"contexte". Nous allons modifier cette option après.
Méthode :
egrep [OPTIONS]
MOTIF [FICHIER...]
OPTION -i :
ignorant les casses du motif et du fichier d'entrée
OPTIONS -A NUM,
-B NUM, -C NUM : NUM lignes après(After), NUM lignes avant(Before), ou NUM
lignes avant et après (Contexte)
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
$motif est une
variable définie dans le fichier paramètre
$dump-utf8
désigne le fichier d'entrée (un texte dump) de cette commande
$contexte désigne
le fichier de sortie où stockent les contextes d'un texte dump
1.2
Contexte html (minigrep)
Minigrep est un
script perl qui permet de représenter les contextes recueillis dans une page
html.
Pour nous en
servir, il faut une installation (Nous avons écrit un script pour faciliter
cette étape, cf notre prochain blog).
Méthode :
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
Le fichier de
sortie est placé par défaut dans le répertoire courant (où l'on exécute le
script, i.e. PROJET_MOT_SUR_LE_WEB). Il faut le déplacer (et renommer) dès
qu'il est créé. Sinon on risque de l'écraser dans l'éxécution suivante de la boucle.
1.3
Fréquence du motif
La fréquence du
motif, c'est-à-dire le nombre d'occurences du(des) mot(s) à chercher, nous
fournit une vision globale de l'importance du motif dans le texte.
Méthode :
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
1) Trouver toutes
les lignes contenant le motif dans le fichier d'entrée ;
2) Compter le
nombre de lignes.
1.4
Liste des mots (index)
La liste des mots
( cf term frequency ) permet d'évaluer l'importance d'un terme contenu dans un
fichier.
Méthode
:
sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
Créer un fichier
temp qui
1) n'a pas de
ponctuations, sauf le trait d'union d'un mot composé (ex. prêt-à-porter);
2) a un seul
token par ligne ;
3) est transformé
en minuscule ;
4) A partir du
fichier temporaire, établir un index classé par fréquence décroissante.
1.5
Bigramme (ou Digramme)
Dans cette
colonne, nous avons créé pour chaque texte dump une liste de bigramme classé
par fréquence décroissante.
Méthode :
tail -n +2 $dump-tmp1 > $dump-tmp2
paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
A partir du
fichier de liste temporaire créé dans l'étape supra,
1) la commande
tail -n +2 permet d'afficher le fichier à partir de la deuxième ligne sur la
stdOUT, on le dirige comme un second fichier temporaire
2) la commande
paste ensuite colle ces deux fichiers en un seul dont chaque ligne contient 2
tokens,
3) la suite du
pipeline sert à classer les bigrammes par fréquence décroissante et à diriger
le résultat dans un nouveau fichier.
II Script
#!bin/bash
#PATH=$PATH:~/home/.../PROJET_MOT_SUR_LE_WEB
#./PROGRAMMES/20171129_CreationTableau_13cols.sh
#parametre : ./PROGRAMMES/20171129_parametres
#EXECUTION
#bash ./PROGRAMMES/20171129_CreationTableau_13cols.sh < ./PROGRAMMES/20171129_parametres
#VERSION 20171129
################################################################################
#MISE A JOURS
# Ajouter un paramètre motif (pour récupérer son contexte et calculer sa fréquence)
# Ajouter un paramètre qui est le chemin du fichier motif (seulement pour le script minigrep)
# Ajouter une colonne contexe, (commandes : egrep, wc)
# Ajouter une colonne contexte_html,(script minigrep)
# Ajouter une colonne pour la fréquence du motif, (commandes : egrep, wc)
# Ajouter une colonne pour la liste des mots, (commandes : sort, uniq)
# Ajouter une colonne pour le bigramme (commandes : tail, paste, sort, uniq)
################################################################################
echo "Création d'une page html contenant trois tableaux ";
read rep;
read table;
read rep_page_aspiree;
read rep_dump_text;
read rep_contexte;
read motif;
read motif_mini_grep;
echo "INPUT : nom du répertoire contenant des fichiers d'URLs : $rep";
echo "OUTPUT : nom du fichier html contenant des tableaux : $table";
echo "OUTPUT : nom du répertoire stockant les pages aspirées : $rep_page_aspiree";
echo "OUTPUT : nom du répertoire stockant les texts dump : $rep_dump_text";
echo -e "Motifs de recherche :\n\t\t$motif\n";
echo "OUTPUT : nom du répertoire stockant les fichiers contextes : $rep_contexte";
echo "OUTPUT : nom du répertoire stockant les fichiers index : $rep_contexte";
echo "OUTPUT : nom du répertoire stockant les fichiers ngram : $rep_contexte";
echo -e "\n\n\n\n\nVeuillez patienter quelques instants.\n\n\nTravail en mode silence...\n\n\n";
################################################################################
echo -e "<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<title>Tableau URLs</title>\n\t\t<meta charset=\"utf-8\">\n\t</head>\n" > $table;
echo -e "\t<body>\n\t\t<h2 align=\"center\">Tableaux des URLs de teste</h2>" >> $table;
creer_tableau(){
echo -e "\t\t\t\t<th width = \"$2\" align = \"center\">$3</th>" >> $table;
}
for file in `ls $rep`
{
echo -e "\t\t<table border = \"1\" bordercolor = \"#47baae\" width = \"90%\" align = \"center\">" >> $table;
#titre du tableau
echo -e "\t\t\t<tr height = \"30px\" bgcolor = \"#47baae\"><th colspan = \"13\">TABLEAU-$file</th></tr>" >> $table;
echo -e "\t\t\t<tr>" >> $table;
#colonne1 : numéro
creer_tableau $table %5 'N°'
#colonne2 : lien
creer_tableau $table %5 'LIEN'
#colonne3 : code d'état
creer_tableau $table %5 'CODE'
#colonne4 : état de lien
creer_tableau $table %15 'ETAT DE LIEN'
#colonne5 : page aspirée
creer_tableau $table %10 'PAGE ASPIREE'
#colonne6 : encodage initial
creer_tableau $table %5 'ENCODAGE INIT'
#colonne7 : dump initial
creer_tableau $table %10 'DUMP INIT'
#colonne8 : dump utf-8
creer_tableau $table %10 'DUMP UTF-8'
#colonne9 : contexte utf-8
creer_tableau $table %10 'CONTEXTE UTF-8'
#colonne10 : contexte html utf-8
creer_tableau $table %10 'CONTEXTE HTML'
#colonne11 : fréquence de motif
creer_tableau $table %5 'FQ MOTIF'
#colonne12 : index (avec/sans mots vides)
#echo -e "\t\t\t\t<th width = \"10%\" align = \"center\">CONTEXTE</th>" >> $table;
creer_tableau $table %5 'INDEX'
#colonne13 : ngram ==> 2grams
creer_tableau $table %5 'NGRAM'
echo -e "\t\t\t</tr>" >> $table;
line_iterator=0;
for line in `cat $rep/$file`
{
let line_iterator++;
page="$rep_page_aspiree/20171129-$file-aspiree-$line_iterator.html";
dump="$rep_dump_text/20171129-$file-dump-$line_iterator";
contexte="$rep_contexte/20171129-$file-ctxt-$line_iterator";
contexte_html="$rep_contexte/20171129-$file-ctxt_html-$line_iterator";
list_freq="$rep_dump_text/20171129-$file-liste-$line_iterator";
di_grams="$rep_dump_text/20171129-$file-2grams-$line_iterator";
minigrep="./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl";
minigrep_out="./resultat-extraction.html";
lien_statut=`curl -sIL $line|egrep -i 'HTTP\/[0-9]\.[0-9]'| awk '{print $0}' | sed 's/\n/\t/g'|sed 's/\r/\t/g'`;
code_retour=`curl -sL -o $page -w "%{http_code}" $line | sed 's/\n//g'|sed 's/\r//g'`;
echo "Etat de lien : $lien_statut"; #test, à enlever après
echo "Code_retour : $code_retour"; #test, à enlever après
if [[ $code_retour == 200 ]] ;then
#Demander l'encodage
#encodage_header_curl
encodage=`curl -sIL $line|grep -i -Po '(?<=charset=).+(?=\b)' |awk '{print tolower($0)}'`;
echo "encodage récupéré de l'entête : $encodage"; #test, à enlever après
#condition $encodage == utf8, => dump
if [[ $encodage == "utf-8" ]] ;then
#il faut désignier le jeu de caractères pour la commande lynx car quelques fois lynx ne peux pas réussir à décharger des textes sans connaissances d'encodages préalables
lynx -dump -nolist -assume_charset=%{charset} -display_charset=$encodage $line > $dump-utf8;
#récupérer le contexte avec egrep, 2 lignes avant, 2 lignes après
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
#récupérer le contexte html avec minigrep, puis déplacer le fichier dans le répertoire CONTEXTES
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
#compter la fréquence du motif
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
#créer un fichier temp qui 1)n'a pas de ponctuations, 2)a un seul token par ligne, 3)est transformé en minuscule
sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
# à partir du fichier temp, établir une indice classée par fréquence décroissante
sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
# à partir du fichier temp, récupérer des digrams, puis enlever des fichiers temps
tail -n +2 $dump-tmp1 > $dump-tmp2
paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
#rm $dump-tmp1 $dump-tmp2;
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$page">20171129-$file-aspiree-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-utf8">20171129-$file-dump-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte">20171129-$file-contexte-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte_html">20171129-$file-ctxt_html-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$fq</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$list_freq">20171129-$file-fq-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$di_grams">20171129-$file-2grams-$line_iterator</a></td>\n\t\t\t</tr>" >> $table;
#condition non-utf8 && non vide => vérifier l'existence de $encodage dans la liste d'iconv
elif [[ $encodage != "utf-8" ]] && [[ $encodage != "" ]] ;then
#chercher l'encodage dans la liste des encodages de iconv
verification_iconv=`iconv -l | egrep -io $encodage | sort -u`;
# condition $encodage connu par iconv => dump et convertir en utf8
if [[ $verification_iconv != "" ]] ; then
lynx -dump -nolist -assume_charset=%{charset} -display_charset=$encodage $line > $dump-$encodage;
iconv -c -f $encodage -t utf-8 $dump-$encodage > $dump-utf8;
#récupérer le contexte avec egrep, 2 lignes avant, 2 lignes après
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
#récupérer le contexte html avec minigrep, puis déplacer le fichier dans le répertoire CONTEXTES
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
#compter la fréquence du motif
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
#créer un fichier temp qui 1)n'a pas de ponctuations, 2)a un seul token par ligne, 3)est transformé en minuscule
sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
# à partir du fichier temp, établir une indice classée par fréquence décroissante
sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
tail -n +2 $dump-tmp1 > $dump-tmp2
paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$page">20171129-$file-aspiree-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-$encodage">20171129-$file-dump-$line_iterator-$encodage</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-utf8">20171129-$file-dump-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte">20171129-$file-contexte-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte_html">20171129-$file-ctxt_html-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$fq</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$list_freq">20171129-$file-fq-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$di_grams">20171129-$file-2grams-$line_iterator</a></td>\n\t\t\t</tr>" >> $table;
#condition $encodage non connu par iconv => rien à faire, seulement remplir les tableaux avec des infos necessaires
else
echo "Echec : $encodage inconnu...";
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>\n\t\t\t</tr>" >> $table;
fi
# condition pas de $encodage dans la réponse de curl -I, récupérer $encodage directement dans la balise meta de la page html (locale)
elif [[ $encodage == "" ]] ;then
encodage=`egrep -i 'meta.+charset' $page |awk '{print tolower($0)}'|egrep -o "charset[=\s\"a-Z0-9\-]*" |cut -d"=" -f2 | sed 's/\s//g'|sed 's/\"//g'`;
#condition $encodage utf8 dump
echo "encodage récupéré de page html : $encodage";
if [[ $encodage == "utf-8" ]] ;then
lynx -dump -nolist -assume_charset=%{charset} -display_charset=$encodage $line > $dump-utf8;
#récupérer le contexte avec egrep, 2 lignes avant, 2 lignes après
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
#récupérer le contexte html avec minigrep, puis déplacer le fichier dans le répertoire CONTEXTES
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
#compter la fréquence du motif
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
#créer un fichier temp qui 1)n'a pas de ponctuations, 2)a un seul token par ligne, 3)est transformé en minuscule
sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
# à partir du fichier temp, établir une indice classée par fréquence décroissante
sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
#récupérer le bigram de chaque texte
tail -n +2 $dump-tmp1 > $dump-tmp2
paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
#rm $dump-tmp1 $dump-tmp2;
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$page">20171129-$file-aspiree-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-utf8">20171129-$file-dump-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte">20171129-$file-contexte-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte_html">20171129-$file-ctxt_html-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$fq</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$list_freq">20171129-$file-fq-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$di_grams">20171129-$file-2grams-$line_iterator</a></td>\n\t\t\t</tr>" >> $table;
#condition non-utf8 && non vide => dump
elif [[ $encodage != "utf-8" ]] && [[ $encodage != "" ]] ;then
lynx -dump -nolist -assume_charset=%{charset} -display_charset=$encodage $line > $dump-$encodage;
# #condition fichier d'URLS est en chinois, utiliser enca pour convertir (enca fonctionne mieux que iconv lors de traitement de fichier chinois)
if [[ "$file" == "CN*" ]] ;then
iconv -c -f $encodage -t utf-8 $dump-$encodage > $dump-utf8;
##enca -L zh_CN utf-8 -x < $dump-$encodage > $dump-utf8;
#récupérer le contexte avec egrep, 2 lignes avant, 2 lignes après
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
#récupérer le contexte html avec minigrep, puis déplacer le fichier dans le répertoire CONTEXTES
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
#compter la fréquence du motif
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
#####################################################################################
##segmentation du chinois dans la prochaine version du script pour réaliser les traitements infra.
#####################################################################################
#créer un fichier temp qui 1)n'a pas de ponctuations, 2)a un seul token par ligne, 3)est transformé en minuscule
#sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
# à partir du fichier temp, établir une indice classée par fréquence décroissante
#sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
#récupérer le bigram de chaque texte
#tail -n +2 $dump-tmp1 > $dump-tmp2
#paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
#rm $dump-tmp1 $dump-tmp2;
#####################################################################################
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$page">20171129-$file-aspiree-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-$encodage">20171129-$file-dump-$line_iterator-$encodage</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-utf8">20171129-$file-dump-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte">20171129-$file-contexte-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte_html">20171129-$file-ctxt_html-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$fq</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$list_freq">20171129-$file-fq-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$di_grams">20171129-$file-2grams-$line_iterator</a></td>\n\t\t\t</tr>" >> $table;
else
verification_iconv=`iconv -l | egrep -io $encodage | sort -u`;
if [[ $verification_iconv != "" ]] ; then
lynx -dump -nolist -assume_charset=%{charset} -display_charset=$encodage $line > $dump-$encodage;
iconv -c -f $encodage -t utf-8 $dump-$encodage > $dump-utf8;
#récupérer le contexte avec egrep, 2 lignes avant, 2 lignes après
egrep -i -C 2 "$motif" < $dump-utf8 >> $contexte;
#récupérer le contexte html avec minigrep, puis déplacer le fichier dans le répertoire CONTEXTES
perl $minigrep "UTF-8" $dump-utf8 $motif_mini_grep;
mv $minigrep_out $contexte_html;
#compter la fréquence du motif
fq=`egrep -i "$motif" $dump-utf8 |wc -l`;
#créer un fichier temp qui 1)n'a pas de ponctuations, 2)a un seul token par ligne, 3)est transformé en minuscule
sed -r "s/[-\w\']+/ /g" $dump-utf8 |tr '\n' ' '|tr ' ' '\n'|tr -s '\n'|tr '[A-Z]' '[a-z]' > $dump-tmp1;
# à partir du fichier temp, établir une indice classée par fréquence décroissante
sort -bdf $dump-tmp1 |uniq -ci|sort -gr -o $list_freq;
#récupérer le bigram de chaque texte
tail -n +2 $dump-tmp1 > $dump-tmp2
paste $dump-tmp1 $dump-tmp2 | sort | uniq -ci | sort -gr -o $di_grams;
#rm $dump-tmp1 $dump-tmp2;
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$page">20171129-$file-aspiree-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-$encodage">20171129-$file-dump-$line_iterator-$encodage</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$dump-utf8">20171129-$file-dump-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte">20171129-$file-contexte-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$contexte_html">20171129-$file-ctxt_html-$line_iterator-utf8</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$fq</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$list_freq">20171129-$file-fq-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = ".$di_grams">20171129-$file-2grams-$line_iterator</a></td>\n\t\t\t</tr>" >> $table;
else
echo "Echec : $encodage inconnu...";
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>\n\t\t\t</tr>" >> $table;
fi
fi
else
echo "Echec : $encodage inconnu...";
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">-</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$encodage</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>\n\t\t\t</tr>" >> $table;
fi
fi
else
# condition état de lien autre que 200, rien à faire, seulement imprimer son numéro, son code_retour, son état et son lien.
echo "Echec : $lien_statut";
echo -e "\t\t\t<tr>\n\t\t\t\t<td align = \"center\">$line_iterator</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$code_retour</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">$lien_statut</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\"><a href = '$line'>20171129-$file-lien-$line_iterator</a></td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>" >> $table;
echo -e "\t\t\t\t<td align = \"center\">null</td>\n\t\t\t</tr>" >> $table;
fi
}
echo -e "\t\t</table>\n" >> $table;
echo -e "\t\t<br/>\n\t\t<hr width = \"90%\" color = \"#47baae\" cb 9 size = \"5\">\n\t\t<br/>" >> $table; #horizontal rule
}
##supprimer tous les fichiers temporaires
rm $rep_dump_text/*tmp1 $rep_dump_text/*tmp2;
echo -e "\t</body>\n</html>" >> $table;
echo "Fin de création des tableaux.";
III Résultat
Dans cette
partie, nous propose le résultat de test. Il existe quand même des problèmes,
notamment ceux qui sont liés à la "fameuse" segmentation du chinois.
Nous allons les détailler dans nos prochains blogs.
3.1 la page html des tableaux
3.2 le contexte (colonne 9)
3.3 le contexte (généré par minigrep, colonne 10)
3.4 la liste des mots (index, colonne 12)
3.5 le bigramme (colonne 13)