¿Os apetece una clase de informática? Para ser más precisos, ¿os apetece un seminario de minería de datos relacionado con Canción de Hielo y Fuego? Hoy el leal @Maegor III nos trae este llamativo estudio que analiza las palabras más repetidas en los capítulos de la saga, sacando a la luz conclusiones muy interesantes que quizá puedan decirnos algo más de la escritura de George R.R. Martin.


Minería de datos en Canción de Hielo y Fuego

— Maegor III —


No sé si lo he comentado alguna vez en la Compañía pero soy (o era, dependiendo de cuando se publique este texto) estudiante de Ingeniería Informática. En mi tercer año, para una asignatura de minería de datos, nos mandaron hacer un proyecto para el cual teníamos que usar un dataset sobre algún tema interesante de un repositorio online.

Por desgracia, todos los datasets relacionados con temas que podría encontrar interesantes o ya habían sido cogidos por algún compañero o no cumplían los requisitos que nos había indicado el profesorado. Parecía que no me quedaba más opción que pillar un dataset cutre para trabajar, lo que se traduciría en un proyecto tedioso y, probablemente, que acabase siendo un churro.

Fue entonces cuando se me ocurrió: ¿Y si en lugar de utilizar alguno de estos datasets sobre temas que me la traían bastante floja o sobre los cuales no tenía muchos conocimientos, me creaba mi propio dataset, sobre el tema que me diese a mí la gana? Casualidades de la vida, resulta que hay un tema que me gusta bastante y del cual además creo que controlo bastante: Canción de Hielo y Fuego.

Así que me puse manos a la obra, creé desde cero el dataset (más adelante daré una descripción más detallada del dataset en cuestión), entregué el proyecto y lo defendí frente al profesorado, y ahí quedó la cosa. Hasta que revisando archivos del ordenador, me volví a encontrar con esta práctica, y pensé que podría retocarla un poco y enviarla como ensayo para la Compañía, por si a lo mejor alguien lo encuentra interesante.

Antes de mostraros el trabajo, creo que estaría bien explicar de qué va el proyecto. El trabajo consiste en aplicar métodos de clustering al dataset escogido. El clustering, en términos simples, consiste en tomar una serie de datos y clasificarlos en distintos grupos (que reciben el nombre de clusters). Los datos que presenten más similaridades entre ellos serán agrupados en el mismo cluster. Este método nos permite aprender de los propios datos, a menudo encontrando patrones que quizás no saltan a la vista en un primer momento.

Hay varios tipos distintos de clustering, y a su vez cada uno de esos tipos tienen una variedad de algoritmos distintos para obtener resultados… pero para este trabajo sólo utilizaremos dos algoritmos: el algoritmo K-Medias y el clustering jerárquico aglomerativo. A más de uno estos nombres le sonarán a yi-tiense, pero más adelante en el ensayo los explicaré de forma casual para que todos tengamos una idea básica. Pero, al igual que para mencionar a Dareon en House of the Dragon, hay que esperar el momento indicado…

Descripción del problema

Una vez explicado el concepto de clustering, vamos a centrarnos un poco en el dataset en cuestión, que más allá de explicar que está relacionado con Canción, no he especificado nada más. Pensad en el dataset como una tabla de excel. Cada fila de la tabla representa un capítulo de la saga (el dataset contiene todos los capítulos de la saga desde el prólogo de Juego de Tronos hasta el epílogo de Danza de Dragones).

Cada una de las columnas de la tabla (en total 147 columnas) representa la cantidad de veces que aparece determinada palabra en el capítulo en cuestión. Algunas de estas palabras son nombres de lugares, conceptos o personajes pertenecientes a la saga, mientras que otras corresponden a palabras de ámbito más general pero que se asocian a la saga (como puede ser frío o espada).

Cabe señalar que el dataset se ha tomado sobre la traducción española de los libros de la saga, por lo que el número de apariciones de las palabras clave no tiene porque corresponderse con la versión original, traducciones a otros idiomas o incluso otras ediciones españolas posteriores a la utilizada para la obtención de datos.

Sabiendo el estilo de punto de vista que maneja Martin en la saga, no parece descabellado suponer que, tras aplicar los métodos de clustering, los capítulos quedarán divididos según el personaje al que pertenezcan, pues el nombre de dicho personaje aparecerá un número elevado de veces, así como el nombre de personajes, lugares y conceptos cercanos a él.

Sin embargo, es improbable que esta clasificación se haga con un alto grado de precisión, debido a que la diferencia entre el número de capítulos de cada personaje puede ser bastante significativa. Puntos de vista que llevan desde los primeros libros pueden llegar a tener más de treinta capítulos, mientras que algunos de los personajes con punto de vista más recientes pueden tener incluso sólo un par.

También hay que tener en cuenta que la identidad personal es un tema central en la saga, y varios personajes se ven obligados en puntos de la historia a adoptar identidades alternartivas (Sansa, Arya, Theon…). Esto hace que en sus capítulos no se refiera a ellos nunca por su nombre real, y es posible que el clasificador pudiera pensar que se trata de personajes distintos.

Es posible también que el clasificador distinga los grupos según la localización en la que tiene lugar el capítulo o incluso según el libro al que pertenezca, pues como sabemos no es lo mismo el estilo de Martin en los primeros libros, más “guionista”, que en los más recientes, dónde escribe más como novelista.

Veremos a lo largo del trabajo si los grupos obtenidos se adhieren a alguna de las anteriores suposiciones, o sí por el contrario, a través de los métodos de clustering utilizados, somos capaces de encontrar algún patrón para relacionar capítulos que no pueda ser percibido a simple vista.

El proceso a llevar a cabo para ambos clustering será el mismo. Primero, calcularemos el número de clusters óptimos para cada caso con la metodología correspondiente (método del codo o dendograma). Una vez hallado este número, aplicaremos el algoritmo en cuestión sobre el dataset y obtendremos las etiquetas correspondientes a cada capítulo, para poder ver qué capítulos componen cada cluster, así como la representación gráfica de estos.

Se obtendrán también el valor de la media y la desviación estándar de las variables para cada cluster, para poder realizar un análisis de los resultados. En cada cluster obtenido, definiremos una serie de palabras clave, estas serán las palabras con un valor medio mayor en el cluster.

Clustering Particional. K-Means

El método K-Means funciona de la siguiente forma: primero se generan, de forma aleatoria, un número k de centroides. Los centroides serían algo así como el punto medio de cada cluster. Cada capítulo se incluye en el cluster del centroide que más se asemeja a él. Una vez tenemos todos los capítulos clasificados, usamos los clusters obtenidos para calcular los nuevos centroides, y volvemos a repetir el proceso. El algoritmo termina cuando tenemos muchas iteraciones seguidas en las que los centroides se mantienen igual.

El método K-Means necesita saber de antemano el número de clusters que vamos a querer para poder generar el número correspondiente de centroides. Para hallar dicho número, utilizaremos el método de la silueta.

El método de la silueta consiste en elegir el número de clusters que permite obtener un mayor porcentaje de silueta. No os preocupéis mucho por eso del porcentaje de silueta; lo único que tenéis que saber es que a mayor porcentaje de silueta, mayor será la separación entre los distintos clusters. Por tanto, eligiendo con este criterio obtendremos los clusters más independientes entre sí que se puedan obtener con el dataset.

Los valores de silueta para cada número de clusters se puede ver en la gráfica de abajo. Podemos apreciar que el mejor valor de silueta lo obtenemos para 15 clusters, así que ese será el número de clusters que utilizaremos. Es importante señalar que, a pesar de ser el mayor valor de silueta, es un poco más de 0,3, un resultado cercano a cero, lo que indica que hay varios puntos que se encuentran en la frontera de decisión entre dos clusters (es decir, que podrían perfectamente pertenecer a varios clusters distintos y el algoritmo lo decide un poco a ciegas).

Gráfica, por Maegor III

Análisis de los resultados

Se definen los 15 clusters obtenidos tras la aplicación del método K-Means. De cada cluster se indica el número de elementos que contiene, los capítulos que contiene, sus palabras clave y el valor de aparición medio de estas:

Cluster 1: 43 elementos. Contiene los capítulos narrados desde el punto de vista de Jon Nieve y el único capítulo del punto de vista de Melisandre. Palabras clave: Muro(13,93), Noche (9,3), Mance (6,28), Jon (55), Rey(9,69)

Cluster 2: 13 elementos. Contiene los capítulos narrados desde el punto de vista de Cersei Lannister y el epílogo de Danza de Dragones. Palabras clave: Madre (6,23), Reina (30,79), Cersei (38), Padre(11), Rey(16), Margaery(13,38), Tommen(14)

Cluster 3: 17 elementos. Contiene los capítulos narrados desde el punto de vista de Jaime Lannister. Palabras clave: Cersei(9), Brienne(11,94), Jaime(59,23), Padre(13,65), Rey(16), Espada(11)

Cluster 4: 30 elementos. Contiene los capítulos narrados desde el punto de vista de Arya Stark (excepto en los que adopta una nueva identidad). Palabras clave: Arya(41).

Cluster 5: 31 elementos. Contiene los capítulos narrados desde el punto de vista de Daenerys Targaryen. Palabras clave: Dany (44,43), Reina(8,6), Sangre(13,6), Dragón(8,5), Jorah(12,46), Drogo (9,66).

Cluster 6: 21 elementos. Contiene los capítulos narrados desde el punto de vista de Bran Stark. Palabras clave: Lobo (7,47), Robb(10), Bran (53), Maestre(9), Invernalia(7,52), Hodor(23), Verano(9,19).

Cluster 7: 22 elementos. Contiene todos los capítulos narrados desde el punto de vista de Catelyn Stark menos sus dos primeros capítulos en Juego de Tronos y su cuarto capítulo en Choque de Reyes. Palabras clave: Edmure(9), Padre(12,86), Robb(23), Lannister(10,95), Rey(12), Catelyn(40),

Cluster 8: 14 elementos. Contiene los capítulos narrados desde el punto de vista de Davos Seaworth y el prólogo de Choque de Reyes . Palabras clave: Reina (5,78), Melisandre(8,71), Rey(27), Maestre(8,92), Stannis(20,57), Davos(45)

Cluster 9: 22 elementos Contiene los capítulos narrados desde el punto de vista de Sansa Stark antes de asumir la identidad de Alayne. Palabras clave: Reina(9), Joffrey(14,77), Padre(9,13), Rey(12,5), Sansa(42),

Cluster 10: 9 elementos. Contiene los capítulos narrados desde el punto de vista de Brienne de Tharth y el capítulo Catelyn IV de Choque de Reyes. Palabras clave: Doncella(11,22), Septón(8,87), Brienne(49,44), Jaime(6,88), Rey(10,44), Espada(14,77)

Cluster 11: 47 elementos. Contiene los capítulos narrados desde el punto de vista de Tyrion Lannister. Palabras Clave: Bronn(5,63), Cersei(6,89), Tyrion(48), Padre(10,87), Lannister(6,23)

Cluster 12: 14 elementos. Contiene los capítulos narrados desde el punto de vista de Theon Greyjoy (excepto cuando este adopta la identidad de Hediondo) y los de Asha Greyjoy. Palabras clave: Theon(40,71), Padre(10,21), Rey(7,42), Invernalia(9,57), Asha(20,42), Stark(8,35)

Cluster 13: 17 elementos. Contiene los capítulos narrados desde el punto de vista de Ned Stark y los dos primeros capítulos de Catelyn en Juego de Tronos. Palabras clave: Ned(42), Lannister(7,59), Rey(21,18), Robert (17,94), Stark(7,47).

Cluster 14: 34 elementos. Contiene los prólogos de Juego de Tronos, Tormenta de Espadas y Danza de Dragones. Así como los capítulos de una variedad de personajes que tienen muy pocos capítulos por su cuenta (Victarion, Arianne, Quentyn, etc.) y los capítulos de Arya, Sansa y Theon en los que adoptan identidades alternas. Palabras clave: Sangre(7,70), Príncipe(11,20), Padre(8,911), Rey(8,85), Victarion(7,11).

Cluster 15: 10 elementos. Contiene los capítulos narrados desde el punto de vista de Samwell Tarly. Palabras clave: Eli(18,10), Aemon(13,80), Maestre(13,60), Jon(12), Sam(65,70)

Lo primero que vale la pena señalar es que ha ocurrido la división que sospechábamos, cada cluster representa los capítulos narrados desde el punto de vista de un personaje. Se puede apreciar que la palabra que resulta más importante para determinar la pertenencia de un capítulo a un cluster es el propio nombre del personaje que está narrando el capítulo.

Aunque los personajes con mayor cantidad de capítulos tienen sus capítulos (salvo muy contadas excepciones) correctamente agrupados, este no es el caso para los personajes con un número reducido de capítulos, que la mayoría han sido agrupados en un único cluster: el cluster 14. Debido a que este cluster agrupa capítulos cuyo contenido dista bastante entre sí, varias palabras tienen un valor elevado de desviación típica.

Sin embargo, no todos los personajes con un bajo número de capítulos han sido agrupados en el cluster 14. Los cuatro capítulos narrados desde el punto de vista Asha Greyjoy se encuentran en el cluster 12, junto los capítulos de su hermano Theon, un personaje con el cual obviamente tiene una relación importante. Por otro lado, los capítulos en los que algún personaje adopta una identidad alterna no han sido identificados como capítulos de dicho personaje, y han sido agrupados en el cluster 14 también.

En el caso de los personajes con mayor cantidad de capítulos, todos se han agrupado correctamente a excepción de tres capítulos de Catelyn Stark, dos de ellos se han etiquetado en el cluster que contiene los capítulos de Ned Stark y el otro en el cluster que contiene los capítulos de Brienne. Esto es seguramente debido a que ambos personajes aparecen en dichos capítulos. Estos tres capítulos distan de ser los únicos en los que dos personajes con punto de vista coinciden, pero parece que en estos tres en concreto, el personaje “invitado”, por llamarlo de alguna manera, tiene un rol más protagónico en el capítulo que el propio narrador.

Aparte del nombre del personaje con punto de vista, las palabras clave en los grupos suelen ser conceptos, lugares u otros personajes que están fuertemente relacionados con el punto de vista del cluster. Por ejemplo, una palabra clave en el cluster de Jon Nieve es Muro y en el cluster de Jaime encontramos la palabra espada.

La media de aparición de las palabras puede llegar a dar información sobre aspectos de la caracterización de algún personaje. Por ejemplo, en el cluster que contiene los capítulos de Cersei, la palabra madre tiene una media de aparición de 6,23 veces por capítulo, mientras que la palabra reina aparece una media de 30,79 veces por capítulo, lo cual tiene sentido porque parte de la caracterización de Cersei es que antepone su ambición de poder y estatus a las necesidades de su familia. En el cluster de Arya Stark, la única palabra clave es el propio nombre de Arya, pues se trata de un personaje que está continuamente moviéndose y cambiando de compañeros de viaje y localización, siendo ella misma la única constante en su vida1.

Otro aspecto a remarcar es que en la mayor parte de clusters se repiten como palabras clave rey y padre. La constante aparición del termino rey no es sorprendente, puesto que la trama principal de la saga gira en torno a guerras de sucesión, y varios de los personajes tienen contacto directo o indirecto con distintos reyes. Por otro lado, la gran presencia del termino padre (contrapuesto, por ejemplo, con el termino madre, que tiene una media de aparición mucho menor) puede deberse a que el mundo de la saga transcurre en un escenario medieval y, por tanto, excesivamente patriarcal. Que tantos clusters tengan como clave estas dos palabras puede ser el motivo por el que se encuentran todos tan pegados.

Clustering jerárquico aglomerativo

El clustering jerárquico aglomerativo consiste en comenzar considerando cada capítulo como si fuese un cluster independiente. En cada iteración se fusionan los dos clusters más similares entre sí en un único cluster. El proceso termina cuando nos queda sólo un cluster, que contiene todos los capítulos.

Obviamente, tener un único grupo no nos sirve de nada, pero al realizar este proceso obtenemos un gráfico en forma de árbol llamado dendograma que representa la secuencia de fusiones de los clusters. En el dendograma, la distancia de un cluster en el eje Y (vertical) representa la distancia entre los diferentes grupos, por lo que el número óptimo de clusters se obtiene eligiendo el cluster con la mayor distancia en el eje Y y se traza una linea horizontal sobre él. El número de clusters que quede por debajo de esa línea será el n.º óptimo de clusters (en nuestro caso, 22).

Gráfica, por Maegor III

Análisis de los resultados

Se definen los clusters obtenidos con el algoritmo de clustering aglomerativo. Por simplicidad, aquellos clusters que son idénticos a los obtenidos con el método K-means no se han incluido en la lista.

Cluster 4: 13 elementos. Este cluster contiene los capítulos narrados desde el punto de vista de Catelyn Stark, pero sólo aquellos en los que no aparece su hijo Robb. Palabras clave: Ned(9,92), Padre(10,61), Rey(12,30), Robb(5,46), Catelyn(41), Renly(11,69)

Cluster 7: 6 elementos. Contiene los 4 capítulos de Victarion Greyjoy y los dos capítulos de Aerion Greyjoy. Palabras clave: Euron(17,33), Cuervo(14,5), Rey(17,66), Victarion(40,16), Ahogado(11,16)

Cluster 8: 6 elementos. Contiene el prólogo de Choque de Reyes, el prólogo de Festín de Cuervos, los dos capítulos de Jon Connington, y dos capítulos de Barristan Selmy. Palabras claves: Reina(11,5), Noche(7,16), Príncipe (10,5), Padre(6,50), Rey(14),

Cluster 10: 19 elementos. Contiene los capítulos de Sansa Stark hasta Sansa V de Tormenta de Espadas, que es cuando Sansa se escapa de Desembarco del Rey. Palabras clave: Reina(10,16), Joffrey(16,37), Padre(9,21), Rey(13,10), Sansa(40,58)

Cluster 11: 5 elementos. Contiene los 2 capítulos de Arianne Martell, los 2 capítulos de Areo Hotah y el único capítulo de Arys Oakheart. Palabras clave: Arianne(29), Myrcella(17,60), Príncipe(38), Sol(15), Padre(24,20),

Cluster 12: 10 elementos. Contiene los capítulos de Theon Greyjoy, excepto aquellos en los que adopta una nueva idéntidad. Palabras clave: Theon(54,4), Greyjoy(6,6), Padre(11,6), Invernalia(9,7), Stark(11,20)

Cluster 15: Contiene los mismos elementos del cluster 10 de K-Means, excepto por el capítulo Catelyn IV

Cluster 16: 5 elementos. Contiene todos los capítulos de Sansa Stark a partir de Sansa VI de Tormenta de Espadas, incluyendo aquellos capítulos en los que adopta una nueva identidad. Palabras clave: Padre(12,40), Maestre(7,6), Robert(26,4), Lysa(25,6), Sansa (37,4), Arryn(10,80),

Cluster 17: 10 elementos. Este cluster contiene el resto de los prólogos y epílogos, así como los capítulos de Arya y de Theon en los que asumen distintas identidades. Palabras clave: Otro(8,2), Frío(5,6), Sangre(8), Padre(6,2),

Cluster 18: 4 elementos. Contiene los capítulos de Asha Greyjoy. Palabras clave: Noche(9), Rey(18), Stannis(9,75), Invernalia(9,25), Asha(59),

Cluster 19: 12 elementos. Contiene los capítulos de Catelyn Stark en los que aparece Robb Stark. Palabras clave: Edmure(11,25), Padre(13,25), Robb(38,5), Rey(12,08), Catelyn(36,42)

Cluster 20: Contiene los mismos elementos que el cluster 13 obtenido en K-Means, excepto por los dos capítulos de Catelyn en Juego de Tronos.

Cluster 21: 6 elementos. Contiene los 4 capítulos de Quentyn Martell y 2 capítulos de Barristan Selmy. Palabras clave: Reina(11), Quentyn(28,83), Dragón(8,66), Príncipe(19,33), Rey(8,5),

En primera instancia, podemos apreciar que, como se podía intuir, al tener un mayor número de clusters los personajes con menos capítulos ya no se encuentran aglomerados en un único grupo, sino en varios, y esto hace que los nuevos clusters tengan más cohesión. A parte de eso, algunos capítulos que habían sido clasificados erroneamente en K-Means, específicamente los de Catelyn, ahora sí se encuentran agrupados juntos.

De hecho, ahora algunos de los personajes tienen sus capítulos divididos en dos grupos. Los capítulos de Catelyn están ahora repartidos entre el cluster 4 y el cluster 19, siendo la principal diferencia que el cluster 19 contiene los capítulos en los que aparece Robb y el 4 los capítulos en los que el Rey en el Norte no hace acto de presencia. A pesar de que lo que separa a estos capítulos es la presencia de Robb, este sigue siendo una palabra clave en el cluster 4, aunque con un valor medio menor que en el cluster 19, lo que demuestra que Robb es una constante en los capítulos de Catelyn, incluso cuando no está físicamente presente.

Otro personaje con el que pasa algo similar es Sansa Stark, cuyos capítulos se han repartido entre el cluster 10 y el cluster 16. En cluster 10 están los capítulos de Sansa que transcurren en la ciudad de Desembarco, y el cluster 16 son aquellos que ocurren en el Valle. Ya que el personaje cambia de entorno, y pasa a relacionarse con personajes distintos en ambos sitios, tiene sentido que el algoritmo los haya considerado diferentes.

Esta es la única división geográfica que hemos visto hasta ahora, y es probable que se deba a que Sansa es el único personaje cuyos capítulos transcurren principalmente en dos lugares en concreto, mientras que los otros personajes o están siempre en una misma localización, o pasan por muchas a lo largo de la historia.

En cuanto a la división de los personajes con menor número de capítulos, los personajes cuyos capítulos transcurren en Dorne (Arianne, Arys y Areo) están todos agrupados en el cluster 11, en el cual hay palabras clave relacionadas con Dorne como “sol”, por ejemplo.

Los capítulos de Quentyn Martell se encuentran agrupados en el cluster 21 junto con dos de los capítulos de Barristan, en los cuales Quentyn aparece. Cabe destacar que el nombre de Barristan es el único de todos los personajes con puntos de vista que no está recogido en la lista de palabras del dataset, así que tiene sentido que al algoritmo le cueste más clasificarlo correctamente.

Algo similar pasa con el personaje de Aerion, pues aunque su nombre sí se encuentra en las variables del dataset, se suelen referir más al personaje como “Pelomojado”, por lo que no aparece nombrado tan a menudo como los otros personajes, y sus capítulos han sido agrupados junto a los cuatro capítulos de Victarion en el cluster 7. Una de las palabras claves en este cluster es Euron, quién es una figura traumática para ambos, pues abusó de Aerion de pequeño y violó a la esposa de Victarion. Sin embargo, no es un nombre que aparezca mucho en los capítulos de los Greyjoy más jóvenes, puesto que ellos apenas han tenido trato con su tío.

El cluster 8 es bastante interesante porque contiene seis capítulos que, entre todos, no parecen tener muchos puntos en común, pero si se dividen en pares, están bastante relacionados. Dos son capítulos narrados desde el punto de vista de Jon Connington, otros dos son capítulos de Barristan Selmy y el último par son los prólogos de Choque de Reyes y Festín de Cuervos, que ambos están narrados desde el punto de vista de un maestre. Pero más allá de esta conexión, no he podido encontrar algún punto en común entre estos tres pares que los distinga del resto, incluso después de analizar las palabras clave.

En cuanto a personajes que adoptan nuevas identidades, aunque el algoritmo sigue sin clasificar correctamente estos capítulos para Arya y Theon, sí lo consigue esta vez con Sansa, ya que estos capítulos transcurren en el Nido de Águilas.

Conclusión

Bueno, esto ha sido el trabajo. En el original, también utilizaba un tercer método de clustering llamado probabilístico, pero decidí no incluirlo aquí porque en general los resultados obtenidos eran casi idénticos a los de K-means. También eliminé algunas gráficas y conceptos que realmente no aportaban mucho de cara a un público más casual.

He incluido las definiciones de algunos conceptos intentando que fuesen claras y comprensibles aún sin conocimientos de estadística e informática (y espero haberlo conseguido) por si a alguien le daba curiosidad el tema y quería saber de donde salían los datos. Sin embargo, lo que creo que sí que puede estar interesante para analizar en la caja de los comentarios son los clusters que se han formado y sus palabras clave. Yo he expresado en el texto las conclusiones a las que llegué, pero me gustaría saber si los leales encuentran algo que yo haya podido pasar por alto.

 

  1. Lo más probable es que se deba a que se me pasó totalmente por alto añadir a Sandor y a Gendry en la lista de palabras… ¿Pero a que mola el triple que me mandé?