El propósito de esta lección es difundir el uso de conjuntos de datos con atributos extraídos (“extracted features”) que proporciona el Centro de Investigación de HathiTrust (HTRC) como una manera rápida y accesible de comenzar a estudiar tendencias históricas y culturales a gran escala en textos literarios. Uno de los mayores obstáculos para avanzar en el estudio de las humanidades digitales fuera del mundo anglosajón es la escasez de textos digitalizados a escala masiva. De los más de 15 millones de volúmenes que posee HathiTrust más de la mitad no está en inglés. Estos números pueden representar para muchos investigadores, más de lo que hay disponible en su idioma en otros sitios. Por ejemplo, un 6% de los volúmenes en HathiTrust están en español, lo que significa que hay más de medio millón de textos disponibles.
El Centro de Investigación ha puesto a tu alcance los datos de todos los volúmenes que posee, gratis y ya pre-procesados. Esto incluye tanto los volúmenes cuyos derechos de autor han expirado como los que aún no. Esta lección requiere que tengas nociones básicas de R. Durante la lección, tendrás que instalar y cargar paquetes de R necesarios para obtener y manipular datos del sitio Hathitrust, e importar archivos en formatos de Excel y CSV. Si bien puedes practicar el código de este tutorial en una línea de comandos de R, estaremos usando el entorno de desarrollo RStudio en nuestros ejemplos y te recomendamos que lo instales.
Requisitos y primeros pasos
Para comenzar esta lección necesitas instalar el paquete de R llamado hathiTools, el cual te proporcionará una interfaz para poder obtener los atributos extraídos y los metadatos de los libros en HathitTrust. Cada libro o volumen en HathiTrust posee un número de identificación único (o el “htid”), el cual permite que obtengamos datos sobre el volumen. Si estás buscando un libro escribiendo su título o autor en el cuadro de búsqueda de HathiTrust, tienes que asegurarte de seleccionar la opción de “Full View” (vista completa) para encontrar su número de identificación. El mismo número de identificación te permite utilizar hathiTools para acceder a los atributos extraídos.
Es muy probable que te encuentres con casos en los que el número no funcione y no obtengas los datos extraídos como esperabas. Parte de la información que obtenemos de HathiTrust pertenece a los tokens y las páginas en las que aparecen. Dado que recibes los datos en forma de marco de datos, puedes utilizar las técnicas del paquete dplyr que has aprendido en otras lecciones, como filtrar (filter) y resumir (summarise). Podemos filtrar nuestros datos para encontrar las divisiones entre capítulos y añadirlos al gráfico. Para lograrlo, debes saber la palabra exacta que el texto utiliza para dividirse en partes. Es una buena idea eliminar la sección del volumen que viene antes del primer capítulo, ya que contiene, entre otras cosas, un prólogo que no es parte de la narración. Ya que sabes dónde comienza y termina el texto narrativo, puedes eliminar las páginas que no se necesitan (incluyendo los tokens que están en ellas).
Qué contiene el marco de datos extraído
En la digitalización de la novela fue muy fácil encontrar dónde estaban los capítulos y el fin de la narración con solo filtrar los datos, pero no todos los volúmenes que tiene HathiTrust están en tan buenas condiciones. Además de la información sobre tokens y páginas, en los atributos extraídos del volumen encontrarás varios otros detalles. Cada columna del marco de datos posee un nombre que describe un atributo extraído. El primero, htid, es el número de identificación del volumen, el cual usaste para obtener sus datos. El segundo es token, o una palabra o símbolo en el texto. POS es la categoría gramatical a que corresponde cada token - etiquetado siguiendo los “universal dependencies” (en inglés). Los valores posibles en la columna section incluyen “header” (encabezado), “body” que es el cuerpo principal de la página, y “footer” (el pie de la página).
Por ejemplo, podemos leer en la tabla de abajo que la palabra dulce es un adjetivo que aparece una vez en el cuerpo de la página 37 y Salomón es un nombre propio que aparece tres veces en la misma página. Ten en cuenta que el número de página no coincide necesariamente con el número impreso en las páginas del libro que encuentras como reproducción de imagen en el sitio web. Las opciones para clasificar los tokens que te proporciona este marco de datos son muchas. Digamos que solamente quieres contar los tokens en el cuerpo principal del texto. Algunas páginas tienen ahora una cantidad menor de tokens. Si, ademas de esto, quieres eliminar todo lo que no sea una palabra (números, signos) o errores que hayan sido introducidos al texto como resultado del proceso de digitalización, ésta es una de las muchas maneras en que puedes hacerlo.
La columna POS que clasifica las palabras según las categorías gramaticales a las que se refiere, será muy útil en casos en que trabajes con textos publicados después de 1929 a los que no tienes acceso completo, y en los que necesites saber el contexto en que una palabra está siendo utilizada. Por ejemplo, digamos que te interesa localizar la frecuencia con la que aparecen en María las palabras que aluden a las enfermedades, no sólo de la protagonista sino de otros personajes en la historia. Con frecuencia, el autor utiliza la palabra mal (“había muerto de un mal”, “síntomas de su mal”) para referirse a las enfermedades, pero en otras ocasiones, la misma palabra podría ser un adjetivo o un adverbio.
Cómo obtener y organizar colecciones y metadatos
Aventurarse en el mundo de estudiar tendencias culturales o literarias requiere que uses mucho más que un par de volúmenes. Si vas a sacar provecho de los recursos de HathiTrust, necesitarás una manera eficaz de obtener los libros que quieras para tu estudio, sus números de identificación y los metadatos correspondientes. En inglés, existen conjuntos de datos que ya contienen los números de identificación de HathiTrust para varios grupos de textos, tanto dentro de este sitio web, como en otros lugares de internet. Véase por ejemplo este conjunto de datos que contiene los libros de ficción en inglés publicados entre 1700 y 2009, o este otro, exclusivamente enfocado en las listas de libros más vendidos publicadas por el New York Times. La escasez de recursos hace indispensable que crees tus propias listas de volúmenes y sus números de identificación. Por eso, recomiendo que empieces tu investigación creando una colección de los libros que te interese estudiar.
El primer paso consiste en crear una cuenta en el portal de HathiTrust. Crear una cuenta como usuario invitado siguiendo el enlace See options to log in as guest que aparece en el mensaje. Selecciona lo que prefieras. En Featured Collections tendrás la opción de mirar colecciones que otros hayan hecho o puedes crear la tuya. Un apartado a la izquierda te dará varias opciones. Vamos a crear una colección. Usa el botón New Collection (Figura 6) de la parte derecha de esta página que te llevará a una ventana donde podremos darle un nombre a la colección, añadir información descriptiva sobre la misma (lo que hará que sea más fácil que otros la encuentren), y declarar la lista como privada o pública. La mía se va a llamar “Novelas de Ecuador (Siglo XIX y XX)”. Una vez creada la nueva categoría o colección, podrás buscar los volúmenes que quieras incluir en tu grupo.
Para este ejemplo, vamos a buscar un par de novelas. La primera será Huasipungo de Jorge Icaza, la cual podemos encontrar usando el catálogo. Vale notar un par de detalles importantes de esta sección que contiene la información sobre el libro de Icaza (Figura 7). El primero es que nos informa que no podemos ver este volumen, como hicimos en el caso de María, y que sólo tenemos un acceso limitado de búsqueda (“Limited (search only)”). Esto, como ya he explicado, no afecta el acceso a los tokens y los metadatos sobre el libro a través del lenguaje R. Tenemos dos enlaces que dicen “Limited” lo cual significa que hay dos copias digitales de esta misma impresión de 1940 y que vienen de dos universidades diferentes. Esto no significa que no hayan otras versiones de Huasipungo publicadas en otros años en la biblioteca de HathiTrust.
Si sigues uno de los dos enlaces de Limited (search only) te encontrarás con una nueva página. A la izquierda, verás el menú Collections. Como ya has creado tu colección para estas novelas, ahora tendrás la opción de fácilmente añadirla al grupo. Hagamos eso antes de continuar. Vamos a añadir dos novelas más a la colección. Puedes añadir otros libros que te interesen. Una vez que hayas terminado de incluir todo lo que quieras, regresa a la página de Featured Collections. El menú The Collection (Figura 5) se encuentra en todas las páginas de HathiTrust y siempre podrás usarlo para encontrar tu camino de vuelta a tus colecciones. La sección My Collections va a contener el grupo que acabas de crear, “Novelas de Ecuador (Siglo XIX y XX)” (Figura 8).
Selecciona la colección, te llevará a una página donde podrás modificar (añadir o eliminar elementos, etcétera) su contenido. A mano izquierda, te encontrarás con una sección llamada Download Metadata donde podrás descargar a tu computadora los metadatos asociados con los volúmenes en esta colección. Vas a notar que entre las opciones de formato de lo que vas a descargar se encuentra “Tab-Delimited Text (TSV)” que es un tipo de archivo donde los valores se encuentran separados por tabuladores (puede ser leído por programas de hojas de cálculo). Si lo descargas obtendrás un archivo de terminación .txt cuyo nombre tiene más de veinte números. Cada vez que descargues el archivo poseerá un número diferente. Figura 8. Para esta sección vamos a utilizar una colección que ya hemos preparado de antemano y clasificado de “pública” para que cualquier persona pueda tener acceso a ella y lo que es más importante para este tutorial, para descargar los metadatos.
Construir una colección dependerá del conocimiento que poseas sobre tu tema, previo a la búsqueda de los libros que incluirás en ella. Por ejemplo, sería imposible usar las opciones de búsqueda disponibles en HathiTrust para encontrar novelas ecuatorianas, ya que es una categoría demasiado específica. Lo mismo sucederá con la mayoría de los temas que te interese estudiar. Vamos a comenzar esta sección de la lección siguiendo este enlace que te llevará a nuestra colección de novelas ecuatorianas. En Download Metadata descarga el archivo con los datos y cambia su nombre a 100_Novelas_de_Ecuador.tsv (también puedes obtenerlo como parte de los archivos incluidos para esta lección).
Antes de hacerlo, deberàs asegurarte estar en la carpeta correcta. Para leer un documento .tsv desde R necesitarás llamar la librería readr primero y después usar el comando read_tsv. La columnas a utilizar en este ejercicio son htid, author, title y rights_date_used. En htid vas a encontrar el número de identificación que asigna HathiTrust al volumen. Las columnas de author (autor) y title (título) poseen la misma información que has visto en la página de Catalog Record. Y, finalmente, rights_date_used (fecha para decidir los derechos) es la fecha en la que esa edición de la obra ha sido publicada. Esta fecha podrá coincidir con la fecha de publicación, si el volumen que se encuentra en HathiTrust es la publicación original.
Ahora que tenemos los metadatos de la colección, el próximo paso es “limpiarlos” un poco. Para muchos proyectos de minería textual es necesario saber con exactitud cuándo las novelas fueron publicadas. Para esta colección de novelas ecuatorianas hemos creado una tabla con el número de htid de cada novela y su fecha de publicación. El archivo, fechas.xls, lo encuentras en los documentos que acompañan a esta lección. Como ya sabes, la columna de htid en los metadatos es importante porque te permitirá obtener los archivos que posean atributos extraídos de los volúmenes en tu colección. El primer método para obtener esta información que voy a describir usa el programa Rsync que los sistemas operativos de Linux y Mac ya tienen instalados. Este programa se utiliza para copiar archivos entre computadoras, entre otras funciones, y representa la manera más rápida para obtener grandes cantidades de archivos del sitio de HathiTrust.
Si estás utilizando el sistema operativo Windows, podrás instalar Rsync de manera que funcione con R, pero esto puede ser un proceso complicado que va más allá de lo que cubre esta lección. El primer paso para obtener los datos que necesitamos es designar una carpeta temporal en la que guardarás los archivos que vengan de HathiTrust. En los próximos dos pasos, vas a usar la lista de htids para obtener los archivos con atributos extraídos (“EF files”), vas a guardarlos en tu carpeta y vas a ponerlos en la memoria temporal de tu sistema para que puedas usarlos en tu sesión de R. Para este ejemplo vamos a descargar los cien volúmenes en la colección, pero si sólo quisieras algunos de ellos, puedes indicar los que necesitas usando el número de fila (por ejemplo, si solo quieres los primeros diez, metadatos$htid[1:10]).
Finalmente, guardaremos todos los resultados en una variable. Ten paciencia, el tiempo que los próximos pasos se tomen en tu computadora dependerá de factores como la capacidad de tu máquina y el tamaño de tu colección. Antes de proceder a analizar este conjunto de novelas, veamos una manera alternativa de obtener los atributos extraídos de HathiTrust. Es un poco más lento, probablemente demandará más recursos de tu sistema, pero representará una alternativa si trabajas en Windows y no tienes Rsync, o si por alguna razón tu instalación de Rsync no funciona correctamente. Como ese método sólo es capaz de adquirir un volumen a la vez, necesitaremos crear nuestra propia función con un bucle for que vaya guardando la información para cada número htid que tenemos. Para este tutorial hemos incluido una función que no sólo logra este cometido, sino que además te notifica si algunos de tus números de htid no funcionan. El código se encuentra en el archivo obtener_tokens.r y necesitarás ponerlo en la misma carpeta donde tienes tu proyecto de R. El resultado es una lista que contiene dos elementos. El primer elemento del resultado se convertirá en nuestro marco de datos con atributos extraídos. Ahora tienes un conjunto de datos en un formato que es perfecto para cualquier tipo de proyecto de minería textual que te interese. Como se hizo en el caso de la novela María, podríamos localizar la frecuencia de una palabra en los textos, sólo que en este caso se podría hacer en textos publicados en diferentes fechas. 5 Guayaquil inu.3200...
Este último segmento resalta la idea de que la minería de textos y el análisis de frecuencias pueden extenderse a través de colecciones para comparar tendencias a lo largo del tiempo y entre diversas geolocalizaciones. El enfoque con HathiTrust facilita no solo acceder a títulos en varios idiomas, sino también extraer atributos y metadatos que permiten reproducibilidad y escalabilidad en la investigación.
<- inserta aquí un bloque de transición neutro si se busca mayor cohesión entre secciones ->- Definir htids y derechos para construir mega-datasets de textos
- Usar hathiTools para extraer atributos y metadatos
- Limpiar datos y preparar tablas de fechas de publicación
- Aplicar técnicas de dplyr para filtrar, agrupar y resumir
En resumen, este enfoque permite a los investigadores ampliar su corpus de estudio con textos digitales multilingües, aprovechar metadatos estructurados y ejecutar análisis de frecuencia y distribución de palabras dentro de marcos de datos bien organizados. Con una colección bien diseñada y herramientas adecuadas, es posible estudiar tendencias culturales y literarias a gran escala sin limitarse a un único idioma o contexto geográfico.
