Étude du mot « kebab » dans trois langues

Japonais - Persan - Turc

Inalco - Paris 3 - Paris Nanterre


  • Présentation
  • Outils
  • Script
  • Tableaux
  • Résultats
  • Crédits

Qui : nous sommes trois étudiant·e·s en première année de master « Traitement automatique des langues (TAL) » à l’INaLCO.

Quoi : Dans le cadre du cours « Programmation et projet encadré » de Serge Fleury et Pierre Magistry, nous avons mené à bien un projet qui consiste à analyser le comportement sémantique d’un mot dans un corpus multilingue en ligne. Nous avons choisi d’étudier le mot « kebab » en japonais, persan et turc.

Les principales questions auxquelles nous avons à répondre sont :

  • le mot et ses équivalents se comportent-ils de la même manière quelle que soit la langue ?
  • existe-t-il, au contraire, des variations en fonction des langues ?

Durant la préparation du projet, nous avons tenu un blog de travail permettant de suivre les étapes de notre travail de programmation.

Bonne lecture !

Mode d'emploi : cliquez sur les menus ouvrants ci-après pour le détail des méthodes et outils employés


>

Sélection de pages web

La recherche a été effectuée via un moteur de recherche usuel paramétré pour privilégier les résultats en une langue donnée, par exemple le turc (Türkçe).

En première approche, ont été exclues de la recherche les pages de restaurants, à l’exception de celles (nombreuses) où il est question de dire des recettes de kebab. Souvent ces recettes s’accompagnent d’un discours historique, empreint de patriotisme régional (« chez nous voici comment on fait le kebab »). On retrouve des éléments de ce discours sur Wikipédia en version turque, ou sur certains dictionnaires collaboratifs.

Un second type de page, dont le contenu n’est finalement pas très éloigné, vient de la presse locale, nationale ou internationale : là encore, il est question de recettes, de particularités locales ou régionales, de fierté vis-à-vis du kebap comme plat « patriotique » et/ou mondialement apprécié.

Certaines pages enfin sont particulièrement intéressantes parce qu’elles abordent la question des litiges opposant certaines régions ou localités, chacune se prétendant patrie exclusive de tel ou tel type de kebap. Cela met en évidence les enjeux d'appellation d'origine, de certification et de légitimation qui traversent les usages sémantiques et discursifs relatifs aux aliments et à la cuisine en général.

Traitement des données

  • Langages de script : Bash, Perl, Python
  • Récupération des données : curl, lynx
  • Traitement de l'encodage : iconv, detect-encoding
  • Obtention des contextes : minigrepmultilingue

Techniques de (pré-)analyse

  • concaténation des fichiers DUMP (texte intégral des pages aspirés) pour analyse de données textuelles par iTrameur
  • 			
    #!/usr/bin/bash
    
    for dump in $(ls *.txt);
    	do
    		echo $dump;
    		echo "<dump=\"$dump\">" >> concat-DUMPS.txt ;
    		cat $dump >> concat-DUMPS.txt ;
    		echo "</dump>" >> concat-DUMPS.txt ;
    	done
    			
    			
  • concaténation des fichiers CONTEXTES (cooccurrences du mot clé) pour représentation par nuage de mots
  • 					
    #!/usr/bin/bash
    
    for contexte in $(ls *.txt);
    	do
    		cat $contexte >> concat-CONTEXTES.txt ;
    	done
    					
    				

// En-tête //

			
#!/usr/bin/bash
# Shebang qui indique au système d'exploitation (type Unix) que le fichier est un script, et l'interpréteur de commandes utilisé.

# Commande d'exécution du script (à partir du répertoire-racine PROJET-MOT-SUR-LE-WEB) :
# bash ./PROGRAMMES/script-JP-PER-TR_2022.sh ./URLS ./TABLEAUX

# Motif dans les trois langues pour minigrepmultilingue :
# MOTIF=(ケバブ)|(.{0,5}کباب.{0,5})|((\w+ *){0,5} کباب (\w+ *){0,5})|((\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5})

# Lancement du script : on veut que le programme récupère des informations, en les transformant en objets informatiques qu'il puisse ensuite manipuler. Il faut donc qu'il stocke les arguments dans des variables.
# Il faut commencer par créer deux variables pour informer le programme de la localisation des fichiers d'entrée (URLS) et de sortie (TABLEAUX) (remarque : il n'est pas obligatoire d'indiquer d'emblée au programme quel sera le répertoire de sortie, c'est un choix de programmation).
DOSSIER_URLS=$1
DOSSIER_TABLEAUX=$2

# Valider les arguments :
echo $DOSSIER_URLS;
echo $DOSSIER_TABLEAUX;

# Création de l'en-tête du fichier HTML :
echo "<html>
		<head>
			<meta charset=\"UTF-8\">
		</head>
		<body>
		<h1> Brochette de kebab JP-PER-TR</h1>" > $DOSSIER_TABLEAUX/tableau.html ;
		# Un seul chevron suffit ici car l'en-tête n'est créé qu'une fois. (Si la variable ne renvoie à aucune valeur, echo essaiera d'écrire à la racine du système de fichiers, ce qui est interdit sous Unix, donc "permission denied"...)

cptTableau=0; # Création un compteur de tableaux pour servir à la numérotation des fichiers

for fichier in $(ls $DOSSIER_URLS) ; do

	# Création d'un compteur de lignes pour chaque liste d'URL, qu'il faudra incrémenter ; on le fait ici (dans la boucle for) afin de s'assurer que le compteur revienne à zéro à chaque changement de fichier.
	compteur=0 ;

	# Vérification de l'existence de listes d'URLS dans le fichier d'entrée
	if [[ ! -e "$fichier" ]]
		then
		echo "$fichier existe" ;

		# Incrémentation du  compteur de tableaux
		cptTableau=$((cptTableau+1)) ;

		# Ouverture d'un boucle afin de parcourir successivement les trois domaines linguistiques représentés
		# (chaque domaine appelant un traitement approprié pour l'encodage et la tokenization)
				
		

// Japonais //

				
		if [[ $fichier == "kebab-JP.txt" ]]
			then
			echo "Un peu de japonais pour commencer"
			# cat ./URLS/kebab-JP.txt ;

			# début de tableau
			echo "<h2>En japonais</h2>
				<table align=\"center\" border=\"1px\" bordercolor=gray>
				<tr align=\"center\" backgroundcolor=grey bgcolor=\"#D6EAF8\">
				<tr><td>Num.</td><td>HTTP</td><td>Encodage</td><td>URL</td><td>Page aspirée</td><td>Dump</td><td>Index</td><td>Trigrammes</td><td>Contextes</td></tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

			# traitement de chaque ligne du fichier d'URLS japonaises en cours
			# lire chaque fichier du dossier
			while read line; do
				compteur=$(($compteur + 1)) ;
				echo "Traitement de l'URL : $line" ;
				# récupérer html et le mettre dans un fichier
				# travailler avec line (l'url)
				# vérification de l'accès à l'URL
				codeHTTP=$(curl -L -w '%{http_code}\n' -o ./PAGES-ASPIREES/"$cptTableau-$compteur".html $line) ;
				# test de code html: si 200, ok
				if [[ $codeHTTP == 200 ]]
					then
					# une variable pour essayer de repérer l'encodage via CURL, effacer des retours de ligne | tr [A-Z] [a-z]
					encodage=$(curl -L -I $line | egrep charset | cut -d "=" -f2 | tr -d '\r' | tr -d '\n' );
					# mettre en place la détection de l'encodage

					if [[ $encodage == 'UTF-8' ]] || [[ $encodage == 'utf-8' ]]; then
						echo "UTF-8 ok" ;
					else
						echo "not UTF-8" ;
						# read html to pick up the first charset in the text
						encodage=$(cat ./PAGES-ASPIREES/"$cptTableau-$compteur".html | egrep -i -m1 'charset=.+\"' | sed -E 's/.+charset=//' | sed -E 's/"? ?\/?>.*//g' | sed 's/"//g' | tr -d '\r' | tr -d '\n' ) ;
						echo "encodage est $encodage.";
						# convert encode to utf8
						iconv -f $encodage -t UTF-8//IGNORE ./PAGES-ASPIREES/"$cptTableau-$compteur".html > ./PAGES-ASPIREES/tmp.html ;
						# rewrite encode in html tag
						cat ./PAGES-ASPIREES/tmp.html | sed "s/$encodage/utf-8/g" > ./PAGES-ASPIREES/"$cptTableau-$compteur".html ;
					fi

					# récupérer les documents html et les mettre chaque fichier dans le dossier PAGES-ASPIREES
					lynx -assume_charset="UTF-8" -display_charset="UTF-8" -dump -nolist ./PAGES-ASPIREES/""$cptTableau-$compteur"".html > ./DUMP-TEXT/"$cptTableau-$compteur".txt
					# iconv utf to utf avec l'option ignore (to clean illegible characters)
					iconv -f UTF-8 -t UTF-8//IGNORE ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./DUMP-TEXT/tmp"$cptTableau-$compteur".txt
					# renommer les fichiers
					mv ./DUMP-TEXT/tmp"$cptTableau-$compteur".txt ./DUMP-TEXT/"$cptTableau-$compteur".txt

					# Tokenization avec nettoyage des sauts de ligne
					cat ./DUMP-TEXT/"$cptTableau-$compteur".txt | tr '\n' '&' | sed 's/&   / /g' | tr '&' '\n' | tr -d ' ' | sed -E 's/([0-9a-zA-Z_\-\=\.:\/\?%\&]){15,}//g' | sed -E 's/(BUTTON)|(IFRAME)//g' | tr -s " " | tr -s "\n" | sed 's/^ +//g' > ./PREP-CORPUS/"$cptTableau-$compteur".txt;
					echo "Page dumped";

				###### Index with frequency:
					###### Create frequency file & spaced file by a janome tokenizer ######
					# frequency -> ./DUMP-TEXT/index-$cptTableau-$compteur.txt
					# spaced text -> ./DUMP-TEXT/spacedText-$cptTableau-$compteur.txt
					python3.8 ./PROGRAMMES/tokenizer.py
					cat ./DUMP-TEXT/spacedText-"$cptTableau-$compteur".txt  >> ./CONTEXTES/corpus.txt

				###### Trigrams
					###### read text and create 3 files (1 with all lines, 2 others without the first few lines), then paste them all to put side by side ######
					# read file, replace multiple space to one space & space to line break
					cat DUMP-TEXT/spacedText-"$cptTableau-$compteur".txt | tr -d '[、。]' | sed 's/  / /g' | tr ' ' '\n' > ./DUMP-TEXT/tmp-tritext1.txt;
					# delete the first line(=1d, if the last:‘$d’)
					cat ./DUMP-TEXT/tmp-tritext1.txt | sed '1d' > ./DUMP-TEXT/tmp-tritext2.txt;
					cat ./DUMP-TEXT/tmp-tritext2.txt | sed '1d' > ./DUMP-TEXT/tmp-tritext3.txt;
					paste ./DUMP-TEXT/tmp-tritext1.txt ./DUMP-TEXT/tmp-tritext2.txt ./DUMP-TEXT/tmp-tritext3.txt | sed '$d' | sed '$d' | sort | uniq -c | sort -nr > ./DUMP-TEXT/tritext-"$cptTableau-$compteur".txt;
					echo "trigram done";

				###### Context:
					# Use minigrep to collect every occurence
					perl ./minigrep/minigrepmultilingue.pl "utf-8" ./PREP-CORPUS/$cptTableau-$compteur.txt ./minigrep/motif.txt
					if [ "$(ls *.html)" != '' ]; then
						echo "Result moved to CONTEXTES"
						mv resultat-extraction.html ./CONTEXTES/result-"$cptTableau-$compteur".html
					else
						echo 'Result Not Found'
					fi

				# construire les lignes du tableau
					echo "<tr>
					<td>$compteur</td>
					<td>$codeHTTP</td>
					<td>$encodage</td>
					<td><a target ="blank" href=\"$line\">n°$compteur</a></td>
					<td><a target ="blank" href=\"../PAGES-ASPIREES/$cptTableau-$compteur.html\">P-$cptTableau-$compteur<a/></td>
					<td><a target ="blank" href=\"../DUMP-TEXT/$cptTableau-$compteur.txt\">Txt-$cptTableau-$compteur</a></td>
					<td><a target ="blank" href=\"../DUMP-TEXT/index-$cptTableau-$compteur.txt\">Idx-$cptTableau-$compteur</a></td>
					<td><a target ="blank" href=\"../DUMP-TEXT/tritext-$cptTableau-$compteur.txt\">Tri-$cptTableau-$compteur</a></td>
					<td><a target ="blank" href=\"../CONTEXTES/result-$cptTableau-$compteur.html\">C-$cptTableau-$compteur</a></td>
					</tr>" >> $DOSSIER_TABLEAUX/tableau.html ;
				else
					# Table in case unable to treat url
						echo "<tr>
						<td>$compteur</td>
						<td>$codeHTTP</td>
						<td><a href=\"$line\">$line</a></td>
						<td>-</td>
						<td>-</td>
						<td>-</td>motif
						<td>-</td>
						<td>-</td>
						<td>-</td>
						</tr>" >> $DOSSIER_TABLEAUX/tableau.html ;
				fi

	# -> le lien relatif par rapport au DOSSIER_TABLEAUX
	done < $DOSSIER_URLS/$fichier ; # préciser l'endroit
	# fin du tableau et de la lecture du fichier, fermeture du tableau
	echo "</table><hr/>" >> $DOSSIER_TABLEAUX/tableau.html ;
				
			

// Persan //

				
		elif [[ $fichier == "kebab-PER.txt" ]]
			then
			echo "Un peu de persan pour continuer ?"

			# Début de tableau
			echo "<h2>En persan</h2>
				<table align=\"center\" border=\"1px\" bordercolor=gray>
				<tr align=\"center\" backgroundcolor=grey bgcolor=\"#D6EAF8\">
				<td><b>No</b></td>
				<td><b>Http Code</b></td>
				<td><b>URL</b></td>
				<td><b>Page Aspirée</b></td>
				<td><b>Encodage</b></td>
				<td><b>Text Dump</b></td>
				<td><b>Text Propre</b></td>
				<td><b>Index</b></td>
				<td><b>B-gram</b></td>
				<td><b>Contexte</b></td>
				</tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

			while read line; do
				compteur=$(($compteur + 1)) ;
				# je peux travailler avec line (l'url)
				# 1. Une variable pour vérifier si la connexion vers l'URL est OK
				# pour USER Agent de curl = -H "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0"
				codeHTTP=$(curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" -L -w '%{http_code}\n' -o ./PAGES-ASPIREES/"$cptTableau-$compteur".html $line);
				if [[ $codeHTTP == 200 ]]
					then
					# 2. une variable pour essayer de repérer l'encodage via CURL
					encodage=$(curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" -L -I $line | egrep charset | cut -d"=" -f2 | tr -d '\r' | tr -d '\n');
					# Mettre en place la détection de l'encodage
					# et savoir si on est en UTF8 ou pas ??????
					# si encodage = UTF8 alors on fait certains traitements
					# sinon il faudra aussi les faire et probablement
					echo $encodage
					if [[ $encodage == 'UTF-8' ]]
						then
						# l'encodage est bien en UTF-8, on continue
						texte=$(lynx -nolist -assume_charset ="$encodage " -display_charset "UTF-8" -dump ./PAGES-ASPIREES/"$cptTableau-$compteur".html);
						echo "$texte" > ./DUMP-TEXT/$cptTableau-$compteur.txt

						# index
						echo "$texte" | grep -o -E "\w+" | sort | uniq -c | sort -nr | sed "s/[A-Za-z[:punct:]]//g" | sed "s/  //g" | sed "s/ \n  //g" > ./DUMP-TEXT/Idx-"$cptTableau-$compteur".txt;

						# Nettoyer le texte
						echo "$texte" | tr '\n'  '&' | sed 's/& \+/ /g' | tr '&' '\n' | sed "s/[A-Za-z0-9[:punct:]]//g" > ./PROPRE-TEXT/prop-"$cptTableau-$compteur".txt;

						# Bigrammes
						echo "$texte" | grep -o -E "\w+" | sort | uniq -u | sort -nr | sed "s/[A-Za-z[:punct:]]//g" | sed "s/  //g" | sed "s/ \n  //g"  | head -n -1 > ./BIGRAM/lst-"$cptTableau-$compteur".txt;
						echo "$texte" | grep -o -E "\w+" | sort | uniq -u | sort -nr | sed "s/[A-Za-z[:punct:]]//g" | sed "s/  //g" | sed "s/ \n  //g"  | tail -n +2 > ./BIGRAM/lst2-"$cptTableau-$compteur".txt;

						BG=$(paste BIGRAM/lst-"$cptTableau-$compteur".txt BIGRAM/lst2-"$cptTableau-$compteur".txt > ./BIGRAM/BG-"$cptTableau-$compteur".txt);

						#Contextes
						CT=$(echo "$texte" | tr '\n'  '&' | sed 's/& \+/ /g' | tr '&' '\n' | sed "s/[A-Za-z0-9[:punct:]]//g" | grep -owP '.{0,20}کباب.{0,20}' > ./CONTEXTES/CT-"$cptTableau-$compteur".txt;);
						#motif=$(echo "CT" grep -owP '.{0,10}کباب.{0,10}' > ./CONTEXTES/CT-"$cptTableau-$compteur")

						# Affichage HTML des contextes
						perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cptTableau-$compteur.txt ./minigrep/motif.txt ;
						mv resultat-extraction.html ./CONTEXTES/contexte-$cptTableau-$compteur.html ;

					else
						echo "raté"
					fi

				# construire les lignes du tableau
				echo "<tr>
				<td align=\"center\" >$compteur</td>
				<td align=\"center\" >$codeHTTP</td>
				<td><a href=\"$line\">$line</a></td>
				<td align=\"center\"><a href=\"../PAGES-ASPIREES/"$cptTableau-$compteur".html\"> $cptTableau-$compteur </a></td>
				<td align=\"center\" >$encodage</td>
				<td align=\"center\"><a href=\"../DUMP-TEXT/$cptTableau-$compteur.txt\"> "$cptTableau-$compteur" </a></td>
				<td align=\"center\"><a href=\"../PROPRE-TEXT/prop-$cptTableau-$compteur.txt\"> "TP-$cptTableau-$compteur" </a></td>
				<td align=\"center\"><a href=\"../DUMP-TEXT/Idx-$cptTableau-$compteur.txt\"> "Idx-$cptTableau-$compteur" </a></td>
				<td align=\"center\"><a href=\"../BIGRAM/BG-$cptTableau-$compteur.txt\">"BG-$cptTableau-$compteur"</a></td>
				<td align=\"center\"><a href=\"../CONTEXTES/CT-$cptTableau-$compteur.txt\">"CT-$cptTableau-$compteur"</a></td>
				</tr>  " >> $DOSSIER_TABLEAUX/tableau.html ;

				else
					# construire les lignes du tableau pour une URL inaccessible !
					echo "<tr>
					<td align=\"center\" >$compteur</td>
					<td align=\"center\" >$codeHTTP</td>
					<td><a href=\"$line\">$line</a></td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					<td align=\"center\" >-</td>
					</tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

				fi

			done < $DOSSIER_URLS/$fichier ;
		# Fin du tableau (et de la lecture du fichier)
	echo "</table><hr/>" >> $DOSSIER_TABLEAUX/tableau.html ;
				
			

// Turc //

				
	else
		echo "Et pour finir, un peu de turc." ;
		# cat ./URLS/kebab-TR.txt ;
		# Ouverture du tableau HTML :
			echo "<h2>En turc</h2>
			<table align=\"center\" border=\"1px\" bordercolor=blue>
			<tr><td>#</td><td>HTTP</td><td>URL</td><td>Encodage</td><td>Page aspirée</td><td>Texte brut</td><td>Index</td><td>Bigrammes</td><td>Contxts</td><td>Contextes</td><td>Fréq. motif</td></tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

			# Pour lire chaque fichier d'URL
			while read line; do

				# Incrémentation du compteur d'URLS
				compteur=$(($compteur+1)) ;
				echo "Traitement de l'URL : $line"

				# Vérification sur l'accessibilité de l'URL (préalable à son aspiration)
				# Ajout du user-agent dans l'en-tête, précisant un nom de navigateur, afin de résoudre un code 403
				codeHTTP=$(curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" -L -w '%{http_code}\n' -o ./PAGES-ASPIREES/"$cptTableau-$compteur".html $line) ;
				if [[ $codeHTTP == 200 ]]
					then
					encodage=$(curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0" -L -I $line | egrep charset | cut -d "=" -f2 | tr -d '\r' | tr -d '\n' | tr '[:lower:]' '[:upper:]') ;
					# Nettoyage pour supprimer les caractères de fin de ligne et uniformisation en majuscule (pour correspondre à la norme d'iconv -l plus loin) afin que toutes les pages bien encodées soient prises en considération par la suite.

					echo "Encodage lisible par curl : $encodage" ;
					# Mise en place de la détection de l'encodage afin de savoir s'il s'agit d'UTF-8 ou non :
					if [[ $encodage == "UTF-8" ]]
						# Si l'encodage est UTF-8, aspiration sans conversion préalable :
						then
						lynx -assume_charset="utf-8" -display_charset="UTF-8" -nolist -dump ./PAGES-ASPIREES/"$cptTableau-$compteur".html  > ./DUMP-TEXT/"$cptTableau-$compteur".txt ;
						# Avec guillemets autour de la variable, pour préciser que l'intégralité du contenu de la variable forme bien un seul argument ; un chevron plutôt que deux (notamment pour le cas où l'on relancerait plusieurs fois le script et que cela créerait des copies multiples du même contenu dans les fichiers txt)

						# Génération de l'index par token, avec egrep puis sort et uniq
						# N.B. l'uniformisation en minuscule pour fusionner les doublons éventuels
						cat ./DUMP-TEXT/"$cptTableau-$compteur".txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' | egrep -o -E "\w+" | sort | uniq -c | sort -nr > ./DUMP-TEXT/"index-$cptTableau-$compteur".txt ;

						# Index des bigrammes
						# Création de fichiers temporaires (listes tronquées) avant fusion
						egrep -o -E "\w+" ./DUMP-TEXT/"$cptTableau-$compteur".txt > all.txt ;
						head -n -1 all.txt > croptail.txt ;
						tail -n +2 all.txt > crophead.txt ;
						# Commande paste pour fusionner ces deux fichiers
						paste croptail.txt crophead.txt > ./DUMP-TEXT/"bigrammes-$cptTableau-$compteur".txt ;
						rm all.txt croptail.txt crophead.txt ;

						# Filtrage des contextes (TXT)
						egrep -o -E "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./CONTEXTES/"contxt-$cptTableau-$compteur".txt ;

						# Fréquence du motif
						freqmotif=$(egrep -coiE "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt) ;

						# Affichage HTML des contextes
						perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cptTableau-$compteur.txt ./minigrep/motif.txt ;
						mv resultat-extraction.html ./CONTEXTES/contexte-$cptTableau-$compteur.html ;

						# Ajout d'ancres HTML pour rendre les liens cliquables ; au moment de cette écriture on se situe dans /TABLEAUX d'où le chemin relatif
						echo "<tr><td>$compteur</td><td>$codeHTTP</td><td><a href=\"$line\">$line</a></td><td>$encodage</td><td><a target="blank" href=\"../PAGES-ASPIREES/$cptTableau-$compteur.html\">"$cptTableau-$compteur".html</a></td><td><a target="blank" href=\"../DUMP-TEXT/$cptTableau-$compteur.txt\">"$cptTableau-$compteur".txt</td><td><a target="blank" href=\"../DUMP-TEXT/index-$cptTableau-$compteur.txt\">"idx-$cptTableau-$compteur"</td><td><a target="blank" href=\"../DUMP-TEXT/bigrammes-$cptTableau-$compteur.txt\">"bigrammes-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contxt-$cptTableau-$compteur.txt\">"contxt-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contexte-$cptTableau-$compteur.html\">"contexte-$cptTableau-$compteur"</td><td>$freqmotif</td></tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

					else
					# Si l'encodage n'est pas UTF-8, il reste deux possibilités : curl a détecté une autre chaîne de caractères pour $encodage ; ou bien ne retourne qu'une chaîne de caractères vide.
					# Si curl a détecté une chaîne de caractères non vide : aspiration après conversion préalable par iconv
						if [[ $encodage != "" ]]
							then
							echo "Encodage non UTF-8 lisible par curl : $encodage" ;
							# Vérifier que l'encodage détecté est  connu de iconv (option -i pour éviter la casse) :
							verifencodage=$(iconv -l | egrep -i "$encodage") ;
							if [[ $verifencodage != "" ]]
								then
								echo "Encodage détecté conforme iconv : $verifencodage" ;
								lynx -assume_charset=$encodage -display_charset=$encodage -nolist -dump ./PAGES-ASPIREES/"$cptTableau-$compteur".html > ./DUMP-TEXT/"$cptTableau-$compteur"-"$encodage".txt ;
								iconv -f "$encodage" -t utf-8  ./DUMP-TEXT/"$cptTableau-$compteur"-"$encodage".txt  > ./DUMP-TEXT/"$cptTableau-$compteur".txt ;

								# Index des tokens
								cat ./DUMP-TEXT/"$cptTableau-$compteur".txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' | egrep -o -E "\w+" | sort | uniq -c | sort -nr > ./DUMP-TEXT/"index-$cptTableau-$compteur".txt ;

								# Index des bigrammes
								egrep -o -E "\w+" ./DUMP-TEXT/"$cptTableau-$compteur".txt > all.txt ;
								head -n -1 all.txt > croptail.txt ;
								tail -n +2 all.txt > crophead.txt ;
								# Commande paste pour fusionner ces deux fichiers
								paste croptail.txt crophead.txt > ./DUMP-TEXT/"bigrammes-$cptTableau-$compteur".txt ;
								rm all.txt croptail.txt crophead.txt ;

								# Filtrage des contextes (TXT)
								egrep -o -E "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./CONTEXTES/"contxt-$cptTableau-$compteur".txt

								# Fréquence du motif
								freqmotif=$(egrep -coiE "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt) ;

								# Affichage HTML des contextes
								perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cptTableau-$compteur.txt ./minigrep/motif.txt ;
								mv resultat-extraction.html ./CONTEXTES/contexte-$cptTableau-$compteur.html ;

								# Ajout d'ancres HTML pour rendre les liens cliquables ; au moment de cette écriture on se situe dans /TABLEAUX d'où le chemin relatif
								echo "<tr><td>$compteur</td><td>$codeHTTP</td><td><a target="blank" href=\"$line\">$line</a></td><td>$encodage</td><td><a target="blank" href=\"../PAGES-ASPIREES/$cptTableau-$compteur.html\">"$cptTableau-$compteur".html</a></td><td><a target="blank" href=\"../DUMP-TEXT/$cptTableau-$compteur.txt\">"$cptTableau-$compteur".txt</td><td><a target="blank" href=\"../DUMP-TEXT/index-$cptTableau-$compteur.txt\">"idx-$cptTableau-$compteur"</td><td><a target="blank" href=\"../DUMP-TEXT/bigrammes-$cptTableau-$compteur.txt\">"bigrammes-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contxt-$cptTableau-$compteur.txt\">"contxt-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contexte-$cptTableau-$compteur.html\">"contexte-$cptTableau-$compteur"</td><td>$freqmotif</td></tr>" >> $DOSSIER_TABLEAUX/tableau.html ;
							else
								echo "Encodage détecté inconnu d'iconv" ;
							fi

						# Si curl n'a pas détecté de chaîne de caractères pour l'encodage :
						else
							echo "Encodage non UTF-8 illisible par curl" ;
							detectencodage=$(perl ./PROGRAMMES/detect-encoding.pl ./PAGES-ASPIREES/"$cptTableau-$compteur".html | tr -d "\n" | tr -d "\r") ;
							if [[ $detectencodage != "" ]]
								then
								verifencodage=$(iconv -l | egrep -i "$detectencodage") ;
								if [[ $verifencodage != "" ]]
									then
									echo "Encodage détecté par detect-encoding.pl compatible iconv: $detectencodage";
										lynx -assume_charset=$detectencodage -display_charset=$detectencodage -nolist -dump ./PAGES-ASPIREES/"$cptTableau-$compteur".html > ./DUMP-TEXT/"$cptTableau-$compteur"-"$detectencodage".txt ;
										iconv -f "$detectencodage" -t utf-8  ./DUMP-TEXT/"$cptTableau-$compteur"-"$detectencodage".txt > ./DUMP-TEXT/"$cptTableau-$compteur".txt;

										# Index des tokens
										cat ./DUMP-TEXT/"$cptTableau-$compteur".txt | tr '[:upper:]' '[:lower:]' | tr -s ' ' | egrep -o -E "\w+" | sort | uniq -c | sort -nr > ./DUMP-TEXT/"index-$cptTableau-$compteur".txt ;

										# Index des bigrammes
										egrep -o -E "\w+" ./DUMP-TEXT/"$cptTableau-$compteur".txt > all.txt ;
										head -n -1 all.txt > croptail.txt ;
										tail -n +2 all.txt > crophead.txt ;
										# Commande paste pour fusionner ces deux fichiers
										paste croptail.txt crophead.txt > ./DUMP-TEXT/"bigrammes-$cptTableau-$compteur".txt ;
										rm all.txt croptail.txt crophead.txt ;

										# Filtrage des contextes (TXT)
										egrep -o -E "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt > ./CONTEXTES/"contxt-$cptTableau-$compteur".txt

										# Fréquence du motif
										freqmotif=$(egrep -coiE "(\w+ *){0,5}[[:punct:]]? (K|k)eba(b|p)(.*)( *\w+){0,5}" ./DUMP-TEXT/"$cptTableau-$compteur".txt) ;

										# Affichage HTML des contextes
										perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cptTableau-$compteur.txt ./minigrep/motif.txt ;
										mv resultat-extraction.html ./CONTEXTES/contexte-$cptTableau-$compteur.html ;

										# Ajout d'ancres HTML pour rendre les liens cliquables ; au moment de cette écriture on se situe dans /TABLEAUX d'où le chemin relatif
										echo "<tr><td>$compteur</td><td>$codeHTTP</td><td><a target="blank" href=\"$line\">$line</a></td><td>$encodage</td><td><a href=\"../PAGES-ASPIREES/$cptTableau-$compteur.html\">"$cptTableau-$compteur".html</a></td><td><a href=\"../DUMP-TEXT/$cptTableau-$compteur.txt\">"$cptTableau-$compteur".txt</td><td><a href=\"../DUMP-TEXT/index-$cptTableau-$compteur.txt\">"idx-$cptTableau-$compteur"</td><td><a href=\"../DUMP-TEXT/bigrammes-$cptTableau-$compteur.txt\">"bigrammes-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contxt-$cptTableau-$compteur.txt\">"contxt-$cptTableau-$compteur"</td><td><a target="blank" href=\"../CONTEXTES/contexte-$cptTableau-$compteur.html\">"contexte-$cptTableau-$compteur"</td><td>$freqmotif</td></tr>" >> $DOSSIER_TABLEAUX/tableau.html ;

								else
									echo "Encodage détecté  par detect-encoding.pl inconnu d'iconv : $detectencodage" ;
								fi
							else
								echo "Aucun encodage détecté" ;

							fi
						fi
					fi
				fi

			done < $DOSSIER_URLS/$fichier # redirection de flux entrant à partir d’un fichier
			echo "</table>" >> $DOSSIER_TABLEAUX/tableau.html # Fermeture du tableau après la boucle sur la liste d'URLS/kebab-TR.
		fi
	fi

done

# Fin du fichier HTML
echo "</body></html>" >> $DOSSIER_TABLEAUX/tableau.html

exit;
				
			

// Annexe : script python de tokenization en japonais //

				
#!/usr/bin/env python
#-*- coding: utf-8 -*-

from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.charfilter import *
from janome.tokenfilter import *
from re import sub, match

# Create filters
char_filters = [UnicodeNormalizeCharFilter(), # UnicodeをNFKC(デフォルト)で正規化
                #RegexReplaceCharFilter('<.*?>', ''), # HTMLタグを削除
                #RegexReplaceCharFilter('[#!:;<>{}`^.,-=$/_\'"\[\]\|]', ''),
                RegexReplaceCharFilter('<°c>', '℃')]
token_filters = [POSStopFilter('空白'), LowerCaseFilter(),
                TokenCountFilter(att = "base_form", sorted = True)]
token_filter = [  # CompoundNounFilter(),名詞が連続する場合は複合名詞にする
                POSStopFilter('空白'), LowerCaseFilter()]
# Create tokenizer
tokenizer = Tokenizer()
# Create analyzer with filters & tokenizer
analyzer1 = Analyzer(char_filters=char_filters, tokenizer=tokenizer, token_filters=token_filters)
analyzer2 = Analyzer(char_filters=char_filters, tokenizer=tokenizer, token_filters = token_filter)

for i in range(1, 51):
    try:
        with open(f"./PREP-CORPUS/1-{i}.txt", "r", encoding = 'utf-8') as src:
            text = src.read()

        # index: frequency using base forms
        with open(f"./DUMP-TEXT/index-1-{i}.txt", "w", encoding = 'utf-8') as fp:
            for k, v in analyzer1.analyze(text):
                k = sub('[ 、。◎**✽※☆✦♪()()「」『』【】\"\”・“##!!??&::;;<><>»{}`^++.,-=$/_\'\"\[\]\|\r\n\d©]', '', str(k))
                # k = sub(r'[a-z]{20,0}', '', str(k))
                if k == "":
                    continue
                fp.write('%d \t%s' % (v, k))
                fp.write("\n")


        # spaced text in surface forms to make corpus
        with open(f"./DUMP-TEXT/spacedText-1-{i}.txt", "w", encoding = 'utf-8') as fp:
            for word in analyzer2.analyze(text):
                w = word.surface
                w = sub('[ ◎**✽※☆✦♪【】\"\”・“❝❞’´\'##!!??&::;;<><>«»{}()()「」『』`^++.,-─=$/_\'\"\[\]\|©\r\n|\r|\n]', '', str(w))
                # write in spacedText.file
                if w != "":
                    fp.write(word.surface)
                    fp.write(" ")
                    # write in corpus.file if not stop word
                    p = word.part_of_speech.split(',')
                    # r'名詞|動詞|形容詞|副詞'以外
                    if match(p[0], r'記号|助詞|助動詞|接続詞'):
                        pass
                    else:
                        f.write(word.base_form)
                        f.write(" ")



    except:
        continue

				
			

Cliquez ici pour lire le fichier des tableaux produit en sortie du script.

En japonais

Num.HTTPEncodageURLPage AspiréeDumpIndexTrigrammesContextes
1 200 UTF-8 n°1 P-1-1 Txt-1-1 Idx-1-1 Tri-1-1 C-1-1
2 200 UTF-8 n°2 P-1-2 Txt-1-2 Idx-1-2 Tri-1-2 C-1-2
3 200 UTF-8 n°3 P-1-3 Txt-1-3 Idx-1-3 Tri-1-3 C-1-3
4 200 UTF-8 n°4 P-1-4 Txt-1-4 Idx-1-4 Tri-1-4 C-1-4
5 200 UTF-8 n°5 P-1-5 Txt-1-5 Idx-1-5 Tri-1-5 C-1-5
6 200 UTF-8 n°6 P-1-6 Txt-1-6 Idx-1-6 Tri-1-6 C-1-6
7 200 UTF-8 n°7 P-1-7 Txt-1-7 Idx-1-7 Tri-1-7 C-1-7
8 200 UTF-8 n°8 P-1-8 Txt-1-8 Idx-1-8 Tri-1-8 C-1-8
9 200 UTF-8 n°9 P-1-9 Txt-1-9 Idx-1-9 Tri-1-9 C-1-9
10 200 UTF-8 n°10 P-1-10 Txt-1-10 Idx-1-10 Tri-1-10 C-1-10
11 200 UTF-8 n°11 P-1-11 Txt-1-11 Idx-1-11 Tri-1-11 C-1-11
12 200 UTF-8 n°12 P-1-12 Txt-1-12 Idx-1-12 Tri-1-12 C-1-12
13 200 UTF-8 n°13 P-1-13 Txt-1-13 Idx-1-13 Tri-1-13 C-1-13
14 200 UTF-8 n°14 P-1-14 Txt-1-14 Idx-1-14 Tri-1-14 C-1-14
15 200 UTF-8 n°15 P-1-15 Txt-1-15 Idx-1-15 Tri-1-15 C-1-15
16 200 UTF-8 n°16 P-1-16 Txt-1-16 Idx-1-16 Tri-1-16 C-1-16
17 200 UTF-8 n°17 P-1-17 Txt-1-17 Idx-1-17 Tri-1-17 C-1-17
18 200 UTF-8 n°18 P-1-18 Txt-1-18 Idx-1-18 Tri-1-18 C-1-18
19 200 UTF-8 n°19 P-1-19 Txt-1-19 Idx-1-19 Tri-1-19 C-1-19
20 200 UTF-8 n°20 P-1-20 Txt-1-20 Idx-1-20 Tri-1-20 C-1-20
21 200 UTF-8 n°21 P-1-21 Txt-1-21 Idx-1-21 Tri-1-21 C-1-21
22 200 UTF-8 n°22 P-1-22 Txt-1-22 Idx-1-22 Tri-1-22 C-1-22
23 200 UTF-8 n°23 P-1-23 Txt-1-23 Idx-1-23 Tri-1-23 C-1-23
24 200 UTF-8 n°24 P-1-24 Txt-1-24 Idx-1-24 Tri-1-24 C-1-24
25 200 UTF-8 n°25 P-1-25 Txt-1-25 Idx-1-25 Tri-1-25 C-1-25
26 200 UTF-8 n°26 P-1-26 Txt-1-26 Idx-1-26 Tri-1-26 C-1-26
27 200 UTF-8 n°27 P-1-27 Txt-1-27 Idx-1-27 Tri-1-27 C-1-27
28 200 UTF-8 n°28 P-1-28 Txt-1-28 Idx-1-28 Tri-1-28 C-1-28
29 200 UTF-8 n°29 P-1-29 Txt-1-29 Idx-1-29 Tri-1-29 C-1-29
30 200 Shift_JIS n°30 P-1-30 Txt-1-30 Idx-1-30 Tri-1-30 C-1-30
31 200 UTF-8 n°31 P-1-31 Txt-1-31 Idx-1-31 Tri-1-31 C-1-31
32 200 UTF-8 n°32 P-1-32 Txt-1-32 Idx-1-32 Tri-1-32 C-1-32
33 200 UTF-8 n°33 P-1-33 Txt-1-33 Idx-1-33 Tri-1-33 C-1-33
34 200 UTF-8 n°34 P-1-34 Txt-1-34 Idx-1-34 Tri-1-34 C-1-34
35 200 UTF-8 n°35 P-1-35 Txt-1-35 Idx-1-35 Tri-1-35 C-1-35
36 200 UTF-8 n°36 P-1-36 Txt-1-36 Idx-1-36 Tri-1-36 C-1-36
37 200 UTF-8 n°37 P-1-37 Txt-1-37 Idx-1-37 Tri-1-37 C-1-37
38 200 UTF-8 n°38 P-1-38 Txt-1-38 Idx-1-38 Tri-1-38 C-1-38
39 200 UTF-8 n°39 P-1-39 Txt-1-39 Idx-1-39 Tri-1-39 C-1-39
40 200 UTF-8 n°40 P-1-40 Txt-1-40 Idx-1-40 Tri-1-40 C-1-40
41 200 UTF-8 n°41 P-1-41 Txt-1-41 Idx-1-41 Tri-1-41 C-1-41
42 200 UTF-8 n°42 P-1-42 Txt-1-42 Idx-1-42 Tri-1-42 C-1-42
43 200 UTF-8 n°43 P-1-43 Txt-1-43 Idx-1-43 Tri-1-43 C-1-43
44 200 UTF-8 n°44 P-1-44 Txt-1-44 Idx-1-44 Tri-1-44 C-1-44
45 200 UTF-8 n°45 P-1-45 Txt-1-45 Idx-1-45 Tri-1-45 C-1-45
46 200 UTF-8 n°46 P-1-46 Txt-1-46 Idx-1-46 Tri-1-46 C-1-46
47 200 UTF-8 n°47 P-1-47 Txt-1-47 Idx-1-47 Tri-1-47 C-1-47
48 200 UTF-8 n°48 P-1-48 Txt-1-48 Idx-1-48 Tri-1-48 C-1-48
49 200 Shift_JIS n°49 P-1-49 Txt-1-49 Idx-1-49 Tri-1-49 C-1-49
50 200 UTF-8 n°50 P-1-50 Txt-1-50 Idx-1-50 Tri-1-50 C-1-50
51 200 UTF-8 n°51 P-1-51 Txt-1-51 Idx-1-51 Tri-1-51 C-1-51

En persan

No Http Code URL Page Aspirée Encodage Text Dump Text Propre Index Bigram Contexte Contexte HTML
2 200 Voir la page 2-2 UTF-8 2-2 TP-2-2 Idx-2-2 BG-2-2 CT-2-2 CT-HTML-2-2
3 200 Voir la page 2-3 UTF-8 2-3 TP-2-3 Idx-2-3 BG-2-3 CT-2-3 CT-HTML-2-3
4 200 Voir la page 2-4 UTF-8 2-4 TP-2-4 Idx-2-4 BG-2-4 CT-2-4 CT-HTML-2-4
5 200 Voir la page 2-5 UTF-8 2-5 TP-2-5 Idx-2-5 BG-2-5 CT-2-5 CT-HTML-2-5
6 200 Voir la page 2-6 UTF-8 2-6 TP-2-6 Idx-2-6 BG-2-6 CT-2-6 CT-HTML-2-6
7 200 Voir la page 2-7 UTF-8 2-7 TP-2-7 Idx-2-7 BG-2-7 CT-2-7 CT-HTML-2-7
8 200 Voir la page 2-8 UTF-8 2-8 TP-2-8 Idx-2-8 BG-2-8 CT-2-8 CT-HTML-2-8
9 200 Voir la page 2-9 UTF-8 2-9 TP-2-9 Idx-2-9 BG-2-9 CT-2-9 CT-HTML-2-9
10 200 Voir la page 2-10 UTF-8 2-10 TP-2-10 Idx-2-10 BG-2-10 CT-2-10 CT-HTML-2-10
11 200 Voir la page 2-11 UTF-8 2-11 TP-2-11 Idx-2-11 BG-2-11 CT-2-11 CT-HTML-2-11
12 200 Voir la page 2-12 UTF-8 2-12 TP-2-12 Idx-2-12 BG-2-12 CT-2-12 CT-HTML-2-12
13 200 Voir la page 2-13 UTF-8 2-13 TP-2-13 Idx-2-13 BG-2-13 CT-2-13 CT-HTML-2-13
14 200 Voir la page 2-14 2-14 TP-2-14 Idx-2-14 BG-2-14 CT-2-14 CT-HTML-2-14
15 200 Voir la page 2-15 UTF-8 2-15 TP-2-15 Idx-2-15 BG-2-15 CT-2-15 CT-HTML-2-15
16 200 Voir la page 2-16 UTF-8 2-16 TP-2-16 Idx-2-16 BG-2-16 CT-2-16 CT-HTML-2-16
17 200 Voir la page 2-17 UTF-8 2-17 TP-2-17 Idx-2-17 BG-2-17 CT-2-17 CT-HTML-2-17
18 200 Voir la page 2-18 UTF-8 2-18 TP-2-18 Idx-2-18 BG-2-18 CT-2-18 CT-HTML-2-18
19 200 Voir la page 2-19 UTF-8 2-19 TP-2-19 Idx-2-19 BG-2-19 CT-2-19 CT-HTML-2-19
21 200 Voir la page 2-21 UTF-8 2-21 TP-2-21 Idx-2-21 BG-2-21 CT-2-21 CT-HTML-2-21
22 200 Voir la page 2-22 UTF-8 2-22 TP-2-22 Idx-2-22 BG-2-22 CT-2-22 CT-HTML-2-22
23 200 Voir la page 2-23 UTF-8 2-23 TP-2-23 Idx-2-23 BG-2-23 CT-2-23 CT-HTML-2-23
24 200 Voir la page 2-24 UTF-8 2-24 TP-2-24 Idx-2-24 BG-2-24 CT-2-24 CT-HTML-2-24
25 200 Voir la page 2-25 UTF-8 2-25 TP-2-25 Idx-2-25 BG-2-25 CT-2-25 CT-HTML-2-25
26 200 Voir la page 2-26 UTF-8 2-26 TP-2-26 Idx-2-26 BG-2-26 CT-2-26 CT-HTML-2-26
27 200 Voir la page 2-27 UTF-8 2-27 TP-2-27 Idx-2-27 BG-2-27 CT-2-27 CT-HTML-2-27
28 200 Voir la page 2-28 UTF-8 2-28 TP-2-28 Idx-2-28 BG-2-28 CT-2-28 CT-HTML-2-28
29 200 Voir la page 2-29 UTF-8 2-29 TP-2-29 Idx-2-29 BG-2-29 CT-2-29 CT-HTML-2-29
31 200 Voir la page 2-31 UTF-8 2-31 TP-2-31 Idx-2-31 BG-2-31 CT-2-31 CT-HTML-2-31
32 200 Voir la page 2-32 UTF-8 2-32 TP-2-32 Idx-2-32 BG-2-32 CT-2-32 CT-HTML-2-32
33 200 Voir la page 2-33 UTF-8 2-33 TP-2-33 Idx-2-33 BG-2-33 CT-2-33 CT-HTML-2-33
34 200 Voir la page 2-34 UTF-8 2-34 TP-2-34 Idx-2-34 BG-2-34 CT-2-34 CT-HTML-2-34
35 200 Voir la page 2-35 UTF-8 2-35 TP-2-35 Idx-2-35 BG-2-35 CT-2-35 CT-HTML-2-35
36 200 Voir la page 2-36 UTF-8 2-36 TP-2-36 Idx-2-36 BG-2-36 CT-2-36 CT-HTML-2-36
37 200 Voir la page 2-37 UTF-8 2-37 TP-2-37 Idx-2-37 BG-2-37 CT-2-37 CT-HTML-2-37
39 200 Voir la page 2-39 UTF-8 2-39 TP-2-39 Idx-2-39 BG-2-39 CT-2-39 CT-HTML-2-39
40 200 Voir la page 2-40 UTF-8 2-40 TP-2-40 Idx-2-40 BG-2-40 CT-2-40 CT-HTML-2-40
41 200 Voir la page 2-41 UTF-8 2-41 TP-2-41 Idx-2-41 BG-2-41 CT-2-41 CT-HTML-2-41
42 200 Voir la page 2-42 UTF-8 2-42 TP-2-42 Idx-2-42 BG-2-42 CT-2-42 CT-HTML-2-42
43 200 Voir la page 2-43 UTF-8 2-43 TP-2-43 Idx-2-43 BG-2-43 CT-2-43 CT-HTML-2-43
44 200 Voir la page 2-44 UTF-8 2-44 TP-2-44 Idx-2-44 BG-2-44 CT-2-44 CT-HTML-2-44
45 200 Voir la page 2-45 UTF-8 2-45 TP-2-45 Idx-2-45 BG-2-45 CT-2-45 CT-HTML-2-45
47 200 Voir la page 2-47 UTF-8 2-47 TP-2-47 Idx-2-47 BG-2-47 CT-2-47 CT-HTML-2-47
48 200 Voir la page 2-48 UTF-8 2-48 TP-2-48 Idx-2-48 BG-2-48 CT-2-48 CT-HTML-2-48
50 200 Voir la page 2-50 UTF-8 2-50 TP-2-50 Idx-2-50 BG-2-50 CT-2-50 CT-HTML-2-50
51 200 Voir la page 2-51 UTF-8 2-51 TP-2-51 Idx-2-51 BG-2-51 CT-2-51 CT-HTML-2-51
52 200 Voir la page 2-52 UTF-8 2-52 TP-2-52 Idx-2-52 BG-2-52 CT-2-52 CT-HTML-2-52
53 200 Voir la page 2-53 UTF-8 2-53 TP-2-53 Idx-2-53 BG-2-53 CT-2-53 CT-HTML-2-53
54 200 Voir la page 2-54 UTF-8 2-54 TP-2-54 Idx-2-54 BG-2-54 CT-2-54 CT-HTML-2-54
55 200 Voir la page 2-55 UTF-8 2-55 TP-2-55 Idx-2-55 BG-2-55 CT-2-55 CT-HTML-2-55
56 200 Voir la page 2-56 UTF-8 2-56 TP-2-56 Idx-2-56 BG-2-56 CT-2-56 CT-HTML-2-56

En turc

#HTTPURLEncodagePage aspiréeTexte brutIndexBigrammesContxtsContextesFréq. motif
1200Voir la pageUTF-83-1.html3-1.txtidx-3-1bg-3-1ctxt-3-1ctxte-3-1119
2200Voir la pageUTF-83-2.html3-2.txtidx-3-2bg-3-2ctxt-3-2ctxte-3-28
3200Voir la pageUTF-83-3.html3-3.txtidx-3-3bg-3-3ctxt-3-3ctxte-3-38
4200Voir la page3-4.html3-4.txtidx-3-4bg-3-4ctxt-3-4ctxte-3-42
5200Voir la pageUTF-83-5.html3-5.txtidx-3-5bg-3-5ctxt-3-5ctxte-3-525
6200Voir la pageUTF-83-6.html3-6.txtidx-3-6bg-3-6ctxt-3-6ctxte-3-644
7200Voir la pageUTF-83-7.html3-7.txtidx-3-7bg-3-7ctxt-3-7ctxte-3-730
8200Voir la pageUTF-83-8.html3-8.txtidx-3-8bg-3-8ctxt-3-8ctxte-3-819
9200Voir la pageUTF-83-9.html3-9.txtidx-3-9bg-3-9ctxt-3-9ctxte-3-9146
10200Voir la pageUTF-83-10.html3-10.txtidx-3-10bg-3-10ctxt-3-10ctxte-3-1011
11200Voir la pageUTF-83-11.html3-11.txtidx-3-11bg-3-11ctxt-3-11ctxte-3-1148
12200Voir la pageUTF-83-12.html3-12.txtidx-3-12bg-3-12ctxt-3-12ctxte-3-1234
13200Voir la pageUTF-83-13.html3-13.txtidx-3-13bg-3-13ctxt-3-13ctxte-3-1323
14200Voir la pageUTF-83-14.html3-14.txtidx-3-14bg-3-14ctxt-3-14ctxte-3-1414
15200Voir la pageUTF-83-15.html3-15.txtidx-3-15bg-3-15ctxt-3-15ctxte-3-1516
16200Voir la page3-16.html3-16.txtidx-3-16bg-3-16ctxt-3-16ctxte-3-1626
17200Voir la pageUTF-83-17.html3-17.txtidx-3-17bg-3-17ctxt-3-17ctxte-3-1713
18200Voir la pageUTF-83-18.html3-18.txtidx-3-18bg-3-18ctxt-3-18ctxte-3-185
19200Voir la page3-19.html3-19.txtidx-3-19bg-3-19ctxt-3-19ctxte-3-1919
20200Voir la pageUTF-83-20.html3-20.txtidx-3-20bg-3-20ctxt-3-20ctxte-3-2040
21200Voir la pageUTF-83-21.html3-21.txtidx-3-21bg-3-21ctxt-3-21ctxte-3-2118
22200Voir la pageUTF-83-22.html3-22.txtidx-3-22bg-3-22ctxt-3-22ctxte-3-2218
23200Voir la pageISO-8859-93-23.html3-23.txtidx-3-23bg-3-23ctxt-3-23ctxte-3-2318
24200Voir la pageUTF-83-24.html3-24.txtidx-3-24bg-3-24ctxt-3-24ctxte-3-2410
25200Voir la pageUTF-83-25.html3-25.txtidx-3-25bg-3-25ctxt-3-25ctxte-3-2520
26200Voir la pageUTF-83-26.html3-26.txtidx-3-26bg-3-26ctxt-3-26ctxte-3-2612
27200Voir la pageUTF-83-27.html3-27.txtidx-3-27bg-3-27ctxt-3-27ctxte-3-2740
28200Voir la pageUTF-83-28.html3-28.txtidx-3-28bg-3-28ctxt-3-28ctxte-3-2827
29200Voir la pageUTF-83-29.html3-29.txtidx-3-29bg-3-29ctxt-3-29ctxte-3-2936
30200Voir la pageUTF-83-30.html3-30.txtidx-3-30bg-3-30ctxt-3-30ctxte-3-3019
31200Voir la pageUTF-83-31.html3-31.txtidx-3-31bg-3-31ctxt-3-31ctxte-3-3125
32200Voir la page3-32.html3-32.txtidx-3-32bg-3-32ctxt-3-32ctxte-3-321
33200Voir la pageUTF-83-33.html3-33.txtidx-3-33bg-3-33ctxt-3-33ctxte-3-3328
34200Voir la pageUTF-83-34.html3-34.txtidx-3-34bg-3-34ctxt-3-34ctxte-3-3421
35200Voir la pageUTF-83-35.html3-35.txtidx-3-35bg-3-35ctxt-3-35ctxte-3-350
36200Voir la pageUTF-83-36.html3-36.txtidx-3-36bg-3-36ctxt-3-36ctxte-3-368
37200Voir la pageUTF-83-37.html3-37.txtidx-3-37bg-3-37ctxt-3-37ctxte-3-3720
38200Voir la pageUTF-83-38.html3-38.txtidx-3-38bg-3-38ctxt-3-38ctxte-3-3845
39200Voir la pageUTF-83-39.html3-39.txtidx-3-39bg-3-39ctxt-3-39ctxte-3-3931
40200Voir la pageUTF-83-40.html3-40.txtidx-3-40bg-3-40ctxt-3-40ctxte-3-407
42200Voir la pageUTF-83-42.html3-42.txtidx-3-42bg-3-42ctxt-3-42ctxte-3-4217
43200Voir la pageUTF-83-43.html3-43.txtidx-3-43bg-3-43ctxt-3-43ctxte-3-4320
44200Voir la pageUTF-83-44.html3-44.txtidx-3-44bg-3-44ctxt-3-44ctxte-3-4412
45200Voir la pageUTF-83-45.html3-45.txtidx-3-45bg-3-45ctxt-3-45ctxte-3-453
46200Voir la pageUTF-83-46.html3-46.txtidx-3-46bg-3-46ctxt-3-46ctxte-3-4610
47200Voir la pageUTF-83-47.html3-47.txtidx-3-47bg-3-47ctxt-3-47ctxte-3-479
48200Voir la pageUTF-83-48.html3-48.txtidx-3-48bg-3-48ctxt-3-48ctxte-3-48176
49200Voir la pageUTF-83-49.html3-49.txtidx-3-49bg-3-49ctxt-3-49ctxte-3-4914

Avertissement

L'essentiel du travail pour ce projet a porté sur la préparation du script, et les données utilisées reposent sur un échantillon de pages web à la représentativité limitée. Les résultats obtenus dans le contexte d'un tel « coup d'essai » n'égalent donc ni fiabilité ni portée ceux que livrerait l'étude approfondie d'un corpus plus systématiquement constitué.


Nuage de mots

L'utilisation du « nuage de mots » ne permet guère plus que la concrétisation d'hypothèses de travail.

Ainsi par exemple ci-dessous dans la version turque traduite en français, où le code couleur adopté (à partir de l'outil en ligne Word Art) symbolise : en vert, certains déclinaisons du nom donné au kebab ; en bleu, les termes de description matérielle et gustative du plat ; en violet, les termes de qualification des métiers et des façons de faire le kebab ; en rouge, certains des noms de lieu (quartier, ville, région, pays) invoqués pour qualifier voire légitimer une façon de faire.


Nuage de mots en Persan

Nuage de mots en japonais et traduction en français

iTrameur

L'outil en ligne iTrameur fournit d'utiles moyens de visualisation des concordances des termes recherchés... :


iTrameur sur le corpus persan

... ainsi que des cooccurrences de ces termes :



En japonais

Conclusions

Il est important de rappeler ici que le choix de nos URL de travail a lui-même été accompagné d'hypothèses préalables qui ont orienté la sélection. Il n'est par conséquent pas étonnant que les premiers relevés textométriques semblent (en partie au moins) confirmer ces mêmes hypothèses : prédominance d'un répertoire de préparation culinaire, accent sur la localité (ou la régionalité) et la dimension historique, enjeux de légitimation et de certification. Il faudra pousser plus loin l'analyse de données textuelles pour espérer sortir de la boucle dans laquelle la constitution des données elle-même nous a enfermés.

Crédits

Auteur·e·s

Megumi ADACHI, diplômée de sciences du langage


Matiullah AFZAL, diplômé de TAL


Marc AYMES, diplômé d'histoire, enseignant-chercheur (CNRS / EHESS)



Droits photographiques

© Serge Fleury / Université Sorbonne Nouvelle