Cent’anni di Solitudine, ovvero come ho analizzato il mio libro preferito

Cent’anni di Solitudine, artwork.

Lo ammetto: oltre ad essere un appassionato di musica e serie tv, sono anche un accanito lettore. Non saprei enumerare tutti i libri che ho letto ma so sicuramente rispondere alla fatidica domanda qual è il tuo libro preferito? (attenzione, lettore, che per me le preferenze non esistono, sono limitanti, ma in questo caso farò un’eccezione). La risposta, ovviamente, non è altro che Cent’anni di Solitudine di Gabriel García Márquez.

Cent’anni di Solitudine è il libro per eccellenza: ha tutto quello che serve e che non serve, è completo, è interessante e banale, è praticamente infinito, anche più della biblioteca di Babele. Inoltre, rappresenta la mia solitudine.

Mi son trovato di fronte ad un’edizione davvero bella, qualche giorno fa. Non potendo più leggerlo, la nave della curiosità ha fatto breccia nell’oceano dei miei pensieri e mi son chiesto e se magari lo si analizzasse?

L’ho fatto e ne è uscito fuori questo post. Continuate con l’introduzione, va!

Introduzione

Ho analizzato il libro tramite due tipi di analisi. La prima è un’analisi testuale: ho analizzato il tutto dal punto di vista delle parole contenute nel libro. La seconda, invece, è un’analisi che si basa sui personaggi, il cui scopo è cercare di modellare le loro relazioni tramite una rete sociale. Se non siete avvezzi al termine, non preoccupatevi: di seguito, spiegherò bene di cosa si tratta.

Come al solito, piccolo disclaimer: questo post non rappresenta una trattazione scientifica accurata; non c’è alcun metodo, c’è solo tanta curiosità. Inoltre, questa volta cercherò di rendere il contenuto accessibile a tutti, spiegando (in breve) i concetti che introdurrò nel corso dell’articolo.

Dati ed eventuali

Per far tutto quello che ci serve, abbiamo bisogno sostanzialmente di una cosa: il libro, possibilmente non in versione cartacea (a meno che non mi improvvisi amanuense, ma non penso sia questo il caso). Cercando un po’ in rete, si trova questo bellissimo file .txt che fa al caso nostro.

Il file contiene la traduzione in inglese del racconto originale. Tutti le conclusioni tratte si basano sull’assunzione che la traduzione sia corretta. Ovviamente, l’analisi testuale si basa fortemente sulla lingua inglese.

Il text mining è stato effettuato utilizzando il solito Python e la libreria nltk. Le visualizzazioni sono state create in matplotlib e Tableau; per quella relativa alla rete ho usato la libreria networkx e il tool di visualizzazione Gephi.

I passi principali seguiti si dividono in (i) lettura del libro e tokenizzazione, (ii) manipolazione del test/token per l’analisi testuale, (iii) creazione di una rete sociale dei personaggi estraendoli tramite tagging.

Il codice prodotto è disponibile su Github.

Le analisi

Questo post riporta essenzialmente due tipi di analisi: una prettamente testuale, dove i dati presi in analisi sono rappresentati dal contenuto testuale, e una che si rifà alle reti sociali (social network, o anche network o grafo), dove il dato preso in analisi è rappresentato dal numero di interazioni o relazioni che ogni personaggio ha avuto con tutti gli altri. Di seguito, spiego per benino cosa è stato fatto e come.

L’analisi testuale

Iniziamo con l’analisi di tipo testuale, ovvero prendo tutto il testo, lo spiaccico sul computer e vediamo che ne esce. E sembra che qualcosa di interessante sia uscita!

Simboli, parole, ricchezza lessicale

Iniziamo con qualcosa di banale: quanti simboli, parole totali e parole distinte contiene Cent’anni di Solitudine? Márquez ha pigiato i tasti della sua macchina da scrivere, per la stesura finale del suo romanzo, per ben 809644 volte. È formato da 144739 parole e il numero di parole distinte è pari a 11027, ovvero ci sono undicimila e ventisette parole diverse.

Dagli ultimi due valori, possiamo estrarre una informazione interessante, chiamata ricchezza lessicale (lexical richness), data dal rapporto tra numero di parole distinte e numero totale di parole, che risulta essere 0.07618540959934779; questo significa che le parole distinte rappresentano il 7.6% dell’intero testo!

Dispersione delle parole

Márquez ha intitolato il suo libro Cent’anni di solitudine. Chi non l’ha mai letto, probabilmente penserà che la parola “solitudine” (nel caso inglese, solitude) aleggi ogni due e tre. Possiamo scoprire se questa intuizione sia corretta o meno individuando la dispersione della parola all’interno del testo. Poiché son curioso, ho cercato di identificare la dispersione di altre quattro parole, nello specifico time, love, life e death.

Dispersione di alcune parole selezionate all’interno di Cent’anni di Solitudine.

Il grafico mostra la dispersione delle parole scelte all’interno dell’intero libro. Intuitivamente, una linea blu indica che la parola in esame appare in quella parte del libro, no altrimenti. Dal grafico è banale constatare come quel furbacchione di Márquez si riferisce pochissime volte alla solitudine ma fa sprofondare il lettore nel concetto di tempo, menzionandolo praticamente durante tutto il libro. Inoltre, si intravede come l’amore sia il tema portante a partire dalla fine della quinta generazione dei Buendía fino al termine del libro.

Hapax legomena

Eh? Hapa–che? Uhm, vediamo: un hapax legomenon è una forma linguistica (parola o espressione) che compare una sola volta nell’ambito di un testo; le possiamo definire come parole rare.

Cent’anni di Solitudine contiene ben 4741 hapax legomena. Eccone cinquanta, presi a caso:

epaulets, upsetting, civilization, motilón, marshal, domain, gluttons, despised, secretary, consulting, vise, forty-seven, modify, parrot, thirty-five, jeopardize, highest-flying, docility, wishing, rebuffs, wisely, walter, piglets, cans, dainties, demented, ports, chalice, mitigated, paragraphs, riddle, huts, alexandria, shuttered, consummate, adulterous, hoof, drugstore, tap-dancing, fabric.

Collocazioni

Ok, anche qui, boh? Io sono un informatico, che so ‘ste collocazioni? Una collocazione (o cooccorrenza) in linguistica è una associazione abituale e privilegiata ma inusuale di due o più parole all’interno di una frase. Un esempio banale: vino rosso è una collocazione, il vino no. Una caratteristica interessante delle collocazioni è che sono robuste alla sostituzione con parole che hanno senso simile; per esempio vino giallo suona VERAMENTE strano.

In Cent’anni di Solitudine, si trovano le seguenti collocazioni:

josé arcadio, aureliano segundo, colonel aureliano, aureliano buendía, arcadio buendía, gerineldo márquez, santa sofía, pietro crespi, petra cotes; pilar ternera, colonel gerineldo, arcadio segundo, amaranta úrsula, chestnut tree, banana company, mauricio babilonia, apolinar moscote, father nicanor, prudencio aguilar, many years.

Reti sociali, queste sconosciute

Bene, qui ci si diverte. L’idea alla base di questa analisi è di modellare le relazioni tra i personaggi di Cent’anni di Solitudine come una rete sociale (oppure network o grafo, userò i termini come sinonimi).

Prima di partire, definiamo cosa sia una rete sociale e le relazioni tra i personaggi.

Una rete sociale non è altro che un gruppo di individui o entità collegati fra loro tramite una qualche relazione. Per esempio, tu lettore e i tuoi amici formate una rete sociale: siete degli individui collegati tra di voi da qualche interesse in comune, una qualche esperienza condivisa, etc. Nel corso dell’articolo, mi riferirò al concetto di rete sociale chiamandola anche network, grafo o semplicemente rete. Inoltre, potrei chiamare gli individui anche nodi, e le relazioni fra essi archi o connessioni.

Riguardo le interazioni: non possiamo estrarre, in modo automatico, le relazioni di vario tipo tra i personaggi (un personaggio ne nomina un altro, due personaggi hanno un dialogo, etc.). Definiamo l’esistenza di una relazione tra i personaggi A e B se A e B compaiono nel testo e B compare dopo al più trenta parole dall’occorrenza di A. Non è una regola ben precisa, è una mia definizione usata solo ai fini dell’analisi. Inoltre, ho preso in considerazione solo i personaggi che hanno avuto almeno una interazione.

Perbacco, un grafo!

Senza indugi, ecco il grafo delle relazioni tra i personaggi di Cent’anni di Solitudine:

La rete creata dai personaggi di Cent’anni di Solitudine.

I nodi (cerchi) rappresentano i personaggi: più un nodo è grande, più relazioni totali ha avuto nel corso del romanzo. Gli archi rappresentano le relazioni: più un arco è spesso, più interazioni sono avvenute fra quei due personaggi. Ma c’è un problema: non ci sono i nomi! Beh, se avete letto il libro, provate ad immaginare chi siano i nodi più grandi.

Fatto? Eccovi i nomi:

La rete creata dai personaggi di Cent’anni di Solitudine, con tutti i nomi.

La trinità è lì: Úrsula, Amaranta e Remedios sono inevitabilmente collegate fra loro in modo forte, soprattutto le prime due. I maschi importanti della famiglia Buendía sono tutti lì, presenti, impassibili, eterni.

Si evince facilmente come questo modello metta in relazione il tempo di introduzione dei personaggi stessi: un personaggio introdotto alla fine del libro avrà sicuramente una importanza minore nel grafo. Questa affermazione diventa parzialmente vera nel caso in cui si considerino le interazioni tra i personaggi stessi.

Di personaggi e statistiche

Facciamo alcune considerazioni (abbastanza banali) statistiche:

  • ci sono 62 personaggi che hanno almeno una interazione, mentre in totale abbiamo 71 personaggi che appaiono in tutto il libro;
  • un personaggio ha almeno 1 interazione e al massimo 33 (chissà chi è!) e la media delle interazioni tra i personaggi è 6.6451, ovvero ogni personaggio è in relazione in media con sei personaggi e mezzo.

Vediamo di chiederci qualcosa di più interessante, va!

Del diametro e del fatto che non stiamo parlando di geometria

Il diametro di un grafo è definito come il cammino minimo più lungo nel grafo stesso. Con cammino tra due nodi, si intende un modo di percorrere gli archi partendo dal primo nodo ad arrivare al secondo; un cammino minimo è semplicemente il cammino che tocca meno archi. Intuitivamente, pensiamo al diametro come al cammino più piccolo che ci permette di andare da una parte all’altra del grafo.

Il diametro del nostro grafo è pari a 6; un esempio di cammino che definisce il diametro è il seguente

Bruno Crespi, Pietro Crespi, Remedios, Aureliano Segundo, Mr. Herbert, Mr. Jack Brown, Dagoberto Fonseca.

In questo caso, il percorso più breve per andare da Bruno Crespi a Dagoberto Fonseca è rappresentato da tutti i personaggi qui enumerati. Da notare che i passi da fare sono sei mentre i personaggi sono sette.

Centralità

C’è un modo di capire l’importanza di un personaggio in un libro? Certo, analizzando il libro stesso, le relazioni con gli altri personaggi, la trama, il finale, etc. C’è un modo, invece, di capirlo tramite questo enorme grafo qui sopra? Beh, sì. Si può calcolare la centralità di un nodo all’interno della rete.

Una misura di centralità per un nodo identifica l’importanza del nodo nella rete stessa. Cerchiamo di fare la stessa cosa sul grafo che abbiamo ottenuto, utilizzando due delle più semplici e famose misure di centralità, quali degree centrality e betweenness centrality.

La degree centrality è una misura di centralità che basa l’importanza di un nodo sul numero di connessioni (ricordate, gli archi, ovvero le relazioni) che il nodo stesso ha nella rete. Vediamo quali sono i primi dieci nodi più importanti della nostra rete, utilizzando questa misura. Una visualizzazione di tutti i personaggi è disponibile qui.

Úrsula (Iguarán): 33
Amaranta: 27
Remedios: 26
Colonel Aureliano Buendía: 25
Aureliano Segundo: 23
Rebeca: 19
José Arcadio Buendía: 18
José Arcadio Segundo: 15
Gerineldo (Márquez): 15
Melquíades: 13

La betweenness centrality per un dato nodo, invece, è rappresentata dal numero di cammini minimi tra due nodi nella rete che “toccano” il nodo in questione, ovvero passo attraverso questo nodo X se devo andare da un nodo A ad un nodo B nella rete? Di seguito i primi dieci, mentre la visualizzazione per tutti i personaggi è disponibile qui.

Úrsula (Iguarán): 0.26675225258687174
Colonel Aureliano Buendía: 0.24285723082589036
Aureliano Segundo: 0.1333021576177314
José Arcadio Segundo: 0.12999823188347778
Remedios,Meme: 0.12191073285263257
Amaranta: 0.09939612889878079
Gabriel: 0.09508196721311475
Mr. Herbert: 0.06448087431693988
Amparo (Moscote): 0.043136425398238344
Melquíades: 0.04185479524582708

Notiamo come Úrsula resta il personaggio più importante del romanzo, dal punto di vista delle relazioni. Infatti, possiede il maggior numero di relazioni e tutte le interazioni passano attraverso di lei. È interessante però analizzare gli altri casi: per la degree centrality il secondo e il terzo posto va rispettivamente ad Amaranta e Remedios, le quali sono protagoniste importanti ma non veicolano della informazione, ovvero gli altri personaggi possono avere o meno relazioni tra loro senza passar per forza tra le due; per la betweenness centrality i rispettivi posti spettano al Colonnello Aureliano Buendía e Aureliano Segundo, entrambi personaggi principali del libro e fili conduttori dell’intera trama.

Ci si confonde sempre.

Conclusioni

Le due modalità di analisi ci hanno permesso di scoprire alcune proprietà del racconto in due contesti differenti: quello testuale, meno semantico e più sintattico, e quello semantico, tramite le relazioni fra i personaggi. È ovvio che la seconda tipologia si basa fortemente sul concetto di relazione, che in questo caso è definita in modo empirico dal sottoscritto.

Sarebbe interessante aggiungere della semantica e costruire le relazioni in un modo diverso, per esempio due personaggi sono in relazione se sono fisicamente vicini nel contesto in cui vengono individuati. Come puoi immaginare, caro lettore, questo approccio è più complicato poiché bisognerebbe poter capire in modo automatico quando due personaggi sono fisicamente vicini.

Le informazioni estrapolate da queste analisi, più che dei risultati rappresentano delle curiosità interessanti, che potrebbero essere raffinate utilizzando delle tecniche più specifiche. Inoltre, l’approccio utilizzato per Cent’anni di Solitudine può essere applicato (virtualmente) a qualsiasi altro libro. Bisogna sottolineare l’importanza della lingua: il tagging è il processo di suddividere le parole di un testo in parti del discorso; i criteri di questa suddivisione sono specifiche per le singole lingue e quindi non universali.

Segnalatemi nei commenti, per email o tramite piccioni viaggiatori le vostre idee al riguardo e, soprattutto, fatemi notare le probabili cantonate che ho preso analizzando questo splendido romanzo.