Procesamiento del lenguaje natural
Posicionamiento del problema
La importancia de las aplicaciones de text mining (minería de texto) no ha dejado de crecer de manera constante en los últimos años. El surgimiento de las redes sociales ha intensificado este fenómeno. La principal característica de los datos textuales, y que marcan la diferencia respecto a los datos semiestructurados (archivos XML o JSON) o estructurados (bases de datos), radica en que hay que buscar de forma no determinista dentro de cada elemento de datos.
Los datos de texto se pueden procesar a diferentes niveles de profundidad:
-
Identificación de palabras que pertenecen a listas de palabras (bag of words).
-
Identificación de cadenas de palabras (frases o expresiones).
-
Identificación de elementos semánticos (reconocimiento de palabras por su significado).
Otra característica típica de un texto es la baja proporción entre el número de palabras del texto y el número total de palabras posibles en un idioma o jerga. Esto crea estructuras de datos muy irregulares, especialmente cuando se intenta representar información en estructuras como las tablas (sparse matrix).
En este capítulo vamos a centrar nuestra atención en un método potente, pero que puede resultar un poco disuasorio respecto a su formulación: el análisis semántico latente.
Hay muchas otras técnicas en el contexto NLP, algunas muy útiles...
Análisis semántico latente y SVD
1. Aspectos teóricos
Denominado LSA (Latent Semantic Analysis) en inglés, el análisis semántico latente se basa en la creación de una matriz que incluye los valores de una función particular, calculada a partir de las ocurrencias de los diversos términos (palabras) presentes en los distintos documentos.
Los documentos pueden ser textos, correos electrónicos, tweets, publicaciones en blogs, currículos, etc.
Cada término considerado forma parte de una fila de esta matriz y cada columna de la matriz se corresponde con un documento.
En la intersección entre filas y columnas, se encuentra el resultado del cálculo de una función. Este resultado es tanto mayor cuanto mayor sea el número de apariciones del término en el documento y dicho término sea poco habitual en general. Los paquetes vienen con varias funciones comunes, pero su problema puede requerir que desarrolle las suyas propias. Una función como esta al menos siempre debería reflejar el hecho de que un término poco habitual es más significativo que un término común.
La función que mide la importancia de un término en un documento en función del corpus se llama TF-IDF (Term Frequency-Inverse Document Frequency). Se basa en la ley de Zipf, que se ocupa de la frecuencia de las palabras en un texto y cuya interpretación teórica apela a la noción de entropía.
El uso de la entropía es un excelente signo de objetividad. También es una buena noticia en cuanto a la cantidad de hipótesis empíricas que se deben verificar sobre la calidad del corpus.
Sin embargo, debería considerar seriamente diseñar su propia función si su problema es un poco especial.
Cuando tenemos varios corpus y diferentes «funciones de importancia», puede ser extremadamente eficiente realizar análisis cruzados sobre estos diferentes aspectos, manteniendo solo unas pocas features en cada cruce.
Algunas veces, las features obtenidas son complementarias, relativamente independientes y muy interpretables.
En muchos casos de implementación, los términos considerados son palabras que no tienen sus características contextuales (marcas de plural y género, letras mayúsculas al comienzo de una oración...