École de technologie supérieure INF-130 Travail pratique #3 Travail en équipe Création d'un nuage de mots-clés Par : Francis Bourdeau Utilisé par : Francis Bourdeau, Frédérick Henri et Hugues Saulnier Remise à la 13 e semaine 1 Objectifs - Se familiariser avec l'utilisation de type défini - Introduire l'utilisation d'excel et des fichiers textes comme médium. - Mettre en pratique l approche «Top-Down». 2 Description du problème : Les nuages de mots-clés Vous souhaitez dégager les thèmes importants d'un texte et pour ce faire vous décidez de les visualiser à l'aide d'un nuage de mots-clés 1. Dans cet outil, la taille de la police de chaque mot représente l'importance relative de ce mot par rapport aux autres thèmes importants du texte analysé. Afin de dégager les thèmes importants, les mots les plus fréquents d'une langue sont ignorés lors de l'analyse du texte. 3 Description de l application L application que vous devez développer comporte trois fonctions principales : Ce bouton permet d'effacer le nuage de mots-clés. 1 https://fr.wikipedia.org/wiki/nuage_de_mots-cl%c3%a9s. INF130 Ordinateurs et programmation Hiver 2017 / Page 1
Ce bouton permet de retrouver les thèmes importants d'un texte et de leur attribuer une position initiale (les mots seront tous superposés). Ce bouton permet de modifier la position des thèmes afin de créer l'effet de nuage. 4 Description des données de l'application Deux types définis seront requis pour conserver les données de l'application : t_dictionnaire et t_mot_cle. Un t_dictionnaire est un enregistrement qui conserve le contenu d'un fichier texte. On y retrouve le nombre de mots dans le texte, un tableau contenant chaque mot (sans répétition) et un autre tableau contenant la fréquence de chacun des mots. Un t_mot_clé est également un enregistrement qui conserve des informations sur les mots clés d'un nuage. Ces données sont conservées dans une table (dans une feuille Excel). Chaque colonne de ladite table est un champ d'un t_mot_clé. INF130 Ordinateurs et programmation Hiver 2017 / Page 2
5 Description des modules 5.1 Description du module m_chaine Ce module offre 5 sous-programmes publics permettant de manipuler des chaines de caractères. indice_chaine : Cette fonction reçoit une chaine de caractères et un tableau de chaines de caractères. Elle retourne l'indice de la case du tableau qui contient la chaine reçue. Lorsque le tableau ne contient pas la chaine reçue, la fonction retourne -1. indice_premier_espace : Cette fonction reçoit une chaine de caractères et retourne l'indice du premier espace contenu dans la chaine (notons que le premier caractère porte l indice 1). Lorsque la chaine ne contient pas d'espace, la fonction retourne -1. extraire_premier_mot : Cette fonction reçoit une chaine de caractères par référence. Elle retourne le premier mot contenu dans la chaine (les caractères qui précèdent le premier espace) et retire de la chaine reçue ce mot ainsi que le blanc qui le suit. Si la chaine ne contient qu un seul mot (ne contient pas d espace), alors la fonction retourne la chaine reçue et la vide ensuite en lui assignant une chaine vide. retirer_ponctuation : Cette procédure reçoit une chaine de caractères par référence. Elle retire de cette chaine tous les caractères qui sont des signes de ponctuation (qui sont présents dans la chaine SIGNES_PONCTUATIONS). tableau_est_vide : Cette fonction reçoit un tableau de chaines de caractères. Elle retourne True lorsque le tableau est vide (n a pas été redimensionné) et False s il n est pas vide. Cette fonction vous est offerte et vous ne devez pas la modifier. 5.2 Description du module m_dictionnaire Ce module définit le type t_dictionnaire tel que décrit à la section 4. Ce type nous servira à conserver les listes de mots communs dans une langue, de même que les mots du texte à analyser. Ce module offre 4 sous-programmes privés. ajouter_mot : Cette procédure reçoit un dictionnaire, un mot et la fréquence de ce mot dans un texte. Elle incrémente de 1 le nombre de mots contenu dans le dictionnaire. Ensuite, elle ajoute un élément à la liste des mots du dictionnaire et y insère le mot reçu. Enfin, elle ajoute un élément au tableau contenant la fréquence des mots du dictionnaire et y insère la fréquence reçue. permuter_mots : Cette procédure reçoit un dictionnaire, l'indice d'un premier mot dans le dictionnaire et l'indice d'un deuxième mot dans le dictionnaire. Elle permute les mots et leurs fréquences dans le dictionnaire. INF130 Ordinateurs et programmation Hiver 2017 / Page 3
traiter_chaine : Cette procédure reçoit un dictionnaire et une chaine de caractères. Elle retire tous les signes de ponctuation de la chaine. Par la suite, elle extrait chaque mot de la chaine et le traite (à l aide de la procédure qui suit) lorsque celui-ci n est pas une chaîne vide. traiter_mot : Cette procédure reçoit un mot (une chaîne de caractères) et un dictionnaire. Lorsque le mot reçu n'est pas présent dans le dictionnaire, la procédure l'y ajoute. Lorsque le mot s y trouve déjà, alors la procédure augmente de 1 sa fréquence. Ce module offre 6 sous-programmes publics. get_nb_mots : Cette fonction reçoit un dictionnaire et retourne son nombre de mots. get_frequence_mot : Cette fonction reçoit un dictionnaire et l indice d un mot (un entier dans l intervalle [1, get_nb_mots()]). Elle retourne la fréquence du mot à l indice spécifié. charger : Cette fonction reçoit un nom de fichier (incluant son chemin) et retourne le dictionnaire contenant chaque mot du fichier. Pour y parvenir, la fonction ouvre le fichier et traite celui-ci, ligne par ligne, jusqu'à ce que le marqueur de fin de fichier soit rencontré. La fonction s'assure de fermer le fichier. Il est à noter qu il n est pas nécessaire de vérifier que le fichier existe. filtrer : Cette fonction reçoit un dictionnaire et une fréquence minimale. Elle ajoute dans un nouveau dictionnaire tous les mots ayant une fréquence supérieure ou égale à la fréquence minimale reçue. La fonction retourne le nouveau dictionnaire ainsi créé. soustraire : Cette fonction reçoit deux dictionnaires. Elle ajoute dans un nouveau dictionnaire tous les mots du premier dictionnaire qui ne sont pas présents dans le second dictionnaire. Elle retourne le nouveau dictionnaire ainsi créé. trier : Cette procédure reçoit un dictionnaire et le trie en ordre décroissant de fréquence des mots. Pour y arriver, elle utilise l algorithme du tri par sélection : POUR chaque mot du dictionnaire BOUCLE On trouve le mot le plus fréquent qui n'a pas encore été trié On permute le mot courant avec le mot le plus fréquent FIN BOUCLE 5.3 Description du formulaire f_selection_fichiers Ce formulaire permet de sélectionner le fichier à analyser lors de la création du nuage de mots-clés. Il permet également de sélectionner la liste des mots communs à utiliser lors de l'analyse, de même que la fréquence minimale pour déterminer qu'un mot est un thème du fichier analysé. INF130 Ordinateurs et programmation Hiver 2017 / Page 4
Ce formulaire offre 5 sous-programmes publics. a_annuler : Cette fonction retourne True si l utilisateur a appuyé sur le bouton «Annuler» et False si ce n est pas le cas. initialiser : Cette procédure reçoit un tableau de chaines de caractères contenant la liste des fichiers à analyser et un tableau de chaines de caractères contenant les listes des mots communs de plusieurs langues. Elle efface le contenu des deux listes et remplit les deux listes avec le contenu des tableaux reçus. Elle assigne ensuite la valeur 5 à la toupie (ce qui correspond à la fréquence minimale par défaut, le minimum étant 1 et le maximum étant 30). obtenir_nom_fichier : Cette fonction retourne le nom du fichier à analyser sélectionné par l'utilisateur. obtenir_nom_liste_mots_communs : Cette fonction retourne le nom du fichier contenant la liste des mots communs sélectionné par l'utilisateur. obtenir_fréquence_minimal : Cette fonction retourne la fréquence minimale entrée par l'utilisateur. Ce formulaire contient des sous-programmes privés. Vous devez déterminer par vous-mêmes les sous-programmes privés nécessaires à l écriture de ce formulaire. Ce formulaire gère 4 évènements. Clic sur le bouton «Annuler» : Cet évènement prend note du fait que l utilisateur a appuyé sur le bouton «Annuler» en utilisant une variable globale et il dissimule le formulaire. INF130 Ordinateurs et programmation Hiver 2017 / Page 5
UserForm_QueryClose : Cet événement annule la fermeture du formulaire, prend note que l utilisateur a appuyé sur le bouton «Annuler» et dissimule le formulaire. Clic sur la toupie : Cet événement met à jour la valeur de l intitulé affichant la fréquence minimale, en y inscrivant la valeur de la toupie. Clic sur le bouton «Continuer» : Cet évènement affiche un message d'erreur lorsque l'un des cas suivants est rencontré : Aucun nom de fichier à analyser n'est sélectionné; Aucun nom de fichier contenant la liste des mots communs n'est sélectionné. Lorsque toutes les saisies sont valides, le formulaire prend note que l'utilisateur n'a pas appuyé sur le bouton «Annuler» et dissimule le formulaire. 5.4 Description du module m_type_t_mot_cle Ce module définit le type t_mot_cle, tel que décrit à la section 4, qui servira à conserver les informations sur les mots clés qui apparaissent dans le nuage. Il ne recèle aucun sous-programme. 5.5 Description du module m_interface Ce module vous est offert et vous ne devez pas le modifier. Il offre 4 sous-programmes publics : effacer_nuage_etiquettes : cette procédure retire toutes les étiquettes (les mots-clés) qui se trouvent dans la feuille Excel où l on retrouve le nuage de mots-clés. creer_nuage_etiquettes : cette procédure crée les étiquettes dans la feuille Excel en les superposant. modifier_position_etiquettes : cette procédure attend un tableau de t_mot_cle et déplace les étiquettes dans la feuille Excel. obtenir_informations_etiquettes : cette fonction retourne un tableau de t_mot_cle contenant les caractéristiques des étiquettes présentes dans la feuille Excel. 5.6 Description du module m_bd_resultat Ce module gère la table des mots-clés visible à la section 4. Ce module offre 3 sous-programmes publics. charger : cette fonction n attend aucun paramètre et retourne un tableau de t_mot_cle contenant tous les mots clés présents dans la table. Si la table est vide, alors la fonction retourne un tableau vide. INF130 Ordinateurs et programmation Hiver 2017 / Page 6
ecrire : cette procédure reçoit un tableau de t_mot_cle et ajoute à la fin de la table tous les motsclés du tableau. effacer : cette procédure n attend aucun paramètre et retire tous les enregistrements présents dans la table. Ce formulaire contient des sous-programmes privés. Vous devez déterminer par vous-mêmes les sous-programmes privés nécessaires à l écriture de ce formulaire. 5.7 Description du module m_principal Ce module implémente les fonctionnalités de l'application. Il connaît les autres modules, mais n accède jamais directement au contenu d un enregistrement, au contenu d une feuille Excel ou encore à un contrôle dans le formulaire. Ce module offre 4 sous-programmes privés qui vous sont offerts et que vous ne devez pas modifier. taille_des_mots : Cette fonction reçoit un dictionnaire (déjà trier en ordre décroissant selon la fréquence) et elle retourne un tableau d'entiers contenant la taille de la police à employer pour chacun des mots. taille_mot : Cette fonction reçoit la fréquence d'un mot du texte analysé, la fréquence du mot le plus important dans le texte ainsi que la fréquence du mot le moins important dans le texte. Elle retourne la taille de la police du mot analysé. obtenir_nom_fichiers : Cette fonction reçoit une chaine de caractère représentant un répertoire. Elle retourne le nom de tous les fichiers présents dans le répertoire. modifier_position_mots : Cette procédure reçoit un tableau de t_mot_cle. Elle modifie les coordonnées des mots-clés reçus de façon à ce que les mots-clés ne soient plus superposés et prennent plutôt la forme d une étoile. Ce module offre 3 sous-programmes publics. reinitialiser_application : Cette procédure ne reçoit aucun paramètre. Elle efface le nuage d étiquettes, de même que les enregistrements inscrits dans la table. trouver_themes_fichier : Cette procédure ne reçoit aucun paramètre. Elle utilise l'algorithme suivant pour analyser un fichier et y découvrir ses mots-clés. 1. Elle obtient les noms de fichiers des textes pouvant être analysés 2. Elle obtient les noms de fichiers des listes contenant les mots communs d'une langue. 3. Elle initialise le formulaire et l'affiche. INF130 Ordinateurs et programmation Hiver 2017 / Page 7
4. Lorsque l'utilisateur appuie sur "Effectuer analyse" 5. Elle récupère les noms des fichiers sélectionnés par l'utilisateur, de même que la fréquence minimale choisie. 6. Elle charge le contenu de ces fichiers dans des dictionnaires. 7. Elle soustrait les mots communs du texte analysé. 8. Elle filtre le résultat de cette soustraction avec la fréquence sélectionnée. 9. Elle trie le résultat de filtre. 10. Si le dictionnaire résultant est vide Alors 11. Elle affiche un message. 12. Sinon 13. Elle calcule la taille de la police des mots-clés. 14. Elle efface le nuage d étiquettes. 15. Elle crée le nuage de mots-clés en se limitant à un maximum de 20 thèmes. 16. Elle obtient l'information concernant les mots-clés du nuage et les enregistre dans la table. placer_themes : Cette procédure ne reçoit aucun paramètre. Elle charge les enregistrements inscrits dans la table. Puis, elle calcule la position modifiée des mots-clés (afin d en faire un nuage), elle met à jour le nuage de mots-clés et elle enregistre l information dans la table. 6 Contraintes de l enseignant Votre programme devra respecter les contraintes suivantes : Il devra respecter les exigences de remise des travaux pratiques. D ailleurs, la qualité du code vaudra au moins autant de points que le fonctionnement du programme. À l exception du formulaire, il ne devra contenir aucune variable globale. La présence d une variable globale entraînera la perte de 25 % des points. À l exception de la fonction tableau_est_vide, il ne devra contenir aucun Goto. La présence de cette instruction entraînera la perte de 25 % des points. En cas de doute, n hésitez pas à consulter votre enseignant. INF130 Ordinateurs et programmation Hiver 2017 / Page 8