Paralelismos entre textos vía embeddings: el caso, por poner uno, de los evangelios de Mateo y Marcos
Hace un tiempo tuve que leerlo todo sobre cierto tema. Entre otras cosas, cinco libros bastante parecidos entre sí. Era una continua sensación de déjà vu: el capitulo 5 de uno de ellos era casi como el tres de otro, etc. Pensé que podría ser útil —y hacerme perder menos tiempo— poder observar el solapamiento en bloques —sígase leyendo para entender mejor el significado de lo que pretendía—.
En esta entrada voy a mostrar el resultado de mis ensayos sobre unos textos distintos. Los que me interesaban originalmente estaban en PDF y hacer un análisis más o menos riguroso exigía mucho trabajo de limpieza previo. Pensando en otros textos distintos que vienen a contar la misma historia se me ocurrió utilizar dos de los evangelios sinópticos (en particular, los de Mateo y Marcos).
Así que voy a contar primero lo que hice, luego mostrar resultados y, finalmente, criticarlo todo.
Lo que hice (y que puede verse, esencialmente, aquí):
- Descargar los evangelios de Mateo y Marcos en la versión inglesa (King James, para más señas).
- Usar
spacy
para partir el texto en frases. - Usar OpenAI (en particular, los embeddings del modelo
text-embedding-ada-002
) para convertir las frases en vectores de longitud aproximadamente igual al año de la traducción. - Encomendarme al becerro de oro del producto escalar para crear la matriz de distancias entre frases.
- Pintar y colorear.
Los resultados. Primero, la matriz:
Filas y columnas corresponden a frases de los dos evangelios en cuestión. Sin forzar mucho la vista puede apreciarse una línea diagonal de alta correlación que recorre la trama común. Las frases con correlación más alta son copias literales
aunque enseguida empiezan a aparecer pequeñas variaciones:
Es curioso que la menor de las correlaciones es de 0.685295 (y entre frases, además, que apenas se parecen):
Mi resumen: estoy un poco decepcionado. Esperaba, tenía la vaga esperanza de que revelasen bloques (más que una débil línea argumental) fácilmente identificables: el nacimiento, la crucifixión, etc. Igual tenía que haber pensado en unidades de texto más amplias que la frase completa. Pero esta tampoco es realmente mi guerra y si lo hago y si, sobre todo, lo logro, igual piso algún TFG patatero.
Eso sí, se me ocurre una pequeña broma: reescribir uno de los evangelios de la siguiente manera:
- Llamar a los dos evangelios, por simplificar, A y B.
- Tomar como base uno de ellos, A.
- Reemplazar la n-ésima frase de A por la más próxima a ella de B.
- Juntar las frases resultantes, ver qué cosa sale y echarme unas risas.
Cualquier día.