Mon projet « Analyse Textuelle Avancée (ATA) », est maintenant disponible sur GitHub.
ATA est une interface conçue pour répondre aux besoins des chercheurs en Sciences Humaines et Sociales et des data scientists, qui travaillent sur des projets d’analyse textuelle.
Sans avoir de connaissances en programmation, l’interface vous permet d’exploiter à la fois des outils de collecte de données et des tests utilisant le NLP.
Cette interface regroupe différents scripts, souvent développés avec l’interface Tkinter. L’adaptation à une interface graphique basée sur Streamlit reste néanmoins une étape délicate.
Fonctionnalités principales
Dans cette version 0.1.0 Bêta, ATA propose des fonctionnalités autour de la préparation de la DATA :
- Extraction de commentaires YouTube : Cet outil permet de récupérer les commentaires des vidéos YouTube pour les analyser dans un second temps.
- Europress HTML to Text : Cette fonctionnalité convertit les fichiers HTML issus de la base de données Europresse en texte brut, facilitant ainsi l’analyse des articles de presse dans le logiciel IRAMUTEQ ou à l’aide des algorithme de l’interface ATA.
- PDF to Text : Un outil pour extraire le texte contenu dans des fichiers PDF, permettant ainsi d’analyser des documents officiels, rapports, ou tout autre contenu PDF.
- Recherche de doublons Europresse : Cet outil identifie les doublons et les articles trop courts dans les fichiers provenant d’Europresse, garantissant ainsi que seules les données pertinentes et uniques sont analysées.
- Voice to Text : Cette fonctionnalité permet de convertir des fichiers audio en texte, facilement en récupérant la retranscription de Google Youtube.
- Scraper les commentaires YouTube : Cet outil permet de récupérer massivement les commentaires de vidéos YouTube pour une analyse en profondeur des discussions autour de sujets spécifiques.
En plus des fonctionnalités de traitement de données, ATA intègre plusieurs algorithmes de traitement du langage naturel (NLP) pour enrichir l’analyse textuelle.
Voici un aperçu des principaux tests effectués pour valider ces processus NLP :
- Test K-Means : Regroupe les documents en clusters en fonction de leur similarité textuelle, en assignant chaque document au cluster le plus proche. Le nombre de clusters est déterminé à l’avance, et l’algorithme optimise la position des centres de clusters pour minimiser la variance intra-cluster.
- Test de Classification Ascendante Hiérarchique (CAH) : Crée des clusters de documents avec une approche hiérarchique en partant de chaque document comme un cluster individuel, puis en fusionnant successivement les clusters les plus similaires jusqu’à ce qu’il ne reste qu’un seul cluster. Le résultat est un dendrogramme qui permet de visualiser les relations entre les documents et de choisir un niveau de granularité pour les clusters.
- Test TF-IDF (Term Frequency-Inverse Document Frequency) : Identifie les termes les plus importants dans un corpus en les pondérant selon leur fréquence dans un document (TF) et la rareté de ces termes à travers l’ensemble du corpus (IDF). Cette pondération permet de mettre en avant les termes spécifiques à certains documents tout en réduisant l’impact des termes fréquents mais peu informatifs.
- Test LDA (Latent Dirichlet Allocation) : Extrait les sujets récurrents des documents. LDA permet d’identifier les thèmes sous-jacents dans un corpus en déterminant la probabilité qu’un mot donné appartienne à un sujet spécifique.
- Test de Cooccurrence à partir d’un mot clé : Identifie les termes qui apparaissent fréquemment en association avec un mot clé donné dans les documents, en analysant les cooccurrences.
Les librairies à installer
Pour commencer à utiliser ATA, il suffit de télécharger les fichiers et procéder à l’installation des librairies nécessaires au fonctionnement de l’interface (Les instructions sont dans le readme.txt).
Vous pouvez également cloner les fichiers dans le dépôt GitHub.
SpaCy est la bibliothèque principale utilisée pour le traitement du langage naturel (NLP) dans ce projet.
### Détails des bibliothèques utilisées
- streamlit : Utilisé pour créer l’interface utilisateur de l’application.
- youtube-transcript-api : Permet d’extraire les transcriptions des vidéos YouTube.
- yt-dlp : Utilisé pour télécharger des vidéos YouTube.
- os : Bibliothèque standard Python pour les opérations sur le système de fichiers.
- re : Utilisé pour les expressions régulières.
- spacy : Utilisé pour le traitement du langage naturel.
- scikit-learn : Fournit des outils pour l’extraction de caractéristiques, la classification, le clustering, etc.
- numpy : Bibliothèque pour les opérations mathématiques et la manipulation de tableaux.
- pandas : Utilisé pour la manipulation de données sous forme de DataFrame.
- matplotlib : Utilisé pour la création de graphiques.
- wordcloud : Utilisé pour générer des nuages de mots à partir de texte.
- google-api-python-client : Utilisé pour interagir avec les API de Google, comme l’API YouTube.
- datetime : Bibliothèque standard pour manipuler les dates et les heures.
- fitz (PyMuPDF) : Utilisé pour extraire du texte à partir de fichiers PDF.
- gensim : Fournit des outils pour la modélisation de sujets (LDA) et la construction de phrases.
- pyLDAvis : Utilisé pour visualiser les résultats de l’analyse LDA.
- sentence-transformers : Utilisé pour l’embedding de phrases et le calcul de similarités cosinus.
- umap-learn : Utilisé pour la réduction de dimensionnalité.
- plotly : Utilisé pour la création de graphiques interactifs.
- beautifulsoup4 : Utilisé pour le parsing de documents HTML.
- nltk : Utilisé pour diverses tâches de traitement du langage naturel comme le tokenization et la gestion des stopwords.
- scipy : Utilisé pour des calculs scientifiques, notamment pour le clustering hiérarchique.
- hashlib : Utilisé pour générer des hachages, par exemple pour identifier des doublons.
Lancer l’interface Streamlit
Après avoir installé les librairies nécessaires (consultez le fichier readme.txt), vous pourrez lancer l’interface Streamlit depuis le terminal de votre environnement Python.
Dans le terminal python : streamlit run main.py