ajout fin n-grammes
This commit is contained in:
parent
d285d265b4
commit
dd8c887983
1 changed files with 126 additions and 2 deletions
|
@ -6,6 +6,8 @@ highlight: pygments
|
|||
number_sections: yes
|
||||
toc: yes
|
||||
toc_depth: 3
|
||||
geometry: "left=2cm,right=2cm,top=2cm,bottom=2cm"
|
||||
fontsize: 12pt
|
||||
---
|
||||
|
||||
# Expressions régulières
|
||||
|
@ -398,7 +400,7 @@ $$
|
|||
|
||||
## Estimation des probabilités
|
||||
|
||||
Estimateur du maximum de vraisemblance pour les bigrammes
|
||||
Estimateur du maximum de vraisemblance pour les N-grammes, déterminé à partir d'un corpus d'entraînement.
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
|
@ -408,9 +410,131 @@ P(w_i|w_{i-1}) &= \frac{\texttt{count}(w_{i-1},w_i)}{\texttt{count}(w_{i-1})} \\
|
|||
\end{aligned}
|
||||
$$
|
||||
|
||||
Pour calculer les probabilités des bigrammes, on doit faire le compte des unigrammes et des bigrammes, puis, on divise le compte du bigramme par le compte de l'unigramme
|
||||
|
||||
Ex:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P(\texttt{want}|\texttt{I}) \\
|
||||
&= \frac{P(\texttt{I want})}{P(\texttt{I})} \\
|
||||
&= \frac{827}{2533} = 0.3265
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
- Pour éviter de calculer des probabilités trop petites, on utilise des log-probabilités que l'on additionne au lieu de multiplier.
|
||||
- On doit délimiter les débuts `<s>` et les fins de phrases `</s>`. On ajoute aussi la fin de phrase au vocabulaire.
|
||||
- On valide la capacité de généralisation du modèle en générant des phrases ou en analysant les modèles N-grammes (aspects reliés à une langue).
|
||||
|
||||
### Génération aléatoire
|
||||
|
||||
- Choisir un bigramme aléatoire `(<s>,w)`
|
||||
- Échantillonner un bigramme `(w,x)`
|
||||
- Itérer jusqu'à l'obtention d'un bigramme `(x,</s>)`
|
||||
|
||||
### Différents corpus
|
||||
|
||||
Shakespeare:
|
||||
|
||||
- N=884647 jetons
|
||||
- V=29066 types
|
||||
- 300000 types de bigrammes, sur 844M possibles, soit 0.04%
|
||||
|
||||
### Évaluation
|
||||
|
||||
Les textes générés avec des modèles d'ordres supérieurs sont plus cohérents. Ils ressemblent aux textes utilisés pour construire les modèles.
|
||||
|
||||
Méthodes de validation intrinsèques:
|
||||
|
||||
- Holdout: ensembles d'entraînement et de test
|
||||
- Métrique d'évaluation:
|
||||
- Perplexité (à minimiser)
|
||||
- Limites:
|
||||
- Données de test peuvent être très différentes des données d'entraînement
|
||||
- La perplexité est une mauvaise approximation dans ce cas
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
PP(W) &= \sqrt[N]{\frac{1}{P(w_1,\ldots,w_N)}} \\
|
||||
&= \sqrt[N]{\prod_{i=1}^{N}\frac{1}{P(w_i|w_1,\ldots,w_{i-1})}}
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
- Méthodes extrinsèques: tester deux modèles dans une application et prendre le meilleur selon une métrique propre à l'application.
|
||||
|
||||
## Lissage
|
||||
|
||||
# Correction d'orthographe
|
||||
- Les bigrammes qui sont rares ont souvent une probabilité de 0 avec la méthode du maximum de vraisemblance, car ils ne seront pas rencontrés dans le corpus d'entraînement.
|
||||
- On veut les considérer dans nos calculs: on applique un lissage
|
||||
|
||||
### Lissage de Laplace
|
||||
|
||||
- Consiste à ajouter un compte de 1 à tous les n-grammes. On augmente donc la taille du corpus de $|V|$ jetons.
|
||||
|
||||
La probabilité de rencontrer le mot $w_i$ devient:
|
||||
|
||||
$$
|
||||
P_{\texttt{Laplace}}(w_i) = \frac{c_i+1}{N+V}
|
||||
$$
|
||||
|
||||
Les comptes reconstruits sont:
|
||||
|
||||
$$
|
||||
c_i^{\star} = (c_i+1)\frac{N}{N+V}
|
||||
$$
|
||||
|
||||
Appliqué aux bigrammes, ces équations deviennent:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P_{\texttt{Laplace}}(w_n|w_{n-1}) &= \frac{C(w_{n-1}w_n)+1}{C(w_{n-1})+V} \\
|
||||
c^{\star}(w_{n-1}w_n) &= (C(w_{n-1}w_n)+1)\frac{C(w_{n-1})}{C(w_{n-1})+V}
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
- Enjeux
|
||||
- Approche trop drastique
|
||||
- On peut utiliser une valeur $\delta \in [0,1]$, mais ce choix est difficile
|
||||
- Pas utilisé en pratique pour les N-grammes, il y a de meilleures méthodes.
|
||||
- Utilisé pour lisser d'autres types de modèles probabilistes.
|
||||
- Classification de textes
|
||||
- Études pilotes
|
||||
- Lorsqu'il n'y a pas beaucoup de zéros.
|
||||
|
||||
### Autres approches de lissage:
|
||||
- Si $C(xyz)=0$, on peut utiliser $p(z|y)$ et $p(z)$
|
||||
- Interpolation (combinaison)
|
||||
- Interpolation simple:
|
||||
$$
|
||||
\begin{aligned}
|
||||
\hat{P}(w_n|w_{n-2}w_{n-1}) &= \lambda_{1}P(w_n|w_{n-2}w_{n-1})\\
|
||||
&+\lambda_{2}P(w_n|w_{n-1})\\
|
||||
&+\lambda_{3}P(w_n)\\
|
||||
\sum_{i} \lambda_i&=1
|
||||
\end{aligned}
|
||||
$$
|
||||
- Version plus sophistiquée:
|
||||
$$
|
||||
\begin{aligned}
|
||||
\hat{P}(w_n|w_{n-2}w_{n-1}) &= \lambda_{1}(w_{n-2}^{n-1})P(w_n|w_{n-2}w_{n-1})\\
|
||||
&+\lambda_{2}(w_{n-2}^{n-1})P(w_n|w_{n-1})\\
|
||||
&+\lambda_{3}(w_{n-2}^{n-1})P(w_n)
|
||||
\end{aligned}
|
||||
$$
|
||||
- Les lambdas sont déterminés à partir d'un jeu de validation (devset) séparé du jeu d'entraînement et de celui de test.
|
||||
- Backoff (on utilise le premier non-nul en ordre décroissant: $C(zyx)$, $C(zy)$, $C(z)$
|
||||
- Katz Backoff
|
||||
- Stupid (web) backoff. Cet algorithme ne génère pas une distribution de probabilité, on identifie alors la mesure par $S$.
|
||||
$$
|
||||
\begin{aligned}
|
||||
S(w_i|w_{i-k+1}^{i-1}) &=
|
||||
\begin{cases}
|
||||
\frac{C(w_{i-k+1}^i)}{C(w_{i-k+1}^{i-1})}&,\texttt{si } C(w_{i-k+1}^i) >0\\
|
||||
0.4S(w_i|C(w_{i-k+2}^{i-1}))&,\texttt{sinon}
|
||||
\end{cases} \\
|
||||
S(w_i) &= \frac{C(w_i)}{N}\\
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
# Classification de textes
|
||||
|
||||
|
|
Loading…
Reference in a new issue