Del curso: Python para data scientist avanzado

Stemming: procesamiento textual

Una vez ya sepas cómo eliminar todo el ruido más superficial de un texto como, por ejemplo, las "stop words", aquellas palabras que sencillamente no aportan información porque son conjunciones o preposiciones, y todos los signos de puntuación, el siguiente paso normalmente en un análisis de texto es utilizar un "stemmer". ¿Qué es exactamente un "stemmer"? Aquí te propongo usar este, que forma parte del NLTK. Y lo que estamos haciendo cuando usamos una función de este estilo es reducir las palabras a la raíz. Vamos a ver qué es lo que estamos haciendo. Aquí tenemos las palabras sin procesar, y una de las cosas que podemos hacer es reducir todas las conjugaciones del verbo "llegar" a su raíz. Es decir, llevar todas las palabras que sean "llegaba", "llegaban", etc., a "llegar". Esto es lo que hace una función de este estilo. Tenemos que inicializar 'stemmer' en el idioma que lo queremos. Hay bastantes más. El tema es que muchos de ellos no aceptan el español, así que yo recomiendo este si estás trabajando con texto en castellano, pero sabed que existe, por ejemplo, también el PorterStemmer, que también es muy potente. Aquí creamos el objeto. Y lo que vamos a hacer es, usando este "loop", coger cada una de las palabras que tengamos en la lista y vamos a extraer su raíz. He creado una lista de raíces, de momento vacía. Y vamos a extraer la raíz de cada una de ellas. Como puedes ver, es inmediato. Tenemos exactamente el mismo texto, pero hemos despojado a todas las palabras de sus sufijos, es decir, tenemos la raíz. Antes he hablado de "llegar" y ahora solo tenemos la raíz. Esto lo que permite es que, cuando hagamos un recuento de frecuencias, no nos veamos afectados por qué conjugación o qué variante de la palabra estemos usando. Si lo que queremos es usar la función 'FreqDist', de las raíces, cogemos, por ejemplo, las 20 primeras. Vemos efectivamente que no son las palabras en realidad, aunque hay algunas que sí. Señor, por ejemplo, tiene el mismo formato. Pero si este objeto encuentra "señora", también lo va a reducir a "señor". Este es el punto. Y comparamos esto con... Y podemos ver, por ejemplo, que "caballero" ahora es la palabra que más aparece, o la raíz asociada a "caballero", y aquí no lo era, estaba empatada con "nombre". Este proceso que, como has visto, es increíblemente sencillo, consta de crear un objeto y recorrer mediante un bucle todas las palabras que tenemos en nuestra lista. Recomiendo que primero lo limpies con una instrucción de este tipo. Y creamos una transformación de nuestras palabras que permite realizar un análisis mucho más específico que no dependa tanto de las circunstancias concretas.

Contenido