Racial discrimination | Discrimination raciale

Les Scripts Anglais et Français

Afin de traiter nos corpus anglais et français, Gemma et Tannina ont choisi de faire une partie rassemblée.
Les scripts sont basés sur ceux qui ont été étudiés pendant les cours et qui ont été modifié par Xiaohua.
Afin qu'il n'y ait pas de différence entre nos scripts et notre site web.
Néanmoins, nos scripts ne contiennent pas les lignes de script spécifique au chinois, comme la tokénisation. Cela nous permet d'avoir des scripts plus simplifiés.
Elles ont bien sûr modifiés les noms des fichiers ou encore les noms des chemins de fichiers selon leurs contextes et/ou leur langue.
Il existe 3 scripts servant à construire une certaine partie de notre corpus :

1 - Le script utilisé pour créer les tableaux du corpus anglais et du corpus français :

Ce script nous permet de créer un tableau contenant les urls que nous avons choisi afin de pouvoir créer un tableau avec nos URLs. On obtiendra aussi un fichier dumps-text qui contiendra le contenu de la page concernée.

Il nous faut trois arguments pour sa création : le fichier script, le fichier urls en format txt et le fichier_tableau en format html.

En lançant la ligne de commande suivante : bash base traitement_url_base.sh fichier_urls.txt fichier_tableau.txt, on obtiendra un tableau contenant les informations suivantes :

Le numéro de ligne, le code de retour ((200 : ✅ ; 400 : ❌)), l'URL, l'encodage, le dumps-html, le dumps-text, les occurrences du mot cible, les contextes, les concordances.


   



#!/usr/bin/env bash

#===============================================================================
# Ce script est notre programme pour traiter les URLs. Il permet de créer un tableau HTML en sortie avec chaque URL, le code de réponse correspondant .
# Il s'utilise dans le dossier avec le fichier à traiter fichier_urls.txt (avec un URL/ligne) avec la ligne de commande :
# bash traitement_url_base.sh fichier_urls.txt  fichier_tableau.html 

#tableauURL.html est le fichier de sortie du tableau HTML (ici il n'existe pas avant le lancement du script).
#==============================================================================

fichier_urls=$1 # le fichier d'URL en entrée
fichier_tableau=$2 # le fichier HTML en sortie

if [[ $# -ne 2 ]]
then
echo "Ce programme demande exactement deux arguments."
exit
fi

mot="racial discrimination" à modifier selon la langue

echo $fichier_urls;
basename=$(basename -s .txt $fichier_urls)

echo "
<html>
<body>" > $fichier_tableau
echo "<h2>Tableau $basename :</h2>" >> $fichier_tableau
echo "<br></br>" >> $fichier_tableau
echo "<table>" >> $fichier_tableau
echo "<tr>
<th>ligne</th>
<th>code</th>
<th>URL</th>
<th>Encodage</th>
<th>Occurences</th>
<th>DumpText</th>
<th>HTML</th>
<th>Contexte</th>
<th>Concordances</th>
</tr>" >> $fichier_tableau

lignenum=1;     #On crée une boucle qui continue le traitement des URLs jusqu'à ce qu'il ne reste plus d'URLs à traiter
while read -r URL || [[ -n ${URL} ]]; do      #On utilise curl afin de d'avoir accès aux sites web via un fichier en format html 

# la façon attendue, sans l'option -w de cURL
code=$(curl -ILs $URL | grep -e "^HTTP/" | grep -Eo "[0-9]{3}" | tail -n 1)     # on donne l'expression régulière
charset=$(curl -Ls $URL | grep -Eo "charset=(\w|-)+" |tail | cut -d= -f2 |tail -n 1)
Occurrences=$(lynx -accept_all_cookies -dump $URL | egrep "racial discrimination" -wc) #modifier le mot cible selon la langue : fr/en
echo -e "\tURL : $URL";
echo -e "\tcode : $code";

if [[ ! $charset ]]
then
echo -e "\tencodage non détecté, on prendra UTF-8 par défaut.";
charset="UTF-8";
else
echo -e "\tencodage : $charset";
fi

if [[ $code -eq 200 ]]    #si le code du page web est 200, le contenu sera stocké dans les dossier dumps-text
then
dump=$(lynx -dump -nolist -assume_charset=$charset -display_charset=$charset $URL)
if [[ $charset -ne "UTF-8" && -n "$dump" ]]      # si l'encodage n'est pas l'UTF-8, le script le convertira en UTF-8 avant de continuer
then
dump=$(echo $dump | iconv -f $charset -t UTF-8//IGNORE)   
fi
else    #
echo -e "\tcode différent de 200 utilisation d'un dump vide"      # si le code n'est pas 200, le dumps-text resteront vide
dump=""
charset=""
fi

#les chemins que le programme suivra afin de trier le contenu de nos URLs dans des fichiers assignés sur nos machines - dumps-texts, contextes, etc. 
echo "<tr>
<td>$lignenum</td>
<td>$code</td>
<td><a href=\"$URL\">$URL</a></td>
<td>$charset</td><td>$Occurences</td>
<td><a href=\"../dumps-text/en-$lignenum.txt\">text</a></td>
<td><a href=\"../aspirations/en-$lignenum.html\">html</a></td>
<td><a href=\"../contextes/en-$lignenum.txt\">contexte</a></td>
<td><a href=\"../concordances/concordance_en-$lignenum.html\">concordance</a></td>
</tr>" >> $fichier_tableau
echo -e "\t----------------------------------------------------------------"
lignenum=$((lignenum+1));   
done < $fichier_urls
echo "</table>" >> $fichier_tableau
echo "</body></html>" >> $fichier_tableau
        

2 - Script de concaténation

Ce script nous sert à obtenir les dernières données manquantes du corpus et de les trier dans leurs dossiers respectifs. Il n'a besoin que d'un seul argument : le fichier_urls.txt

Les dossiers concernés sont : aspirations, dumps-text, contextes (gauche et droit), concordances et occurrences.


   



#!/usr/bin/env bash
#===============================================================================
# Ce script est notre programme pour traiter le corpus. Il permet de trier notre corpus dans des dossiers respectifs.
# Il s'utilise avec la ligne de commande suivante : sh dumps_asp_conc_cont_en.sh fichier_urls.txt
#==============================================================================

fichier_urls=$1 # le fichier d'URL en entrée
lignenum=1;
cible="racial discrimination"
while read URL || [[ -n $URL ]];
do
  echo "fichier $lignenum est en cours de traitement."
  curl -o ../../aspirations/anglais/en-$lignenum.html $URL
  lynx -accept_all_cookies -dump $URL > ../../dumps-text/anglais/en-$lignenum.txt
  grep -E -A3 -B3 $cible ../../dumps-text/anglais/en-$lignenum.txt > ../../contexte/anglais/en-$lignenum.txt

  echo "
  <!DOCTYPE html>
  <html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Concordances</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
  </head>
      <body>
        <table class="table">
          <thead>
            <tr>
            <th class=\"has-text-right\">Contexte gauche</th>
            <th>Cible</th>
            <th class=\"has-text-left\">Contexte droit</th>
            </tr>
          </thead>
          <tbody>
  " > ../../concordances/anglais/concordance_en-$lignenum.html
  # on définit des expressions régulières qui trieront notre corpus
  # on obtiendront les contextes à gauche et à droit du mot cible dans un éventail de 10
  lynx -accept_all_cookies -dump $URL | grep -E -o "(\w+|\W+){0,10}$cible(\W+|\w+){0,10}" |sort|uniq | sed -E "s/(.*)($cible)(.*)/<tr><td class="has-text-right">\1<\/td><td class="has-text-centered"><strong>\2<\/strong><\/td><td class="has-text-left">\3<\/td><\/tr>/" >> ../../concordances/anglais/concordance_en-$lignenum.html
  echo "
  </tbody>
  </table>
  </body>
  </html>
  " >> ../../concordances/anglais/concordance_en-$lignenum.html     #chaque fichier sera crée avec le nom concordance_en suivi par le numéro d'URL   lignenum=$((lignenum+1));
done < $fichier_urls
exit                       
                

3 - Script créant le fichier base pour iTrameur

C'est le script permettant la création du fichier txt brut au bon format d'iTrameur. Avec ce script, on peut concatener tous les contenus des fichiers dumps-texts dans un seul fichier, qui s'appelle "contexte.txt"

Grâce à ce script, les contenus dans context.txt sont annotés avec les délimiteurs suggérés dans le site officiel d'iTrameur.


   



#!/usr/bin/zsh
#===============================================================================
# Ce script traite notre fichier dumps-text en les reunissant tous afin de créer un seul fichier qui s'appellera condumps_entier.txt. 
# Il s'utilise avec la ligne de commande suivante : cat *.txt >>dumps_entier.txt
# On utilise ensuite ce fichier de sortie sur le site : http://www.tal.univ-paris3.fr/trameur/iTrameur/ afin de faire une analyse textométrique de données. 
#==============================================================================
if  [[ $# -ne 2 ]]
then 
    echo "Deux arguments attendus: <dossier> <langue>"
    exit
fi

dossier=$1
langue_abr=$2   

echo "<lang=\"$langue_abr\">" > contexte.txt
     

for filepath in $(ls -Utr $dossier/$langue_abr-*.txt)
do
    # filepath == dumps-text/en-1.txt
    #  == > pagename =en-1
    echo "$filepath"
    pagename="$(basename -s .txt $filepath)"  #en-1
    echo "<page=\"$pagename\">" >> contexte.txt
    echo "<text>"  >> contexte.txt

    #on récupère les dumps ou contextes
    # et on écrit à l'intérieur de la base text
    content=$(cat $filepath)
    # ordre important : & en premier
    # sinon : < => < ; => &lt: 
    content=$(echo "$content" | sed 's/&/&/g')
    content=$(echo "$content" | sed 's/</</g')
    content=$(echo "$content" | sed 's/>/>/g')  
    echo "$content" >> contexte.txt
    echo "</text>" >> contexte.txt
    echo "</page> §" >> contexte.txt
done
echo "</lang>" >> contexte.txt