Ce projet a pour objectif d’explorer diverses techniques de recherche d’information en développant un moteur de recherche capable d’interroger une base d’articles scientifiques à partir de requêtes en langage naturel. Il s’inscrit dans le cadre de l’UV LO17 de l’Université de Technologie de Compiègne (UTC) et a été mené à travers six Travaux Dirigés distincts, de TD2 à TD7.
Le projet contients differents dossiers.
Ce dossier contient l’ensemble des fichiers sources du projet, notamment :
main_demo.py: (args:input_folder) Script principal à exécuter en premier. Il génère automatiquement les fichiers nécessaires au bon fonctionnement du moteur de recherche, qui sont ensuite stockés dans le dossierdata/.moteur.py: Permet d’effectuer des recherches directement via la ligne de commande, sans passer par l’interface graphique. Toutefois, il est recommandé d’utiliser plutôt l’interface graphique prévue pour faciliter l’utilisation.MainWindow.py: Contient le code de l’interface utilisateur (UI) du moteur de recherche.TD2.pyàTD7.py: Fichiers correspondant aux Travaux Dirigés des différentes séances, chacun regroupant le code spécifique à une étape d’apprentissage.asset/: Répertoire regroupant les ressources graphiques utilisées pour l’interface utilisateur (images, icônes, etc.).
Ce dossier contient les fichiers générés automatiquement à partir de l’exécution de main_demo.py. Ces fichiers sont indispensables au bon fonctionnement du moteur de recherche.
Ce dossier doit impérativement être ajouté à la racine du projet. Il n’est pas fourni avec le reste des fichiers en raison de son volume important.
Ce dossier contient tous les documents annexes au projet, notamment le rapport de projet au format PDF.
Il inclut également un dossier Illustrations qui regroupe différentes figures utiles à la compréhension du projet, ainsi que les images présentes dans le rapport, mais en meilleure résolution.
Le projet est compatible avec les systèmes d’exploitation Windows 10, Windows 11 et macOS.
Le projet a été développé et testé à 100% sous Python 3.9.13. Il est recommandé d’utiliser un environnement virtuel pour gérer les dépendances.
Voici la liste des principales bibliothèques Python utilisées dans ce projet :
| Bibliothèque | Version | Description |
|---|---|---|
| beautifulsoup4 | 4.11.1 | Analyse et extraction de données HTML/XML |
| black | 22.6.0 | Formatage automatique du code Python |
| dateparser | 1.2.1 | Analyse de dates en langage naturel |
| datetime | base | Manipulation de dates et d'heures (standard) |
| enum | base | Types énumérés (standard) |
| functools | base | Outils pour fonctions (standard) |
| lxml | 4.9.1 | Traitement XML et HTML performant |
| nltk | 3.7 | Traitement du langage naturel |
| numpy | 1.24.4 | Calcul scientifique et manipulation de tableaux |
| os | base | Fonctions système (standard) |
| pandas | 1.4.4 | Analyse et manipulation de données |
| platform | 4.3.6 | Informations sur la plateforme |
| pyqt5 | 5.15.9 | Interface graphique en Python |
| pylint | 2.14.5 | Analyse statique du code Python |
| regex | 2022.7.9 | Expressions régulières avancées |
| snowballstemmer | 2.2.0 | Stemming pour plusieurs langues |
| spacy | 3.8.3 | Traitement avancé du langage naturel |
| subprocess | base | Gestion des processus (standard) |
| sys | base | Accès aux variables système (standard) |
| time | base | Gestion du temps (standard) |
| tqdm | 4.64.1 | Barres de progression |
| typing | base | Indications de types (standard) |
IMPORTANT : Les modèles spacy utilisés sont les modèle small et large nommé fr_core_news_sm et fr_core_news_lg, ils sont à installer en même temps de spacy pour une bonne utilisation du programme.
Utilisez les commandes :
python -m spacy download fr_core_news_smet
python -m spacy download fr_core_news_lgLes modules marqués comme base font partie de la bibliothèque standard de Python.
IMPORTANT : Toutes les fonctions doivent être lancées depuis le dossier
srcafin d’assurer le bon fonctionnement des chemins relatifs. (cd src)
Voici les différentes étapes à suivre pour un test complet du projet.
- Cloner le repository dans le dossier de votre choix.
- IMPORTANT : Ajouter à la racine du projet le dossier
BULLETINScontenant les articles scientifiques au format ".htm". - Exécuter le fichier
_demo_.pypour générer le dossierdata/en renseignant pour l'argumentinput_folderle chemin fichierBULLETINScible. Essayez par exemple la commande :python main.py --input_folder BULLETINS_DEMO(Cette étape peut prendre quelques minutes.) - Utiliser
moteur.pypour saisir une requête et rechercher les articles correspondants. - Utiliser
MainWindow.pypour lancer l’interface graphique et effectuer des recherches plus conviviales.
Remarque :
L’exécution de main_demo.py génère une copie du dossier data/ appelée data_test/. Par la suite, le programme utilise le dossier data/ pré-généré afin d’éviter d’éventuels bugs liés à la génération des données.
Cela permet, en cas d’échec de la génération, d’utiliser malgré tout le moteur de recherche et l’interface graphique. Les dossiers data/ et data_test/ sont totalement identiques.
Tout le code s'execute normalement sans bugs. En cas de problèmes, n'hésitez pas à nous contacter aux adresses mails suivantes :
Ce projet a été réalisé par Martin VALET et Colin MANYRI. (50% - 50%)