He estado trabajando últimamente en un proyecto que involucra el uso de procedimientos computacionales para el análisis de datos, trabajando en el desarrollo de programas en Python para catalogar y analizar datos o para procesar textos en busca de patrones. Una de las cosas interesantes que ha salido de esto es un trabajo a partir del Informe Final de la Comisión de la Verdad y Reconciliación peruana, que además este año cumple diez años de haber sido publicado. El Informe Final es un esfuerzo masivo de investigación que involucró a un equipo enorme trabajando a través del Perú durante varios años, y es quizás el documento más comprehensivo de nuestra historia reciente sobre nuestra historia reciente. Se trata de nueve tomos más sus anexos, para un total de, si mal no recuerdo, alrededor de ocho mil páginas.
Por ello mismo, es sumamente difícil poder leerlo todo – a pesar de que lo he intentado varias veces, nunca lo he logrado. Existe Hatun Willakuy, la versión abreviada del IF en un solo volumen, pero obviamente no tiene la misma densidad y profundidad de información. De modo que se me ocurrió que el texto mismo del informe podría prestarse para una forma de lectura lejana (lo opuesto a una lectura cercana) donde el texto es tomado como la base de un análisis computacional que procesa el texto en busca de patrones significativos. Esto es totalmente un experimento, pero la idea del experimento es realizar este tipo de lecturas no con la intención de que un algoritmo agote el significado del texto, sino de que podamos utilizar un algoritmo para alzar preguntas y exponer áreas de interrogación que quizás no hubiéramos considerado antes. Esta aclaración es importante porque este tipo de herramientas de análisis basadas en computación o métodos en el ámbito de las humanidades digitales son suficientemente nuevas como para que su uso se pueda confundir o malinterpretar en el sentido de que intentemos dejar que la computadora responda preguntas, cuando en realidad es más interesante que genere posibilidades de interrogación.
Como un primer experimento dentro de lo espero se vaya volviendo un proyecto más completo con el tiempo (y que espero pueda resultar de interés a otras personas que se quieran ir sumando), he trabajado con la cronología de eventos entre 1978-2000 que forma parte de los anexos del informe. El archivo original en PDF, por supuesto, no está disponible en un formato fácilmente analizable, así que lo primero que hice fue convertirlo en un archivo de texto que pudiera ser analizado. Luego, dividí el archivo en secciones por año, para poder hacer un análisis comparativo a lo largo del tiempo. Todo el código que he generado está disponible en Github como el proyecto CVR Analytics para que cualquiera lo clone o analice. El código se apoya en el módulo NLTK para procesamiento y análisis del lenguaje natural, y es todavía un trabajo en progreso – de hecho, varias cosas importantes como la identificación de eventos y fechas todavía no funcionan como deberían.
Pero incluso en su forma actual se pueden formular algunas preguntas interesantes. La función word_map(), por ejemplo, permite buscar un término específico en el texto y visualizar la frecuencia con la que aparece en la cronología año por año. Esto genera algunos resultados interesantes, aún cuando muchos de ellos pueden ser esperables. Por ejemplo, una búsqueda por “PCP-SL” como término genera lo siguiente:
1978: 0 1979: ###2 1980: ########5 1981: #############8 1982: ####################################21 1983: #####################################22 1984: ##################################################29 1985: ##################11 1986: #############8 1987: #################10 1988: ########################14 1989: ################################19 1990: ######################13 1991: #########################15 1992: ####################################21 1993: ########################14 1994: ######################13 1995: #####3 1996: ###2 1997: #1 1998: ###2 1999: #1 2000: #1
Una búsqueda por “MRTA” genera la siguiente distribución:
1978: 0 1979: 0 1980: ##1 1981: 0 1982: ########3 1983: ##1 1984: ######################8 1985: #################################12 1986: #############5 1987: #################################12 1988: ##############################11 1989: ##################################################18 1990: #################################12 1991: ################6 1992: ###################7 1993: ################6 1994: ##1 1995: #####2 1996: ######################8 1997: #################################12 1998: 0 1999: ########3 2000: #####2
(Soy consciente de que mis visualizaciones son un poco crudas, pero vamos, esto es sólo una prueba de concepto.)
Otra función interesante es la de yearly_collocations(), que utiliza las funciones incluidas en NLTK para generar bigramas frecuentes: palabras que coinciden juntas con una inusual frecuencia. Las colocaciones para los años 1979-1981, por ejemplo, son éstas:
1978 Building collocations list Asamblea Constituyente; Movimientos sociales; Francisco Morales; Hugo Blanco; Óscar Molina; Cisneros Vizquerra; Partidos políticos; paro nacional; Blanco Galdós; Fuerzas Armadas; Molina Pallochia; Morales Bermúdez; alto nivel; decretos legislativos; las elecciones; origen político; más alto; Luis Cisneros; Alva Orlandini; Estados Unidos 1979 Building collocations list Partidos políticos; Morales Bermúdez; Francisco Morales; Junta Militar; Movimientos sociales; Pacto Andino; Partido Comunista; Bedoya Reyes; Cuadros Paredes; Raúl Haya; otro lado; Armando Villanueva; Por otro; movimiento popular; Víctor Cuadros; Víctor Raúl; Luis Bedoya; garantías individuales; las Fuerzas; Asamblea Constituyente 1980 Building collocations list Belaunde Terry; Richter Prada; Partidos políticos; Pedro Richter; origen político; Barrantes Lingán; Movimientos sociales; Manuel Ulloa; Elecciones Generales; Alfonso Barrantes; Ulloa Elías; José María; Orrego Villacorta; Silva Ruete; Eduardo Orrego; San Martín; Armando Villanueva; Mientras tanto; Javier Silva; del Interior
Claramente no es un análisis perfecto – parte de los problemas que he encontrado hasta ahora han girado en torno al trabajo con un texto en español, cuando la mayoría de documentación y cuerpos de análisis disponibles están todos en inglés, de modo que el análisis es muchas veces menos que perfecto. Pero es un punto de partida, y muchos de los problemas seguramente pueden corregirse (seguramente con facilidad por alguien con mejor manejo del código que yo). Lo que quiero señalar con esto es simplemente que este tipo de análisis de textos masivos, como el Informe Final, pueden servir para elucidar preguntas y evidenciar patrones que de otra manera podrían permanecer ocultos en el texto y pasar desapercibidos a una lectura pormenorizada.
De ninguna manera esto es un mejor modo de lectura, o reemplaza al trabajo exegético y analítico que las humanidades y las ciencias sociales están acostumbradas a hacer. Pero ciertamente puede servir como un complemento, ayudando a abrir líneas de investigación u oportunidades de trabajo a seguir explorando. En mi caso, representa un primer experimento para seguir trabajando no sólo como aproximación analítica sino con suerte para luego complementarlo con un trabajo productivo, tomando no sólo la cronología sino también otras partes del informe y procesándolas para generar visualizaciones, archivos, o reinterpretaciones que permitan que un público más amplio pueda aproximarse a esta información y navegarla sin tener que saltar la valla altísimo de enfrentarse al informe en su totalidad.
Y claro, nunca está de más decir que cualquier comentario o pregunta sobre esto es bienvenido, para ir mejorando y ampliando el proyecto en otras direcciones.


