# idl_09 : Modèles de Markov cachés et annotation en parties du discours # Introduction ### Morphologie en linguistique - domaine qui traite de la structure interne des mots - linguistique structurale : - ==morphème== = unité linguistique minimale (non décomposable) porteuse de sens - unités abstraites - immangeable = im- mange -able - ==notion de morphe== = (une) forme graphique d'un morphème - allomorphes : variantes d'un même morphème /al-/ dans allons, /v-/ dans vais, /ir-/ dans irai sont trois allomorphes du même morphème (ici, pour "aller") - libres : le/beau peuvent exister seuls - liés : -cevoir dans recevoir, percevoir, décevoir, etc. - contextuelles : j'/je ### Procédés morphologiques - ==flexion== : déclinaison, conjugaison :::success grand/grand**s**/grand**e**, cour**s**/cour**ir**/cour**ons** ::: - ==dérivation== : formation de nouveaux mots notamment par adjonction d'affixes au radical :::success anti-constitu-tionn-el-le-ment ::: - ==composition== : combinaison de plusieurs bases pour former un nouveau mot :::success tournevis ::: # Étiquetage morpho-syntaxique ## Présentation - Analyse ==morphologique== : segmentation but : **découper** un mot en segments morphémiques - Analyse ==morpho-syntaxique== but : analyser chaque mot pour lui associer divers types d'informations telles que la ==catégorie grammaticale==, des ==traits morphologiques== ainsi que le ==lemme== correspondant, c'est à dire la forme *canonique* du mot (masculin singulier, infinitif, etc.) :warning: Les mots ont généralement plus d'une étiquette possible :::success - **Le bois** vient de France. -> le/DET bois/NC ... - Je **le bois**. -> Je le/PRONOM bois/VERBE ::: **Objectif de l'étiquetage**: déterminer l'étiquette pour une instance d'un mot :::success Exemple d'entrée à annoter : **Le débat est relancé** - **ambiguïtés:** - le = det / pro - débat = verbe / nom (NOUN) - est = verbe / nom (NOUN) - Exemple de sortie: - Le/DET débat/V est/NOUN relancé/V :book: regardons la probabilité de cette séquence d'étiquettes [Grewmatch](https://universal.grew.fr/?corpus=UD_French-GSD@2.13#) ```! pattern { X1 [upos=DET]; X2 [upos=VERB]; X3 [upos=VERB]; X4 [upos=VERB]; X1 < X2; X2 < X3; X3 < X4 } ``` - sortie correcte : - Le/DET débat/NOUN est/V relancé/V ::: - **Applications:** - synthèse vocale: comment prononcer "couvent" ? - recherche dans un corpus: "est" *en tant que nom* - entrée d'un analyseur syntaxique :::success :book: recherche sur [Grewmatch](https://universal.grew.fr/?corpus=UD_French-GSD@2.13#) pattern { X [upos="NOUN", form="est"] } ::: :question: Comment choisir l'étiquette adaptée ? - contexte : | Le | bois | vient | de | France | |-----|------|-------|----|--------| | **DET** | **NC** | V | P | NPP | | **PRO** | **V** | V | P | NPP | - connaissance des probabilités d'étiquettes des mots la bonne soupe :yum: :bowl_with_spoon: ou la bonne soupe :woman: :fork_and_knife: ? | La | bonne | soupe | |-----|--------------|-------------| | DET | NC (p=0.05) | V (p=0.15) | | DET | ADJ (p=0.95) | NC (p=0.85) | **Exercice** :::success Orange, au cours du matin, a permis la prise de bénéfices. Nous avions fait des paris audacieux sur cette valeur qui est montée dès l'ouverture du CO. ::: **Etiquettes possibles :** adjectif, adverbe, déterminant, interjection, verbe, participe passé, nom commun, nom propre, préposition, préposition+déterminant, pronom. - Orange [nom propre, adjectif, nom] - au [préposition+déterminant] - cours [nom, verbe] - du [préposition+déterminant, participe passé, nom (*mal orthographié* ?)] - au cours du [préposition] - matin [adverbe, nom] - a [verbe, nom] - permis [participe passé, nom, adjectif] - la [déterminant, pronom, nom] - prise [nom, participe passé] - de [préposition] - bénéfices [nom] **Lemmatisation** : - Orange -> orange | Orange - au -> à + le - cours -> cours | courir - du -> de + le | du | devoir - matin -> matin - a -> a | avoir - permis -> permis | permettre - la -> le - prise -> prise | prendre - de -> de - bénéfices -> bénéfice ## Quelques approches ### Morpho-syntaxe : solutions (?) en extension Le lexique [Morphalou](https://www.ortolang.fr/market/lexicons/morphalou) 3.1 comprend la transcription phonétique de 93 695 lemmes et 522 662 formes fléchies. La version 3 de [Morphalou](https://www.ortolang.fr/market/lexicons/morphalou) a été obtenue par la fusion de quatre lexiques : - Morphalou 2 (version de décembre 2013) - DELA (version de décembre 2011) - Dicollecte (version 4.3) - LGLex et LGLexLefff (version 3.4) - Lefff (version 2.1 avril 2006) ### "Factoriser" la lemmatisation : la racinisation Une solution naïve énumérative. 1. recenser les affixes - grammaticaux (flexionnels) : ons, ont, s, aux - morphèmes : -ment, -eur, in- 2. tronquer, à droite ou à gauche - part/sort/ -ir -ie -ant -ons - malad/ -e -es -ie -ies => construction de graphes : [Démonette](https://demonette.fr/demonext/vues/front_page.php), exemple du lemme ["pas"](https://demonette.fr/demonext/vues/lexeme_family_graph.php?lid=l316928) :::danger :question: Peut-on facilement développer un modèle d'annotation en morphosyntaxe (catégories grammaticales) facilement avec la bonne ressource ? ::: ## Modèles de Markov cachés (*Hidden Markov Model*, HMM) Les **modèles de Markov cachés** sont des modèles de Markov où les états du systèmes ne sont pas les observables (= cachés). L'objectif ici est d'apprendre à deviner les états sous-jacents étant donné des données observables. :::info - observables : séquence de mots - états cachés : catégories grammaticales ::: **Situation initiale :** Les catégories grammaticales forment une chaîne de Markov. Dans un HMM, une phrase est une séquence d'étiquettes morphosyntaxiques ayant servi à générer une séquence de mots. :::success Modélisation d'une phrase annotée en morphosyntaxe dans un HMM : ![image](https://hackmd.io/_uploads/Hy82eBw6a.png) ::: **Le modèle** Un HMM utilise trois types de probabilités : - les ==probabilités initiales (flèche épaisse)== : les probabilités de chaque étiquette d'apparaître en début de séquence. - les ==probabilités de transition== (flèches vers la droite) : les probabilités de passer d'une étiquette à une autre (= chaîne de Markov d'ordre 1). - les ==probabilités d'émission== (flèches vers le bas) : les probabilités qu'un état (étiquette) émette une observation (mot). ### Construction depuis exemples Se fait à l'aide de statistiques, comme pour une chaîne de Markov. - la/DET bonne/NC soupe/VERB - la/DET bonne/ADJ soupe/NC - la/DET soupe/NC fume/VERB ==Initiales== : - DET = 1 ==Transitions== : - ADJ , NC = 1 - DET , NC = $2/3$ - DET , ADJ = $1/3$ - NC , VERB = $2/2$ = 1 ==Émissions== : - ADJ -> bonne = 1 - DET -> la = 1 - NC -> - bonne = $1/3$ - soupe = $2/3$ - VERB -> - soupe = $1/2$ - fume = $1/2$ exemple repris de : https://lattice.cnrs.fr/sites/itellier/cours-HMM-CRF.pdf ### Décodage : test de notre modèle sur la phrase "la bonne fume" On appelle, pour un HMM, le ==décodage== le fait de trouver la meilleure séquence d'états étant donnée une séquence d'obervations données. L'algorithme de Viterbi utilise la propriété de Markov pour donner la meilleure séquence. À chaque instant, on évalue quel est le meilleur "pas" à faire. La meilleure séquence est simplement la suite des meilleurs pas (la séquence la plus probable est la suite des transitions les plus probables). L'algorithme fonctionne de la façon suivante : 1. **pour le 1er mot** : on calcule, pour chaque étiquette, sa probabilité initiale étant donné le mot. 2. **pour les autres** : on calcule, pour chaque étiquette, les meilleures transitions depuis le mot précédent, on garde une trace de là où l'on vient (back pointer ). 3. récupération la **meilleure séquence** en partant de la n$^è$ et en rebroussant chemin (*backtrack*). #### Algorithme de Viterbi On commence avec une matrice vide (penser que cellule vide = probabilité de 0). On calcule la probabilité du premier mot en multipliant la probabilité initiale et la probabilité d'émission. - ==Initiales== : DET = 1 - DET -> la = 1 ![Capture d’écran du 2024-03-07 14-40-52](https://hackmd.io/_uploads/Hy7xNHDap.png) Pour chaque étiquette à un instant $t$ (étiquette$_{t}$) possible, on cherche la meilleure transition depuis l'instant $t-1$. ==Transitions== : - ADJ , NC = 1 - ==DET== , - NC = $2/3$ - ==ADJ = $1/3$== - NC , VERB = 1 On calcule la meilleure transition pour chaque étiquette du mot suivant : "bonne". ![Capture d’écran du 2024-03-07 14-43-25](https://hackmd.io/_uploads/Hyst4HPaT.png) ![Capture d’écran du 2024-03-07 14-44-38](https://hackmd.io/_uploads/HJyQHSv6a.png) Une fois la meilleure transition trouvée, on la multiplie avec la probabilité d'émission. ==Émissions== : - ==ADJ -> bonne = 1== - DET -> la = 1 - NC -> - bonne = $1/3$ - soupe = $2/3$ - VERB -> - soupe = $1/2$ - fume = $1/2$ ![Capture d’écran du 2024-03-07 14-47-47](https://hackmd.io/_uploads/SyB5SSwaT.png) ![Capture d’écran du 2024-03-07 14-48-14](https://hackmd.io/_uploads/SyTiBSP6p.png) - ==DET== , - ==NC = $2/3$== - ADJ = $1/3$ ![Capture d’écran du 2024-03-07 14-48-32](https://hackmd.io/_uploads/ryMpBHP6a.png) - NC -> - bonne = ==$1/3$== ![image](https://hackmd.io/_uploads/SkZkLHv6p.png) ![Capture d’écran du 2024-03-07 14-50-06](https://hackmd.io/_uploads/ryTzLHv66.png) ... On continue à remplir la matrice : - ==NC , VERB = 1== - VERB -> - soupe = $1/2$ - ==fume = $1/2$== ![Capture d’écran du 2024-03-07 14-51-02](https://hackmd.io/_uploads/rk6UUHDa6.png) ... Puis on backtrack pour trouver la séquence la plus probable ! ![image](https://hackmd.io/_uploads/H1Pr8HDp6.png) :::info **Résultat** : "La bonne fume" => la/**DET** bonne/**NC** fume/**VERB** :dancer: ::: ### Quelques ressources - **ELDA** (European Language Ressource Association) <http://www.elda.org/> - **CNRTL** (Centre National de Ressources Textuelles et Lexicales) <http://www.cnrtl.fr/> - **Delaf** <http://infolingu.univ-mlv.fr/> - **GeoNames** <http://www.geonames.org/> étude pour les technologies du langage. - **LeFFF** (Lexique des Formes Fléchies du Français) <http://alpage.inria.fr/~sagot/> - **Morphalou** <https://www.ortolang.fr/market/lexicons/morphalou> - les lexiques **ORTOLANG** (Outils et Ressources pour un Traitement Optimisé de la LANGue) <https://www.ortolang.fr/market/lexicons> NB : les ressources sont à la fois un besoin, une finalité et un objet