¿Por qué aprender a programar?

El jueves de la semana pasada lanzamos públicamente la versión en español de un sitio web bastante conocido por los historiadores digitales: The Programming Historian. Tras unos meses de arduo trabajo colaborativo, la publicación en español es una versión bastante ligera, con una pequeña parte del conjunto de lecciones y tutoriales sobre herramientas digitales, técnicas y flujos de trabajo que se pueden encontrar en el sitio original. Había que comenzar por algo.

No obstante lo incompleto, The Programming Historian en español merece mucho la pena ser visitado porque contiene -por ahora solamente-, la Introducción a Python, un conjunto de tutoriales pensados para estudiarse de manera seriada que permite a los historiadores aprender los rudimentos de ese lenguaje de programación de alto nivel multipropósito. Muchos colegas historiadores y humanistas se preguntarán aquí, “¿para qué nos sirve saber esas cosas que les competen a los encargados de cómputo de mi institución?”

No podemos negar que nuestro quehacer académico se ha digitalizado a un grado superlativo en las últimas décadas. Nos hemos percatado que manipular datos digitalmente nos ofrece la posibilidad de ampliar nuestros horizontes de investigación. Hace tiempo que los historiadores trabajamos con bases de datos de diverso tipo, hacemos análisis de redes sociales auxiliados de programas de cómputo especializado, recurrimos a sistemas de información geográfica para el análisis espacial y para generar representaciones cartográficas, o usamos hojas de cálculo para tabular datos seriales para hacer historia económica o demografía histórica, obteniendo gráficas muy interesantes de tendencias de crecimiento. Pero también, entre otras muchas cosas, los historiadores podemos trabajar con conjuntos de datos masivos (big data), y es ahí donde radica la importancia de aprender un lenguaje de programación que nos permita sacarle provecho a una cantidad ingente de datos.

Los historiadores generalmente acudimos a documentos en los que quedó, en forma de texto, algún registro de los acontecimientos, de las ideas de una persona o de un grupo de personas, así como de las formas culturales de estructurar los discursos. Esos son algunos de los datos con los que trabajamos. Cuando leemos un documento lo interpretamos, es decir, diseccionamos y reorganizamos su discurso de tal manera que los datos nos ofrezca un significado. En otras palabras: manipulamos los datos de diversas maneras a través de un sinnúmero de operaciones de por medio. A veces, con un conjunto de textos, realizamos una serie de operaciones cuantitativas en busca de respuestas cualitativas. Por ejemplo, contamos la frecuencia (concordancia) con la que aparece una palabra o una frase, elaboramos la hipótesis de que esta palabra resulta clave para determinada época, así que buscamos el contexto en el que se encuentra ese término para reconstruir redes semánticas que nos ayuden a comprender un corpus documental mayor. También ponemos atención a las interrelaciones entre un concepto y otro, vemos cuáles juegan un papel intercambiable en el complejo contexto del discurso que nos ofrecen los documentos. Además, ponemos énfasis en las relaciones de intertextualidad entre un tipo de documentos y otros, para intentar reconstruir y explicarnos el contexto cultural en el que se produjeron.

Podemos hacer todo esto de manera más o menos sencilla cuando nos enfrentamos a un corpus documental restrigido, de cien, quinientos o mil quinietos expedientes de archivo… e, incluso, ahí comienzan nuestros peores dolores de cabeza: tenemos que organizar nuestros glosarios de términos, nuestras redes de interrelaciones conceptuales.

Ahora imaginemos que Internet pone a nuestra disposición la transcripción de la impresionante cantidad de ¡197,745! juicios criminales llevados a cabo frente a un tribunal londinense entre 1674 y 1913. Para un historiador solitario, tal cantidad de documentos resulta imposible de procesar y analizar, ya ni se diga de imaginar. Pero, de tener las herramientas, ¿no estaríamos tentados a hacer algunos análisis cuantitativos de esos documentos? ¿No sería maravilloso buscar algunas series de conceptos, sus interrelaciones, los contextos en los que se ubican y sus cambios a lo largo de varias décadas o siglos? La herramienta para hacerlo es posible, está en nuestra propia computadora y solamente es necesario aprender un poco de programación para echarla a funcionar.

En términos de la ciencia de la computación, de la información, de la data, una palabra es una secuencia de caracteres específica, es decir, una cadena de caracteres (string) organizada de una forma determinada que nos ofrece cierto significado, pero que para una computadora es un conjunto de datos procesables carentes de significado. Las frases son una secuencia de palabras interrelacionadas de cierta manera, es decir, cadenas de caracteres de mayor longitud. Un párrafo, el contenido escrito de un documento, el de un expediente, el de un legajo, el de todo un ramo del acervo de un archivo, contiene grandes series diferenciadas de cadenas de caracteres, de datos susceptibles de ser procesados y manipulados por computadora. Los programas de ofimática que utilizamos, como los procesadores de texto, ofrecen cierta capacidad de manipular esos datos, pero es una manipulación elemental y que nunca controlamos a nuestro gusto. En el procesador de texto podemos buscar una palabra determinada (una cadena de caracteres) y obtener un informe de las veces que aparece en el texto. Pero es imposible sacarle más jugo al asunto si queremos incluir las variables de esa palabra y obtener su concordancia en los diversos contextos en las que se encuentra, o construir modelos tópicos. Además, sería imposible trabajar con 197 mil expedientes en ese tipo de programas, por ejemplo, en un solo archivo de MS-Word.

Una de las bondades de Python es que es un lenguaje de programación muy sencillo en su sintaxis a la vez que poderoso (por ser un lenguaje interpretado de alto nivel). Ello facilita el uso del conjunto de funciones orientadas para operar sobre cadenas de caracteres, entre las que se incluyen comparación, búsquedas boleanas, organización por diccionarios, aprendizaje máquina, construcción de n-gramas, modelado tópico y otras más cuya utilización es muy eficaz para analizar datos masivos y generar, con la ayuda de otras herramientas, visualizaciones de los datos que nos permitan encontrar secuencias o tendencias a nivel macro que no podríamos detectar de otra manera; por ejemplo, cómo cambia la relación de sustantivos y adjetivos vinculados con la palabra “asesinato” a lo largo de 150 años, o encontrar, como lo hizo Fred Gibbs, cuál era el método preferido por los criminales londinenses para envenenar a sus víctimas a lo largo de varias décadas. Podemos también construir, estadísticamente, el conjunto de temas predominantes en un conjunto de documentos.

Veamos el ejemplo en el que se basan los tutoriales de Python en The Programming Historian. El proyecto de publicación en Internet de los expedientes criminales londinenses, The Proceedings of the Old Bailey, puso en línea 197,745 transcripciones de juicios criminales, es decir, cerca de 127 millones de palabras registradas a lo largo de 239 años de fuentes históricas capaces de ser analizadas. Esto supuso un reto para los historiadores digitales que generó varios proyectos de desarrollo de herramientas informáticas para proponer un macroanálisis de esto que, en términos de la práctica del historiador, es un conjunto de datos masivos. Entre los diversos proyectos se puede consultar el resultado de Data Mining with Criminal Intent, un proyecto multinacional; Exploring Big Historical Data: The Historian’s Macroscope, y el origen del sitio de tutoriales para historiadores digitales cuya primera versión escribieron WJ Turkel y A MacEarchen The Programming Historian version 1.

Parece que, de ahora en adelante, para los historiadores que se enfrentan de lleno al contexto digitalizado en su práctica cotidiana, saber programar, es decir, escribir código para hacer programas y extraer datos de sus documentos, es muy recomendable. En un mundo donde tenemos acceso a cantidades increibles de datos, si se permite la comparación, será lo mismo que saber paleografiar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Abrir la barra de herramientas