Différences
Ci-dessous, les différences entre deux révisions de la page.
| 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/30 00:03] – [5. Modèles génératifs] edauce | tc_info:2020_cm_textes [2025/04/23 10:59] (Version actuelle) – edauce | ||
|---|---|---|---|
| Ligne 41: | Ligne 41: | ||
| <code java> | <code java> | ||
| char x; | char x; | ||
| - | x = 'a'; | + | x = 'x'; |
| </ | </ | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * | * | ||
| Ligne 54: | Ligne 54: | ||
| * Codage latin-1 (caractères latins étendus) | * Codage latin-1 (caractères latins étendus) | ||
| * etc... | * etc... | ||
| + | |||
| + | < | ||
| + | {{ : | ||
| + | </ | ||
| Ligne 67: | Ligne 71: | ||
| * | * | ||
| * affiche la valeur '' | * affiche la valeur '' | ||
| - | * La norme UTF-8 encode les caractères sur un nombre d' | ||
| - | * Exemple : le smiley ''' | ||
| - | <code java> | ||
| - | String s = " | ||
| - | int code = s.codePointAt(0); | ||
| - | System.out.println(code); | ||
| - | </ | ||
| - | * On peut inversement afficher le caractère à partir de son code entier : | ||
| - | <code java> | ||
| - | int code1 = 233; | ||
| - | int code2 = 119070; | ||
| - | |||
| - | char char1 = (char) code1; | ||
| - | String char2 = new String(Character.toChars(code2)); | ||
| - | |||
| - | System.out.println(char1); | ||
| - | System.out.println(char2); | ||
| - | </ | ||
| </ | </ | ||
| + | |||
| + | voir aussi : {{https:// | ||
| === 1.3 Codage des mots et du texte === | === 1.3 Codage des mots et du texte === | ||
| Ligne 111: | Ligne 99: | ||
| Le programme affiche les caractère 1 par 1, c’est une " | Le programme affiche les caractère 1 par 1, c’est une " | ||
| + | |||
| + | <note important> | ||
| + | * La norme UTF-8 encode les caractères sur un nombre d' | ||
| + | * Exemple : le smiley ''' | ||
| + | <code java> | ||
| + | String s = " | ||
| + | int code = s.codePointAt(0); | ||
| + | System.out.println(code); | ||
| + | </ | ||
| + | * On peut inversement afficher le caractère à partir de son code entier : | ||
| + | <code java> | ||
| + | int code1 = 233; | ||
| + | int code2 = 119070; | ||
| + | |||
| + | char char1 = (char) code1; | ||
| + | String char2 = new String(Character.toChars(code2)); | ||
| + | |||
| + | System.out.println(char1); | ||
| + | System.out.println(char2); | ||
| + | </ | ||
| + | </ | ||
| **Donnée texte** | **Donnée texte** | ||
| Ligne 116: | Ligne 125: | ||
| Un texte, au même titre qu'un mot, est une chaîne de caractères (dont la longueur est définie par la longueur de | Un texte, au même titre qu'un mot, est une chaîne de caractères (dont la longueur est définie par la longueur de | ||
| la séquence de caractères qui définissent le texte, ponctuations, | la séquence de caractères qui définissent le texte, ponctuations, | ||
| - | <note tip> ** Les caractères séparateurs ** | + | |
| Par définition les caractères séparateurs définissent la taille des espaces entre les mots, ainsi que les passages à la ligne lors de l' | Par définition les caractères séparateurs définissent la taille des espaces entre les mots, ainsi que les passages à la ligne lors de l' | ||
| - | | + | |
| - | * '' | + | <note tip> |
| - | * ''" | + | * <code java>'' |
| - | * ''" | + | * <code java>' ' |
| - | * ''" | + | * <code java>' |
| + | * <code java>' | ||
| + | * <code java>' | ||
| * etc. | * etc. | ||
| </ | </ | ||
| Ligne 134: | Ligne 145: | ||
| * ainsi, dans le système décimal, la position du chiffre dans le nombre définit à quelle puissance de 10 il appartient (unité, dizaines, centaines, etc...) Le chiffre le plus à gauche a la puissance la plus élevée et celui le plus à droite la puissance la plus faible. | * ainsi, dans le système décimal, la position du chiffre dans le nombre définit à quelle puissance de 10 il appartient (unité, dizaines, centaines, etc...) Le chiffre le plus à gauche a la puissance la plus élevée et celui le plus à droite la puissance la plus faible. | ||
| * Si on suppose, pour simplifier, que chaque caractère est codé par un entier entre 0 et 255 (soit le code ASCII " | * Si on suppose, pour simplifier, que chaque caractère est codé par un entier entre 0 et 255 (soit le code ASCII " | ||
| - | * Un tel nombre s' | + | * Un tel nombre s' |
| * Il existe une fonction '' | * Il existe une fonction '' | ||
| * Exemple : | * Exemple : | ||
| Ligne 686: | Ligne 697: | ||
| {{: | {{: | ||
| - | ===== 5. Modèles génératifs | + | ==== 5. Modèles génératifs |
| Soit un document $d$ : | Soit un document $d$ : | ||
| Ligne 839: | Ligne 850: | ||
| </ | </ | ||
| + | **Word2Vec** est un algorithme d' | ||
| + | |||
| + | * L' | ||
| + | * Word2Vec utilise des modèles de **prédictions** pour apprendre des représentations vectorielles en analysant les contextes d' | ||
| + | |||
| + | Il existe deux architectures principales de Word2Vec : Skip-Gram et CBOW | ||
| + | |||
| + | === 1. Skip-Gram === | ||
| + | Dans l' | ||
| + | |||
| + | \[ \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' | ||
| + | |||
| + | \[ \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' | ||
| + | |||
| + | Une fois l' | ||
| + | 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' | ||