Skip to content

Commit

Permalink
Editorisalisation NLP
Browse files Browse the repository at this point in the history
  • Loading branch information
linogaliana committed Apr 25, 2024
1 parent 9eb3ab0 commit ff42cf2
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 36 deletions.
1 change: 1 addition & 0 deletions _quarto.yml
Expand Up @@ -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"
Expand Down
73 changes: 37 additions & 36 deletions content/NLP/index.qmd
Expand Up @@ -14,17 +14,20 @@ 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
à la valorisation de données structurées, d'une
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]
Expand All @@ -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.
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -114,43 +123,33 @@ 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,
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 {-}
Expand All @@ -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"}

Expand Down

0 comments on commit ff42cf2

Please sign in to comment.