Skip to content

Commit

Permalink
Change titles levels (#381)
Browse files Browse the repository at this point in the history
* change level

* premiers chaptres

* clelan

* level types

* change

* noebooks clean

* Change title levels again (#382)

* rm file

* autres fichiers

* model

* Title level NLP part (#383)

* change titles

* word2vec
  • Loading branch information
linogaliana committed Jul 20, 2023
1 parent a45e543 commit 78ea2cb
Show file tree
Hide file tree
Showing 19 changed files with 153 additions and 168 deletions.
2 changes: 1 addition & 1 deletion content/course/NLP/01_intro/index.qmd
Expand Up @@ -61,7 +61,7 @@ de bénéficier d'une base solide pour approfondir tel ou tel
sujet.


# Base d'exemple
## Base d'exemple

La base d'exemple est le *Comte de Monte Cristo* d'Alexandre Dumas.
Il est disponible
Expand Down
2 changes: 1 addition & 1 deletion content/course/NLP/02_exoclean/index.qmd
Expand Up @@ -407,7 +407,7 @@ fig.get_figure()
```


## Premier *wordcloud*
### Premier *wordcloud*

Pour aller plus loin dans l'analyse du champ lexical de chaque auteur,
on peut représenter un `wordcloud` qui permet d'afficher chaque mot avec une
Expand Down
2 changes: 1 addition & 1 deletion content/course/NLP/03_lda/index.qmd
Expand Up @@ -405,6 +405,6 @@ Plus les barres sont loin les unes des autres, plus elles sont différentes. Un
* Les **barres rouges** représentent une estimation du nombre de termes générés dans un sujet précis. La barre rouge la plus longue correspond au mot le plus utilisé dans ce sujet.


# Références
## Références

* Le [poly d'Alberto Brietti](http://alberto.bietti.me/files/rapport-lda.pdf)
30 changes: 15 additions & 15 deletions content/course/NLP/04_word2vec/index.qmd
Expand Up @@ -131,7 +131,7 @@ import gensim.downloader
from sentence_transformers import SentenceTransformer
```

# Nettoyage des données
## Nettoyage des données

Nous allons ainsi à nouveau utiliser le jeu de données `spooky`:

Expand All @@ -147,7 +147,7 @@ spooky_df.head()
```


## Preprocessing
### Preprocessing

En NLP, la première étape est souvent celle du *preprocessing*, qui inclut notamment les étapes de tokenization et de nettoyage du texte. Comme celles-ci ont été vues en détail dans le précédent chapitre, on se contentera ici d'un *preprocessing* minimaliste : suppression de la ponctuation et des *stop words* (pour la visualisation et les méthodes de vectorisation basées sur des comptages).

Expand Down Expand Up @@ -205,7 +205,7 @@ spooky_df.head()
```


## Encodage de la variable à prédire
### Encodage de la variable à prédire

On réalise un simple encodage de la variable à prédire :
il y a trois catégories (auteurs), représentées par des entiers 0, 1 et 2.
Expand All @@ -227,7 +227,7 @@ On peut vérifier les classes de notre `LabelEncoder` :
le.classes_
```

## Construction des bases d'entraînement et de test
### Construction des bases d'entraînement et de test

On met de côté un échantillon de test (20 %) avant toute analyse (même descriptive).
Cela permettra d'évaluer nos différents modèles toute à la fin de manière très rigoureuse,
Expand Down Expand Up @@ -266,9 +266,9 @@ la méthode `inverse_transform`
print(y_train[0], le.inverse_transform([y_train[0]])[0])
```

# Statistiques exploratoires
## Statistiques exploratoires

## Répartition des labels
### Répartition des labels

Refaisons un graphique que nous avons déjà produit précédemment pour voir
la répartition de notre corpus entre auteurs:
Expand All @@ -288,7 +288,7 @@ fig.get_figure()
On observe une petite asymétrie : les passages des livres d'Edgar Allen Poe sont plus nombreux que ceux des autres auteurs dans notre corpus d'entraînement, ce qui peut être problématique dans le cadre d'une tâche de classification.
L'écart n'est pas dramatique, mais on essaiera d'en tenir compte dans l'analyse en choisissant une métrique d'évaluation pertinente.

## Mots les plus fréquemment utilisés par chaque auteur
### Mots les plus fréquemment utilisés par chaque auteur

On va supprimer les *stopwords* pour réduire le bruit dans notre jeu
de données.
Expand Down Expand Up @@ -366,14 +366,14 @@ en termes de vocabulaire,
ce qui laisse penser qu'il est envisageable de prédire les auteurs à partir
de leurs textes dans une certaine mesure.

# Prédiction sur le set d'entraînement
## Prédiction sur le set d'entraînement

Nous allons à présent vérifier cette conjecture en comparant
plusieurs modèles de vectorisation,
_i.e._ de transformation du texte en objets numériques
pour que l'information contenue soit exploitable dans un modèle de classification.

## Démarche
### Démarche

Comme nous nous intéressons plus à l'effet de la vectorisation qu'à la tâche de classification en elle-même,
nous allons utiliser un algorithme de classification simple (un SVM linéaire), avec des paramètres non fine-tunés (c'est-à-dire des paramètres pas nécessairement choisis pour être les meilleurs de tous).
Expand Down Expand Up @@ -412,7 +412,7 @@ puis on calcule le `score F1` sur ces données agrégées.
L'avantage de ce choix est qu'il permet de tenir compte des différences
de fréquences des différentes classes.

## Pipeline de prédiction
### Pipeline de prédiction

On va utiliser un *pipeline* `scikit` ce qui va nous permettre d'avoir
un code très concis pour effectuer cet ensemble de tâches cohérentes.
Expand Down Expand Up @@ -453,7 +453,7 @@ def fit_vectorizers(vectorizer):
return grid_search
```

# Approche _bag-of-words_
## Approche _bag-of-words_

On commence par une approche __"bag-of-words"__,
i.e. qui revient simplement à représenter chaque document par un vecteur
Expand All @@ -463,7 +463,7 @@ qui compte le nombre d'apparitions de chaque mot du vocabulaire dans le document
cv_bow = fit_vectorizers(CountVectorizer)
```

# TF-IDF
## TF-IDF

On s'intéresse ensuite à l'approche __TF-IDF__,
qui permet de tenir compte des fréquences *relatives* des mots.
Expand All @@ -483,7 +483,7 @@ ce qui montre la pertinence de cette technique.
cv_tfidf = fit_vectorizers(TfidfVectorizer)
```

# Word2vec avec averaging
## Word2vec avec averaging

On va maintenant explorer les techniques de vectorisation basées sur les
*embeddings* de mots, et notamment la plus populaire : `Word2Vec`.
Expand Down Expand Up @@ -592,7 +592,7 @@ cv_w2vec = fit_w2v_avg(w2v_model.wv)
La performance chute fortement ;
la faute à la taille très restreinte du corpus, comme annoncé précédemment.

# Word2vec pré-entraîné + averaging
## Word2vec pré-entraîné + averaging

Quand on travaille avec des corpus de taille restreinte,
c'est généralement une mauvaise idée d'entraîner son propre modèle `word2vec`.
Expand Down Expand Up @@ -676,7 +676,7 @@ Cela a plusieurs limites :
- lorsque les documents sont longs, la moyennisation peut créer
des représentation bruitées.

# Contextual embeddings
## Contextual embeddings

Les *embeddings* contextuels visent à pallier les limites des *embeddings*
traditionnels évoquées précédemment.
Expand Down
41 changes: 15 additions & 26 deletions content/course/getting-started/01_installation/index.qmd
Expand Up @@ -86,7 +86,7 @@ certain nombre d'éléments supplémentaires à `Python`. La suite
de ce chapitre permettra de décrire les configurations à mettre
en oeuvre pour être en mesure d'exploiter la richesse de l'écosystème `Python`.

# Installer un environnement adapté à la *data-science* sur son ordinateur personnel {#local}
## Installer un environnement adapté à la *data-science* sur son ordinateur personnel {#local}

Cette partie présente plusieurs éléments de configuration d'un environnement
en local. Cependant, cette approche est de moins en moins fréquente. En effet,
Expand All @@ -100,7 +100,7 @@ distant, est de plus en plus fréquent.



## Installer `Python` en local
### Installer `Python` en local

Pour installer `Python`, il est recommandé d'utiliser
la distribution [Anaconda](https://docs.anaconda.com/anaconda/install/)
Expand All @@ -124,7 +124,7 @@ Passer par `Anaconda` permet:
de certaines librairies qui nécessitent l'usage de langages externes (par exemple
du `C++`).

## Installer un environnement de développement
### Installer un environnement de développement

Les *notebooks* `Jupyter` (extension `.ipynb`)
sont très utilisés en *data science*. Ils sont en
Expand Down Expand Up @@ -154,7 +154,7 @@ interface `Git`, etc.
* fonctionalités classiques d'un IDE dont manque `Jupyter`: autocomplétion, diagnostic du code, etc.
* intégration avec les environnements `Conda`

## Installation de `Git`
### Installation de `Git`

Le principe de `Git` ainsi que son usage avec `Python` sont présentés dans
une [partie dédiée](/course/git). Cette partie se concentre ainsi sur la question
Expand All @@ -167,7 +167,7 @@ externes, notamment les interfaces de développement comme
`Visual Studio`, pourront l'utiliser.


# Exécution dans un environnement temporaire sur un serveur distant
## Exécution dans un environnement temporaire sur un serveur distant

Comme évoqué précedemment, les technologies dominantes dans
le domaine du traitement des données ont amené à une évolution des pratiques
Expand Down Expand Up @@ -249,7 +249,8 @@ de garder à l'esprit qu'elles sont également temporaires.

{{% /box %}}

## SSP-Cloud [![Onyxia](https://img.shields.io/badge/SSPcloud-Tester%20via%20SSP--cloud-informational&color=yellow?logo=Python)](https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true&onyxia.friendlyName=«python-datascientist»&resources.requests.memory=«4Gi»&security.allowlist.enabled=false&git.repository=«https%3A%2F%2Fgithub.com%2Flinogaliana%2Fpython-datascientist.git)
### SSP-Cloud <a href="https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true&onyxia.friendlyName=%C2%ABpython-datascience%C2%BB&init.personalInit=%C2%ABhttps%3A%2F%2Fraw.githubusercontent.com%2Flinogaliana%2Fpython-datascientist%2Fmaster%2Fsspcloud%2Finit-jupyter.sh%C2%BB&init.personalInitArgs=%C2%ABmanipulation%2001_numpy%C2%BB&security.allowlist.enabled=false" target="_blank" rel="noopener"><img src="https://img.shields.io/badge/SSPcloud-Tester%20via%20SSP--cloud-informational&amp;color=yellow?logo=Python" alt="Onyxia"></a><br>


`Onyxia`, l'autre petit nom du SSP-Cloud,
est une plateforme libre service mutualisée de traitement
Expand All @@ -267,7 +268,8 @@ Elle est aussi utilisé à des fins de formations et d’auto-formations.
Dans cet environnement, `Jupyter` et `Visual Studio` sont tous deux
disponibles.

## Google collaboratory [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/linogaliana/python-datascientist/blob/master)
### Google collaboratory <a href="http://colab.research.google.com/github/linogaliana/python-datascientist/blob/master/notebooks/course/manipulation/01_numpy.ipynb" target="_blank" rel="noopener"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a>


Google met à disposition une plateforme de calculs basée sur le format `Jupyter Notebook`.
Un grand avantage de cette solution est la mise à disposition gratuite de
Expand All @@ -278,7 +280,8 @@ Il est possible de connecter les *notebooks* ouverts à Google Drive ou à
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
fournit un raccourci pour lancer le notebook dans un environnement dédié.

## Github Visual Studio Editor [![githubdev](https://open.vscode.dev/badges/open-in-vscode.svg)](https://github.dev/linogaliana/python-datascientist)
### Github Visual Studio Editor <a href="https://github.dev/linogaliana/python-datascientist/notebooks/course/manipulation/01_numpy.ipynb" target="_blank" rel="noopener"><img src="https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc" alt="githubdev"></a>


`Microsoft` qui possède à la fois `Github` et `Visual Studio` a récemment
lancé une offre `Github dev` qui permet d'ouvrir et lancer un notebook
Expand All @@ -289,22 +292,8 @@ Cette interface permet également de gérer les *issues* et *pull request*
d'un dépôt `Github`.


## Binder [![Binder](https://img.shields.io/badge/Launch-Binder-E66581.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/linogaliana/python-datascientist/master)

En cliquant sur cette icône
[![Binder](https://img.shields.io/badge/Launch-Binder-E66581.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/linogaliana/python-datascientist/master),
qu'on peut retrouver un peu partout dans ce site ou sur le dépôt
{{< githubrepo >}}, vous pouvez lancer un environnement propre,
et disposant d'une copie
(un *clone* en langage `Git`) du dépôt `Github`. Celui-ci n'intègre
pas forcément les dépendances nécessaires pour un chapitre, il est
alors nécessaire de les installer. Malheureusement, les environnements `binder`
peuvent mettre du temps à se lancer et il est plutôt recommandé de privilégier
une autre approche.



## La technologie en arrière-plan: Docker <i class="fab fa-docker"></i></a>
### La technologie en arrière-plan: Docker <i class="fab fa-docker"></i></a>

[Docker](https://www.docker.com/) est l'outil open-source de référence
en matière de création d'environnements isolés et auto-suffisants (
Expand Down Expand Up @@ -341,7 +330,7 @@ le mot de passe `test` (défini plus haut), on peut ainsi accéder
pérenne).


# Installer des packages supplémentaires
## Installer des packages supplémentaires

Un module est un script qui a vocation à définir des objets utilisés
postérieurement par un interpréteur. C'est un script `.py` autosuffisant,
Expand Down Expand Up @@ -378,7 +367,7 @@ en apprenant à chercher dans la documentation ;
- en cas d'erreur : copiez-collez l'erreur sur votre moteur de recherche préféré. Quelqu'un aura déjà posé la question, sans doute sur `stackoverflow`. Néanmoins, ne copiez-collez
pas la réponse sans comprendre la solution.

## Les gestionnaires de packages
### Les gestionnaires de packages

Les packages d'un langage *open-source* sont mis à disposition sur
des dépôts. Le CTAN est ainsi le dépôt `\(\LaTeX\)` le plus connu, le
Expand Down Expand Up @@ -438,7 +427,7 @@ dans les entreprises.

{{% /box %}}

## Comment installer des packages
### Comment installer des packages

Avec Anaconda, il faut passer par la ligne de commande et taper

Expand Down

0 comments on commit 78ea2cb

Please sign in to comment.