Seleccionar página

No todas las palabras valen lo mismo

Volvemos a utilizar nuestra famosa escena de Cadena Perpetua. En este post la presentamos por primera vez, y hemos hecho con ella algunos experimentos interesantes. Aquí vamos a hacer un experimento tan fácil como ilustrativo: eliminar artículos y preposiciones: 

así fue como penúltimo día trabajo pelotón convictos que había alquitranado tejado taller primavera 1949 terminó sentado diez mañana, bebiéndose cerveza pilsener helada cortesía mayor cabronazo que jamás haya estado cuidado prisión estatal. 

No hay ningún problema para entender el significado de este extracto de la escena (sólo hemos utilizado el primer párrafo). La conclusión que se saca es que hay ciertas palabras que, aunque son necesarias para tener estructuras gramaticales correctas, aportan bastante menos al significado del documento que otras palabras. Además, si quisiéramos hacer un estudio sobre las palabras más frecuentes en un corpus de documentos, nuestro estudio aportaría poco si el top de palabras más frecuentes está lleno de artículos y preposiciones.

Este simple ejercicio nos ayuda a introducir un concepto muy importante dentro del Procesamiento de Lenguaje Natural: stop words.

Stop words

La intuición no falla: stop words son todas esas palabras que no queremos que se tengan en cuenta en ningún tipo de análisis del corpus. De otra forma: es la lista de palabras que queremos eliminar del corpus para dejar de considerarlas. Stop considering those words!

Es evidente que la lista de stop words es dependiente del idioma que se utilice en los documentos del corpus. Lo que no es tan evidente es que esa lista también es dependiente del dominio del propio corpus. Por ejemplo, si estuviéramos analizando el texto de la Constitución española, probablemente la palabra «artículo» se va a repetir mucho y puede convenir eliminarla para que no destaque innecesariamente.

Hay técnicas que ponderan de forma automática el peso que se otorga a las palabras en función de su presencia en los diferentes documentos del corpus (como TF-IDF). Seguro que tendremos oportunidad de hablar de ellas en algún post.

Como de costumbre, veamos cómo se utiliza la lista de stop words Python sobre las frases de la escena de Cadena Perpetua:

Frase 1 = [‘así’, ‘penúltimo’, ‘día’, ‘trabajo’, ‘pelotón’, ‘convictos’, ‘alquitranado’, ‘tejado’, ‘taller’, ‘primavera’, ‘1949’, ‘terminó’, ‘sentado’, ‘diez’, ‘mañana’, ‘bebiéndose’, ‘cerveza’, ‘pilsener’, ‘helada’, ‘cortesía’, ‘mayor’, ‘cabronazo’, ‘jamás’, ‘cuidado’, ‘prisión’, ‘estatal’]

Frase 2 = [‘maldito’, ‘capullo’, ‘incluso’, ‘logró’, ‘parecer’, ‘benévolo’]

Frase 3 = [‘sentamos’, ‘beber’, ‘sol’, ‘espalda’, ‘sentimos’, ‘hombres’, ‘libres’]

Frase 4 = [‘diablos’, ‘si’, ‘alquitranando’, ‘tejado’, ‘propias’, ‘casas’]

Frase 5 = [‘si’, ‘señores’, ‘creación’]

Frase 6 = [‘cuanto’, ‘andy’, ‘pasó’, ‘descanso’, ‘sentado’, ‘sombra’, ‘extraña’, ‘sonrisa’, ‘rostro’, ‘mirando’, ‘cómo’, ‘bebíamos’, ‘cerveza’]

Frase 7 = [‘dirán’, ‘hizo’, ‘ganarse’, ‘favor’, ‘celadores’, ‘ganarse’, ‘amigos’, ‘presos’]

Frase 8 = [‘creo’, ‘hizo’, ‘sentirse’, ‘normal’, ‘aunque’, ‘sólo’, ‘momento’]

Takeaway

Hay palabras que aportan poco al significado de una frase o un documento y que por contra pueden introducir ruido en el análisis de un corpus. Es habitual construir una lista con esas palabras, llamada stop words, y eliminarlas del corpus. Las stop words son dependientes del idioma y del dominio, así que dependiendo del propósito de nuestro análisis la lista puede contener palabras diferentes.