¿Cómo se usa el análisis de componentes principales en el procesamiento del lenguaje natural?

En pocas palabras, se utiliza para calcular la similitud semántica entre palabras.

El análisis semántico latente (LSA) [1,2] es una técnica para calcular la similitud semántica de términos en una colección de documentos. Se basa en la descomposición de valores singulares (SVD) de la matriz de términos del documento. SVD es una técnica lineal-algebraica que es muy similar a PCA (de hecho, PCA se puede ver como un caso especial de SVD [3]). Dadas dos palabras diferentes, el modelo LSA devuelve un valor numérico correspondiente a la similitud semántica de las palabras.

Esto funciona porque en LSA, SVD se utiliza para encontrar una aproximación de bajo rango de la matriz de términos del documento. Dado que reducir el rango de una matriz da como resultado combinaciones lineales de dimensiones correlacionadas, esta transformación puede interpretarse efectivamente como la identificación de palabras correlacionadas (las que aparecen juntas con frecuencia) en la colección de documentos.

La noción de similitud semántica de LSA se ha utilizado en una tarea de PNL llamada identificación de paráfrasis (ver si dos oraciones tienen el mismo significado). Me vienen a la mente muchas otras posibles aplicaciones de PNL de esta medida, por ejemplo, en la generación de lenguaje natural (haciendo uso de sinónimos para mejorar la legibilidad) o en la respuesta a preguntas (obteniendo el significado de las preguntas con mayor precisión al interpretar correctamente los términos semánticamente ambiguos).

Sin embargo, como ha señalado Fred Richardson, hay muchos métodos más nuevos que han reemplazado a LSA en términos de precisión y robustez mientras se basan en la idea original de este último. Las técnicas algebraicas lineales como SVD y PCA son más adecuadas para transformar datos distribuidos continuamente en lugar de recuentos de palabras discretos.

[1] S Deerwester y col. Indización por análisis semántico latente Revista de la sociedad estadounidense de ciencias de la información 41.6 (1990): 391.

[2] Descomposición de matrices e indexación semántica latente, Introducción a la recuperación de información por Manning, Raghavan y Schütze (2008)

[3] Ver la respuesta de Luis Argerich a ¿Cómo es PCA usando EVD diferente de PCA usando SVD?

Creo que puedo dar una respuesta a esta pregunta no porque sea un experto en PNL (que definitivamente no lo soy) sino porque sé algo sobre PCA. El modelo PCA (o más formalmente PPCA) supone que los datos tienen una distribución continua sobre +/- infinito (una suposición gaussiana conduce a PPCA). Los datos de PNL, por otro lado, generalmente tienen una distribución discreta (para un vector 1-hot) o una distribución multinomial (para vectores 1-hot acumulados) porque los datos se basan en recuentos discretos de eventos o símbolos léxicos. PCA hará un trabajo muy pobre de reconstrucción de datos discretos porque los valores pueden ser negativos. Hay una familia de soluciones para esto que incluye la “factorización matricial no negativa” (NMF), el “análisis semántico latente probabilístico” (PLSA) y el “análisis Dirichlet latente probabilístico” (PLDA). Estoy seguro de que también hay muchos más: estos tres son los primeros que se hicieron populares. El punto es que todos estos modelos transformarán datos basados ​​en recuentos discretos en una forma de dimensión inferior (que para estos modelos también es multinomial).

Puedo pensar en dos aplicaciones.

El primero que es muy clásico es el análisis semántico latente, que es el uso de la SVD sobre la matriz de términos y documentos. Esto se usa cuando ayuda a resolver consultas en un sistema de recuperación de información. La ayuda puede significar que hace que el resultado de las consultas sea mejor o más rápido o ambos.

La relación con la PNL es que cuando se consulta algo como “automóvil”, el sistema podrá dar relevancia a los documentos que contienen “automóvil” porque después de la SVD es probable que ambos términos se combinen en el mismo concepto latente. Entonces, la SVD aquí ayuda a resolver el problema de sinónimos de PNL.

Si se pregunta por qué estoy hablando de SVD cuando la pregunta es sobre PCA, asegúrese de que ambas cosas sean exactamente iguales. (Ver: ¿Cuál es una explicación intuitiva de la relación entre PCA y SVD?)

La segunda aplicación de PCA es construir vectores de palabras. Estos se están volviendo muy populares después de Word2vec. La idea es representar cada palabra como un vector y luego hacer todo tipo de cosas interesantes con esos vectores. El problema de la PNL es cómo obtener los vectores.

Si bien Word2Vec y GloVe son los algoritmos más populares, el enfoque más simple es construir una matriz de correspondencia palabra por palabra y luego simplemente aplicar PCA sobre esa matriz para obtener las incrustaciones de palabras. Se ha demostrado que Word2Vec o GloVe son mejores que esto. Pero hay un algoritmo muy bueno de Lebret y Collobret que usa la distancia Hellinger para construir una matriz de correspondencia de word2word y luego solo aplica PCA sobre esa matriz para obtener las incrustaciones en la cantidad de dimensiones que se necesitan. Ver: [1312.5542] Word Emdeddings a través de Hellinger PCA. El truco de usar la distancia Hellinger para la matriz mejora los resultados y parece que los resultados pueden ser comparables con Word2Vec o GloVe sin la necesidad de redes neuronales.

Estoy seguro de que puede haber aplicaciones más específicas, pero esas dos son las que me vienen a la mente en este momento.