tc_info:2020_cm_textes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tc_info:2020_cm_textes [2023/11/29 23:21] – [2 Recherche dans les textes] edaucetc_info:2020_cm_textes [2023/11/30 10:21] (Version actuelle) edauce
Ligne 490: Ligne 490:
  
 1. **Caractères littéraux :** 1. **Caractères littéraux :**
-   Les caractères alphabétiques et numériques sont traités littéralement. Par exemple, le motif `"abc"correspond à la chaîne `"abc"`.+  * Les caractères alphabétiques et numériques sont traités littéralement. Par exemple, le motif ''"abc"'' correspond à la chaîne ''"abc"''.
  
 2. **Caractères spéciaux :** 2. **Caractères spéciaux :**
-   Certains caractères ont une signification spéciale dans une expression régulière et doivent être échappés s'ils doivent être traités littéralement. Ces caractères spéciaux incluent `. ^ $ * + ? { } [ ] \ | ( )`.+   Certains caractères ont une signification spéciale dans une expression régulière et doivent être échappés s'ils doivent être traités littéralement. Ces caractères spéciaux incluent ''. ^ $ * + ? { } [ ] \ | ( )''.
  
 3. **Classes de caractères :** 3. **Classes de caractères :**
-   - `[abc]: Correspond à un caractère qui est soit `a``bou `c`+   * ''[abc]'' : Correspond à un caractère qui est soit ''a''''b'' ou ''c''
-   - `[^abc]: Correspond à un caractère qui n'est pas `a``bou `c`+   * ''[^abc]'' : Correspond à un caractère qui n'est pas ''a''''b'' ou ''c''
-   - `[a-z]: Correspond à un caractère alphabétique en minuscules. +   * ''[a-z]'' : Correspond à un caractère alphabétique en minuscules. 
-   - `[A-Z]: Correspond à un caractère alphabétique en majuscules. +   * ''[A-Z]'' : Correspond à un caractère alphabétique en majuscules. 
-   - `[0-9]: Correspond à un chiffre.+   * ''[0-9]'' : Correspond à un chiffre.
  
 4. **Caractères génériques :** 4. **Caractères génériques :**
-   - `.: Correspond à n'importe quel caractère sauf une nouvelle ligne. +   * ''.'' : Correspond à n'importe quel caractère sauf une nouvelle ligne. 
-   - `\d: Correspond à un chiffre (équivalent à `[0-9]`). +   * ''\d'' : Correspond à un chiffre (équivalent à ''[0-9]''). 
-   - `\D: Correspond à un caractère qui n'est pas un chiffre. +   * ''\D'' : Correspond à un caractère qui n'est pas un chiffre. 
-   - `\w: Correspond à un caractère alphanumérique (équivalent à `[a-zA-Z0-9_]`). +   * ''\w'' : Correspond à un caractère alphanumérique (équivalent à ''[a-zA-Z0-9_]''). 
-   - `\W: Correspond à un caractère qui n'est pas alphanumérique.+   * ''\W'' : Correspond à un caractère qui n'est pas alphanumérique.
  
 5. **Quantificateurs :** 5. **Quantificateurs :**
-   - `*: Correspond à zéro ou plusieurs occurrences du caractère précédent. +   ''*'' : Correspond à zéro ou plusieurs occurrences du caractère précédent. 
-   - `+: Correspond à une ou plusieurs occurrences du caractère précédent. +   * ''+'' : Correspond à une ou plusieurs occurrences du caractère précédent. 
-   - `?: Correspond à zéro ou une occurrence du caractère précédent. +   * ''?'' : Correspond à zéro ou une occurrence du caractère précédent. 
-   - `{n}: Correspond exactement à `noccurrences du caractère précédent. +   * ''{n}'' : Correspond exactement à ''n'' occurrences du caractère précédent. 
-   - `{n,}: Correspond à au moins `noccurrences du caractère précédent. +   * ''{n,}'' : Correspond à au moins ''n'' occurrences du caractère précédent. 
-   - `{n,m}: Correspond à entre `net `moccurrences du caractère précédent.+   * ''{n,m}'' : Correspond à entre ''n'' et ''m'' occurrences du caractère précédent.
  
 6. **Ancrages :** 6. **Ancrages :**
-   - `^: Correspond au début de la chaîne. +   * ''^'' : Correspond au début de la chaîne. 
-   - `$: Correspond à la fin de la chaîne.+   * ''$'' : Correspond à la fin de la chaîne.
  
 7. **Groupes et Alternatives :** 7. **Groupes et Alternatives :**
-   - `(): Crée un groupe. Par exemple, `(abc)+correspond à une ou plusieurs occurrences de `"abc"`+   * ''()'' : Crée un groupe. Par exemple, ''(abc)+'' correspond à une ou plusieurs occurrences de ''"abc"''
-   - `|: Représente une alternative (ou). Par exemple, `a|bcorrespond à `"a"ou `"b"`.+   * ''|'' : Représente une alternative (ou). Par exemple, ''a|b'' correspond à ''"a"'' ou ''"b"''.
  
 8. **Échappement :** 8. **Échappement :**
-   - `\: Permet d'échapper un caractère spécial pour le traiter littéralement. Par exemple, `\\correspond à un seul backslash.+   * ''\'' : Permet d'échapper un caractère spécial pour le traiter littéralement. Par exemple, ''\\'' correspond à un seul backslash.
  
 </note> </note>
Ligne 558: Ligne 558:
   * début de mot : ''ar''   * début de mot : ''ar''
   * complétions possibles : ''{art, arbre}''   * complétions possibles : ''{art, arbre}''
 +
 +** Autre exemple:**
 +{{https://algo.developpez.com/images/faq/StructuresArborescentes/arbre_patricia.png}}
 ==== 4 Comparaison/appariement de textes ==== ==== 4 Comparaison/appariement de textes ====
 On cherche à exprimer une distance entre deux chaînes de caractères. On cherche à exprimer une distance entre deux chaînes de caractères.
Ligne 682: Ligne 685:
  
 {{:tc_info:corr:alignement_glouton.png?600|}} {{:tc_info:corr:alignement_glouton.png?600|}}
 +
 +==== 5. Modèles génératifs ====
 +
 +Soit un document $d$ :
 +  * constitué de $T$ symboles $d[1]$, …, $d[i]$, ….
 +  * appartenant à l'alphabet $A = \{\alpha_1,...,\alpha_K\}$ constitué de $K$ symboles.
 +
 +
 +Une description statistique d’un texte correspond à un histogramme qui porte sur un ensemble de symboles : 
 +
 +{{:restricted:text_mining.png|}}
 +
 +<note tip> 
 +Modèles probabiliste : la suite de symbole observés (le message) est générée par un processus aléatoire:
 +$d = (d_1, d_2, ..., d_T$)
 +  * chaque $d_i$ est la réalisation d'un tirage aléatoire
 +  * obéissant à une distribution de probabilité $p$
 +</note>
 +
 +<note important>
 +Les symboles sont au choix :
 +  * des caractères appartenant à un alphabet
 +  * des termes appartenant à un vocabulaire
 +</note>
 +
 +=== 5.1 Modèles probabilistes ===
 +
 +Les modèles probabilistes interprètent les données de type texte comme étant générées par une distribution de probabilité $P$ inconnue. 
 +
 +La distribution $P$ définit le langage utilisé dans le texte. On ne s'intéresse pas au sens du message, on regarde seulement comment les symboles se répartissent dans les documents, leurs fréquences d'apparition, les régularités, ...
 +
 +=== Fréquence d'un symbole ===
 +
 +Soit $\alpha \in A$ un symbole de l'alphabet. On note $P(X=\alpha)$ la fréquence d'apparition de ce symbole //dans le langage $\mathcal{L}$ considéré//.
 +
 +On a par définition~:
 +$$\sum_{\alpha \in V} P(X=\alpha) = 1$$
 +
 +
 +<note>
 +**Exemple**:
 +$$\boldsymbol{p}_\text{Français} = (0.0942, 0.0102, 0.0264, 0.0339, 0.01587, 0.095, 0.0104, 0.0077, 0.0841, 0.0089, ...)$$
 +où 
 +  * $p_1 = 0.0942$ est la fréquence de la lettre 'A', 
 +  * $p_2 = 0.0102$ est la fréquence d'apparition de la lettre 'B' 
 +  * etc.
 +</note>
 +
 +
 +=== Probabilité jointe ===
 +
 +On s'intéresse maintenant aux fréquence d'apparition de couples de lettre successives.
 +
 +Soient $\alpha$ et $\beta$ deux symboles de l'alphabet. 
 +
 +<note>
 +  * Les séquences de deux caractères sont classiquement appelées des //bigrammes//
 +  * On définit de même les //trigrammes// comme les séquences de trois caractères
 +  * etc.
 +</note>
 +
 +On notera $\boldsymbol{P}_\mathcal{L}$ la matrice des fréquences des bigrammes dans un langage $\mathcal{L}$ donné, où $P_{ij}$ donne la fréquence du bigramme $(\alpha_i,\alpha_j)$.
 +
 +<note>
 +**Exemple**:
 +$$\boldsymbol{P}_\text{Français} = 10^{-5} \times \left(
 +\begin{array}{cccc}
 +1.5 & 116.8 & 199.1 & ...\\
 +62.8 & 1.6 & 0.14 & ...\\
 +184.8 & 0 & 52.4 & ...\\
 +&...&&&
 +\end{array}
 +\right)$$
 +
 +
 +où 
 +  * $P_{11} = 1.5 \times 10^{-5}$ est la fréquence du bigramme 'AA', 
 +  * $P_{12} = 116.8 \times 10^{-5}$ est la fréquence d'apparition du bigramme 'AB' 
 +  * etc.
 +</note>
 +
 +avec bien sûr :
 +$$\sum_{(i,j) \in \{1,...,K\}^2} P_{ij}=1$$
 +
 +<note tip>
 + voir {{http://www.nymphomath.ch/crypto/stat/francais.html|comptage des bigrammes en français}}
 +</note>
 +
 +La **probabilité conditionnelle** du caractère $\beta$ étant donné le caractère précédent $\alpha$ est définie comme :
 +
 +$$P(Y = \beta | X=\alpha) = \frac{|\xi \in \Xi : (X,Y)=(\alpha,\beta)|}{|\xi \in \Xi : X = \alpha|}$$
 +
 +<note tip>
 +
 +{{public:omi-5a-o-rech:proba_condi.png?300}}
 +
 +</note>
 +
 +
 +
 +Soit en français :
 +
 +<note>
 +$$
 +M_\text{Français} = \left(
 +\begin{array}{cccc}
 +0.0016 & 0.0124 & 0.0211 & ...\\
 +0.0615 & 0.0016 & 0.0001 & ...\\
 +0.0700 & 0.0000 & 0.0198 & ...\\
 +& ... &&&
 +\end{array}
 +\right)
 +$$
 +où :
 +  * $M_{11}$ est la probabilité de voir un 'A' suivre un 'A'
 +  * $M_{12}$ est la probabilité de voir un 'B' suivre un 'A'
 +  * etc.
 +</note>
 +
 +<note important>
 +La matrice des probabilités conditionnelles $M$ permet de définir un **modèle génératif** de langage inspiré des **processus aléatoires de Markov**:
 +  * La production d'un mot ou d'un texte est modélisée comme un parcours aléatoire sur une chaîne de Markov définie par la matrice de transitions $M$.
 +  * La fréquence d'apparition des lettres est modélisée comme la mesure stationnaire de la chaîne de Markov, autrement dit le vecteur de probabilité vérifiant : $$ \boldsymbol{p} = \boldsymbol{p} M$$
 +
 +<note>
 +{{public:omi-5a-o-rech:markov-fr.png?400|}}
 +</note>
 +
 + </note>
 +
 +On peutétendre ce principe à la distribution des mots dans les textes, ce qui permet de produire des //modèles génératifs de langage//.
 +
 +  * Exemple : le pseudo latin ("Lorem Ipsum") : {{https://www.lipsum.com/}}
 +  * Exemple de pseudo-français (Utilisant une trace (mémoire) de 1 mot):
 +<note tip>
 +//j'ai vu parfois des yeux, remonter vers toi bien fatiguée! n'est pas un appel de la terre– je hume à coups mutins les voiles la blafarde lumière puisée au delà les vieux flacon débouché rien ne puis la pourriture les forêts ou bien que vénus par des choses dans les forts des senteurs confondues de ma chère, prêtre orgueilleux danse amoureusement l'éphémère ébloui par ses couleurs du haut qu'avec effroi dans sa beauté où je puis, sans remord un fleuve invisible d'un rayon frais n'éclaira vos banquiers un parfait d'une girouette ou décor suborneur ce temps! n'est plus ma carcasse superbe pyrrhus auprès d'un ange enivré du souvenir pour moi même dans le tortu, il fée, dévotes et mange retrouve jamais enfanté au poète– cependant de minéraux charmants, horreur, plus t'enfourcher! folle, si bien loin des laves les amants nous lançant son sein palpitant les blessés ou sirène qu'importé le coin du vin des jongleurs sacrés au loin de ton bétail, embusqué, et ton juge que ce globe entier dans les temps et d'un mouvement qui m'accable sur moi hurlait longue misère toi sans pitié de pleurs aboutit dans l'or et ne vibre que le soleil d'un chemin bourbeux croyant par votre corps brûlé par mille labyrinthes c'est un etre maudit soit actif ou de l'antre taciturne je le regard m'a déjà flaire peut être n'importe où les vrais rois pour le frais n'éclaira vos riches cités dans son coeur racorni, //
 +</note>
 +
 +=== 5.2 Espaces de plongement (Word embedding) ===
 +Le plongement des mots (word embedding)
 +  * est une technique en traitement automatique du langage naturel (TALN) 
 +  * qui consiste à représenter les mots **sous forme de vecteurs de nombres réels dans un espace vectoriel**. 
 +  * L'idée est :
 +    * de projeter les mots dans cet espace vectoriel 
 +    * où la proximité spatiale entre les vecteurs reflète la sémantique des mots. 
 +
 +<note tip>
 +Largement utilisés dans diverses tâches de traitement du langage naturel:
 +  - classification de texte, 
 +  - la traduction automatique, 
 +  - l'analyse des sentiments, 
 +  - la recherche d'information, etc
 +</note>
 +
 +**Word2Vec** est un algorithme d'apprentissage de représentations de mots (embeddings) développé par Tomas Mikolov et son équipe chez Google en 2013. 
 +
 +  * L'idée fondamentale est que les mots ayant des contextes similaires ont tendance à avoir des significations similaires. 
 +  * Word2Vec utilise des modèles de **prédictions** pour apprendre des représentations vectorielles en analysant les contextes d'occurrence des mots dans un corpus de texte.
 +
 +Il existe deux architectures principales de Word2Vec : Skip-Gram et CBOW 
 +
 +=== 1. Skip-Gram ===
 +Dans l'approche Skip-Gram, le modèle tente de prédire les mots environnants (contexte) à partir d'un mot donné (mot central). Le processus d'apprentissage consiste à maximiser la probabilité d'observer les contextes donnés un mot central :
 +
 +\[ \max \sum_{t=1}^{T} \sum_{-c \leq j \leq c, j \neq 0} \log P(w_{t+j} \mid w_t) \]
 +
 +où \(T\) est la taille du corpus, \(w_t\) est le mot central, \(w_{t+j}\) est le mot contexte, et \(c\) est la taille de la fenêtre contextuelle.
 +
 +=== 2. CBOW (Continuous Bag of Words) ===
 +Dans l'approche CBOW, le modèle tente de prédire le mot central à partir des mots contextuels (contexte). Le processus d'apprentissage consiste à maximiser la probabilité d'observer le mot central étant donnés les contextes:
 +
 +\[ \max \sum_{t=1}^{T} \log P(w_t \mid w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c}) \]
 +
 +où \(T\) est la taille du corpus, \(w_t\) est le mot central, et \(w_{t-i}\) sont les mots contextuels dans la fenêtre de contexte.
 +
 +=== Fonctionnement Général ===
 +Le processus d'apprentissage dans Word2Vec implique la création d'une matrice de co-occurrence, où chaque entrée représente la fréquence ou la probabilité d'occurrence conjointe de deux mots. À partir de cette matrice, le modèle ajuste les vecteurs de mots de manière itérative pour maximiser la probabilité d'observation du contexte étant donné le mot central.
 +
 +Une fois l'apprentissage terminé, les vecteurs de mots obtenus (les embeddings) capturent les relations sémantiques entre les mots dans l'espace vectoriel. Des mots similaires seront représentés par des vecteurs similaires, ce qui permet d'effectuer des opérations algébriques intéressantes telles que \( \text{"roi"} - \text{"homme"} + \text{"femme"} \approx \text{"reine"} \).
 +
 +Word2Vec a été révolutionnaire en raison de sa capacité à apprendre des représentations de mots utiles à partir de grands volumes de texte non annoté, et ses embeddings sont souvent utilisés comme points de départ pour de nombreuses tâches de traitement du langage naturel (NLP) et d'apprentissage automatique.
  
  • tc_info/2020_cm_textes.1701296506.txt.gz
  • Dernière modification : 2023/11/29 23:21
  • de edauce