NLP - Web Mining

Cette page recense les supports utilisés pour mes enseignements de NLP (natural language processing ; que l'on appelle aussi Text Mining - Fouille de textes), Web Mining (fouille du web) et Analyse des Réseaux Sociaux en Master 2 Statistique et Informatique pour la Science des donnéEs (Master SISE), formation en data science au sein du Département Informatique et Statistique (DIS) de l'Université Lyon 2.

Mes interventions s'inscrivent dans le cadre du traitement statistique des données et de la valorisation des big data. On parle également de data mining et de big data analytics dans la littérature. Ce sont des domaines où la synergie entre les méthodes statistiques et l'informatique, piliers essentiels de la data science, est primordiale.

Le text mining et le web mining en est une illustration parfaite : il faut d'une part maîtriser les outils informatiques qui permettent d'appréhender les données sous des formats divers (on parle de données non-structurées) ; et, d'autre part, bien connaître les techniques de machine learning qui permettent de mettre en évidence des régularités sous-jacentes aux corpus de documents.

A ces supports de cours sont associés des tutoriels qui permettent de mettre en application directement les notions apprises. Je m’appuie principalement sur les packages spécialisés des logiciels Python et R.

Matériel pédagogique - Slides, supports de cours, tutoriels...

Supports

Slides pour le text mining et web mining

Introduction au text mining - Définition de la fouille de textes. Positionnement par rapport à la démarche data mining. Représentation des corpus (collection de textes) à l'aide de sac de mots (bag of words).

La matrice documents termes - Représentation en cas de mots (bag of words). Extraction des termes, réduction de la dimensionnalité, la question de la pondération, mesures de similaités et distances adaptées au domaine.

La catégorisation de textes (document classification) - Analyse prédictive à partir d'une collection de documents étiquetées. Mesures spécifiques d'évaluation des performances (F-Mesure, F-Score). Techniques de réduction de dimensionalité.

Topic model - Identification des thèmes sous-jacents aux documents d'un corpus. Réduction de la dimensionnalité (bis). LIS : latent semantic indexing ; LDA : latent dirichlet allocation.

Word embedding (Word2Vec) - Prolongement lexical. Représentation des termes à l'aide d'un vecteur numérique, contextualisée par le voisinage. Réduction de la dimensionnalité. Représentation des documents.

Fouille d'opinions et analyse des sentiments - Traitement des données provenant des médias sociaux. Opinion mining, sentiment analysis.

Détection des communautés - Mise en évidence des groupes d'individus dans les réseaux sociaux.

Filtrage collaboratif et recommandations - Construction de systèmes de recommandations basé sur les opinions, les évaluations, les comportements,... Approches centrées utilisateur, approches centrées produit (item).

Tutoriels vidéos et rédigés sous Python, R et autres outils (ex. Knime) - Avec données et scripts.

Chaîne Youtube consacrée au Text Mining (NLP - Natural Language Processing) - Catégorisation de documents, analyse des sentiments sur des tweets, matrice documents-termes, topic modeling, word embedding, exploitation des représentation pré-entraînées (Word2Vec, GloVe). Packages "tidytext", "quanteda", "gensim", "keras", etc.

Représentation GloVe avec KERAS / PYTHON - Exploitation d'une représentation pré-entraînée Glove comme couche d'entrée Embedding d'un réseau de neurones prédictif (perceptron multicouche). Coordonnées des termes dans l'espace de représentation. Similarité entre termes. Particularité de la couche embedding dans ce contexte : initialisation, non modification des poids associés dans le processus d'entraînement. Application : analyse de sentiments à partir d'un corpus de tweets (Twitter).

 

Deep Learning - La couche Embedding de KERAS / PYTHON - Etude de la couche "embedding" de Keras dans un processus de catégorisation de documents. Projection des termes dans un nouvel espace de représentation. Introduction des opérateurs que l'on voit usuellement dans les réseaux de convolution (CNN - Convolutional Neural Network) : maxpooling et dropout. Impact de la régularisation sur l'amélioration des performances dans un processus d'analyse de sentiments à partir de tweets (Twitter).

 

Twitter, analyse des sentiments - KERAS / PYTHON - Etude des fonctionnalités du tandem Tensorflow / Keras en text mining, en particulier en matière de catégorisation de documents. Utilisation d'un corpus de tweets (Twitter) étiquetés. Fonction pour le pré-traitement et le nettoyage du corpus. Construction de la matrice documents-termes. Instanciation et entraînement d'un réseau de neurones prédictif (perceptron multicouche, deep learning). Mesure des performances prédictives. Exploration de la représentation intermédiaire des données induite par la couche cachée du réseau. Quelques éléments de réflexion sur le surapprentissage et les pistes pour y remédier dans notre contexte.

 

Le package spaCy pour PYTHON - Exploration de quelques fonctionnalités de la librairie spaCy pour Python, elles contribuent à l'analyse fine des documents textuels : part-of-speech tagging (étiquetage morpho-syntaxique), lemmatisation, mise en évidence des schémas de dépendance entre les termes (token), identification des entités nommées, représentation vectorielle des termes et des documents. Le package peut s'appuyer sur des versions plus ou moins élaborées de modèles (pipeline) pré-entraînés sur des corpus dans différentes langues. Traitement du premier paragraphe de la chanson "Vesoul" de Jacques Brel.

 

Doc2Vec et Word2Vec / GENSIM - PYTHON - Prolongement lexical, représentation des termes à l'aide d'un vecteur numérique, contextualisée par le voisinage. Algorithme Word2Vec avec la librairie Gensim sous Python. Représentation des termes, calcul des similarités, identification des intrus. Utilisation des modèles pré-entraînés sur des grands corpus en Français. L'exemple Karim Benzema de la fin des années 2000, partenaires à l'Olympique Lyonnais (OL) et en Equipe de France. La méthode Doc2Vec, basé sur Word2Vec, pour une représentation des documents basée sur les termes. Identification des incongruités dans une représentation graphique. Lien possible avec la polarité des documents. Un aparté rapide enfin avec le modèle pré-entraîné BERT. Utilisation du corpus IMDB Reviews.

 

Modèle pré-entraîné avec Word2Vec / GENSIM - PYTHON - Utilisation d'un modèle pré-entraîné sur des très grands corpus dans une démarche de catégorisation automatique de textes, analyse des sentiments. Schéma du processus global : pré-traitement, modélisation, évaluation, déploiement sur un document supplémentaire à classer. Passage des coordonnées des tokens aux coordonnées des documents. Classement avec l'algorithme de machine learning SVM (support vector machine), noyau RBF, de la librairie Scikit-Learn. Utilisation du corpus IMDB Reviews.

 

Topic Modeling avec GENSIM - PYTHON - Topic model : algorithme LDA - Latent Dirichlet Allocation. Utilisation de la librairie Gensim pour Python, après une préparation des documents à l'aide de la boîte à outils NLTK - Natural Language Toolkit, pour Python également. Objectif : extraction de thématiques (topics) décrits par les termes (tokens). Réduction de dimensionnalité par la représentation des documents dans l'espace des topics, ouvrant la porte à des post-traitements de machine learning. Ici, simple représentation graphique des documents, illustrés par leur polarité (positif, négatif), dans l'espace des topics pris par paires à l'aide de la bibliothèque graphique Seaborn. Utilisation de la base "Imdb Reviews".

 

Clustering de documents textuels avec PYCARET - PYTHON - Création automatique et simplifiée d'un pipeline de clustering de documents textuels sous Python à l'aide du package 'PyCaret'. Traitements et résultats dans une première approche. Puis, dans un deuxième temps, analyse approfondie des étapes de calculs mis en place par PyCaret, qui utilise en interne la classe de calcul TfidfVectorizer du package 'scikit-learn' pour créer la matrice documents-termes présentée à la méthode des K-Means. Possibilité de combiner les traitements avec une réduction de dimension (ACP - analyse en composantes principales), soit dans une phase illustrative (pour simplement représenter les groupes), soit dans une phase active (ce sont les composantes de l'ACP qui sont présentées à l'algorithme des K-Means).

 

Reconnaissance automatique de la langue avec FASTTEXT - PYTHON - Présentation des fonctionnalités de reconnaissance automatique de la langue de la librairie "fasttext" pour Python. Retour rapide sur le mécanisme interne basé sur un dispositif de machine learning supervisé, étude en particulier du corpus étiqueté utilisé pour élaborer le modèle prédictif. Chargement et exploitation du modèle binaire pré-entraîné, accessible sur le web, en prédiction. Reconnaissance de la langue pour des documents en français, en anglais et en malgache. Limites de l'outil.

 

Catégorisation de documents avec FASTTEXT - PYTHON - Classification supervisée de documents textuels à l'aide du package "fasttext" pour Python, avec un étiquetage multi-classes non mutuellement exclusives c.-à-d. un document peut appartenir à 1 (au moins) ou plusieurs classes. Paramétrage de l'algorithme "fasttext" basé sur un réseau de neurones supervisé. Inspection des prédictions, avec possibilité de prédire une ou plusieurs classes d'appartenance. Adaptation des mesures de performances (précision et rappel) à la problématique traitée. D'autres particularités de "fasttext" sont explorées : la possibilité de combiner des termes (bigrams) ; ou encore l'exploitation des modèles pré-entraînés sur des grands corpus, étude notamment du comportement d'un modèle basé sur un corpus de polarités de commentaires sur Amazon.

 

Text Mining avec "quanteda" sous R - Pré-traitement du corpus, tokelisation, représentation des documents en sacs de mots, analyse du voisinage des termes, pondérations "term frequency" et "binaires". Calculs des associations entre les termes. Catégorisation (classification supervisée) automatique des documents à l'aide d'un algorithme de machine learning (SVM, support vector machine, package "e1071").

 

Text Mining avec "tidytext" sous R - Pré-traitement du corpus, tokelisation, représentation des documents en sacs de mots, pondération "term frequency". Analyse des sentiments associés aux documents à partir des termes recensés dans un lexique spécifique.

 

Word Embedding - L'algorithme Word2Vec avec KNIME - Processing. Prolongement lexical, représentation des termes à l'aide d'un vecteur numérique, contextualisée par le voisinage. L'algorithme word2vec et son accointance avec les auto encodeurs. Réduction de dimensionnalité (par rapport à la représentation en sac-de-mots [bag of words]) pour la représentation des documents. Utilisation du package de Deep Learning (deep learning 4J) pour Knime. Regroupement des séquences de commandes dans des meta-nodes pour simplifier la lecture et la manipulation des workflow Knime. Correction sous forme de workflow Knime.

 

Topic Modeling avec KNIME - Utilisation du package "TextProcessing" de Knime. Extraction de thèmes (topics) caractérisés à l'aide de "tokens" qui composent les documents. Réduction de dimensionnalité par représentation des documents dans l'espace des "topics". Regroupement des documents à l'aide d'un algorithme de clustering (k-means) appliqué dans l'espace des "topics". Correction sous forme de workflow Knime.

 

Text Mining avec KNIME - La démarche de catégorisation automatique de documents à l'aide du logiciel Knime. Comparaison des algorithmes de machine learning dans un espace à très forte dimensionnalité. Conversion de textes en corpus, pré-traitements, tokenisation, représentation des documents en sac de mots, pondération booléenne, analyse prédictive avec les arbres de décision et la régression logistique régularisée (Ridge). Correction sous forme de workflow Knime.

 

Catégorisation de SMS sous PYTHON - Description du processus de catégorisation de textes. Construction de la matrice documents-termes, choix de la pondération. Réduction de la dimensionnalité. Package scikit-learn / régression logistique régularisée. Identification des spams dans les SMS.

 

Word2Vec avec H2O sous PYTHON - Représentation vectorielle des termes dans un espace de représentation tenant compte du voisinage. Puis représentation vectorielle des documents. Utilisation de la librarie H2O (+ NLTK) pour Python. Préparation spécifique du corpus.

 

Analyse des tweets sous R - Accès aux messages sur Twitter. Traitement des messages : analyse des propriétés des messages, exploitation de leur contenu. Traitements sous R à l'aide d'un package spécialisé.

 

Détection des communautés sous PYTHON - Détection des communautés dans les réseaux sociaux. Graphe social, clustering dans les graphes. Traitements sous Python à l'aide du package "igraph".

 

Les expression régulières sous R - Manipulation des documents textuels. Opérations de recherche à l'aide de motifs, nettoyage, découpage, ... Traitements de documents non-structurés ou semi-structurés (ex. fichiers logs). Opérations de recherche dans des données textuelles représentant des SMS.

 

Google Analytics avec R. Importation et analyse des données provenant de Google Analytics via le package RGoogleAnalytics. Mesures et analyse des fréquentations : les pages les plus regardées, les pages d'entrées et de sorties, suivi des trajectoires, accès par pays, ... Post-traitement des données extraites à l'aide de techniques factorielles.

 

LinkedIn avec PYTHON. Accès aux données de LinkedIn via l'API dédié. Utilisation du package python-linkedin pour Python. Deux étapes essentielles : activation de l'API LinkedIn (en décembre 2017), installation du package.

API OpenStreetMap sous R. Manipulation de l'API OpenStreetMap. Récupération des coordonnées de villes de Madagascar. Affichage d'une carte, coordonnées des villes, distance entre villes, matérialisation d'un trajet routier d'une ville à l'autre.

 

Text Mining avec KNIME et RAPIDMINER. Catégorisation de documents. Comparaison des fonctionnalités de KNIME et RAPIDMINER. Pré-traitement d'un document XML, extraction du vecteur des sujets (classes d'appartenance), extraction du texte brut, préparation et nettoyage des documents, choix de la pondération (term frequency vs. tf-idf), modélisation prédictive avec un arbre de décision.

 


Ricco Rakotomalala