Nous arrivons enfin à la partie de préparation de notre site web...Malheureusement, je ne pense pas pouvoir la finir ces jours-ci dû à certains problèmes d'organisation.
Mais ne désespérez pas chers lecteurs, une fois lancé, je vous l'indiquerai ici.
A bientôt !
lundi 30 décembre 2013
vendredi 27 décembre 2013
Wohoooo....Nuages !!!!
Ce post sera très très court...Nous allons simplement constituer des nuages pour voir les mots les plus fréquents. En gros c'est comme notre index global mais de manière plus intéressante
Pour cela, nous avons utilisé le site Woordle.
Il suffit d'y coller votre texte et vous aurez un très beau nuage comme ça:
Pour cela, nous avons utilisé le site Woordle.
Il suffit d'y coller votre texte et vous aurez un très beau nuage comme ça:
samedi 21 décembre 2013
Let: command not found
Chers lecteurs,
Vous avez dû remarquer que la commande let était de retour dans le script présenté..
Alors pour faire fonctionner cette commande, il faut lancer le script avec la commande suivante:
bash nomscript < input.txt
et non pas sh nomduscript < input.txt
Je dois avouer que c'est par hasard que je l'ai remarqué. Il était déjà tard le soir et je voulais tester les scripts présentés sur icampus pour les comparer au mien et j'ai donc tapé bash....après 2-3 essais j'ai remarqué que ces scripts contenaient la commande let et qu'elle ne m'avait pas donné d'erreur...
Eh oui...Le hasard fait bien les choses !!!
Vous avez dû remarquer que la commande let était de retour dans le script présenté..
Alors pour faire fonctionner cette commande, il faut lancer le script avec la commande suivante:
bash nomscript < input.txt
et non pas sh nomduscript < input.txt
Je dois avouer que c'est par hasard que je l'ai remarqué. Il était déjà tard le soir et je voulais tester les scripts présentés sur icampus pour les comparer au mien et j'ai donc tapé bash....après 2-3 essais j'ai remarqué que ces scripts contenaient la commande let et qu'elle ne m'avait pas donné d'erreur...
Eh oui...Le hasard fait bien les choses !!!
samedi 14 décembre 2013
Presque fini !!!
Après près d'un mois sans nouvelles, nous vous présentons notre script générant 10 colonnes.
Le script étant déjà bien commenté , nous nous abstenons de rallonger ce post
Le script étant déjà bien commenté , nous nous abstenons de rallonger ce post
#!/bin/bash
# Création des répertoires
mkdir ./CONTEXTES;
mkdir ./DUMP-TEXT;
mkdir ./PAGES-ASPIREES;
mkdir ./TABLEAUX;
# Création d'un répertoire temporaire pour les besoins du trameur (il est effacé à la fin de ce script)
mkdir -p TEMP;
# Input
read dossier_urls;
read fichier_tableau;
read motif;
# Style Page HTML
echo "<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Grèves dans le monde</title>" > $fichier_tableau;
# Compteur fichiers urls
j=1;
for fichier_url in `ls $dossier_urls`
do
# Titre Tableau
echo "<table align=center border="1" width="100%">
<tr>
<th bgcolor=\"black\" colspan="10" align="center">Tableau n°$j<br/ align="center"> Fichier: $fichier_url</th>
</tr>" >> $fichier_tableau;
# 1ère ligne du Tableau
echo "<tr><td bgcolor=\"black\" align="center">N°URL</td><td bgcolor=\"black\" align="center">URL</td><td bgcolor=\"black\" align="center">Pages aspirées</td><td bgcolor=\"black\" align="center">Retour WGET</td><td bgcolor=\"black\" align="center">DUMP initial<br/>(non utf-8)</td><td bgcolor=\"black\" align="center">DUMP UTF-8</td><td bgcolor=\"black\" align="center">CONTEXTES</td><td bgcolor=\"black\" align="center">CONTEXTES<br/>HTML</b></td><td bgcolor=\"black\" align="center">Nb Occurences</td><td bgcolor=\"black\" align="center">INDEX<br/>Fq mots</td></tr>" >> $fichier_tableau;
# Compteur urls
i=1;
# Compteur dumps
nbdump=0;
# Noms des sous-dossiers (remplace le compteur avec les noms des langues)
w=$(basename $fichier_url .txt)
# Créer les sous-répertoires
mkdir -p CONTEXTES/$w;
mkdir -p DUMP-TEXT/$w;
mkdir -p PAGES-ASPIREES/$w;
mkdir -p INDEX/$w;
mkdir -p FICHIERS-GLOBAUX/DUMP-GLOBAUX;
mkdir -p FICHIERS-GLOBAUX/CONTEXTES-GLOBAUX;
mkdir -p FICHIERS-GLOBAUX/INDEX-GLOBAUX;
for ligne in `cat $dossier_urls/$fichier_url`
do
# Aspiration pages
wget -O ./PAGES-ASPIREES/$w/$i.html "$ligne";
# Vérification contenu
retourwget=$?;
contenupageaspiree=$(egrep -i -o "(400 )?Bad request|Moved Permanently|s interdit|Not Acceptable" ./PAGES-ASPIREES/$w/$i.html | sort -u);
# Méthode encodage 1 (file -i)
if test $retourwget == 0;
then
encodage=$(file -i ./PAGES-ASPIREES/$w/$i.html | cut -d= -f2);
# Encodage UTF-8
if test $encodage == "utf-8"
then
# Dump UTF-8
lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$w/$i.html > ./DUMP-TEXT/$w/$i-utf8.txt;
# Contextes UTF-8
egrep -i -A 1 -B 1 `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt > ./CONTEXTES/$w/$i-utf8.txt;
# Contextes HTML
perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$w/$i-utf8.txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
mv resultat-extraction.html ./CONTEXTES/$w/$i.html;
# Occurences
nbOccur=??;
nbOccur=$(egrep -c `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt);
# Index
cat ./DUMP-TEXT/$w/$i-utf8.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./INDEX/$w/$i.txt;
# Intégrer au tableau
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$w/$i.html\">$i.html</a></td><td>$retourwget</td><td> - </td><td><a href=\"../DUMP-TEXT/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i.html\">$i.html</a></td><td>$nbOccur</td><td><a href=\"../INDEX/$w/$i.txt\">$i.txt</a></td></tr>" >> $fichier_tableau;
# Contextes globaux
cat ./CONTEXTES/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/CONTEXTES-GLOBAUX/CONTEXTES-GLOBAUX_$w.txt;
# Dump globaux
cat ./DUMP-TEXT/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt;
# Index Global
cat ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./FICHIERS-GLOBAUX/INDEX-GLOBAUX/INDEX-GLOBAUX_$w.txt;
# Actualisation compteur dump
let "nbdump+=1";
# Méthode encodage 2 (iconv -l)
else
encodageiconv=$(iconv -l | egrep -io $encodage | sort -u);
if test "$encodageiconv" != "";
then
# Dump initial
lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$w/$i.html > ./DUMP-TEXT/$w/$i.txt;
# Conversion Dump initial en UTF-8
iconv -f $encodage -t utf-8 ./DUMP-TEXT/$w/$i.txt > ./DUMP-TEXT/$w/$i-utf8.txt;
# Contextes UTF-8
egrep -i -A 1 -B 1 `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt > ./CONTEXTES/$w/$i-utf8.txt;
# Occurences
nbOccur=??;
nbOccur=$(egrep -c `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt);
# Index
cat ./DUMP-TEXT/$w/$i-utf8.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./INDEX/$w/$i.txt;
# Contextes HTML
perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$w/$i-utf8.txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
mv resultat-extraction.html ./CONTEXTES/$w/$i.html;
# Intégrer au tableau
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$w/$i.html\">$i.html</a></td><td>$retourwget</td><td><a href=\"../DUMP-TEXT/$w/$i.txt\">$i.txt</a><br/>($encodage)</small></td><td><a href=\"../DUMP-TEXT/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i.html\">$i.html</a></td><td>$nbOccur</td><td><a href=\"../INDEX/$w/$i.txt\">$i.txt</a></td></tr>" >> $fichier_tableau;
# Contextes globaux
cat ./CONTEXTES/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/CONTEXTES-GLOBAUX/CONTEXTES-GLOBAUX_$w.txt;
# Dump globaux
cat ./DUMP-TEXT/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt;
# Index Global
cat ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./FICHIERS-GLOBAUX/INDEX-GLOBAUX/INDEX-GLOBAUX_$w.txt;
# Actualisation compteur dump
let "nbdump+=1";
# Méthode encodage 3 (egrep -i "<meta.*charset")
else
if egrep -i "<meta.*charset" ./PAGES-ASPIREES/$w/$i.html;
then
encodage=$(egrep -i "<meta.*charset" ./PAGES-ASPIREES/$w/$i.html | egrep -i -o 'charset *=[^\"]+' | tr [A-Z] [a-z] | sort -u | cut -f2 -d=);
encodageiconv=$(iconv -l | egrep -io $encodage | sort -u);
if test $encodageiconv == ""
then
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$w/$i.html\">$i.html</a></td><td>$retourwget</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td></tr>" >> $fichier_tableau;
echo "Erreur Tableau $w ligne $i" >> ./Erreurs.txt;
else
# Dump initial
lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$w/$i.html > ./DUMP-TEXT/$w/$i.txt;
# Conversion Dump initial en UTF-8
iconv -f $encodage -t utf-8 ./DUMP-TEXT/$w/$i.txt > ./DUMP-TEXT/$w/$i-utf8.txt;
# Contextes UTF-8
egrep -i -A 1 -B 1 `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt > ./CONTEXTES/$w/$i-utf8.txt;
# Occurences
nbOccur=??;
nbOccur=$(egrep -c `cat $motif` ./DUMP-TEXT/$w/$i-utf8.txt);
# Index
cat ./DUMP-TEXT/$w/$i-utf8.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./INDEX/$w/$i.txt;
# Contextes HTML
perl ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$w/$i-utf8.txt ./PROGRAMMES/minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
mv resultat-extraction.html ./CONTEXTES/$w/$i.html;
# Intégrer au tableau
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$w/$i.html\">$i.html</a></td><td>$retourwget</td><td><a href=\"../DUMP-TEXT/$w/$i.txt\">$i.txt</a><br/>($encodage)</td><td><a href=\"../DUMP-TEXT/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$w/$i.html\">$i.html</a></td><td>$nbOccur</td><td><a href=\"../INDEX/$w/$i.txt\">$i.txt</a></td></tr>" >> $fichier_tableau;
# Contextes globaux
cat ./CONTEXTES/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/CONTEXTES-GLOBAUX/CONTEXTES-GLOBAUX_$w.txt;
# Dump globaux
cat ./DUMP-TEXT/$w/$i-utf8.txt >> ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt;
# Index Global
cat ./FICHIERS-GLOBAUX/DUMP-GLOBAUX/DUMP-GLOBAUX_$w.txt | tr [:space:] '\n' | grep -v -e "\W" -e [0-9] -e "_" | sort | tr [:upper:] [:lower:] | uniq -c | sort -bnr > ./FICHIERS-GLOBAUX/INDEX-GLOBAUX/INDEX-GLOBAUX_$w.txt;
# Actualisation compteur dump
let "nbdump+=1";
fi
# Méthode 3 ne fonctionne pas
else
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$w/$i.html\">$i.html</a></td><td>$retourwget</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td><td bgcolor=\"blue\">Encodage<br/>non détecté</td></tr>" >> $fichier_tableau;
echo "Erreur Tableau $w ligne $i" > ./Erreurs.txt;
fi
fi
fi
# Si le WGET échoue
else
retourwget="Erreur";
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">$retourwget</td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">Page non aspirée</td><td bgcolor=\"red\">Page non aspirée</td></tr>" >> $fichier_tableau;
echo "Erreur Tableau $w ligne $i" >> ./Erreurs.txt;
fi
# Actualisation compteur urls
let "i+=1";
done
# Intégrer Fichiers globaux au tableau
echo "<tr><td colspan=\"5\"> </td><td><a href="../FICHIERS-GLOBAUX/DUMP/DUMP-GLOBAUX_$w.txt">Fichier DUMP<br/>global</a><br/>$nbdump fichier(s)</td><td><a href="../FICHIERS-GLOBAUX/CONTEXTES/CONTEXTES-GLOBAUX_$w.txt">Fichier CONTEXTES<br/>global</a><br/>$nbdump fichier(s)</td><td> </td><td colspan="1"></td><td><a href="../FICHIER-GLOBAUX/INDEX-GLOBAUX.txt">Fichier Index<br/>global</a><br/>$nbdump fichier(s)</td></tr>" >> $fichier_tableau;
# Fin du tableau
echo "</table>" >> $fichier_tableau;
# Actualisation compteur fichiers urls
let "j+=1";
done
# Fin page HTML
echo "</body>
</html>" >> $fichier_tableau;
samedi 16 novembre 2013
Alternative à let !!!!!!
Pour l'instant, le projet avance bien et contient 4 colonnes (numéro url, url, page aspirée, dump). Si vous vous souvenez, dans le dernier post on n'avait pu faire fonctionner le compteur car on se retrouvait toujours avec l'erreur "command not found".
Nous n'avons toujours aucune explication à ce sujet mais grâce à notre enseignant Jean-michel Daube, nous avons désormais une alternative qui fonctionne très bien et c'est:
i=`expr $i +1`.
Toutes nos colonnes marchent maintenant !!!
Nous n'avons toujours aucune explication à ce sujet mais grâce à notre enseignant Jean-michel Daube, nous avons désormais une alternative qui fonctionne très bien et c'est:
i=`expr $i +1`.
Toutes nos colonnes marchent maintenant !!!
samedi 9 novembre 2013
let doesn't let me have my table !!!!
Alors voici notre premier script...Il est supposé générer un tableau avec nos urls tests (3 urls) avec une colonne numéroté grâce à la commande let.
Pourtant cela ne marche absolument pas à cause du let command not found.
Il va donc falloir trouver une alternative...
Pourtant cela ne marche absolument pas à cause du let command not found.
Il va donc falloir trouver une alternative...
#!/bin/bash
# Création des répertoires
mkdir ./CONTEXTES;
mkdir ./DUMP-TEXT;
mkdir ./PAGES-ASPIREES;
mkdir ./TABLEAUX;
echo "Bonjour, veuillez indiquer le chemin du fichier à traiter";
read fichier_a_traiter;
echo $fichier_a_traiter;
echo "Veuillez indiquer le chemin du tableau à creer";
read fichier_tableau;
echo $fichier_tableau;
# Infos sur la page
echo "echo "<!doctype html><head><meta charset="utf-8"><title>Tableau</title>" > $fichier_tableau;
# Compteur urls
i=1;
# Début tableau
echo "<table border=\"1\" align=\"center\">" >> $fichier_tableau;
for ligne in `cat $fichier_a_traiter`
do
# Aspirer la page
wget -O ./PAGES-ASPIREES/$i.html "$ligne";
# Dumper la page
lynx -dump -nolist $ligne > ./DUMP-TEXT/$i.txt;
# Mettre le tout dans le tableau
echo "<tr><td>$i</td><td><a href=\"$ligne\">$ligne</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">Page aspirée n°$i</a></td><td><a href=\"../DUMP-TEXT/$i.txt\">Dump n°$i</a></td></tr>" >> $fichier_tableau;
# Actualisation compteur urls
let "i+=1";
done
# Fin tableau
echo "</table>" >> $fichier_tableau;
# Fin page HTML
echo "</body></html>" >> $fichier_tableau;
dimanche 3 novembre 2013
Ah...le bon vieux tableau HTML
Aujourd'hui, on va voir un peu d'HTML...ça ne vous permettra pas de faire un site entier mais le but ici est de commencer à faire un tableau.
Comment faire???
Indiquer que c'est une page HTML:
<HTML>
Spécifier le type de la page et l'encodage utilisé (c'est mieux de toujours l'indiquer):
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
En-tête:
<title> première page </title>
Corps:
<body>
<table border="1">
<tr><td>Grèves dans le monde </td></tr>
<tr><td>Rien d'autre à dire</td></tr>
</table>
</body>
</html>
Cela vous donnera
Comment faire???
Indiquer que c'est une page HTML:
<HTML>
Spécifier le type de la page et l'encodage utilisé (c'est mieux de toujours l'indiquer):
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
En-tête:
<title> première page </title>
Corps:
<body>
<table border="1">
<tr><td>Grèves dans le monde </td></tr>
<tr><td>Rien d'autre à dire</td></tr>
</table>
</body>
</html>
Cela vous donnera
Grèves dans le monde
|
samedi 2 novembre 2013
200 URLS à trouver !
La première étape de notre projet est de constituer un corpus de 50 URLS pour chaque langue choisie. Nous avons décidé de le constituer à partir d'articles de presse afin de pouvoir observer la dimension internationale des grèves.
Compte tenu du temps de recherche que cela prendra, nous avons décidé de chercher les urls au fur et à mesure de notre projet en utilisant quelques urls seulement par langue pour nos tests de script afin de ne pas perdre trop de temps entre chaque test.
jeudi 31 octobre 2013
Bienvenue
Bienvenue à tous !
Ce blog a été élaboré dans le cadre du cours « Programmation et Projet Encadré » du Master 1 Ingénierie Linguistique (TAL).
Il a pour but de présenter notre projet visant à mettre en oeuvre une chaîne de traitement textuel semi-automatique depuis la récupération des données jusqu'à leur présentation dans un tableau html que vous trouverez ici.
Dans le cadre de ce projet, nous avons choisi le mot "grève" afin d'en observer les différentes implications dans la presse anglaise, française, espagnole et arabe.
Ahmed Hassan (Paris 3) & Zoë O'Huiginn (INALCO)
Inscription à :
Articles (Atom)