El punto de partida es descargar del sitio https : //www.wikipedia.org/ la Wikipedia en texto plano y sin imágenes. El archivo descargado tiene un formato XML y un peso de 2.5 GB. De acuerdo con Wikipedia (2018) estos documentos son actualizados mensualmente y para fines de este trabajo hemos tomado la versión de octubre 2018. La libredia “WikiExtractor”, que es un script en Python que extrae y limpia el texto desde un archivo de Wikipedia tipo “dump”, fue utilizado para este propósito (WikiEstracto, 2018). Mediante este algoritmo, un total de 7,793,289 documentos que corresponden al mismo número de páginas fueron almacenados en el disco local.
A diferencia de otras bases de datos digitales, los contenidos tipo texto de la Wikipedia se distribuyen bajo la licencia “Creative Commons Attribution-ShareAlike 3.0” (ver : https : //creativecommons.org). Lo anterior permite utilizarla para copias de seguridad, consultas, uso personal o proyectos académicos. Una copia en formato XML y en idioma español fue descargada de la página de Wikipedia (ver: https : //dumps.wikimedia.org/) y posteriormente realizamos tareas de limpieza y depuración. Específicamente, se aplicó el procedimiento sugerido por Attardi, Cozza y Sartiano (2015), el cual consiste en remover hipervínculos, caracteres especiales, puntuación y signos especiales. Con lo anterior obtuvimos un conjunto de datos con 1,336,063 renglones y tres columnas. Estas últimas hacen referencia al identificador del documento, la palabra clave y su respectiva definición.
Un elemento de gran importancia en el análisis semántico es la matriz M o Matriz DocumentosPalabras (DTM). Se dice que M tiene dimensiones n x p, donde i=1,..,n representa el número total de páginas de las que se compone la Wikipedia y j =1,. . . ,p hace referencia al total de palabras únicas. Además denota el número de veces que la palabra i aparece en el documento j , por lo tanto, M también puede ser considerada una matriz de frecuencias. Las librerías “tm”, “Matrix” y “lsa”, creadas bajo el ambiente de R fueron utilizadas durante la construcción de la DTM. Adicionalmente, se concatenaron las variables ID, ID-familia y letra del abecedario como suplementarias al estudio, tal como se ilustra en la Figura 2.
Dentro de la carga de información se obtuvo lo siguiente que fue la representación de la infor-mación.
( "mi . lsaV2 . rda" )
El procesamiento de los datos se dio en el software R.
Sea M una matriz de orden . Se llama descomposición de valores singulares de M a:
Donde U es la matriz de n x p cuyas columnas son vectores ortogonales , D es una matriz diagonal es una matriz de p x p ortogonal.
Se verifica que:
1 El rango de M es el número de r de valores singulares positivos.
2 U contiene a los vectores propios de , siendo igual
3 V contiene los vectores propios de
4 Si n = p y M es simétrica, entonces es la descomposición espectral de M . Los valores singulares son los valores propios de M .
La matriz obtenida en el punto anterior es una matriz dispersa. De acuerdo con Cuadras (2014), se considera una matriz dispersa aquella de gran tamaño, y en donde la mayor parte de sus elementos son igual a cero. El número de elementos igual a cero requeridos para considerar a una matriz como dispersa, depende de su propia estructura, así como de las operaciones que se rea-lizarán con la misma. El algoritmo propuesto por Lanczos (1950) y revisado por Berry (1992) fueron utilizados para hacer la SVD en la matriz dispersa M . Básicamente, este procedimiento genera una secuencia de matrices tri-diagonales, las cuales tienen la propiedad de que los valores propios extremos de cada matriz
, con dimensiones j x j son las mejores estimaciones de los valores propios de la matriz original. Por ejemplo, la matriz original M puede expresarse de acuerdo a la siguiente formulación:
.
En donde la matriz A es simétrica con dimensiones ( n x p) x ( n x p), y además n > p. Entonces, si el rango(A) = n, se puede observar que los valores propios de M están dados por los n pares, es un valor singular de A, con (p-n) valores singulares igual a cero. Además, la multiplicidad de los valores singulares igual a cero en la matriz original M es igual a n+p-2r, donde r=rango(A). Posteriormente, Rohde et. al. (2018) implementaron tal procedimiento en la librería de R “sparsesvd”, ésta última utilizada para obtener los resultados que explicamos en la siguiente sección.
Por último, previo a la descomposición en valores singulares de la matriz M , se requiere restar importancia a las palabras con una frecuencia muy alta, y al mismo tiempo aumentar este valor para aquellas con frecuencias muy bajas. De acuerdo con Nakov, Popova y Mateev, (2001) aquellas palabras con las frecuencias más altas en la matriz M , resultan inservibles para discriminar con precisión el valor semántico proporcionado en cada documento i, mientras usar aquellas con valores en sus frecuencias cercanos a la media resultan en mayores niveles de precisión.
En Barahona (2016) se menciona que la técnica de SVD es una generalización del análisis de componentes principales y una variante del bien conocido análisis factorial. Este consiste en
descomponer la matriz M en tres elementos, tal como se muestra a continuación:
De acuerdo a la formulación (3) es un ajuste obtenido a partir de la matriz original M . Además U es una matriz ortogonal con dimensiones
es también una matriz ortogonal con dimensiones i x r. Por último, D representa la matriz diagonal. Nótese que
por el orden la matriz original M . Ahora realizamos una reducción de las dimensiones en U y
. Es decir, si ambas matrices son del orden r, entonces son reducidas a k dimensiones, donde k < r. De acuerdo a Landauer y Dumais (1997) k es arbitrario y valor dependerá del conjunto de datos inicial. Estudios empíricos sugieren valores para k de alrededor de 300.
El algoritmo explicado anteriormente nos permite representar documentos y palabras, a través de promedios obtenidos por los k vectores retenidos de la matriz . De esta manera, dos palabras tendrán un significado semántico parecido, si las medias de sus vectores son similares. Para realizar comparaciones entre documentos y palabras, calculamos el coseno del ángulo entre los vectores de interés. Por ejemplo, un coseno igual a 0 entre dos palabras nos indi-cará ortogonalidad, y por lo tanto, una diferencia semántica importante entre ambas. Por el contrario, entre más cercano a 1.0 sea el coseno entre vectores, nos indicará una similitud se-mántica mayor. Este tipo de investigaciones son bien conocidas para los idiomas Inglés, Francés, Alemán y Serbio y en el contexto latinoamericano este trabajo resulta una aportación novedosa.
Debido a que los documentos analizados son de diferentes extensiones, resulta interesante hacer una comparación de dos campos semánticos. El primero obtenido a partir una matriz de frecuencias M , con dimensiones n x p, donde i=1,. . . ,n hace referencia al número de documentos y j=1,. . . ,p al total de palabras consideradas en el análisis. Por lo tanto representa la frecuencia con la que aparece la palabra p en el documento n. El segundo obtenido a partir de una matriz binaria con las mismas dimensiones, en la cual cada elemento
es igual cero en los casos en que la palabra p aparece cero veces en el documento n, en caso contrario es igual a uno. En ambos casos de retuvieron 300 dimensiones, tal como se sugiere en la literatura.
Como resultado de tal comparación, se encontraron diferencias importantes entre ambos campos semánticos. Las matrices diagonales de ambos campos tienden a ser muy diferentes en los extremos y similares en la parte central, presentando el primero valores superiores en contraste con el segundo. De lo anterior se deduce que el campo semántico construido a partir de la matriz de frecuencias es más sensible a variaciones semánticas, en contraste con el elaborado a partir de la matriz binaria.
Durante el proceso antes descrito, utilizamos la librería “sparsesvd” (Rohde et. al 2018), la cual está diseñada sobre la base del algoritmo propuesto por Lanczos (1950) para realizar el SVD en matrices dispersas. Así también, con la finalidad de ponderar la matriz documentos palabras, seguimos el algoritmo sugerido por Günther, Dudschig and Kaup (2014). La ejecución numérica
de esta ponderación se realizó a través de la librería “lsa” (Wild, 2015).
Tomando en cuenta que cada palabra es identificada con un vector único dentro del campo semántico, la similitud entre dos o más palabras estará dada por el coseno de sus respectivos vectores. Por ejemplo, el coseno entre los vectores de palabras que tienen una similitud semánti-ca importante será cercana a uno. De lo anterior se deduce que tales vectores ocupan posiciones cercanas dentro del campo semántico. Por el contrario, el coseno entre los vectores de palabras muy diferentes será cercano a cero, indicando una distancia considerable entre ellos, y por lo tanto una diferencia semántica importante entre ellas.
En Günther, Dudschig & Kaup (2014) se propone una extensión del presente algoritmo, la cual se utiliza para la comparación de textos compuestos por dos o más palabras. Lo anterior a través calcular los vectores propios promedios correspondientes a cada párrafo que se desea contrastar. Es decir, sean los vectores propios de cada una de las palabras que componen el párrafo A, entonces su vector promedio está dado por
. Por otra parte, el vector
promedio de los valores propios del párrafo B se define como
esta manera, dos párrafos tendrán un significado semántico parecido, en función de la cercanía entre los vectores . Así también, obtenemos el coseno del ángulo entre los vectores de interés. Un coseno igual a 0 entre dos palabras nos indicará ortogonalidad, y por lo tanto, una diferencia semántica importante entre ambas. Por el contrario, entre más cercano a 1.0 sea el coseno entre vectores, nos indicará una similitud semántica mayor.
Paquetes para implementar el LSA
El paquete semantics vectors propuesto por Widdows & Cohen (2010) fue creado en el ambiente de JAVA y utiliza la técnica de proyecciones aleatorias para construir espacios semánticos. Este paquete tiene funciones básicas para calcular cosenos entre palabras individuales o párrafos. El paquete DISSECT (DIstributional SEmantics Composition Toolkit) se está diseñado sobre el lenguaje de programación Python y permite crear espacios semánticos a partir de matrices documentos-palabras. Así también, puede ser utilizado para calcular similitudes semánticas entre palabras, listas de palabras o párrafos. (ver : http : //clic.cimec.unitn.it/composes/toolkit/)
El campo semántico que se presenta en este trabajo fue realizado con el paquete LSA (Wild, 2015), el cual fue realizado dentro del ambiente de programación R.
Resultados
En esta sección se presentan los resultados obtenidos a través de la implementación de la me-todología explicada en la sección anterior. Es importante considerar que la visualización correspondiente a la Figura 3 fue obtenida a partir de la técnica de K-Vecinos Cercanos (KNN, por sus siglas en inglés). Fue propuesta por Aha et. al. (1991), como una forma sencilla de predecir o clasificar nuevos datos, con base en observaciones pasadas o conocidas. Lo anterior en función a dos tipos de distancias: Euclidiana y de Mahalanobis, tal como se ilustra en las siguientes formulaciones:
Esta fuera del alcance de este trabajo profundizar en este tema y una explicación detallada sobre la técnica de KNN se puede consultar en Aha et al (1991); Weinberger y Saul (2009); Muja y Lowe (2009). La siguiente parte de esta sección se enfoca en ilustrar un par de ejemplos numéricos. El primer ejemplo consiste en contrastar la similitud semántica entre las palabras “ciencia” y “matemáticas”, el cual es igual a 0.5988, así también las palabras “imaginación” y “poesía” registraron una similitud de 0.5528. Por otra parte, se reporta una similitud igual a 0.0063 entre las palabras “vaca” y “matemáticas”. Este valor es igual a 0.03810 para las palabras “toro” y “matemáticas”. Nótese que la combinación “toro-matemáticas” es seis veces mayor que “vaca-matemáticas”. Lo anterior se explica porque la palabra toro, si bien denota a un mamífero rumiante masculino del grupo de los bovinos, también hace referencia a la superficie generada por una circunferencia que gira alrededor de una recta exterior coplanaria. Con estos ejemplos se ilustra la forma de cuantificar similitudes y diferencias semánticas entre palabras, las cuales pueden aparentar no tener ningún tipo de relación a primera vista, pero existen de forma latente, como es el caso de las palabras “toro-matemáticas”.
El segundo caso se enfoca en comparar grupos de palabras. Partiendo de un vector específico es posible identificar a sus n vecinos más cercanos dentro del campo semántico. Es decir, estos vecinos estarán dados por aquellos n vectores que tienen la menor distancia con respecto al vector de referencia. La interpretación es la siguiente: la similitud semántica entre el grupo de n vectores (o palabras) es inversamente proporcional a su distancia dentro del campo semántico. En la Figura 3 aparecen los 29 vecinos más cercanos a la palabra “matemáticas”. En este caso, las distancias están dadas por las primeras dos dimensiones del campo semántico, las cuales a su vez corresponden a los mayores valores propios. Nótese que “matemáticas” aparece en el origen del plano cartesiano y las palabras más próximas son “geometría”, “computacional”, “for-mulación” y “teoría”.
En la última parte de los resultados se ilustran las comparaciones semánticas entre textos. Para tal propósito, hemos tomado tres párrafos con contextos aparentemente parecidos. El primero de ellos hace referencia al Artículo I de la Constitución Política de los Estados Unidos Mexicanos (EUM). En segundo lugar, la Declaración Universal de los Derechos Humanos (DUDH) tomada del sitio de internet de las Organización de las Naciones Unidas (ONU, 2018) y, por último, la definición Derechos Humanos (DH.Wiki) según la Wikipedia (2018). A diferencia del ejemplo anterior, la comparación entre textos está dada por el promedio del grupo de palabras de los integran. En primer lugar, el promedio de las distancias entre los vectores (palabras) que componen el primer texto (en este caso EUM) es obtenido, seguido del promedio del segundo texto (DUDH). Posteriormente, se calcula el coseno entre los vectores resultantes de ambos grupos de palabras. Este último representa el grado de similitud semántica entre los dos textos. La similitud semántica entre el Artículo I de la Constitución Política de los Estados Unidos Mexicanos y la Declaración Universal de los Derechos Humanos (DUDH) es igual a 0.1523. Lo anterior contrasta con el valor obtenido entre la definición de Derechos Humanos de la Wikipedia (DH.wiki), por una parte, y nuevamente el Artículo I (EUM) por la otra, el cual fue igual a 0.3315. Además, comparación entre la DUDH y la definición de DH de la Wikipedia es igual
a 0.3090.
Estos resultados tienen interpretaciones interesantes. En primer lugar, los textos EUM y DH.wiki presentan la mayor similitud (0.336). Por el contrario, la diferencia más importante se registró entre los textos EUM y DUDH (0.152). Si bien la similitud semántica entre ambos documentos oficiales, por una parte, y la definición genérica de la Wikipedia por la otra, es relativamente similar (0.336 y 0.309), llama la atención que este valor baje hasta 0.152 para la comparación entre ellos (EUM y DUDH). Hemos encontrado que el artículo I de la Constitución política de los EUM es semánticamente más parecido a la definición de DH de Wikipekia que la declaración de los derechos humanos de las Naciones Unidas. De esta forma, podemos identificar diferencias semánticas entre dos más textos, los cuales principio están tocando el mismo tema.
Discusion
En este trabajo se aplica un tipo de método estadístico multivariante denominado descompo-sición en valores singulares, con la finalidad de construir un campo semántico. De acuerdo con Dumais (2005), partiendo un dominio textual de gran envergadura, un campo semántico consiste en conceptualizar cada palabra de este dominio como un vector. En este arreglo de alta dimensionalidad, aquellas palabras con significado similar ocuparan espacios cercanos dentro del espacio. Debido a que es necesario procesar bases de datos de gran tamaño para que se cumpla la hipótesis distribucional descrita en Hofmann (1999), la demostración numérica de tal hipótesis se realizó recientemente, en parte como consecuencia del incremento de la capacidad procesamiento que experimentaron las computadoras en los últimos años. Si bien los campos semánticos han sido ampliamente estudiados para el idioma inglés, para el español el número de estudios es limitado. De esta forma, al proponer un campo semántico que describe las relaciones entre la mayoría de las palabras que componen el idioma español, buscamos hacer una
contribución novedosa.
El campo semántico aquí propuesto puede ser utilizado eficientemente en comparar palabras o textos tomando como referencia el significado de cada unidad lingüística. De acuerdo con Furnas et. al (1987), la forma en que los seres humanos pueden utilizar y ordenar las palabras es un fenómeno complejo y este trabajo está limitado en tal dirección. El trabajo propuesto por Bradford (2005), el cual propone versión revisada del análisis semántico basada en índices, hace una contribución para sopesar esta limitante. Desde la perspectiva de la psicología Landauer. et. al (2007) menciona que una persona, desde su niñez hasta su vida adulta, se expone a cientos de millones de palabras. Estas serían las dimensiones de la matriz necesaria para poder construir un campo semántico, el cual pudiera describir realmente como los humanos utilizan el lenguaje. Es posible que veamos computadoras capaces de procesar estos volúmenes de información en un futuro cercano.
Referencias
• Aha, D. W., Kibler, D., & Albert, M. K. (1991). Instance-based learning algorithms. Machine Learning , 6(1), 37-66. DOI:10.1007/bf00153759
• Attardi, G., Cozza, V., & Sartiano, D. (2015). Annotation and Extraction of Relations from Italian Medical Records. IIR.
• Barahona, I. (2018). Poverty in Mexico: Its relationship to social and cultural indicators. Social Indicators Research . 135(2), 599-627. DOI:
• Berry, M. W. (1992). Large-scale sparse singular value computations. The International Journal of Supercomputing Applications, 6(1), 13-49.
• Bradford, R. (2005). Efficient discovery of new information in large text databases. In International Conference on Intelligence and Security Informatics (pp. 374-380). Springer, Berlin, Heidelberg.
• Cuadras, C. M. (2014). Nuevos Métodos De Análisis Multivariante. CMC Editions, 304.
• Deerwester, S., Dumais, S. T., Furnas, G. W., Landauer, T. K., & Harshman, R. (1990). Indexing by latent semantic analysis. Journal of the American society for information science, 41(6), 391-407.
• Dumais S. (2005). "Latent Semantic Analysis". Annual Review of Information Science and Technology. 38: 188–230.
• Furnas, W., Landauer, K., Gomez, M., Dumais, S. (1987). "The vocabulary problem in human-system communication". Communications of the ACM. 30 (11): 964–971.
• Günther, F., Dudschig, C., & Kaup, B. (2015). LSAfun-An R package for computations based on Latent Semantic Analysis. Behavior research methods, 47(4), 930-944.
• Hofmann T. (1999). "Probabilistic Latent Semantic Analysis".Uncertainty in Artificial Intelligence.
• Kintsch W & Bowles A. (2002) Metaphor Comprehension: What Makes a Metaphor Dif-ficult to Understand?, Metaphor and Symbol, 17:4, 249-262, DOI: 10.1207/S15327868MS17041
• Kintsch W .(1998) The Representation of Knowledge in Minds and Machines, International Journal of Psychology, 33:6, 411-420, DOI: 10.1080/002075998400169
• Kintsch, W. (2001). Predication. Cognitive science, 25(2), 173-202.
• Lanczos, C. (1950). An iteration method for the solution of the eigenvalue problem of linear differential and integral operators. Los Angeles, CA: United States Governm. Press Office.
• Landauer T .(1999) Latent semantic analysis: A theory of the psychology of language and mind, Discourse Processes, 27:3, 303-310, DOI: 10.1080/01638539909545065
• Landauer, T. K.,& Dumais, S. T. (1997). A solution to Plato’s problem: The latent semantic analysis theory of acquisition, induction, and representation of knowledge. Psychological review, 104(2), 211.
• Landauer, T., et al., Handbook of Latent Semantic Analysis, Lawrence Erlbaum Associates, 2007.
• Muja, M., & Lowe, D. G. (2009). Fast approximate nearest neighbors with automatic algorithm configuration. VISAPP (1), 2(331-340), 2.
• Nakov, P., Popova, A., & Mateev, P. (2001). Weight functions impact on LSA performance. EuroConference RANLP, 187-193. ONU. (2018). Declaración Universal de los Derechos Humanos. Retrieved from September
• Organización de las Naciones Unicas (ONU). (2018). chos Humanos. Accesado el 10 de octubre de 2018 de:
• Rohde D,. Berry M,. Do, T,. O’Brien, G,. Krishna V, Varadhan, S,. & Evert S,. (2018). sparsesvd: Sparse Truncated Singular Value Decomposition (from ’SVDLIBC’). R package version 0.1-4.
• Wikipedia. (2018). Descargar Wikipedia Español. Retrieved from https : //es.wikipedia.org/wiki/Wikipedia : Descargas, September 20th, 2017
• Wikipedia. (2018). Definición de derechos humanos. Retrieved 2018, from , October, 11th, 2018
• Wikipedia. (2018). Free online encyclopedia. Retrieved from https : //es.wikipedia.org/wiki/Wikipedia, December 3rd, 2018
• Wild F. (2015). lsa: Latent Semantic Analysis. R package version 0.73.1.