restricted:cm2

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
restricted:cm2 [2020/04/27 00:17] edaucerestricted:cm2 [2020/04/27 10:44] (Version actuelle) – [Entropie] edauce
Ligne 1: Ligne 1:
 +===== 3. Statistiques sur les textes =====
 +
 +Soit un document d :
 +  * constitué de T symboles d[1], …, d[i], ….
 +  * appartenant à l'alphabet A={α1,...,α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|}}
 +
 +Grâce à ces mesures, on souhaite pouvoir comparer 2 textes : d1 et d2. On veut trouver les distances / similarités basée sur cette mesure
 +
 +  * l’ordre des symboles ou des termes est ignoré
 +  * le sens du texte est ignorée
 +
 +on utilise la théorie de l’information
 +  * information
 +  * divergence KL
 +  * Entropie, entropie croisée
 +
 +<note tip> 
 +Modèles probabiliste : la suite de symbole observés (le message) est générée par un processus aléatoire:
 +d=(d1,d2,...,dT)
 +  * chaque di 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>
 +
 +==== 3.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 αA un symbole de l'alphabet. On note P(X=α) la fréquence d'apparition de ce symbole //dans le langage L considéré//, soit~:
 +P(X=α)=|ωΩ:X=α||Ω|
 +Ω représente l'ensemble des productions de caractères.
 +
 +On a par définition~:
 +αVP(X=α)=1
 +
 +La fréquence empirique du symbole α dans le document d 
 +est donnée par~:
 +<note important>
 +fd(α)=|{i:d[i]=α}||d|
 +</note>
 +où |d| est le nombre de caractères dans le document.
 +
 +<note tip>
 +**Fréquence des lettres en français**
 +{{http://www.nymphomath.ch/crypto/stat/batonsfr.gif?nolink&300}}
 +</note>
 +
 +  * Voir aussi : {{https://fr.wikipedia.org/wiki/Analyse_fr%C3%A9quentielle|Analyse Fréquentielle sur Wikipedia}}
 +
 +=== Représentation vectorielle ===
 +
 +On suppose que les caractères d'un langage L donné sont numérotés de 1 à K, soit AL={α1,...,αk,...αK}.
 +
 +On notera pL le vecteur des fréquences des caractères dans un langage L donné, où pL(k) donne la fréquence du kème caractère.
 +
 +<note>
 +**Exemple**:
 +pFrançais=(0.0942,0.0102,0.0264,0.0339,0.01587,0.095,0.0104,0.0077,0.0841,0.0089,...)
 +où 
 +  * p1=0.0942 est la fréquence de la lettre 'A', 
 +  * p2=0.0102 est la fréquence d'apparition de la lettre 'B' 
 +  * etc.
 +</note>
 +avec bien sûr :
 +k{1,...,K}pL(k)=1
 +
 +=== Probabilité jointe ===
 +
 +On s'intéresse maintenant aux fréquence d'apparition de couples de lettre successives.
 +
 +Soient α et β deux symboles de l'alphabet. 
 +
 +La probabilité jointe est définie comme :
 +P(X=α,Y=β)=|ξΞ:(X,Y)=(α,β)||Ξ|
 +Ξ est l'ensemble des productions de couples de caractères.
 +
 +<note tip>
 +{{public:algo-txt:proba_jointe.png?300|}}
 +</note>
 +
 +avec par définition:
 +(α,β)A×AP(X=α,Y=β)=1
 +
 +La **probabilité jointe empirique** est donnée par~:
 +<note important>
 +fd(α,β)=|{i:d[i]=α,d[i+1]=β}||d|1
 +</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.
 +
 +
 +=== Représentation matricielle ===
 +
 +On notera PL la matrice des fréquences des bigrammes dans un langage L donné, où Pij donne la fréquence du bigramme (αi,α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ù 
 +  * P11=1.5×105 est la fréquence du bigramme 'AA', 
 +  * P12=116.8×105 est la fréquence d'apparition du bigramme 'AB' 
 +  * etc.
 +</note>
 +
 +avec bien sûr :
 +(i,j){1,...,K}2Pij=1
 +
 +<note tip>
 + voir {{http://www.nymphomath.ch/crypto/stat/francais.html|comptage des bigrammes en français}}
 +</note>
 +
 +=== Corpus de documents ===
 +Soit B un corpus de documents, constitué de n documents. 
 +<note>
 +La fréquence empirique du symbole α dans le corpus B 
 +est donnée par~:
 +fB(α)=|{(i,j):diB,di[j]=α}||B|
 +où |B| est le nombre total de caractères dans le corpus.
 +
 +La fréquence jointe du couple (α,β) est donnée par 
 +fB(α,β)=|{(i,j):diB,(di[j],di[j+1])=(α,β)}||B|n
 +
 +</note>
 +
 +
 +
 +=== Probabilité conditionnelle ===
 +
 +La **probabilité conditionnelle** du caractère β étant donné le caractère précédent α est définie comme :
 +
 +P(Y=β|X=α)=|ξΞ:(X,Y)=(α,β)||ξΞ:X=α|
 +
 +<note tip>
 +
 +{{public:omi-5a-o-rech:proba_condi.png?300}}
 +
 +</note>
 +
 +qui se calcule empiriquement comme :
 +
 +fd(β|α)=|{i:d[i]=α,d[i+1]=β}||{j:d[j]=α}|
 +
 +<note>
 +  * La probabilité P(.|αi) se représente sous forme vectorielle~: μi=(P(α1|αi),P(α2|αi),...)α1 est le premier caractère de l'alphabet, α2 le deuxième etc, avec jμij=1
 +
 +  * L'ensemble des probabilités conditionnelles P(.|.) peut se représenter sous une forme matricielle~:
 +$$
 +\begin{array}{cl}
 +M &= \left(
 +\begin{array}{c}
 +\boldsymbol{\mu}_1\\
 +\boldsymbol{\mu}_2\\
 +...
 +\end{array}
 +\right)
 +\\
 +&=\left(
 +\begin{array}{cccc}
 +P(\alpha_1|\alpha_1)& P(\alpha_2|\alpha_1)& P(\alpha_3|\alpha_1)&...\\
 +P(\alpha_1|\alpha_2)& P(\alpha_2|\alpha_2)& P(\alpha_3|\alpha_2)&...\\
 +&...&&&
 +\end{array}
 +\right)
 +\end{array}
 +$$ 
 +
 +</note>
 +
 +Sachant que P(α)=βAP(α,β), on a :
 +μi=Pi,:pi
 +
 +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ù :
 +  * M11 est la probabilité de voir un 'A' suivre un 'A'
 +  * M12 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 : p=pM
 +
 +<note>
 +{{public:omi-5a-o-rech:markov-fr.png?400|}}
 +</note>
 +
 + </note>
 +
 +==== 3.2 Comparer des documents  ====
 +
 +On considère deux langues L1 et L2 utilisant le même alphabet.
 +La différence de fréquence des caractères dans ces deux langages permet de les distinguer.
 +il est ainsi possible de définir une distance entre deux langages basée sur  les histogrammes de fréquence empirique des caractères dans les deux langages. 
 +
 +L’information apportée par la lecture du symbole α est définie comme :
 +I(α)=log2(P(X=α))
 +pα=P(X=α) est la fréquence d’apparition de ce symbole dans la langue considérée.
 +
 +L'information est une mesure de la "surprise" provoquée par l'apparition du symbole α.
 +Si le symbole α est “rare” (pα petit), l’information qu’il apporte est élevée. Si le symbole  est fréquent, l’information qu’il apporte est faible.
 +
 +==== Entropie ====
 +
 +L’entropie d’une langue est définie comme l'espérance de l'information apportée par un caractère. 
 +H(L)=EX(I(X))=EX(log2(P(X))
 +i.e.
 +H(L)=k{1,...,K}P(X=αk)log2(P(X=αk))
 +
 +<note tip>
 +L’entropie représente la surprise moyenne provoquée par une production de symboles. Une entropie faible indique que la séquence est très prévisible, une entropie élevée indique une séquence très imprévisible.
 +</note>
 +
 +<note>
 +L’entropie d’un message m de taille T, selon le modèle de langage L donné, est définie comme :
 +H(m)=E(I(m[t]))=E(log2(pL(m[t]))
 +i.e.
 +H(m)=1Ttlog2(pL(m[t]))
 +
 +</note>
 +
 +<note>
 +Exos : 
 +  * pour quels types de distribution l’entropie est-elle minimale? maximale?
 +  * quelle est l’entropie d’un message dont les probas d’apparition des termes obéissent à une loi de puissance :
 +C=1k1k
 +p(αk)=Ck
 +</note>
 +
 +==== Divergence de Kullback-Leibler ====
 +
 +Pour comparer deux langues L1etL2, on peut utiliser la //divergence de Kullback-Leibler// définie comme l'espérance de la différence des informations apportées par un même symbole:
 +
 +D(L1||L2)=k{1,...,K}P1(X=αk)log2(P1(X=αk)P2(X=αk))
 +
 +P1 désigne la distribution des symboles du langage L1 et P2 la distribution des symboles du langage L2.
 +
 +<note important>
 +  * La divergence de K-L est positive. 
 +  * Elle vaut 0 si les deux distributions sont identiques. 
 +</note> 
 +
 +=== Comparer 2 messages ===
 +Soient d1 et d2 deux textes pour lesquels on a calculé les histogramme des fréquences empiriques: f1 et f2 .  
 +
 +La divergence empirique de Kullback Leibler est une mesure de dissimilarité (l'inverse d'une similarité) qui estime combien d1 diffère de d2
 +D(d1||d2)=αd1d2f1(α)log2(f1(α)f2(α))
 +
 +=== Classer des messages ===
 +Il arrive que l'on ne sache pas à l'avance si une suite de symboles m[1],...m[T] est générée par le langage  L1 (dont les symboles obéissent à la distribution p1) ou le langage L2 (dont les symboles obéissent à la distribution p2). 
 +
 +Soit f la fréquence empirique des symboles de m
 +
 +Si m est produit par L1, on devrait avoir :
 +D(f||p1)<D(f||p2)
 +soit 
 +αdf(α)log2(f(α)p1(α))<αdf(α)log2(f(α)p2(α))
 +soit :
 +αdf(α)log2(p1(α)p2(α))>0
 +
 +<note tip> 
 +Soit m un message de taille T.
 +Pour savoir si le message appartient au langage L1 ou au langage L2, on calcule:
 +Test=1Ttlog2(p1(m[t]p2(m[t]))
 +  * Si Test > 0, il est plus probable que m obéisse au langage L1
 +  * Si Test < 0, il est plus probable que m obéisse au langage L2
 +</note>
 +On peut ainsi produire un classifieur basé sur les modèles probabilistes p1 et p2.
 +
 +Utilisation :
 +  * Deviner la langue d'un document
 +  * Distinguer les messages frauduleux des messages courants 
 +  * etc.
 +