Transcripción
Bienvenidos y bienvenidas a Palabras binarias, informática para lingüistas. Aquí podéis informaros sobre cuestiones relacionadas con la lingüística de corpus, la lingüística computacional, la inteligencia artificial y la informática en general. Hoy os traemos un vídeo sobre cómo generar listas de frecuencias de palabras a partir de un texto o de un conjunto de textos. Es un vídeo un poco diferente a los que venimos haciendo ya que nos vamos a centrar un poco en el resultado, es decir, cómo utilizar los comandos del Terminal para generar una lista de frecuencias de las palabras de un conjunto de textos. Si queréis conocer los detalles de cómo es el procedimiento, os recuerdo que tenéis un curso en palabrasbinarias.com donde podéis aprender qué es lo que voy a hacer yo aquí. Insisto, en esta ocasión me voy a centrar en el resultado, en enseñaros qué se puede llegar a hacer desde el Terminal. Vamos a verlo.
Bien, en primer lugar vamos a ir al proyecto Gutenberg a descargar alguna de las obras que vamos a utilizar. Entonces, ahí en el proyecto Gutenberg primero vamos a buscar el Quijote. Es Gutenberg.org, como veis ahí. Y vamos a buscar aquí el Quijote. Por ejemplo, aquí. Y vamos a descargar el fichero de texto que es lo que pone aquí Plain Text UTF-8. Lo voy a descargar, y lo voy a mover a una carpeta taller donde estoy aquí yo trabajando.
Vale, lo he metido aquí en una carpeta taller y aquí estoy, o lo que os decía, estoy en el Terminal dentro de esa carpeta taller. Bueno, si hago este comando, ls, puedo ver el contenido de la carpeta taller que tiene pg2000.txt que es el fichero con el que me ha descargado. Lo podríamos renombrar al Quijote o lo que sea. Bien, voy a abrir el fichero entonces en el Visual Studio. Lo tengo aquí, que es un, bueno, lo podéis abrir con cualquier editor de texto. Y aquí lo que vemos es que, bueno, tiene un prólogo y incluso creo que recordar que también tiene aquí un epílogo en inglés sobre la licencia. Vamos a ver, ¿ves? Esto no es parte del Quijote, entonces simplemente, a mano, le voy a borrar las partes que sobran para nuestro objeto. En un lugar de la mancha. Vale, aquí empieza, en primera parte del ingenioso Hidalgo Don Quijote de la mancha. Le voy a borrar todo lo que tiene antes, y ahora me voy al final y voy a ver, perdón, voy a ver dónde empieza la parte en inglés. Aquí ya hay en inglés, estoy subiendo. Fin, aquí finaliza la obra, ¿vale? Vamos a eliminar la parte en inglés. Bien, guardo el fichero y entonces ahora ya tengo lo que es en el fichero pg2000.txt, tengo el texto del Quijote.
Vale, lo que vamos a hacer es obtener la lista de frecuencias de este documento, ¿vale? de este fichero. Bien, y para ello vamos a hacer uso de los comandos. Yo aquí simplemente voy a enumerar qué hace el comando en líneas generales. Si queréis saber exactamente cómo funcionan podéis investigarlo por vuestra cuenta o podéis hacer el curso que tenemos en nuestra página: Introducción al Terminal, un taller práctico para lingüistas, donde contamos cada uno de estos comandos que voy a poner ahora, los detalles de cómo se usan, bueno, hacemos ejercicios, etcétera, ¿de acuerdo? Esto es para que veáis lo que podéis llegar a hacer.
Entonces lo que le vamos a decir es cógeme el fichero... Cuando hacemos una lista de frecuencias lo normal, lo habitual, es que queremos que nos fusione el conteo de las palabras que tienen mayúsculas con las que están en minúsculas. Si una palabra empieza a inicio de frase que aparece en mayúsculas, que la sume igual a la misma palabra cuando no aparece a inicio de frase. Entonces, lo que le estamos diciendo es, le vamos a decir aquí que me convierta las mayúsculas a minúsculas, o sea, conviérteme todo el texto de mayúsculas a minúsculas con el comando tr.
Vale, ahora, después de convertir todo el texto en mayúsculas, de mayúsculas a minúsculas, lo que tenemos que hacer es segmentar las oraciones [quiere decir palabras, no oraciones]
. Eso hay varias maneras de hacerlo, pero a mí me gusta hacerlo así. Hacemos un grep, -E, menos -o, y esta expresión regular que pone aquí me dice que haga coincidencia, que me extraiga las palabras del texto. Vale, el \w indica cualquier letra que puede formar parte de las palabras y el más que es cualquier número de letras. Bueno, al final, lo que hace esta expresión regular es obtener las palabras de un texto, ¿vale?, con la opción -o. Bien, y las pone cada una en una línea. Como las pone cada una en una línea, ordenamos las líneas y usamos el comando uniq -c para contar. El sort y uniq -c lo que hace es contar de cada palabra cuántas tenemos. Luego podemos ordenarlo por orden inverso, perdón, por orden de frecuencia. Estamos con esto, con el sort -n -r ordenamos por frecuencia. Y después, si lo hacemos hasta aquí, podéis ver que nos saca ya una lista de palabras junto con su frecuencia, sale al principio la frecuencia y después la palabra. Pero esto no se puede cargar directamente en una hoja de cálculo, así que haciendo un par de conversiones más, le decimos que sustituya los espacios al principio de cada línea por, bueno, que los elimina más bien. Y por último, le decimos que los espacios que hay separando los campos, que los sustituya por tabuladores. Y con esto estamos generando un fichero CSV, que se llama, que son campos separados por tabuladores que se puede cargar en el Excel, en el Numbers, en el LibreOffice Calc, etcétera. Lo podéis cargar en cualquier hoja de cálculo.
Entonces ahora este resultado, le decimos que lo guarde como pg2000.csv, por ejemplo. Lo que está haciendo es meter eso que estábamos viendo por pantalla en el fichero CSV. Bien, aquí estoy con un Mac haciendo el ejercicio y lo que le voy a decir es que abra, voy a abrir aquí el fichero con el Numbers, simplemente haciendo doble clic. Nos abre aquí la hoja de cálculo con la lista de frecuencias, 20.000 veces aparece el que, 17.756 de, 17.000 veces y, tenemos una lista de frecuencias. Y las de frecuencia 1 están abajo de todo. Veis, con una secuencia de comandos en el Terminal podemos generar una lista de frecuencias de un texto.
Si no habéis cursado este taller es probable que no sepáis que hacen cada estos comandos, pero bueno, creo que este vídeo os puede servir para saber si os interesa el taller, ¿vale?, porque es uno de los ejercicios que hacemos al final del taller. Vamos viendo qué hace el cat, qué hace tr, qué hace grep, qué hace sort, qué hace uniq, cada comando por separado haciendo ejercicios más sencillos y al final pues estáis haciendo cosas de este estilo. Es una de las cosas que podéis hacer.
Bien, os preguntaréis, vale, pero esto son la lista de frecuencias de un texto. En general, cuando se trabaja con corpus se trabaja con muchos textos. ¿Podemos hacer una lista de frecuencias de muchos ficheros?, ¿de varios? Pues la respuesta es sí. Entonces lo que vamos a hacer es que en Gutenberg ahora, el proyecto Gutenberg, vamos a descargar el Lazarillo de Tormes, que también está allí, y vamos a sacar esta lista de frecuencias de los dos ficheros a la vez, del del Quijote y del Lazarillo. ¿De acuerdo?, Vamos a verlo.
Voy a cerrar esto. Esto lo voy a sacar de momento de aquí. Y esto también. Bien, entonces aquí, si lo doy para atrás, busco el Lazarillo de Tormes. Voy a poner el Lazarillo. Vale, creo que es este, Vida del Lazarillo de Tormes. Otra vez voy a descargar el fichero que está en UTF-8. Esto del UTF-8, la codificación de caracteres y demás, también lo explicamos en ese curso. Y ahora lo voy a guardar. Podría ponerle el texto. Podría poner aquí lazarillo.txt, pero bueno, lo vamos a dejar así, igual que en el otro lo hemos dejado. Lo guardo, pg320. Lo voy a traer para la carpeta taller. Vale. A ver, que no quiere. Ahí, no quería subirse.
Bien, ahí dentro de la carpeta taller, bueno, aquí estoy accediendo a través del Terminal, pero también lo tenemos aquí. Vale, lo que está en el Terminal también lo podemos ver desde fuera. También lo explicamos en el curso cómo hacer esto, que podamos trabajar indistintamente entre el Terminal y las carpetas habituales con las que estamos habituados a trabajar.
Bien, entonces con el mismo comando de antes, lo voy a recuperar, simplemente si yo le pongo aquí el fichero y la salida al pg320. Fijaos que ya no tengo ni que teclearlo. Generé ahí un pg320.csv que son, es la lista de frecuencias de las palabras del Lazarillo. Tenemos por un lado las del Quijote y por el otro las del Lazarillo. Pero qué pasa si queremos sumar todas juntas. Vale, hacerlo todo, de todos los ficheros que tengo aquí, generar la lista de frecuencias. Bueno, pues para eso podemos usar los comodines del comando cat y decirle, mira, quiero, no quiero el pg2000, no quiero el pg320. Lo que quiero es todos los ficheros txt que tenga aquí dentro de esta carpeta, me haces el procedimiento con todos ellos. Me generas las palabras, bueno, conviertes a minúsculas, me extraes las palabras, haces la ordenación y las cuentas todas juntas. Vale, pues entonces aquí le ponemos que el resultado es todo.csv, por ejemplo, que me meta el resultado en un fichero que se llama todo.csv.
Vale, lo tenemos ahí, lo podemos abrir con nuestra hoja de cálculo, en este caso Numbers. Si queréis abrirlo con Excel, es un poco rarito el procedimiento, pero tenéis un vídeo ahí en la parte pública de palabras binarias donde explico cómo hacerlo, cómo abrir un CSV desde el Excel. ¿Vale?, lo tenéis ahí. Y aquí tenéis, bueno, pues el que 21.000 veces, el de 18.000, la 10.000, no son los mismos valores que teníamos para el quijote, ni son los mismos del Lazarillo, sino que son los dos juntos.
Aquí igual no tiene mucho sentido mezclar el Quijote y el Lazarillo, es sólo un ejemplo. En general, cuando tenemos un proyecto de corpus y demás, tenemos muchos ficheros del mismo tipo. Podemos tener un montón de noticias de prensa o lo que sea, y si queremos generar una lista de frecuencias de un conjunto o de todas esas noticias o de un conjunto, las metemos en una carpeta, ejecutamos este comando y podemos ver la lista de frecuencias de las palabras de ese conjunto, ¿de acuerdo?
Bien, pues todo esto podéis aprenderlo en nuestro curso, Introducción al Terminal, que lo tenéis en palabras binarias, y simplemente quería mostraros lo que se puede llegar a hacer con los comandos. También, si no sabéis cómo instalar el Terminal y demás, también lo explicamos allí. Bueno, espero que os sirviera de algo, siento que no pueda pararme a explicar todas las palabras, todos los comanditos que hemos usado, pero bueno, eso es el objeto del curso. Aquí es simplemente para que veáis el resultado de, si conocéis todos estos comandos, lo que se puede llegar a hacer desde el Terminal, que yo no conozco ninguna forma así muy sencilla de hacerlo de otra manera, ¿vale? El Terminal para mí es como una navaja suiza, con la que puedes hacer un montón de pequeñas cosas, que a veces es muy difícil hacerlo con aplicaciones gráficas y demás. ¿De acuerdo?.