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
Nous avons ajouté
5 colonnes par rapport au blog précédent.
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)