| dbpprop:abstract
|
- Latent Semantic Indexing (kurz LSI, englisch für schwache Bedeutungseinordnung) ist ein Verfahren des Information Retrieval, das 1990 zuerst von Deerwester et al. erwähnt wurde. Verfahren wie das LSI sind insbesondere für die Suche auf großen Datenmengen wie dem Internet von Interesse. Das Ziel von LSI ist es, Hauptkomponenten von Dokumenten zu finden. Diese Hauptkomponenten (Konzepte) kann man sich als generelle Begriffe vorstellen. So ist Pferd zum Beispiel ein Konzept, das Begriffe wie Mähre, Klepper oder Gaul umfasst. Somit ist dieses Verfahren zum Beispiel dazu geeignet, aus sehr vielen Dokumenten (wie sie beispielsweise im Internet stehen), diejenigen herauszufinden, in denen es um Autos geht, auch wenn in ihnen das Wort Auto nicht explizit vorkommt. Des Weiteren kann LSI dabei helfen, Artikel, in denen es wirklich um Autos geht, von denen zu unterscheiden, in denen nur das Wort Auto erwähnt wird (wie zum Beispiel bei Seiten, auf denen ein Auto als Gewinn angepriesen wird).
- Latent semantic analysis (LSA) is a technique in natural language processing, in particular in vectorial semantics, of analyzing relationships between a set of documents and the terms they contain by producing a set of concepts related to the documents and terms. LSA was patented in 1988 by Scott Deerwester, Susan Dumais, George Furnas, Richard Harshman, Thomas Landauer, Karen Lochbaum and Lynn Streeter. In the context of its application to information retrieval, it is sometimes called Latent Semantic Indexing (LSI). Occurrence matrix LSA can use a term-document matrix which describes the occurrences of terms in documents; it is a sparse matrix whose rows correspond to terms and whose columns correspond to documents. A typical example of the weighting of the elements of the matrix is tf-idf (term frequency–inverse document frequency): the element of the matrix is proportional to the number of times the terms appear in each document, where rare terms are upweighted to reflect their relative importance. This matrix is also common to standard semantic models, though it is not necessarily explicitly expressed as a matrix, since the mathematical properties of matrices are not always used. LSA transforms the occurrence matrix into a relation between the terms and some concepts, and a relation between those concepts and the documents. Thus the terms and documents are now indirectly related through the concepts. Applications The new concept space typically can be used to: Compare the documents in the concept space. Find similar documents across languages, after analyzing a base set of translated documents. Find relations between terms. Given a query of terms, translate it into the concept space, and find matching documents. Synonymy and polysemy are fundamental problems in natural language processing: Synonymy is the phenomenon where different words describe the same idea. Thus, a query in a search engine may fail to retrieve a relevant document that does not contain the words which appeared in the query. For example, a search for "doctors" may not return a document containing the word "physicians", even though the words have the same meaning. Polysemy is the phenomenon where the same word has multiple meanings. So a search may retrieve irrelevant documents containing the desired words in the wrong meaning. For example, a botanist and a computer scientist looking for the word "tree" probably desire different sets of documents. Rank lowering After the construction of the occurrence matrix, LSA finds a low-rank approximation to the term-document matrix. There could be various reasons for these approximations: The original term-document matrix is presumed too large for the computing resources; in this case, the approximated low rank matrix is interpreted as an approximation (a "least and necessary evil"). The original term-document matrix is presumed noisy: for example, anecdotal instances of terms are to be eliminated. From this point of view, the approximated matrix is interpreted as a de-noisified matrix (a better matrix than the original). The original term-document matrix is presumed overly sparse relative to the "true" term-document matrix. That is, the original matrix lists only the words actually in each document, whereas we might be interested in all words related to each document--generally a much larger set due to synonymy. The consequence of the rank lowering is that some dimensions are combined and depend on more than one term: {(car), (truck), (flower)} --> {(1.3452 car + 0.2828 truck), (flower)} This mitigates the problem of identifying synonymy, as the rank lowering is expected to merge the dimensions associated with terms that have similar meanings. It also mitigates the problem with polysemy, since components of polysemous words that point in the "right" direction are added to the components of words that share a similar meaning. Conversely, components that point in other directions tend to either simply cancel out, or, at worst, to be smaller than components in the directions corresponding to the intended sense. Derivation Let <math>X be a matrix where element <math>(i,j) describes the occurrence of term <math>i in document <math>j (this can be, for example, the frequency). <math>X will look like this: \begin{matrix} \textbf{d}_j \downarrow \textbf{t}_i^T \rightarrow \begin{bmatrix} x_{1,1} \dots x_{1,n} \vdots \ddots \vdots x_{m,1} \dots x_{m,n} \end{bmatrix} \end{matrix} Now a row in this matrix will be a vector corresponding to a term, giving its relation to each document: \textbf{t}_i^T \begin{bmatrix} x_{i,1} \dots x_{i,n} \end{bmatrix} Likewise, a column in this matrix will be a vector corresponding to a document, giving its relation to each term: \textbf{d}_j \begin{bmatrix} x_{1,j} \vdots x_{m,j} \end{bmatrix} Now the dot product <math>\textbf{t}_i^T \textbf{t}_p between two term vectors gives the correlation between the terms over the documents. The matrix product <math>X X^T contains all these dot products. Element <math>(i,p) (which is equal to element <math>) contains the dot product <math>\textbf{t}_i^T \textbf{t}_p (<math> \textbf{t}_p^T \textbf{t}_i). Likewise, the matrix <math>X^T X contains the dot products between all the document vectors, giving their correlation over the terms: <math>\textbf{d}_j^T \textbf{d}_q \textbf{d}_q^T \textbf{d}_j. Now assume that there exists a decomposition of <math>X such that <math>U and <math>V are orthonormal matrices and <math>\Sigma is a diagonal matrix. This is called a singular value decomposition (SVD): X U \Sigma V^T The matrix products giving us the term and document correlations then become \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 U^T U \Sigma V^T V \Sigma^T \Sigma V^T \end{matrix} Since <math>\Sigma \Sigma^T and <math>\Sigma^T \Sigma are diagonal we see that <math>U must contain the eigenvectors of <math>X X^T, while <math>V must be the eigenvectors of <math>X^T X. Both products have the same non-zero eigenvalues, given by the non-zero entries of <math>\Sigma \Sigma^T, or equally, by the non-zero entries of <math>\Sigma^T\Sigma. Now the decomposition looks like this: \begin{matrix} X U \Sigma V^T (\textbf{d}_j) (\hat \textbf{d}_j) \downarrow \downarrow (\textbf{t}_i^T) \rightarrow \begin{bmatrix} x_{1,1} \dots x_{1,n} \vdots \ddots \vdots x_{m,1} \dots x_{m,n} \end{bmatrix} (\hat \textbf{t}_i^T) \rightarrow \begin{bmatrix} \begin{bmatrix} \, \, \textbf{u}_1 \, \,\end{bmatrix} \dots \begin{bmatrix} \, \, \textbf{u}_l \, \, \end{bmatrix} \end{bmatrix} \cdot \begin{bmatrix} \sigma_1 \dots 0 \vdots \ddots \vdots 0 \dots \sigma_l \end{bmatrix} \cdot \begin{bmatrix} \begin{bmatrix} \textbf{v}_1 \end{bmatrix} \vdots \begin{bmatrix} \textbf{v}_l \end{bmatrix} \end{bmatrix} \end{matrix} The values <math>\sigma_1, \dots, \sigma_l are called the singular values, and <math>u_1, \dots, u_l and <math>v_1, \dots, v_l the left and right singular vectors. Notice how the only part of <math>U that contributes to <math>\textbf{t}_i is the <math>i\textrm{'th} row. Let this row vector be called <math>\hat \textrm{t}_i. Likewise, the only part of <math>V^T that contributes to <math>\textbf{d}_j is the <math>j\textrm{'th} column, <math>\hat \textrm{d}_j. These are not the eigenvectors, but depend on all the eigenvectors. It turns out that when you select the <math>k largest singular values, and their corresponding singular vectors from <math>U and <math>V, you get the rank <math>k approximation to X with the smallest error. This approximation has a minimal error. But more importantly we can now treat the term and document vectors as a "concept space". The vector <math>\hat \textbf{t}_i then has <math>k entries, each giving the occurrence of term <math>i in one of the <math>k concepts. Likewise, the vector <math>\hat \textbf{d}_j gives the relation between document <math>j and each concept. We write this approximation as X_k U_k \Sigma_k V_k^T You can now do the following: See how related documents <math>j and <math>q are in the concept space by comparing the vectors <math>\hat \textbf{d}_j and <math>\hat \textbf{d}_q. This gives you a clustering of the documents. Comparing terms <math>i and <math>p by comparing the vectors <math>\hat \textbf{t}_i and <math>\hat \textbf{t}_p, giving you a clustering of the terms in the concept space. Given a query, view this as a mini document, and compare it to your documents in the concept space. To do the latter, you must first translate your query into the concept space. It is then intuitive that you must use the same transformation that you use on your documents: \textbf{d}_j U_k \Sigma_k \hat \textbf{d}_j \hat \textbf{d}_j \Sigma_k^{-1} U_k^T \textbf{d}_j This means that if you have a query vector <math>q, you must do the translation <math>\hat \textbf{q} \Sigma_k^{-1} U_k^T \textbf{q} before you compare it with the document vectors in the concept space. You can do the same for pseudo term vectors: \textbf{t}_i^T \hat \textbf{t}_i^T \Sigma_k V_k^T \hat \textbf{t}_i^T \textbf{t}_i^T V_k^{-T} \Sigma_k^{-1} \textbf{t}_i^T V_k \Sigma_k^{-1} \hat \textbf{t}_i \Sigma_k^{-1} V_k^T \textbf{t}_i Implementation The SVD is typically computed using large matrix methods but may also be computed incrementally and with greatly reduced resources via a neural network-like approach, which does not require the large, full-rank matrix to be held in memory. A fast, incremental, low-memory, large-matrix SVD algorithm has recently been developed. Unlike Gorrell and Webb's (2005) stochastic approximation, Brand's (2006) algorithm provides an exact solution. Limitations Some of LSA's drawbacks include: The resulting dimensions might be difficult to interpret. For instance, in {(car), (truck), (flower)} --> {(1.3452 car + 0.2828 truck), (flower)} the (1.3452 car + 0.2828 truck) component could be interpreted as "vehicle". However, it is very likely that cases close to {(car), (bottle), (flower)} --> {(1.3452 car + 0.2828 bottle), (flower)} will occur. This leads to results which can be justified on the mathematical level, but have no interpretable meaning in natural language. LSA cannot capture Polysemy (i.e. , multiple meanings of a word), because it represents each word as a single point in space. The probabilistic model of LSA does not match observed data: LSA assumes that words and documents form a joint Gaussian model, while a Poisson distribution has been observed. Thus, a newer alternative is probabilistic latent semantic analysis, based on a multinomial model, which is reported to give better results than standard LSA. Commercial Applications LSA has been used to assist in performing prior art searches for patents. See also Compound term processing Latent Dirichlet allocation Latent semantic mapping Latent Semantic Structure Indexing Principal components analysis Probabilistic latent semantic analysis Spamdexing Vectorial semantics Coh-Metrix External links Latent Semantic Analysis, a scholarpedia article on LSA written by Tom Landauer, one of the creators of LSA. The Semantic Indexing Project, an open source program for latent semantic indexing SenseClusters, an open source package for Latent Semantic Analysis and other methods for clustering similar contexts S-Space Package, an open source Java library that includes Latent Semantic Analysis and other algorithms for generating Statistical semantics from a text corpus References -- a MATLAB implementation of Brand's algorithm is available Original article where the model was first exposed. PDF. Illustration of the application of LSA to document retrieval.
- L’analyse sémantique latente ou indexation sémantique latente est un procédé de traitement des langues naturelles, dans le cadre de la sémantique vectorielle. La LSA fut brevetée en 1988 et publiée en 1990. Elle permet d'établir des relations entre un ensemble de documents et les termes qu'ils contiennent, en construisant des « concepts » liés aux documents et aux termes. Matrice des occurrences La LSA utilise une matrice qui décrit l'occurrence de certains termes dans les documents. C'est une matrice creuse dont les lignes correspondent aux « termes » et dont les colonnes correspondent aux « documents ». Les « termes » sont généralement des mots tronqués ou ramenés à leur radical, issus de l'ensemble du corpus. On a donc le nombre d'apparition d'un mot dans chaque document, et pour tous les mots. Ce nombre est normalisé en utilisant la pondération tf-idf, combinaison de deux techniques : un coefficient de la matrice est d'autant plus grand qu'il apparaît beaucoup dans un document, et qu'il est rare — pour les mettre en avant. Cette matrice est courante dans les modèles sémantiques standards, comme le modèle vectoriel, quoique sa forme matricielle ne soit pas systématique, étant donné qu'on ne se sert que rarement des propriétés mathématiques des matrices. La LSA transforme la matrice des occurrences en une « relation » entre les termes et des « concepts », et une relation entre ces concepts et les documents. On peut donc relier des documents entre eux. Applications Cette organisation entre termes et concepts est généralement employée pour : la comparaison de documents dans l'espace des concepts; la recherche de documents similaires entre différentes langues, en ayant accès à un dictionnaire de documents multilingues; la recherche de relations entre les termes; étant donné une requête, traduire les termes de la requête dans l'espace des concepts, pour retrouver des documents liés sémantiquement. La résolution de la synonymie et de la polysémie est un enjeu majeur en traitement automatique des langues : deux synonymes décrivent une même idée, un moteur de recherche pourrait ainsi trouver des documents pertinents mais ne contenant pas le terme exact de la recherche; la polysémie d'un mot fait qu'il a plusieurs sens selon le contexte — on pourrait de même éviter des documents contenant le mot recherché, mais dans une acception qui ne correspond pas à ce que l'on désire ou au domaine considéré. Réduction du rang Après avoir construit la matrice des occurrences, la LSA permet de trouver une matrice de rang plus faible, qui donne une approximation de cette matrice des occurrences. On peut justifier cette approximation par plusieurs aspects : la matrice d'origine pourrait être trop grande pour les capacités de calcul de la machine — on rend ainsi le procédé réalisable, et c'est un « mal nécessaire »; la matrice d'origine peut être « bruitée » : des termes n'apparaissant que de manière anecdotique — on « nettoie » ainsi la matrice, c'est une opération qui améliore les résultats; la matrice d'origine peut être présumée « trop creuse » : elle contient plutôt les mots propres à chaque documents que les termes liés à plusieurs documents — c'est également un problème de synonymie. Cependant, la réduction du rang de la matrice des occurrences a pour effet la combinaison de certaines dimensions qui peuvent ne pas être pertinentes. On s'arrange en général pour — tant que c'est possible — fusionner les termes de sens proches. Ainsi, on pourra effectuer la transformation : {(Voiture), (Camion), (Fleur)} → {(1,3452 × Voiture + 0,2828 × Camion), (Fleur)} La synonymie est résolue de cette manière. Mais quelques fois cela n'est pas possible. Dans ces cas, la LSA peut effectuer la transformation suivante : {(Voiture), (Bouteille), (Fleur)} -→ {(1,3452 × Voiture + 0,2828 × Bouteille), (Fleur)} Ce regroupement est beaucoup plus difficile à interpréter — il est justifié d'un point de vue mathématique, mais n'est pas pertinent pour un locuteur humain. 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 <math>X X^T 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 (<math> \textbf{t}_p^T \textbf{t}_i). De même, le produit <math>X^T X 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 : X U \Sigma V^T 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 : \Sigma \Sigma^T et <math>\Sigma^T \Sigma sont diagonales, U est faite des vecteurs propres de <math>X X^T, et V est faite des vecteurs propres de <math>X^T X. Les deux produits ont alors les mêmes valeurs propres non-nulles — qui correspondent aux coefficients diagonaux non-nuls de <math>\Sigma \Sigma^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 <math>\sigma_1, \dots, \sigma_l sont les valeurs singulières de X. D'autre part, les vecteurs <math>u_1, \dots, u_l et <math>v_1, \dots, v_l sont respectivement singuliers à gauches et à droite. On remarque également que la seule partie de U qui contribue à <math>\textbf{t}_i est la i ligne. On note désormais ce vecteur <math>\hat \textrm{t}_i. De même la seule partie de <math>V^T qui contribue à <math>\textbf{d}_j est la j colonne, que l'on note <math>\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 <math>\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 <math>\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 <math>\hat \textbf{d}_j et <math>\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 <math>\hat \textbf{t}_i et <math>\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. 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 . Analyse sémantique latente probabiliste (PLSA) Le modèle statistique de l'analyse sémantique latente ne correspond pas aux données observées : elle suppose que les mots et documents forment ensemble un modèle gaussien, alors qu'on observe une distribution de Poisson. Ainsi, une approche plus récente est l'analyse sémantique latente probabiliste, ou PLSA, basée sur un modèle multinomial. Annexes Bibliographie The Latent Semantic Indexing home page, Université du Colorado; PDF. Erreur de paramétrage de {{Lien web}} : les paramètres url et titre sont obligatoires. T. Hofmann, Probabilistic Latent Semantic Analysis, Uncertainty in Artificial Intelligence, 1999. G. Gorell et B. Webb, « Generalized Hebbian Algorithm for Latent Semantic Analysis », Interspeech, 2005. Erreur de paramétrage de {{Lien web}} : les paramètres url et titre sont obligatoires. Erreur de paramétrage de {{Lien web}} : les paramètres url et titre sont obligatoires. Notes et références Source Voir aussi Articles connexes Sémantique vectorielle Décomposition en valeurs singulières Liens externes The Semantic Indexing Project, un projet Open Source d'indexation sémantique latente.
- 潜在意味解析(英: Latent Semantic Analysis, LSA)は、ベクトル空間モデルを利用した自然言語処理の技法の1つで、文書群とそこに含まれる用語群について、それらに関連した概念の集合を生成することで、その関係を分析する技術である。潜在的意味解析とも。 1988年、アメリカ合衆国でLSAの特許が取得されている。情報検索の分野では、潜在的意味索引または潜在意味インデックス(英: Latent Semantic Indexing, LSI)とも呼ばれている。 出現行列 LSA では、各文書における用語の出現を表した文書-単語マトリクスが使われる。これは列が単語に対応し、行が文書に対応した疎行列である。この行列の各成分の重み付けには tf-idf (term frequency–inverse document frequency) が用いられることが多い。この場合、行列の各成分はその文書でその単語が使われた回数に比例した値であり、単語はその相対的重要性を反映するために強く重み付けされる。 この行列は標準意味モデルでも一般的だが、必ずしも行列として明確に表現される必要性はなく、行列として数学的に利用するとは限らない。 LSA はこの出現行列を用語と何らかの概念の関係および概念と文書間の関係に変換する。したがって、用語と文書は概念を介して間接的に関連付けられる。 応用 この新たな概念空間は以下のような場面で利用される。 概念空間での文書の比較(データ・クラスタリング、文書分類、など) 翻訳文書群の基本セットを分析した後、異なる言語間で類似の文書を探す(言語間検索)。 用語間の関係を探す(類義性や多義性)。 用語群によるクエリを与えられたとき、それを概念空間で解釈し、一致する文書群を探す(情報検索)。 自然言語処理において、類義性と多義性は根本的な問題である。 類義性は、異なる単語が同じ事象を表す現象である。したがって検索エンジンにおいて、クエリにない類義語を見落として、適切な文書を検索できないことがある。例えば、"doctors" を検索したとき、同義である "physicians" という単語を含む文書を検索できないという可能性がある。 多義性は、同じ単語が複数の意味を持つ現象である。そのため、クエリに指定した単語が多義的であった場合、検索要求者が意図しない意味で使っている不適切な文書が検索されてしまうことがある。例えば、植物学者と計算機科学者が "tree" という単語で検索したいのは、全く異なる文書と思われる。 階数の低減 出現行列を構築後、LSAでは文書-単語マトリクスの行列の階数を低減した近似を行う必要がある場合がある。ただし、近似に伴う精度の低下を考慮に入れなくてはならない。 この近似には以下のような理由がある。 元の文書-単語マトリクスがコンピュータのメモリ上に格納するには大きすぎる場合。この場合、階数を低減した行列は「近似」と解釈される。 元の文書-単語マトリクスにノイズが多い場合。その用語の逸話的出現を除去するなど。この場合の近似行列は「ノイズ除去」行列と解釈される。 元の文書-単語マトリクスが理想的な文書-単語マトリクスよりも疎らな場合。すなわち、元の行列には文書で実際に使われている単語のみカウントされているが、各文書の関連する単語に興味がある場合など。つまり、類義性を考慮した行列がほしい場合。 階数の低減の結果、いくつかの次元が統合され、複数の単語に依存するようになる。 {(car), (truck), (flower)} --> {(1.3452 * car + 0.2828 * truck), (flower)} 階数低減が類似の意味を持つ用語に対応する次元を統合することで、類義性問題がある程度解消される。また、多義語の成分が複数の類義語に分配されて統合されるなら、多義性の問題もある程度解消される。逆に、他の方向の成分は単に消去されるか、最悪でも意図した意味よりも成分として小さくなる。 導出 行列 <math>X の成分 <math>(i,j) は、単語 <math>i の文書 <math>j における出現(例えば頻度)を表すとする。<math>X は次のようになる。 \begin{matrix} \textbf{d}_j \downarrow \textbf{t}_i^T \rightarrow \begin{bmatrix} x_{1,1} \dots x_{1,n} \vdots \ddots \vdots x_{m,1} \dots x_{m,n} \end{bmatrix} \end{matrix} この行列の行は1つの単語に対応したベクトルになっており、各成分が各文書との関係を示している。 \textbf{t}_i^T \begin{bmatrix} x_{i,1} \dots x_{i,n} \end{bmatrix} 同様に、この行列の列は1つの文書に対応したベクトルになっており、各成分が各単語との関係を示している。 \textbf{d}_j \begin{bmatrix} x_{1,j} \vdots x_{m,j} \end{bmatrix} 2つの単語ベクトルのドット積 <math>\textbf{t}_i^T \textbf{t}_p は、その文書群における単語間の相関を示す。行列積 <math>X X^T にはそのようなドット積が全て含まれている。その成分 <math>(i,p)(成分 <math>(p,i) と等しい)は、ドット積 <math>\textbf{t}_i^T \textbf{t}_p(<math> \textbf{t}_p^T \textbf{t}_i)になっている。同様に行列 <math>X^T X は全ての文書ベクトル間のドット積が含まれていて、その単語群における文書間の相関を示す。すなわち、<math>\textbf{d}_j^T \textbf{d}_q \textbf{d}_q^T \textbf{d}_j である。 <math>X の分解として、直交行列 <math>U と <math>V、対角行列 <math>\Sigma が存在すると仮定する。このような分解を特異値分解 (SVD) と呼ぶ。 X U \Sigma V^T 単語の相関と文書の相関を与える行列積は、次のように展開される。 \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 U^T U \Sigma V^T V \Sigma^T \Sigma V^T \end{matrix} <math>\Sigma \Sigma^T と <math>\Sigma^T \Sigma は対角行列なので、<math>U には <math>X X^T の固有ベクトルが含まれるはずであり、一方 <math>V は <math>X^T X の固有ベクトルのはずである。どちらの行列積にも <math>\Sigma \Sigma^T のゼロでない成分に由来する、または等価的に <math>\Sigma^T\Sigma のゼロでない成分に由来する、同じゼロでない固有値がある。以上から分解は次のようになる。 \begin{matrix} X U \Sigma V^T (\textbf{d}_j) (\hat \textbf{d}_j) \downarrow \downarrow (\textbf{t}_i^T) \rightarrow \begin{bmatrix} x_{1,1} \dots x_{1,n} \vdots \ddots \vdots x_{m,1} \dots x_{m,n} \end{bmatrix} (\hat \textbf{t}_i^T) \rightarrow \begin{bmatrix} \begin{bmatrix} \, \, \textbf{u}_1 \, \,\end{bmatrix} \dots \begin{bmatrix} \, \, \textbf{u}_l \, \, \end{bmatrix} \end{bmatrix} \cdot \begin{bmatrix} \sigma_1 \dots 0 \vdots \ddots \vdots 0 \dots \sigma_l \end{bmatrix} \cdot \begin{bmatrix} \begin{bmatrix} \textbf{v}_1 \end{bmatrix} \vdots \begin{bmatrix} \textbf{v}_l \end{bmatrix} \end{bmatrix} \end{matrix} <math>\sigma_1, \dots, \sigma_l という値は特異値と呼ばれ、<math>u_1, \dots, u_l は左特異ベクトル、<math>v_1, \dots, v_l は右特異ベクトルと呼ばれる。<math>U のうち <math>\textbf{t}_i に関与するのは <math>i \textrm{'th}\quad 行だけである。その行ベクトルを <math>\hat{\textrm{t}_i} と呼ぶ。同様に、<math>V^T のうち <math>\textbf{d}_j に関与するのは <math>j \textrm{'th}\quad 列だけであり、これを <math>\hat{\textrm{d}_j} と呼ぶ。これらは固有ベクトルではないが、全ての固有ベクトルに依存している。 <math>k 個の最大の特異値と <math>U と <math>V からそれに対応する特異ベクトルを選んだとき、階数 <math>k の X への近似を最小誤差で得ることができる(フロベニウス・ノルム)。この近似の驚くべき点は、単に最小誤差であるという点だけでなく、単語ベクトルと文書ベクトルを概念空間に変換するという点である。ベクトル <math>\hat{\textbf{t}_i} には <math>k 個の成分があり、それぞれが単語 <math>i の <math>k 個の概念の1つに対応した出現を表している。同様にベクトル <math>\hat{\textbf{d}_j} は、文書 <math>j と各概念との関係を表している。この近似を次のように記述する。 X_k U_k \Sigma_k V_k^T ここで、以下のようなことが可能となる。 ベクトル <math>\hat{\textbf{d}_j} と <math>\hat{\textbf{d}_q} を(通常コサイン相関量によって)比較することで、文書 <math>j と <math>q の相関の度合いがわかる。これによって、文書群のクラスタリングが得られる。 ベクトル <math>\hat{\textbf{t}_i} と <math>\hat{\textbf{t}_p} を比較することで、単語 <math>i と <math>p 比較でき、概念空間における単語群のクラスタリングが得られる。 クエリが与えられたとき、これを短い文書と考え、概念空間内で文書群と比較できる。 最後の項目を行うには、最初にクエリを概念空間に変換してやる必要がある。したがって直観的に、次のように文書群に対して行ったのと同じように変換をする必要がある。 \textbf{d}_j U_k \Sigma_k \hat \textbf{d}_j \hat \textbf{d}_j \Sigma_k^{-1} U_k^T \textbf{d}_j このことが意味するのは、クエリベクトル <math>q が与えられたとき、概念空間における文書ベクトルと比較する前に <math>\hat{\textbf{q}} \Sigma_k^{-1} U_k^T \textbf{q} という変換をする必要があるということである。同じことは擬似単語ベクトルにも行える。 \textbf{t}_i^T \hat \textbf{t}_i^T \Sigma_k V_k^T \hat \textbf{t}_i^T \textbf{t}_i^T V_k^{-T} \Sigma_k^{-1} \textbf{t}_i^T V_k \Sigma_k^{-1} \hat \textbf{t}_i \Sigma_k^{-1} V_k^T \textbf{t}_i 実装 特異値分解 (SVD) は一般に大規模行列手法(例えばランゾス法)を使って計算されるが、ニューラルネットワーク的な手法を使って計算資源を節約することもできる。後者の場合、行列全体をメモリに保持する必要がない。 高速で逐次的なメモリ使用量の少ない大規模行列SVDアルゴリズムが最近開発されている 限界 LSA には以下の2つの欠点がある。 結果として得られる次元が解釈が困難な場合がある。例えば、 {(car), (truck), (flower)} --> {(1.3452 * car + 0.2828 * truck), (flower)} となった場合、(1.3452 * car + 0.2828 * truck) は「車」と解釈できる。しかし、以下のような場合 {(car), (bottle), (flower)} --> {(1.3452 * car + 0.2828 * bottle), (flower)} 数学的レベルでは問題ないのだが、自然言語レベルでは解釈のしようがない。 LSAの確率モデルは測定データと一致しない。LSAでは、ポアソン分布が観測されたとしても、単語と文書は同時正規分布モデルを形成すると仮定される(エルゴード仮説)。最近では多項分布モデルに基づいた確率的潜在意味解析が考案され、標準の潜在意味解析よりもよい結果が得られたとの報告がある。 関連項目 ベクトル空間モデル スパムデキシング 主成分分析 脚注 参考文献 "". . -- Brand のアルゴリズムの MATLAB での実装がある。 . . モデルを提案した最初の論文 . PDF. 文書検索への応用の解説 "". "{{{title}}}".. "{{{title}}}".. "". "". "". 外部リンク Latent Semantic Analysis - 自然言語処理への応用例 Latent Semantic Indexing - 潜在的意味インデクシングの数学的でない解説 The Semantic Indexing Project - 潜在的意味インデクシングのオープンソースプログラム SenseClusters - 潜在意味解析などのオープンソースパッケージ
- Латентно-семантический анализ (ЛСА) - это метод обработки информации на естественном языке, анализирующий взаимосвязь между коллекцией документов и терминами в них встречающимися, сопоставлящий некоторые факторы (тематики) всем документам и термам. ЛСА был запатентован в 1988 году Scott Deerwester, Susan Dumais, George Furnas, Richard Harshman, Thomas Landauer, Karen Lochbaum и Lynn Streeter. В области информационного поиска данный подход называют латентно-семантическим индексированием.
- Latent semantisk analys (eng. Latent Semantic Analysis, LSA) är en indexeringsmetod inom språkteknologi som beskriver relationen mellan termer (ord) och dokument i ett korpus. Metoden placerar alla dokument i ett högdimensionellt vektorrum så att konceptuellt besläktade dokument även är närliggande i vektorrummet. Ett av metodens främsta mål är att kunna hämta ut alla relevanta dokument vid en sökning, även de som inte innehåller just de termer som användes i sökfrasen.
- 潜在语义学(Latent Semantic Analysis),是语义学的一个新的分支。传统的语义学通常研究字、词的含义以及词与词之间的关系,如同义,近义,反义等等。潜在语义学探讨的是隐藏在字词背后的某种关系,这种关系不是以词典上的定义为基础,而是以字词的使用环境作为最基本的参考。这种思想来自于心理语言学家。他们认为,世界上数以百计的语言都应该有一种共同的简单的机制,使得任何人只要是在某种特定的语言环境下长大都能掌握那种语言。在这种思想的指导下,人们找到了一种简单的数学模型,这种模型的输入是由任何一种语言书写的文献构成的文库,输出是该语言的字、词的一种数学表达(向量)。字、词之间的关系乃至任何文章片断之间的含义的比较就由这种向量之间的运算产生。 潛在語義學的觀念也被應用在資訊檢索上,所以有時潛在語義學也被稱為隱含語義索引(Latent Semantic Indexing,LSI)。
|