David Bowie II (buscando canciones similares)

La última entrada en mi blog la dediqué a David Bowie.

Hoy quiero ampliarla profundizando en las relaciones que existen entre sus canciones. Para ello voy a continuar basándome únicamente en sus letras. Y utilizaré herramientas de análisis de texto no estructurado para determinar la cercanía de una canción (Se utiliza la distancia Euclídea) a otras.

Antecedentes

Recuerdo que teníamos las letras de 254 canciones.

Como en el artículo anterior, lo primero que tenemos que hacer es convertir las letras a términos, descartando, en la medida de lo posible, las diferencias entre plurales y singulares, así como formas verbales.

Términos

En primer lugar, vamos a crear una lista de palabras que se van a descartar de cada canción. Son palabras generales, artículos, etc. A los que ya se les han quitado todos los signos de puntuación y apóstrofes.

i, me, my, myself, we, our, ours, ourselves, you, your, yours, yourself, yourselves, he, him, his, himself, she, her, hers, herself, it, its, itself, they, them, their, theirs, themselves, what, which, who, whom, this, that, these, those, am, is, are, was, were, be, been, being, have, has, had, having, do, does, did, doing, a, an, the, and, but, if, or, because, as, until, while, of, at, by, for, with, about, against, between, into, through, during, before, after, above, below, to, from, up, down, in, out, on, off, over, under, again, further, then, once, here, there, when, where, why, how, all, any, both, each, few, more, most, other, some, such, no, nor, not, only, own, same, so, than, too, very, s, t, can, will, just, don, should, now, d, ll, m, o, re, ve, y, ain, aren, couldn, didn, doesn, hadn, hasn, haven, isn, ma, mightn, mustn, needn, shan, shouldn, wasn, weren, won, wouldn, chorus, 'm, 's, 'll, n't, 'd, ca, wo, oh, yeah, x2.

Realizamos el tokenizado de todas las canciones. Por ejemplo Blackstar queda, en un primer momento, así:

in the villa of ormen in the villa of ormen stands a solitary candle ah-ah ah-ah in the centre of it all in the centre of it all your eyes on the day of execution on the day of execution only women kneel and smile ah-ah ah-ah at the centre of it all at the centre of it all your eyes your eyes ah-ah-ah ah-ah-ah in the villa of ormen in the villa of ormen stands a solitary candle ah-ah ah-ah in the centre of it all in the centre of it all your eyes ah-ah-ah something happened on the day he died spirit rose a metre and stepped aside somebody else took his place and bravely cried i’m a blackstar i’m a blackstar how many times does an angel fall how many people lie instead of talking tall he trod on sacred ground he cried loud into the crowd i’m a blackstar i’m a blackstar i’m not a gangster i can’t answer why i’m a blackstar just go with me i’m not a filmstar i’m-a take you home i’m a blackstar take your passport and shoes i’m not a popstar and your sedatives boo i’m a blackstar you’re a flash in the pan i’m not a marvel star i’m the great i am i’m a blackstar i’m a blackstar way up oh honey i’ve got game i see right so white so open-heart it’s pain i want eagles in my daydreams diamonds in my eyes i’m a blackstar i’m a blackstar something happened on the day he died spirit rose a metre and stepped aside somebody else took his place and bravely cried i’m a blackstar i’m a star star i’m a blackstar i can’t answer why i’m not a gangster but i can tell you how i’m not a flam star we were born upside-down i’m a star star born the wrong way ‘round i’m not a white star i’m a blackstar i’m not a gangster i’m a blackstar i’m a blackstar i’m not a pornstar i’m not a wandering star i’m a blackstar i’m a blackstar in the villa of ormen stands a solitary candle ah-ah ah-ah at the centre of it all your eyes on the day of execution only women kneel and smile ah-ah ah-ah at the centre of it all your eyes your eyes ah-ah-ah

Lo siguiente que hacemos es lematizar, suprimir variaciones de palabras similares, eliminar aquellas que están entre las descartadas, etc. Aplicado al caso de la canción Blackstar el resultado es:

villa ormen villa ormen stand solitari candl ah-ah ah-ah centr centr eye day execut day execut women kneel smile ah-ah ah-ah centr centr eye eye ah-ah-ah ah-ah-ah villa ormen villa ormen stand solitari candl ah-ah ah-ah centr centr eye ah-ah-ah someth happen day die spirit rose metr step asid somebodi els took place brave cri i'm blackstar i'm blackstar mani time angel fall mani peopl lie instead talk tall trod sacr ground cri loud crowd i'm blackstar i'm blackstar i'm gangster can't answer i'm blackstar go i'm filmstar i'm-a take home i'm blackstar take passport shoe i'm popstar sedat boo i'm blackstar you'r flash pan i'm marvel star i'm great i'm blackstar i'm blackstar way honey i'v got game see right white open-heart it pain want eagl daydream diamond eye i'm blackstar i'm blackstar someth happen day die spirit rose metr step asid somebodi els took place brave cri i'm blackstar i'm star star i'm blackstar can't answer i'm gangster tell i'm flam star born upside-down i'm star star born wrong way round i'm white star i'm blackstar i'm gangster i'm blackstar i'm blackstar i'm pornstar i'm wander star i'm blackstar i'm blackstar villa ormen stand solitari candl ah-ah ah-ah centr eye day execut women kneel smile ah-ah ah-ah centr eye eye ah-ah-ah

Lo hacemos para todas las canciones, al final, nos quedamos con las palabras más frecuentes. Queremos que queden las palabras más significativas para que permitan determinar las agrupaciones por las relaciones que hay entre ellas. En concreto por la "distancia" que hay entre cada canción en función de la frecuencia en que aparencen las palabras más frecuentes. Las 30 más frecuentes son:

freq        tok      word
---------  -----  -------
16.082115   love     love
13.795538   like     like
11.673021   look     look
11.623957    got      got
11.104668   know     know
11.050255   time     time
10.515605    day      day
10.002770    say     says
 9.683665    eye     eyes
 9.519472  could    could
 9.511280    one      one
 9.362057  never    never
 9.320950    let  letting
 9.214944   come     come
 9.207492   want     want
 9.036289    get      get
 8.794052    man      man
 8.770926   life     life
 8.730971    boy      boy
 8.549849  thing   things
 8.469426     go       go
 8.214135    see      see
 8.118021   feel     feel
 8.037416   live    lives
 7.983238  littl   little
 7.935172   girl    girls
 7.839930   take     take
 7.751650   noth  nothing
 7.165395   make     make
 7.109152   well     well
(...)

Esto ya lo habíamos visto de otra forma, con la nube de palabras, en el anterior artículo.

Ahora generamos una matriz de distancia entre las canciones a partir de la matriz de frecuencias de términos y documentos. Con esta matriz de distancias clusterizamos las canciones usando el método de ward que va uniendo las más cercanas entre sí. para formar un árbol que permite ver los posibles clusteres en que se agrupan.