diff --git a/_quarto.yml b/_quarto.yml index 8a10cc13b..71ecc2288 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -16,6 +16,7 @@ project: - content/manipulation/02a_pandas_tutorial.qmd - content/manipulation/02b_pandas_TP.qmd - content/modelisation/0_preprocessing.qmd + - content/NLP/index.qmd website: title: "Python pour la data science" diff --git a/content/NLP/index.qmd b/content/NLP/index.qmd index fd6c0c8c4..41cb652bc 100644 --- a/content/NLP/index.qmd +++ b/content/NLP/index.qmd @@ -14,6 +14,8 @@ description: | image: https://minio.lab.sspcloud.fr/lgaliana/generative-art/pythonds/nlp.png --- +# Introduction + Les parties précédentes étaient consacrées à l'acquisition de compétences transversales pour la valorisation des données. De manière naturelle, nous nous sommes jusqu'à présent plutôt consacrés @@ -21,10 +23,11 @@ nous nous sommes jusqu'à présent plutôt consacrés dimension certes modeste mais qui ouvraient déjà énormément de problématiques à creuser. Cette partie propose maintenant de se consacrer à un sujet dont il n'est pas évident _a priori_ que -les ordinateurs s'emparent : le __langage humain__ et sa richesse. +les ordinateurs s'emparent, source de débats philosophiques séculaires, de Platon à Saussure : le __langage humain__ et sa richesse. -En effet, si la linguistique propose certes de représenter -de manière conceptuelle le langage sous une forme de données, comment +En faisant l'analogie entre langue et langage, c'est-à-dire en définissant ce dernier comme la capacité d'expression et de communication d'une pensée par le biais de signes et en définissant la langue comme la mise en oeuvre conventionnelle de cette capacité, on peut se placer dans les traces de la linguistique +et représenter le langage sous une forme de données. +Ceci ouvre la voix à l'analyse statistique ou algorithmique. Néanmoins, même s'il existe des régularités statistiques , comment des ordinateurs, qui au fond ne connaissent que le _0_ et le _1_, peuvent-ils s'approprier cet objet éminemment complexe qu'est le langage et qu'un humain met lui-même des années à comprendre et s'approprier ?[^blague] @@ -34,7 +37,7 @@ humain met lui-même des années à comprendre et s'approprier ?[^blague] > Pourquoi les programmeurs détestent-ils la plage ? > Parce que le sable change tout le temps de paradigme ! - Ne l'ayant pas comprise du fait de mon esprit obtus, je lui + Ne l'ayant pas comprise, je lui ai demandé de me l'expliquer. Voici sa réponse : > Bien sûr, je serais ravi de l'expliquer ! Cette blague joue sur le double sens du mot "paradigme" et fait un jeu de mots avec les notions liées à la programmation et à la plage. @@ -46,7 +49,8 @@ humain met lui-même des années à comprendre et s'approprier ?[^blague] > La blague joue sur la frustration humoristique que peuvent ressentir les programmeurs lorsqu'ils doivent s'adapter à de nouveaux paradigmes de programmation, tout comme le sable de la plage qui change constamment avec les marées. En associant les deux sens du mot "paradigme", la blague crée une situation absurde et amusante, faisant sourire ceux qui comprennent les références à la programmation et à la plage. Finalement, j'ai trouvé son explication plus drôle que sa blague. - + +# Le traitement automatique du langage Le traitement automatique du langage - traduction française du concept de _natural language processing_ (NLP) - est l'ensemble des techniques @@ -57,16 +61,16 @@ générer le langage humain[^1]. de _text mining_ dont le périmètre était plus spécifique. Le _text mining_ renvoie à la recherche d'information - la fouille - dans un ensemble de textes. C'est l'un des champs d'applications -du _natural language processing_ mais ce n'est pas l'unique. +du _natural language processing_ mais ce n'est pas l'unique. L'accroissement des ressources de calcul et les progrès dans la formalisation du langage ont permis d'élargir le champ des domaines où la linguistique computationnelle intervient. Il s'agit d'un champ disciplinaire à l'intersection de la statistique et de la linguistique qui connait depuis quelques années un engouement -important, que ce soit d'un point de vue académique ou opérationnel. +important, que ce soit d'un point de vue académique, opérationnel ou industriel. Certaines des applications de ces techniques sont devenues incontournables dans nos tâches quotidiennes, notamment les moteurs de recherche, la traduction -automatique et plus récemment les _chatbots_. +automatique et plus récemment les _chatbots_ dont le développement connaît depuis l'émergence de `ChatGPT` en décembre 2022 un rythme fou. -## Résumé de la partie +# Résumé de la partie Cette partie du cours est consacrée à l'analyse des données textuelles avec des exemples de 📖 pour s'amuser. Elle est une introduction progressive @@ -82,22 +86,27 @@ plus loin ; [^2]: Par exemple, le concept d'_embedding_ - transformation d'un champ textuel en un vecteur numérique multidimensionnel - aujourd'hui central -dans le NLP n'est évoqué qu'à quelques reprises. Avant d'en arriver +dans le NLP n'est évoqué qu'à quelques reprises. + +Avant d'en arriver au sujet des _embeddings_, il est précieux de comprendre les apports et les limites de concepts comme le sac de mot (_bag of words_) ou la distance -TF-IDF (_term frequency - inverse document frequency_). Dans une -optique introductive, ce cours se focalise donc sur ces derniers pour faciliter +TF-IDF (_term frequency - inverse document frequency_). L'un des apports principaux des grands modèles de langage, à savoir la richesse de la fênetre contextuelle leur permettant de mieux saisir les nuances textuelles et l'intentionalité du locuteur, s'éclairent lorsqu'on saisit les limites du NLP traditionnel. + +Dans une +optique introductive, ce cours se focalise donc sur les approches fréquentistes, notamment l'approche sac de mot, pour faciliter l'ouverture ultérieure de la boite de Pandore que sont les _embeddings_. -### Nettoyages textuels et analyse de fréquences +## Nettoyages textuels et analyse de fréquences `Python` est un excellent outil pour l'analyse de données textuelles. -Les méthodes de base ou les librairies spécialisées -comme `NLTK` et `SpaCy` permettent d'effectuer ces tâches de manière -très efficace. Les ressources en ligne sur le sujet sont très -nombreuses. `Python` est bien mieux outillé que `R` pour l'analyse de +Les méthodes de base de transformation de données textuelles ou de dictionnaires, associées à des librairies spécialisées +comme `NLTK` et `SpaCy`, permettent d'effectuer des tâches de normalisation et d'analyse de données textuelles de manière +très efficace. `Python` est bien mieux outillé que `R` pour l'analyse de données textuelles. +Les ressources en ligne sur le sujet sont très +nombreuses et la meilleure des écoles dans le domaine reste la pratique sur un corpus à nettoyer. Dans un premier temps, cette partie propose de revenir sur la manière de structurer et nettoyer un corpus @@ -114,20 +123,22 @@ oeuvres d'Edgar Allan Poe, Mary Shelley et H.P. Lovecraft visant à distinguer l spécificité du vocabulaire employé par chaque auteurs (par exemple @fig-waffle-fear). Ces exercices sont disponibles [dans le deuxième chapitre](/content/NLP/01_exoclean.html) de la partie. +Cette analyse fréquentiste permet de prendre du recul sur la nature des données textuelles et sur les enjeux récurrents dans la réduction de dimension de corpus en langue naturelle. Comme la statistique descriptive entraîne naturellement la modélisation, cette approche fréquentiste va généralement amener rapidement à vouloir synthétiser quelques lois derrière nos corpus textuels. + -### Modélisation du langage +## Modélisation du langage La suite de cette partie proposera une introduction aux enjeux de modélisation du langage. Ceux-ci sont très à la mode du fait du succès de `ChatGPT`. Néanmoins, avant -d'en arriver aux LLM, il est nécessaire de passer par quelques modélisations +d'en arriver aux grands modèles de langage (LLM), ces réseaux de neurone ayant des milliards de paramètres et entraînés sur des volumes massifs de données, il est nécessaire de passer par quelques modélisations préliminaires. Nous proposerons d'abord d'explorer une approche alternative, prenant en compte le contexte d'apparition d'un mot. L'introduction à la _Latent Dirichlet Allocation_ (LDA) sera l'occasion de présenter la modélisation -de documents sous la forme de *topics*. +de documents sous la forme de *topics*. Celle-ci est néanmoins passée de mode au profit des méthodes liées au concept d'_embedding_. -Enfin, nous introduirons aux enjeux de la transformation de champs textuels +Nous introduirons ainsi à la fin de cette partie du cours les enjeux de la transformation de champs textuels sous forme de vecteurs numériques. Pour cela, nous présenterons le principe de `Word2Vec` qui permet ainsi, par exemple, malgré une distance syntaxique importante, @@ -135,22 +146,10 @@ de dire que sémantiquement `Homme` et `Femme` sont proches. Ce chapitre est une passerelle vers le concept d'_embedding_, véritable révolution récente du NLP, et qui permet de rapprocher des corpus non seulement sur leur proximité syntaxique (partagent-ils par exemple des mots -communs ?) mais aussi sur leur proximité sémantique (partagent-ils un thème ou un sens commun ?).[^embedding] +communs ?) mais aussi sur leur proximité sémantique (partagent-ils un thème ou un sens commun ?)[^embedding]. Ce passage par `Word2Vec` permettra aux curieux de pouvoir ensuite passer aux modèles de type _transformers_, les modèles faisant aujourd'hui office de référence dans le domaine du NLP. [^embedding]: Un exemple d'intérêt de ce type d'approche est la @fig-relevanc-table-embedding. -Comme l'illustre la figure suivante, empruntée à [Sebastian Raschka](https://magazine.sebastianraschka.com/p/understanding-encoder-and-decoder), les concepts que nous allons aborder -dans cette partie sont indispensables pour être en mesure -d'entraîner ou réutiliser ultérieurement un modèle -sophistiqué d'analyse du langage : - -::: {#fig-encoder} - -![Illustration transformer architecture](https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c2aa73-dd8c-46bf-85b0-90e01145b0ed_1422x1460.png){#fig-encoder-decoder} - -Illustration of the original transformer architecture proposed in [Attention Is All You Need, 2017](https://arxiv.org/abs/1706.03762) -(source: [Sebastien Raschka](https://magazine.sebastianraschka.com/p/understanding-encoder-and-decoder)) -::: ## Pour aller plus loin {-} @@ -168,13 +167,15 @@ ce [post de Sebastian Raschka](https://magazine.sebastianraschka.com/p/understan est très utile. -Ces chapitres n'épuisent pas les cas d'usage du NLP pour les _data scientists_. Par exemple, +Ces chapitres n'épuisent pas les cas d'usage du NLP pour les _data scientists_. Ils n'en sont que la surface émergée de l'iceberg. +Par exemple, dans le domaine de la statistique publique, un des principaux cas d'usage du NLP est l'utilisation de techniques de classification automatique pour transformer des réponses libres dans des questionnaires en champs prédéfinis dans une nomenclature. +Il s'agit donc d'une adaptation, un peu spécifique à la statistique publique, grande utilisatrice de nomenclatures normalisées, de problématiques de classification multi-niveaux. Voici un exemple sur un projet de classification automatisée des professions dans la typologie -des nomenclatures d'activités : +des nomenclatures d'activités (les PCS) à partir d'un modèle entraîné par la librairie `Fasttext` : ::: {.content-visible when-format="html"}