Séance pédagogique sur "Les moteurs de recherche" à l'aide d'un script Python (David Fialaire _ Aout 2019)
Téléchargements
ATTENTION : Mes scripts ont été réalisés en Python dans l’environnement Anaconda. 
Anaconda, c’est du Python avec des bibliothèques plus poussées pour permettre des traitements (traitements de données par exemple) plus lourd. 
Par ailleurs l’IDLE de Python dans Anaconda se nomme Spider, et il est génial car il possède un explorateur de variables ce qui est INDISPENSABLE pour faire des activités sur le thème « Données » de l’enseignement SNT. 
Télécharger et installer Anaconda n’est pas compliqué du tout !  
Il suffit d’aller à cette adresse : https://www.anaconda.com/distribution/ 
Normalement, le téléchargement dure environ 1h et vous récupérez un fichier en .exe 
Ensuite, vous double cliquez sur ce fichier en .exe pour l’installer. 
ATTENTION : je vous conseille de l’installer en mode administrateur, ce qui vous permettra par la suite d’utiliser la console Python (dans l’IDLE Spider !!) pour installer d’autre sous- bibliothèque. 
Pour ma part, j’ai mis ce fichier .exe sur une clé USB pour pouvoir le coller sur les ordis des élèves de 2nd : ça prend 15 secondes à coller, puis 20 minutes en classe entière d’installation tous en même temps pendant qu’on fait autre chose… 
 Téléchargement de Word Scan : 
Word Scan nécessite un module particulier pour lire les documents Word.docx : c’est pourquoi, vous devez installer ce module. Dans la console Spider, tapez : pip install python-docx  
Résumé : 

Bonjour à tous, 

j'ai créé, en Python 3.7, un moteur de recherche de mots dans des documents word glissés dans un répertoire précis. 

Comment mieux enseigner un moteur si ce n'est en le déconstruisant et en expliquant chacune de ses pièces... 

Donc si vous avez X documents Word, que vous ne souhaitez pas les lire, mais que vous devez trouver rapidement lesquels contiennent Y mots, mon fichier Python va tout d'abord créé l'index de vos X documents word, puis il fera une recherche dans cet index des Y mots... et vous donnera une liste ordonnée des meilleurs documents Word à lire... 

(C'est quasiment ce que fait le moteur Google, sauf que ce n'est pas dans Internet mais dans un répertoire local... C'est donc TOP pour nos élèves 2.0 !!!) 

Il y a 2 pré-requis à son utilisation : 
1) Vous devez installer le module python-docx : donc aller dans l'invite de commande, et écrire : pip install python-docx 
2) Vous devez glisser les documents Word dans un dossier précis dont l'adresse : C/... devra être copié/collé dans mon programme python à 2 lignes différentes. 

Ps : Petite cerise sur le gâteau, mon programme permet aussi d'avoir un résumé de ce dont parle un texte Word précis (sans le lire), en retirant, préalablement, tout un tas de mots inutiles (je, tu , il de,d'un,dans..etc) 

Ps2 : j'ai aussi créé des sous-version plus courte de chaque partie du programme où il explique précisément ce qu'il est en train de faire étape par étape... 

A+ 
David Fialaire, Lycée Libergier, Reims, France. 

III. Analyse par ‘World-Scan’ : un moteur de recherche de mots dans des documents Word situés dans un dossier précis de notre ordinateur :
 
Préambule : Vous devez avoir installé sur votre ordinateur : 1) Python, 2) l’IDLE Python, ainsi que 3) le module de Python nommé python-docx (dans l’invite de commande, taper : pip install python-docx). 
 
1) Installation du moteur de recherche complet ‘World-Scan.py’
  Récupérez World-Scan.py et le placer dans un dossier de votre choix que vous nommerez ‘Moteur’ 
  Créez un dossier ‘Docs Word à analyser ‘, le remplir avec les documents Word (présents dans le lien en haut de cette page --> documents adaptées à Ma séance) et le placer dans le même dossier ‘Moteur’ 
   Ouvrir (en double cliquant) l’IDLE Python ; Faire File --> Open --> Retrouvez et ouvrez World-Scan.py. 
  Modifiez les lignes de codes 49 et 338 (lignes inscrites en bas à droite de l’écran Python) du programme World-Scan.py de façon à correctement renseigner l’adresse du dossier ‘Docs Word à analyser ‘ : 
 ==> Comment récupérer l’adresse de ce dossier ‘Docs Word à analyser ‘ ? 
* Ouvrez le dossier ‘Docs Word à analyser ‘ ; 
* Au-dessus des textes Words déjà présents, se trouve une barre d’adresse… 
* Faîtes un clic droit dans cette barre d’adresse et cliquez sur « copier l’adresse » ; 
* Collez cette nouvelle adresse, entre les guillemets, à la place de la précédente dans les lignes 49 et 338 ; 
* Attention : Vous devrez inverser les antislash « » en slash « / » pour que l’adresse soit comprise par Python. 
* Sauvegardez World-Scan.py en faisant un ‘Ctrl s’, puis lancez le programme en appuyant sur la touche F5 de votre clavier. 

2) Prise en main du moteur de recherche complet ‘World-Scan.py’ : 

Attention : ne laissez pas les documents Word à analyser ouverts lors de l’utilisation du programme World-Scan sinon le programme plantera. 
  A la question si vous souhaitez enlevez tous les pronoms personnels (je, tu, il…), les mots de liaison (mais, où, et, donc…)…, tapez ‘o’ (pour oui ; ... plus tard, on gardera ces mots…) ; 
 A la question si vous souhaitez voir les textes Word à indexer, tapez ‘n’ (pour non), car parfois les textes sont trop gros pour être visualisés : cela n’empêche pas l’indexation ; 

 Recherche d’un mot : 
 Dans le menu, choisissez le choix 1 : Recherche d’1 mot : 
 Tapez le mot ‘moteur’ 
 Combien de documents sont trouvés sur combien au total ? :  
 Les résultats de la recherche sont-ils dans un ordre précis ? Si oui, lequel ? : 
 Synthèse d’un texte : 
 Il serait intéressant de comparer le contenu du premier résultat de notre recherche ‘Comment fonctionne mon automobile’ avec le contenu du 4ème document non mentionné précédemment : « Les fleurs de saison » : 
 Dans le menu, choisissez le choix 3 : Sujets principaux d’un texte : 
 Choisissez le texte  :’ Comment fonctionne mon automobile’ ; 
 Tapez ‘n’ pour ne pas apercevoir le texte en entier, 
• De quoi parle essentiellement le document ? : moteur 
• Tapez ‘o’ pour voir les autres mots apparaissant souvent (forte occurrence) ; 
 Tapez ‘o’ jusqu’à apercevoir les mots présent qu’une fois dans ce texte .. 
 Remontez l’écran pour voir l’ensemble des résultats d’occurrences : Pour ce texte, Les premiers résultats vous permettent-ils d’imaginer le contenu de ce texte sans l’avoir lu ? : Faîtes un résumé d’une phrase : 

 
A partir de quelle occurrence, les mots apparaissant deviennent superflus pour imaginer son contenu sans l’avoir lu ?
 
A présent, choisissez le texte  ‘Les fleurs de saison’ pour réaliser sa synthèse ; 
• De quoi parle essentiellement le document ? : 
• Combien d’occurrences maximales a-t-on pour ce texte ? :  
• Qu’est-ce que nous renseigne ce faible nombre d’occurrence ? : 


Mots à retirer : 
 Arrêtez le programme en faisant : Ctrl C ; 
 Relancez le programme World-Scan.py en mettant à l’écran les lignes de codes, puis en appuyant sur la touche F5 ; 
 Cette fois-ci, nous allons répondre ‘n’ (non) pour conserver les mots de liaisons, de coordinations… à notre index ; 
 Dans le menu, choisissez le choix N°3 : Sujets principaux d’un texte : 
 Choisissez le texte  :’ Comment fonctionne mon automobile’ ; 
• Tapez ‘o’ pour apercevoir le texte en entier, 
 De quoi parle essentiellement le document, et combien de fois ? :  
 Puis :
 Puis :  
 Puis : 
 Est-ce que ces résultats de synthèse sont identiques à ceux réalisés précédemment avec le même texte ? 
 Que devront donc faire les moteurs de recherche sur Internet concernant les listes de mots récupérés sur les pages Web ? 

 
Quels sont les inconvénients de tous ces mots ‘inutiles’ pour les entreprises comme Google.. ? : 


Recherche de plusieurs mots dans plusieurs textes Word : 

Arrêtez de nouveau le programme, et relancez le pour éliminer les mots ‘inutiles’ de l’index réalisé ; 
o Faîtes le choix N°2 dans le menu ; 
 Tapez les mots : moteur voiture (en 1 seule fois séparé par un espace) 
• Que dois faire le programme (ou un moteur de recherche sur Internet) pour réaliser une recherche sur « moteur » et une autre sur « voiture », et non pas sur « moteur voiture » ? :
 
• Les mots ‘moteur’ et ‘voiture’ se retrouvent t-ils dans le même nombre de documents ? Précisez les nombres : 

• Quel est le nom du document Word qui ne contient qu’un seul des deux mots ?
• Quel est le classement de ce document Word dans les résultats ?  
• Est-ce que le classement final des résultats de cette recherche vous semble convenable ? justifier :
 
• Notez le score du document en tête de classement :  
 Réalisez une nouvelle recherche sur : voiture moteur … Est-ce que les résultats et leurs chiffres ont changé ? 

• Est-ce que ce type de différence de recherche est pris en compte par Google ? 
 Réalisez une nouvelle recherche sur : voiture moteur moteurs ; Que remarquez vous d’interressant ? 

 Qu’est-ce que cela vous suggère comme stratégie sans doute utilisée par les moteurs de recherche sur Internet ? 


3) Les fonctionnalités minimales d’un moteur de recherche : programmation 
 
a. La commande split sert à … _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  

 Dans l’IDLE de python, faire File, Open, et ouvrir le fichier nommé ‘Fonction split.py’ (à télécharger plus haut dans cette page Web) : faire F5 pour le lancer ; 
 Tester toutes les fonctionnalités de ce petit programme, puis faire Ctrl C pour l’interrompre ; 
o A quoi sert la commande ‘print’ : 

 Rajoutez une ligne au programme pour qu’il écrive « Ce programme est modifié par votre prénom votre nom » 
o A quoi sert la commande ‘input’ :

o La ligne 18 est un print. A quoi sert le ‘ ,rep ‘ placé après les guillemets ? 

o Quelle est la différence entre le contenu de la variable rep et la variable repo ? 

 Donc la commande split sert à : 

 Dans le programme World-Scan.py’, la commande ‘split’ se trouve (Ctrl F) aux lignes :  

b. Les commandes replace, lower et sort servent à … _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  
 Dans l’IDLE de python, faire File, Open, et ouvrir le fichier nommé ‘Fonction_replace_lower_sort (à télécharger plus haut dans cette page Web) : faire F5 pour le lancer ; 
 Testez plusieurs fois le programme pour répondre aux questions suivantes : 
 Modifiez le programme en plaçant * entre les guillemets ligne 15, sauvegardez (Ctrl s), et re-testez le (F5) ; 
 Donc ici, la commande replace() sert à 

 Retirez l’étoile rajoutée précédemment, et sauvegardez. 

 Pourquoi y a-t-il écrit : punctuation[i] .. à quoi sert le i ? 

 De quelle manière varie le i ? ==> Faîtes en sorte d’afficher les valeurs de i entre la ligne 14 et la ligne 15 pour répondre à la question : écrire en ligne 15 : print(« i= »,i) ;
 
 A quoi sert la commande lower() ? 

 En quoi est-ce important d’utiliser cette commande lower ? 

 A quoi sert la commande sort() ? 

 Donc, les commandes replace, split, lower et sort sur un texte d’une page internet permettront de : 

 

c. La création de l’index (opération réalisée par des spider pour Google) :
 
 Observer la création d’un index pour des textes trop gros serait trop compliqué… 
 
 Vous allez donc pouvoir observer, pendant un court instant la création de cet index avec les deux premiers documents Word ("Amour" et "Attention") de notre liste qui sont des textes très courts (puisque leur titre commence par un ‘a’, ils seront traités en premier pour construire l’index ! ). 
 
 Dans l’IDLE de python, faire File, Open, et ouvrir le fichier nommé ‘Création_index.py ‘ (à télécharger en haut de cette page Web) : faire F5 pour le lancer en répondant aux questions au fur et à mesure : 
 Que se passe-t-il, au niveau de l’index, lors de l’analyse du 1er document ‘Amour.docx’, lorsque le programme rencontre 2 fois le même mot : 

 Que se passe-t-il, au niveau de l’index, lors de l’analyse du 2ème document ‘Attention.docx’, lorsque le programme rencontre une nouvelle fois un même mot présent dans le 1er document : 

 Voici, juste en dessous, un morceau de programme en Python, et un poil plus bas, son résultat : 
 
liste=[1,2,7,15,29] 
print(« ma liste= »,liste) 
var=11 
print(« ma variable= »,var) 
liste.append(var) 
print(« ma nouvelle liste= »,liste) 
 
 
<<< 
ma liste = [1,2,7,15,29] 
ma variable= 11 
ma nouvelle liste = [1,2,7,15,29] 


 Quelle est la commande en Python qui permettrait de rajouter des éléments dans l’index ? Retrouvez les lignes contenant cette commande dans le bloc de code qui gère la création de l’index : 


d. L’utilisation de l’index pour générer des tableaux de résultats pour répondre à la requête :  

 Dans l’IDLE de python, faire File, Open, et ouvrir le fichier nommé ‘Matrice_calcul_DocRank ‘  (à télécharger plus haut dans cette page Web) : faire F5 pour le lancer … 
 Tapez ‘o’, puis ‘n’, puis ’2’, puis les mots : moteur moteurs recherche voiture ; 

 Dans les tableaux de résultats, à quoi correspondent les colonnes ? : 

 Dans les tableaux de résultats, à quoi correspondent les lignes ? : 

 A quoi correspondent les chiffres dans les tableaux de résultats ? : 

o Quel code permet de créer un tableau vide ? 

o Comment rempli-t-on une case du tableau pour faire un nouveau tableau ?