Analyse sémantique latente - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Implémentations

La décomposition en valeurs singulières est généralement calculée par des méthodes optimisées pour les matrices larges — par exemple l'algorithme de Lanczos — par des programmes itératifs, ou encore par des réseaux de neurones, cette dernière approche ne nécessitant pas que l'intégralité de la matrice soit gardée en mémoire.

Description

Construction de la matrice des occurrences

Soit X la matrice où l'élément (i, j) décrit les occurrences du terme i dans le document j — par exemple la fréquence. Alors X aura cette allure :

 \begin{matrix}   & \textbf{d}_j \\  & \downarrow \\ \textbf{t}_i^T \rightarrow & \begin{pmatrix}  x_{1,1} & \dots & x_{1,n} \\ \vdots & \ddots & \vdots \\ x_{m,1} & \dots & x_{m,n} \\ \end{pmatrix} \end{matrix}

Une ligne de cette matrice est ainsi un vecteur qui correspond à un terme, et dont les composantes donnent sa présence (ou plutôt, son importance) dans chaque document :

\textbf{t}_i^T = \begin{pmatrix} x_{i,1} & \dots & x_{i,n} \end{pmatrix}

De même, une colonne de cette matrice est un vecteur qui correspond à un document, et dont les composantes sont l'importance dans son propre contenu de chaque terme.

\textbf{d}_j = \begin{pmatrix} x_{1,j} \\ \vdots \\ x_{m,j} \end{pmatrix}

Corrélations

Le produit scalaire :

\textbf{t}_i^T \textbf{t}_p

entre deux vecteurs « termes » donne la corrélation entre deux termes sur l'ensemble du corpus. Le produit matriciel XXT contient tous les produits scalaires de cette forme : l'élément (i, p) — qui est le même que l'élément (p, i) car la matrice est symétrique — est ainsi le produit scalaire :

\textbf{t}_i^T \textbf{t}_p (  = \textbf{t}_p^T \textbf{t}_i ).

De même, le produit XTX contient tous les produits scalaires entre les vecteurs « documents », qui donnent leurs corrélations sur l'ensemble du lexique :

\textbf{d}_j^T \textbf{d}_q = \textbf{d}_q^T \textbf{d}_j .

Décomposition en valeurs singulières

On effectue alors une décomposition en valeurs singulières sur X, qui donne deux matrices orthonormales U et V et une matrice diagonale Σ. On a alors :

\begin{matrix}X = U \Sigma V^T\end{matrix}

Les produits de matrice qui donnent les corrélations entre les termes d'une part et entre les documents d'autre part s'écrivent alors :

 \begin{matrix} X X^T &=& (U \Sigma V^T) (U \Sigma V^T)^T = (U \Sigma V^T) (V^{T^T} \Sigma^T U^T) = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\ X^T X &=& (U \Sigma V^T)^T (U \Sigma V^T) = (V^{T^T} \Sigma^T U^T) (U \Sigma V^T) = V \Sigma^T U^T U \Sigma V^T = V \Sigma^T \Sigma V^T \end{matrix}

Puisque les matrices :

ΣΣT et ΣTΣ

sont diagonales, U est faite des vecteurs propres de XXT, et V est faite des vecteurs propres de XTX. Les deux produits ont alors les mêmes valeurs propres non-nulles — qui correspondent aux coefficients diagonaux non-nuls de ΣΣT. La décomposition s'écrit alors :

 \begin{matrix}   & X & & & U & & \Sigma & & V^T \\  & (\textbf{d}_j) & & & & & & & (\hat \textbf{d}_j) \\  & \downarrow & & & & & & & \downarrow \\ (\textbf{t}_i^T) \rightarrow  & \begin{pmatrix}  x_{1,1} & \dots & x_{1,n} \\ \\ \vdots & \ddots & \vdots \\ \\ x_{m,1} & \dots & x_{m,n} \\ \end{pmatrix} & = & (\hat \textbf{t}_i^T) \rightarrow & \begin{pmatrix}  \begin{pmatrix} \, \\ \, \\ \textbf{u}_1 \\ \, \\ \,\end{pmatrix}  \dots \begin{pmatrix} \, \\ \, \\ \textbf{u}_l \\ \, \\ \, \end{pmatrix} \end{pmatrix} & \cdot & \begin{pmatrix}  \sigma_1 & \dots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \dots & \sigma_l \\ \end{pmatrix} & \cdot & \begin{pmatrix}  \begin{pmatrix} & & \textbf{v}_1 & & \end{pmatrix} \\ \vdots \\ \begin{pmatrix} & & \textbf{v}_l & & \end{pmatrix} \end{pmatrix} \end{matrix}

Les valeurs \sigma_1, \dots, \sigma_l sont les valeurs singulières de X. D'autre part, les vecteurs u_1, \dots, u_l et v_1, \dots, v_l sont respectivement singuliers à gauches et à droite.

On remarque également que la seule partie de U qui contribue à \textbf{t}_i est la i ième ligne. On note désormais ce vecteur \hat \textrm{t}_i . De même la seule partie de VT qui contribue à \textbf{d}_j est la j ième colonne, que l'on note \hat \textrm{d}_j .

Espace des concepts

Lorsqu'on sélectionne les k plus grandes valeurs singulières, ainsi que les vecteurs singuliers correspondants dans U et V, on obtient une approximation de rang k de la matrice des occurrences.

Le point important, c'est qu'en faisant cette approximation, les vecteurs « termes » et « documents » sont traduits dans l'espace des « concepts ».

Le vecteur \hat \textbf{t}_i possède alors k composantes, qui chacune donne l'importance du terme i dans chacun des k différents « concepts ». De même, le vecteur \hat \textbf{d}_j donne l'intensité des relations entre le document j et chaque concept. On écrit cette approximation sous la forme suivante :

X_k = U_k \Sigma_k V_k^T

On peut alors effectuer les opérations suivantes :

  • voir dans quelle mesure les documents j et q sont liés, dans l'espace des concepts, en comparant les vecteurs \hat \textbf{d}_j et \hat \textbf{d}_q . On peut faire cela en évaluant la similarité cosinus, qui peut se calculer ainsi :
\cos{\theta} = \frac{{\hat \textbf{d}_j} \cdot {\hat \textbf{d}_q}}{\left\| {\hat \textbf{d}_j} \right\| \left \| {\hat \textbf{d}_q} \right\|}  ;
  • comparer les termes i et p en comparant les vecteurs \hat \textbf{t}_i et \hat \textbf{t}_p par la même méthode ;
  • une requête étant donnée, on peut la traiter comme un « mini-document » et la comparer dans l'espace des concepts à un corpus pour construire une liste des documents les plus pertinents. Pour faire cela, il faut déjà traduire la requête dans l'espace des concepts, en la transformant de la même manière que les documents. Si la requête est q, il faut calculer :
\hat \textbf{q} = \Sigma_k^{-1} U_k^T \textbf{q} avant de comparer ce vecteur au corpus.
Page générée en 0.086 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise