ajout POS, rendu à Viterbi
This commit is contained in:
parent
d802bfd29c
commit
35d79a2164
4 changed files with 340 additions and 4 deletions
3
Makefile
3
Makefile
|
@ -1,4 +1,5 @@
|
|||
dot_compile:
|
||||
dot -Tpng fsa_sheep.dot -o fsa_sheep.png
|
||||
dot -Tpng -o fsa_sheep.png fsa_sheep.dot
|
||||
dot -Tpng -o hmm.png hmm.dot
|
||||
build: examen_partiel.md dot_compile
|
||||
pandoc examen_partiel.md -o examen_partiel.pdf
|
||||
|
|
|
@ -745,17 +745,281 @@ Ce type de modèle va discriminer parmi les classes possibles $P(c|doc)$
|
|||
|
||||
## Régression logistique
|
||||
|
||||
Forme générale de la régression:
|
||||
|
||||
$$
|
||||
P(y=c|x) = \sum_{i=1}^N{w_{i}f_{i}+b}
|
||||
$$
|
||||
|
||||
Classificateur binaire:
|
||||
|
||||
$$
|
||||
\log \left( \frac{P(y=0|x)}{P(y=1|x)} \right) = \sum_{i=1}^N{w_{i}f_{i}}
|
||||
$$
|
||||
|
||||
En utilisant la fonction sigmoïde:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
P(y=1) &= \sigma(w \cdot x + b) \\
|
||||
&= \frac{1}{1+e^{-(w \cdot x + b)}} \\
|
||||
P(y=0) &= 1- \sigma(w \cdot x + b) \\
|
||||
&= \frac{e^{-(w \cdot x + b)}}{1+e^{-(w \cdot x + b)}}
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
On obtient une fonction de décision:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\hat{y} =
|
||||
\begin{cases}
|
||||
1 &, P(y=1|x)>0.5 \\
|
||||
0 &, sinon
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
Pour la régression multiple, on utilise la fonction softmax:
|
||||
|
||||
$$
|
||||
p(y=c|x) = \frac{e^{w_c \cdot x + b_c}}{\sum_{j=1}^k e^{w_j \cdot x + b_j}}
|
||||
$$
|
||||
|
||||
### Construction des attributs
|
||||
|
||||
- Variables indicatrices sur une caractéristique du document
|
||||
- Compteurs de mots ou de polarités
|
||||
- Logarithme de la longueur du document
|
||||
|
||||
Chaque attribut a un poids positif ou négatif
|
||||
|
||||
### Évaluation
|
||||
|
||||
Pour choisir la classe la plus probable, on peut simplifier le problème de régression:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\hat{c} &= arg\,max_{c \in C} P(c|x) \\
|
||||
&=arg\,max_{c \in C} \frac{\exp({\sum_{i=1}^N w_{i}f_{i}(c,x)})}{\sum_{c^{\prime} \in C}{\exp({\sum_{i=1}^N w_{i}f_{i}(c,x)})}} \\
|
||||
&=arg\,max_{c \in C} \exp({\sum_{i=1}^N w_{i}f_{i}(c,x)}) \\
|
||||
&=arg\,max_{c \in C} \sum_{i=1}^N w_{i}f_{i}(c,x) \\
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
On ignore le dénominateur et la fonction exponentielle tout en conservant l'ordre.
|
||||
|
||||
### Apprentissage
|
||||
|
||||
Trouver les paramètres $w_i$ et $b$ qui minimisent les erreurs du classificateur. On veut minimiser une fonction de perte ou maximiser une fonction de vraisemblance.
|
||||
|
||||
Pour la régression logistique: on maximise la vraisemblance:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\log(P(y|x)) &= \log(\hat{y}^y(1-\hat{y}^{1-y}))
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
Ce qui revient à minimiser la fonction de perte suivante:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
L_{CE}(\hat{y},y) &= -\log(P(y|x)) \\
|
||||
&= -[y \log(\hat{y})+(1-y)\log(1-\hat{y})] \\
|
||||
L_{CE}(w,b) &= -[y \log(\sigma(w \cdot x + b))+(1-y)\log(1-\sigma(w \cdot x + b))]
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
La fonction de coût est:
|
||||
|
||||
$$
|
||||
Cost(w,b) = \frac{1}{m} \sum_{i=1}^m L_{CE}(w,b)
|
||||
$$
|
||||
|
||||
On minimise la fonction de perte:
|
||||
|
||||
$$
|
||||
\begin{aligned}
|
||||
\frac{\partial L_{CE}(w,b)}{\partial w_j} &= [\sigma(w \cdot x+b)-y]x_j
|
||||
\end{aligned}
|
||||
$$
|
||||
|
||||
Algorithme utilisé: Descente de gradient stochastique ou avec mini-batch.
|
||||
|
||||
## Conclusion
|
||||
|
||||
||Régression logistique|Naive Bayes|
|
||||
|---|---|---|
|
||||
|Hypothèse d'indépendance|Non|Oui|
|
||||
|Ajustement pour corrélation|Oui|Non|
|
||||
|Interprétabilité|Oui|Non|
|
||||
|Taille de l'échantillon|Grand|Petit|
|
||||
|Entraînement|Algorithme complexe|Simple et rapide|
|
||||
|
||||
|
||||
# Analyse grammaticale
|
||||
|
||||
## Classe de mots
|
||||
**Analyse grammaticale**: Attribuer une étiquette lexicale à chaque mot d’un texte
|
||||
|
||||
Usages:
|
||||
|
||||
- Synthèse vocale (prononciation)
|
||||
- Analyse syntaxique (nom ou verbe)
|
||||
- Extraction d’information (noms, relations)
|
||||
- Traduction automatique (prendre le bon sens)
|
||||
|
||||
## Classes de mots
|
||||
|
||||
- Classes fermées
|
||||
- Nombre fixe de membres:
|
||||
- Prépositions et conjonctions: de, en, vers, et, mais, car,...
|
||||
- Pronoms: je, tu, elle, le mien, ...
|
||||
- Verbes auxiliaires: *may*, *can*, *will*, *been*, ...
|
||||
- Déterminants et nombres: un, la, le, ses, mon, ...
|
||||
- Particules (anglais): up, down, off, on
|
||||
- Classes ouvertes
|
||||
- On peut ajouter de nouveaux mots
|
||||
- Noms (propres, communs, comptables, massifs)
|
||||
- Verbes (action, processus)
|
||||
- Adjectifs
|
||||
- Adverbes (manière, temps, quantité, lieu, ...)
|
||||
|
||||
## POS Tags
|
||||
|
||||
## Analyseur
|
||||
- Plusieurs ensemble d'étiquettes disponibles
|
||||
- Haut niveau (N, V, ADJ, ADV, DET, PRE, PRO)
|
||||
- Plus détaillé (Penn Treebank: 45 étiquettes)
|
||||
|
||||
|Tag |Description |Example |
|
||||
|-----|-----------------------------------------|---------------------------|
|
||||
|CC |conjunction, coordinating |and, or, but |
|
||||
|CD |cardinal number |five, three, 13% |
|
||||
|DT |determiner |the, a, these |
|
||||
|EX |existential there |there were six boys |
|
||||
|FW |foreign word |mais |
|
||||
|IN |conjunction, subordinating or preposition|of, on, before, unless |
|
||||
|JJ |adjective |nice, easy |
|
||||
|JJR |adjective, comparative |nicer, easier |
|
||||
|JJS |adjective, superlative |nicest, easiest |
|
||||
|LS |list item marker | |
|
||||
|MD |verb, modal auxillary |may, should |
|
||||
|NN |noun, singular or mass |tiger, chair, laughter |
|
||||
|NNS |noun, plural |tigers, chairs, insects |
|
||||
|NNP |noun, proper singular |Germany, God, Alice |
|
||||
|NNPS |noun, proper plural |we met two Christmases ago |
|
||||
|PDT |predeterminer |both his children |
|
||||
|POS |possessive ending |'s |
|
||||
|PRP |pronoun, personal |me, you, it |
|
||||
|PRP$ |pronoun, possessive |my, your, our |
|
||||
|RB |adverb |extremely, loudly, hard |
|
||||
|RBR |adverb, comparative |better |
|
||||
|RBS |adverb, superlative |best |
|
||||
|RP |adverb, particle |about, off, up |
|
||||
|SYM |symbol |% |
|
||||
|TO |infinitival to |what to do? |
|
||||
|UH |interjection |oh, oops, gosh |
|
||||
|VB |verb, base form |think |
|
||||
|VBZ |verb, 3rd person singular present |she thinks |
|
||||
|VBP |verb, non-3rd person singular present |I think |
|
||||
|VBD |verb, past tense |they thought |
|
||||
|VBN |verb, past participle |a sunken ship |
|
||||
|VBG |verb, gerund or present participle |thinking is fun |
|
||||
|WDT |wh-determiner |which, whatever, whichever |
|
||||
|WP |wh-pronoun, personal |what, who, whom |
|
||||
|WP$ |wh-pronoun, possessive |whose, whosever |
|
||||
|WRB |wh-adverb |where, when |
|
||||
|. |punctuation mark, sentence closer |.;?* |
|
||||
|, |punctuation mark, comma |, |
|
||||
|: |punctuation mark, colon |: |
|
||||
|( |contextual separator, left paren |( |
|
||||
|) |contextual separator, right paren |) |
|
||||
|
||||
Problème: Les mots ont souvent plus d'une étiquette, il faut alors déterminer la bonne.
|
||||
|
||||
## Modèle HMM
|
||||
|
||||
**HMM**: Hidden Markov Models
|
||||
|
||||
- Approche probabiliste
|
||||
- Cas spécial d'intérence bayésienne
|
||||
- Modèle génératif:
|
||||
- On détermine la structure de la phrase
|
||||
- On choisit le mot associé à chaque étiquette
|
||||
- La première étape est une chaîne de Markov et la seconde, l'extension cachée
|
||||
|
||||
### Définitions
|
||||
|
||||
- **Chaîne de Markov**: Automate avec des probabilités associées aux transitions. Chaque état ne dépend que du précédent.
|
||||
- **Séquence d'entrée**: États suivis par l'automate.
|
||||
- **Espace d'états**: Ensemble fermé d'états
|
||||
- **Probabilité de transition**: Probabilité de passer de l'état $i$ à l'état $j$: $P(q_i=j|q_{i-1}=i)$
|
||||
- **Probabilité initiale**: $\pi_i$: probabilité de démarrer dans l'état $q_i$
|
||||
|
||||
### Application au POS tagging
|
||||
|
||||
- Les états correspondent aux étiquettes lexicales. Ils sont cachés, ce qu'on observe, ce sont les mots. D'où le besoin d'une extension.
|
||||
- Probabilité de transition $A=\lbrace a_{ij} \rbrace$: modélise la séquence d'étiquettes
|
||||
- Probabilité d'émission $B=\lbrace b_i(k) \rbrace$: associe les mots aux étiquettes
|
||||
|
||||
![](hmm.png)
|
||||
|
||||
Quelle est la meilleure séquence d'étiquettes qui correspond à la séquence d'observations ?
|
||||
|
||||
### Approche probabiliste
|
||||
|
||||
- Considérer toutes les séquences possibles $t_1, t_2, \ldots, t_n$
|
||||
- Sélectionner celle qui est la plus probable: maximiser $P(t_1, t_2, \ldots, t_n|w_1,\ldots,w_n)$
|
||||
- Problème d'optimisation:
|
||||
|
||||
$$
|
||||
\hat{t}_1^n = arg\,max_{t_1^n} \frac{P(w_1^n|t_1^n)P(t_1^n)}{P(w_1^n)}
|
||||
$$
|
||||
|
||||
Comme le dénominateur est une constante dans cette optimisation, on peut simplifier le problème:
|
||||
|
||||
$$
|
||||
\hat{t}_1^n = arg\,max_{t_1^n} \overbrace{P(w_1^n|t_1^n)}^{\text{vraisemblance}}\overbrace{P(t_1^n)}^{\text{a priori}}
|
||||
$$
|
||||
|
||||
- Vraisemblance: les mots correspondent aux étiquettes
|
||||
- a priori: probabilité de retrouver une séquence d'étiquettes
|
||||
|
||||
Estimation:
|
||||
|
||||
- Présence d'une étiquette ne dépend que de la précédente: bigrammes
|
||||
$$
|
||||
P(t_1^n) \approx \prod_{i=1}^n P(t_i|t_{i-1})
|
||||
$$
|
||||
- Exemple:
|
||||
$$
|
||||
P(\text{DT JJ NN} \ldots) = P(\text{DT}|\text{<s>})P(\text{JJ}|\text{DT})P(\text{NN}|\text{JJ})\ldots
|
||||
$$
|
||||
- Présence d'un mot ne dépend que de son étiquette
|
||||
$$
|
||||
P(w_1^n|t_1^n) \approx \prod_{i=1}^n P(w_i|t_i)
|
||||
$$
|
||||
- Exemple:
|
||||
$$
|
||||
P(\text{le petit chien}|\text{DT JJ NN}) = P(\text{le}|\text{DT})P(\text{petit}|\text{JJ})P(\text{chien}|\text{NN})
|
||||
$$
|
||||
- Résultat:
|
||||
$$
|
||||
\hat{t}_1^n = arg\,max_{t_1^n}P(w_1^n|t_1^n)P(t_1^n) \approx \prod_{i=1}^n \overbrace{P(w_i|t_i)}^{\text{émission}}\overbrace{P(t_i|t_{i-1})}^{\text{transition}}
|
||||
$$
|
||||
|
||||
### Estimation des probabilités
|
||||
|
||||
À l'aide d'un corpus étiqueté
|
||||
|
||||
- Transition: $$P(t_i|t_{i-1}) = \frac{C(t_{t-1}|t_i)}{C(t_{i-1})}$$
|
||||
- Émission: $$P(w_i|t_i)=\frac{C(t_i,w_i)}{C(t_i)}$$
|
||||
|
||||
## Décodage: Algorithme de Viterbi
|
||||
|
||||
Comme il n'est pas pratique d'énumérer tous les chemins possibles et d'estimer leurs probabilités, on utilise la programmation dynamique.
|
||||
|
||||
|
||||
## Algorithme de Viterbi
|
||||
|
||||
## MEMM
|
||||
|
||||
|
|
71
hmm.dot
Normal file
71
hmm.dot
Normal file
|
@ -0,0 +1,71 @@
|
|||
digraph G {
|
||||
ratio=1.2
|
||||
mincross = 2.0
|
||||
subgraph cluster_A {
|
||||
q_0[label=<Start<SUB>0</SUB>>];
|
||||
q_1[label=<MD<SUB>1</SUB>>];
|
||||
q_2[label=<VB<SUB>2</SUB>>];
|
||||
q_3[label=<NN<SUB>3</SUB>>];
|
||||
q_4[label=<End<SUB>4</SUB>>];
|
||||
q_0->q_1[label="a01"];
|
||||
q_0->q_2[label="a02"];
|
||||
q_0->q_3[label="a03"];
|
||||
q_1->q_1[label="a11"];
|
||||
q_1->q_2[label="a12"];
|
||||
q_1->q_3[label="a13"];
|
||||
q_1->q_4[label="a14"];
|
||||
q_2->q_1[label="a21"];
|
||||
q_2->q_2[label="a22"];
|
||||
q_2->q_3[label="a23"];
|
||||
q_2->q_4[label="a24"];
|
||||
q_3->q_1[label="a31"];
|
||||
q_3->q_2[label="a32"];
|
||||
q_3->q_3[label="a33"];
|
||||
q_3->q_4[label="a34"];
|
||||
}
|
||||
subgraph cluster_B1 {
|
||||
B1[
|
||||
shape=plaintext
|
||||
label=<
|
||||
<table border='1' cellborder='1'>
|
||||
<tr><td><b>B<sub>1</sub></b></td></tr>
|
||||
<tr><td>P("aardvark"|MD)</td></tr>
|
||||
<tr><td>P("will"|MD)</td></tr>
|
||||
<tr><td>P("the"|MD)</td></tr>
|
||||
<tr><td>P("black"|MD)</td></tr>
|
||||
<tr><td>P("zebra"|MD)</td></tr>
|
||||
</table>
|
||||
>];
|
||||
}
|
||||
subgraph cluster_B2 {
|
||||
B2[
|
||||
shape=plaintext
|
||||
label=<
|
||||
<table border='1' cellborder='1'>
|
||||
<tr><td><b>B<sub>2</sub></b></td></tr>
|
||||
<tr><td>P("aardvark"|VB)</td></tr>
|
||||
<tr><td>P("will"|VB)</td></tr>
|
||||
<tr><td>P("the"|VB)</td></tr>
|
||||
<tr><td>P("black"|VB)</td></tr>
|
||||
<tr><td>P("zebra"|VB)</td></tr>
|
||||
</table>
|
||||
>];
|
||||
}
|
||||
subgraph cluster_B3 {
|
||||
B3[
|
||||
shape=plaintext
|
||||
label=<
|
||||
<table border='1' cellborder='1'>
|
||||
<tr><td><b>B<sub>3</sub></b></td></tr>
|
||||
<tr><td>P("aardvark"|NN)</td></tr>
|
||||
<tr><td>P("will"|NN)</td></tr>
|
||||
<tr><td>P("the"|NN)</td></tr>
|
||||
<tr><td>P("black"|NN)</td></tr>
|
||||
<tr><td>P("zebra"|NN)</td></tr>
|
||||
</table>
|
||||
>];
|
||||
}
|
||||
q_1 -> B1
|
||||
q_2 -> B2
|
||||
q_3 -> B3
|
||||
}
|
BIN
hmm.png
Normal file
BIN
hmm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 148 KiB |
Loading…
Reference in a new issue