Vous êtes sur la page 1sur 5

École nationale Supérieure d'Informatique (ESI, Ex.

INI), Alger
2CSSID 2021/2022
Contrôle Intermédiaire (CI)
Traitement automatique du langage naturel (TALN)

Lundi 18 avril 2022 - Examen (1h40) - Partie 1


Documents et calculatrice non autorisés
Il faut répondre sur cette feuille (pages 1 et 2) ; Il faut rendre cette feuille même vide

Nom + Prénom : Someone from planet not-earth

QCM. Test de connaissance (7pts : 30mn)


Pour chaque question, un choix erroné annule un autre correct. La note minimale par question est 0.

1) Voici un passage : "Vers le même temps, le Thénardier lui écrivit que décidément il avait attendu avec
beaucoup trop de bonté, et qu'il lui fallait cent francs, tout de suite ; sinon qu'il mettrait à la porte la petite
Cosette, toute convalescente de sa grande maladie, par le froid, par les chemins, et qu'elle deviendrait ce
qu'elle pourrait, et qu'elle crèverait, si elle voulait.". Nous avons appliqué des remplacements avec les deux
expressions régulières suivantes (dans cet ordre) : (1) / (.{3,}er)ait / \1 / (2) / (.{3,})ait / \1oir /. La notation de
"sed (linux)" est utilisée : /expression/remplacement/. Sélectionner les nouvelles expressions (0.25pt * 7) :
☐ écrivoir ☒ avoir ☒ mettroir ☒ deviendroir ☐ deviendr ☐ pouvoir ☐ crever ☐ crevoir
☐ écrire ☒ falloir ☐ mettre ☐ devenir ☒ pourroir ☒ crèver ☐ crèveroir ☒ vouloir

2) Nous avons remarqué qu'il y avait plusieurs mots qui se terminent par "ait" et qui ne sont pas des verbes au
subjonctif ; comme les noms "souhait", "parfait", "lait", etc. Aussi, il existe des verbes qui sont aussi irréguliers
qu'ils ne gardent pas leurs formes ; comme "être" → "soit". Sélectionner les solutions possibles (0.25pt * 2) :

☐ Expressions régulières ☐ Segmentation du texte ☒ Bases lexicales


☐ Distance d'édition ☐ Filtrage des mots vides ☒ Etiquetage morpho-syntaxique

3) Quelles sont les distances d'édition entre le mot "grande" et "garden" ? Ici, le coût de la substitution est 1
(0.5pt * 2) :
Distance Non applicable 0 1 2 3 4 5
Hamming ◯ ◯ ◯ ◯ ◯ ◯ ⬤

Levenstein ◯ ◯ ◯ ◯ ⬤ ◯ ◯

4) Choisir, pour chaque mot avant et après sa transformation, l'opération (les opérations) de réduction de forme
utilisée(s) (0.25pt * 5) :
Mot avant/après transformation Lemmatisation Racinisation Aucune
fallait/fall ☐ ☒ ☐
voulait/vouloir ☒ ☐ ☐
pourrait/pourroir ☐ ☐ ☒
chemins/chemin ☒ ☒ ☐

Alger.ESI.2CSSID.TALN.CI page 1/5


5) Sélectionner les propositions correctes concernant les traitements basiques d'un texte (0.25pt * 6) :

☒ Les expressions régulières reconnaissent un langage régulier.

☒ Les variations morphologiques d'une langue flexionnelle peuvent être traitées comme un langage régulier.

☐ Les distances d'édition capturent la même information ; c-à-d. si une distance soit grande, l'autre devrait
être grande aussi.
☐ En français, l'espace est le seul marqueur utilisé pour séparer les mots.

☒ Un texte non normalisé possède une forte possibilité qu'il ait plus de vocabulaire qu'un autre normalisé.

☒ Les mots vides ne doivent pas être supprimés dans certaines tâches ; comme l'analyse syntaxique.

☒ La lemmatisation et la radicalisation peuvent être considérées comme de la normalisation.

☒ La formation des mots (flexion et dérivation) est une tâche du niveau morphologique.

6) Étant donné une phrase de "T" mots et une langue de "N" étiquettes, la complexité de l'encodage Viterbi sera
O(N2T). Si à chaque instant "t" nous considérions seulement "K<N" étiquettes (après tester tous les tags
possibles avec ceux choisis précédemment), quelle serait la complexité ? (La matrice viterbi sera [K, T]).
(0.5pt)
◯ O(N2T) ⬤ O(KNT) ◯ O(K2T) ◯ O(N2K)

7) Est-ce que cette approche nous assure la solution optimale ? (0.5pt)


◯ Oui ⬤ Non

Annexe : Rappel Viterbi

Alger.ESI.2CSSID.TALN.CI page 2/5


École nationale Supérieure d'Informatique (ESI, Ex. INI), Alger
2CSSID 2021/2022
Contrôle Intermédiaire (CI)
Traitement automatique du langage naturel (TALN)
Lundi 18 avril 2022 - Examen (1h40) - Partie 2
Documents et calculatrice non autorisés
Simplifier les fractions par la décomposition en produit des facteurs premiers
La réponse est sur la feuille d'examen ; Vous pouvez prendre cette feuille avec vous

Exercice 01. Application (10pts : 45mn)


Voici un treebank (4 phrases où chaque mot est annoté par sa catégorie grammaticale) et une grammaire qui
permet de générer ces phrases (les syntagmes et le lexicon).
I/PN fish/VB small/AJ fish/NM S → NP VP AJ → small | big
I/PN swim/VB like/PR fish/NM NP → AJ NM | NM | PN NM → fish | ducks
ducks/NM swim/VB VP → VB NP | VB PP VB → fish | like
I/PN like/VB big/AJ fish/NM PP → PR NP PN → I PR → like

1) Modèles de langage
En utilisant un modèle trigramme avec lissage de Laplace (la taille du vocabulaire est le nombre de différents
mots sans compter les paddings), calculer la probabilité de la phrase "ducks like fish". (1.5pts)
p(ducks|<s><s>) = (1+1)/(4+7) = 2/11 (0.25pt) p(like|<s> ducks) = (0+1)/(1+7) = 1/8 (0.25pt)
p(fish| ducks like) = (0+1)/(0+7)=1/7 (0.25pt) p(</s>|like fish) = (1+1)/(1+7) = 2/8 = 1/4 (0.25pt)
p(</s>|fish </s>) = (3 +1)/(3+7) = 4/10 = 2/5 (0.25pt)
p(ducks like fish) = 2/11 * 1/8 * 1/7 * 1/4 * 2/5 = 1/(2^3 * 5 * 7 * 11) (0.25pt)

2) Etiquetage morpho-syntaxique
En utilisant un HMM sans lissage, calculer la probabilité p(NM VB AJ NM | "ducks like small fish"). (2.5pts)
(HMM : Hidden Markov Model ; Modèle de Markov caché)

Probabilité initiale : 𝜋(NM) = 1/4 (0.25pt)


Probabilités de transition :
p(VB|NM) = 1/4 (0.25pt) p(AJ|VB) = 2/4 = 1/2 (0.25pt) p(NM|AJ) = 2/2 = 1 (0.25pt)
Probabilités d'émission :
p(ducks|NM) = 1/4 (0.25pt) p(like|VB) = 1/4 (0.25pt) p(small|AJ) = 1/2 (0.25pt)
p(fish|NM) = 3/4 (0.25pt)
Probabilité de la séquences de tags :
p(NM VB AJ NM | "ducks like small fish") = p(T|W) = p(T) * P(W|T) / p(W) ∝ p(T) * p(W|T)
p(T|W) = ( 1/4 * 1/4 * 1/2 * 1 ) * ( 1/4 * 1/4 * 1/2 * 3/4 ) = 3/(2^12) (0.5pt)

Alger.ESI.2CSSID.TALN.CI page 3/5


3) Analyse syntaxique
Compléter les analyses suivantes (6pts = 0.25 * 24 cases) :
A) CKY B) Arc-standard ("Oracle" est bien entraîné)

ducks like small fish σ (pile) β (tampon) Action arc de A


(NM, 0, 0, 0) (S, 1, 1, 2)
— — [ROOT] ducks like small fish SHIFT /
(NP, 0, 0, 0) (S, 1, 2, 2)
(PR, 0, 0, 0) (PP, 2, 1, 1)
— [R, ducks] like small fish ARC-L like → ducks
(VB, 0, 0, 0) (VP, 2, 2, 1)

(AJ, 0, 0, 0) (NP,3,1,1) [ROOT] like small fish SHIFT /

(NM, 0, 0, 0)
(NP, 0, 0, 0) [R, like] small fish SHIFT /
(VB, 0, 0, 0)

[R, like, small] fish ARC-L fish →small

[R, like] fish ARC-R like →fish

[ROOT] like ARC-R ROOT→like

[ROOT] ∅ FIN /
(R=ROOT, ARC-L = ARC-LEFT, ARC-R = ARC-RIGHT)

Exercice 02. Test de réflexion (3pts : 25mn)


Nous voulons développer un système de génération de texte en utilisant un modèle de langage basé sur les
réseaux de neurones récurrents (ici, nous avons utilisé GRU). Afin d'entraîner le modèle, initialement, nous
passons un vecteur de H zéros comme contexte et le padding "<s>" encodé en OneHot comme entrée. Ensuite,
la sortie de la cellule GRU, qui est le nouveau contexte, est passée vers la cellule suivante. Aussi, elle est passée
par un réseau de neurones à propagation avant (FFNN) afin de générer le mot suivant (un vecteur des
probabilités de chaque mot du vocabulaire). A chaque itération, nous calculons l'erreur et nous passons le vrai
mot et pas celui estimé vers la cellule suivante.

Après l'entraînement du modèle, ce dernier est utilisé pour générer du texte. Premièrement, nous passons un
contexte de zéro et le padding "<s>" par la cellule GRU. Le résultat est un vecteur de probabilités où nous
choisissons le mot avec la probabilité maximale et nous le passons par la cellule suivante. Nous refaisons la
même opération jusqu'à la génération du padding "<s>" (ici, nous n'utilisons pas "</s>" puisque le début d'une
phrase <s> peut être considéré comme la fin d'une autre).

Alger.ESI.2CSSID.TALN.CI page 4/5


1. Nous avons remarqué que le modèle génère toujours la même phrase. Proposer un algorithme de
génération qui règle ce problème sans ré-entraîner le modèle. (1pt)
A chaque fois qu'on génère un vecteur de probabilité, on sélectionne le mot avec un nombre
aléatoire. Si le nombre soit entre 0 et 1/V, nous prendrions le premier mot qui maximise la
probabilité. Si le nombre soit entre 1/V et 2/V, nous prendrions le deuxième mot qui maximise la
probabilité. Si le nombre soit entre (n-1)/N et n/N, nous prendrions le nième mot qui maximise la
probabilité. Nous pouvons diviser la plage d'une façon non uniforme suivant une autre loi. Il se
peut qu'il ait d'autres solutions.
2. Nous avons remarqué que les variations morphologiques (les suffixes) augmentent la complexité du
système (des grands vecteurs pour représenter les mots ; donc, plus de temps d'entraînement et
d'estimation). Proposer une amélioration sur cette architecture en générant les mots avec leurs variations
morphologiques mais avec moins de taille. (2pts)
Nous pouvons appliquer une sorte de radicalisation afin de séparer les racines de leurs suffixes.
Deux solutions peuvent être envisagées :
● Nous pouvons considérer les radicaux et les suffixes comme étant des mots. Ensuite, nous
entraînons le modèle afin d'estimer la racine, ensuite le suffixe.
● Nous pouvons définir deux vocabulaires : un des racines et un des suffixes. Dans la sortie
de la cellule GRU, on entraîne deux réseaux de neurones à propagation avant. Le premier
prend le contexte courant et estime la racine et le deuxième prend le même contexte et
estime le suffixe.

Alger.ESI.2CSSID.TALN.CI page 5/5

Vous aimerez peut-être aussi