În urmă cu câteva zile, am dat peste „acest post” despre analiza versurilor lui Taylor Swift și m-am gândit că ar fi un proiect distractiv să încerc singur în weekend să exersez text mining.

Pentru aceia dintre voi care nu au idee cine este „BTS”, sunt un grup coreean care a explodat în Occident de când a devenit primul grup Kpop care a câștigat un Billboard Music Awards în 2017. Deși nu sunt un ARMY (cum se numesc fanii lor), am ținut evidența lansărilor lor încă de la debut și mi-a plăcut foarte mult echilibrul dintre aspectul distractiv și distractiv al melodiilor lor mai comercializate și problemele sociale pe care le-au atins - apariția... luptele de vârstă, sănătatea mintală, împuternicirea femeilor etc. Versurile lor bine scrise rezonează cu tinerii adulți și cred că, în parte, contribuie la succesul lor internațional uriaș. Dacă nu ai făcut-o, vezi cel mai recent single al lor „Idol (ft. Nicki Minaj!)”, dar preferatul meu personal de la ei este „Whalien 52”, care vorbește despre cea mai singură balenă de pe Pământ.

Acum, ca fan ocazional, nu citesc (și nu pot) citesc și analizez versurile tuturor pieselor lor, deoarece au o discografie uriașă (2013–2018). Dar putem folosi „prelucrarea limbajului natural” (NLP) – o zonă a inteligenței artificiale (AI) care analizează datele din limbajul natural – pentru a extrage unele informații din colecția versurilor cântecelor lor. Să pornim focul!

Cercetare de date

Binele

Nu am lucrat cu multe dintre tehnicile pe care le voi folosi, dar nu mă tem, deoarece există biblioteci open source pentru aproape tot. M-am gândit că va trebui să răzuiesc web-ul pentru a obține versurile lor, dar, din fericire, cineva a scris deja un pachet pentru asta, așa că am urmat „acest tutorial” pentru a obține toate melodiile lor pe „Genius.com”.

Răul

Versurile lor originale sunt în, duh, coreeană. Am învățat doar cum să mă ocup de Unicode. De asemenea, lucrul cu coreeană este foarte greu din cauza complexității formelor verbale (pe care încă nu le stăpânesc și nu cred că o voi face vreodată). Versurile coreene sunt de obicei scrise foarte diferit de vorbirea formală, să zicem, în literatură; există argouri și folosirea „incorectă” a gramaticii. Și apoi există o problemă și cu segmentarea cuvintelor. Prin urmare, m-am gândit că lucrul cu traduceri în engleză ar fi mai ușor pentru a extrage ideea corectă a versurilor. Cu popularitatea masivă a BTS în Occident, nu este foarte dificil să obțineți traduceri în engleză pe Genius, dintre care majoritatea sunt destul de decente (am trecut prin câteva melodii pentru a verifica dacă au existat traduceri greșite uriașe în context). Deci avem colecția noastră de versuri, sau corpus.

Urâtul

Curățarea datelor. Nu știam că va dura atât de mult timp pentru a curăța datele. După ștergerea melodiilor duplicate (remix-uri), am rămas cu un total de 95 de melodii, care mi s-au părut cam corecte. Cu toate acestea, partea dificilă a fost să identifici ce cuvinte să includă, deoarece în engleză există o varietate de cuvinte care nu contribuie la sensul general al textului, cum ar fi „eu”, „tu” , "ar trebui să". Acestea sunt cunoscute ca stopwords, care ar trebui excluse din corpus. Am petrecut atât de mult timp analizând toate wow-urile și da-urile înainte să am în sfârșit un corpus curat cu care să lucrez.

Vizualizarea

Mai întâi, să aruncăm o privire la o melodie. Mai jos este un nor de cuvinte generat din melodia „Best of Me”. Acest lucru are sens că cuvintele „am primit” și „cel mai bun” sunt cele mai frecvente cuvinte, deoarece repetă expresia „ai primit ce este mai bun din mine” pentru cea mai mare parte a cântecului.

Acum să facem același lucru pentru celelalte 94 de melodii... cred că nu. Totuși, putem arunca o privire la cele mai populare cuvinte din toate cântecele. Iată rezultatul.

Ok, deci se pare că, în general, versurile lor vorbesc despre dragoste, dorință, timp, rap, vise, care sunt teme comune în melodiile pop. Dar este o reprezentare adevărată a toate temele din muzica BTS? Să aprofundăm.

Încorporarea cuvântului

O tehnică foarte populară în text mining este folosirea „word2vec” pentru a produce încorporarea cuvintelor. Ceea ce face acest model este, practic, să ia un corpus mare de text și să mapați fiecare cuvânt într-un spațiu multidimensional. Cu doar 95 de melodii, care au însumat aproximativ 3000 de cuvinte unice, am folosit doar 50 de dimensiuni. Făcând acest lucru, putem vedea asemănarea dintre anumite cuvinte privind distanțele lor pe spațiul mapat. Dar cum putem vedea în spațiul cu 50 de dimensiuni? Putem vizualiza acest lucru folosind „t-SNE”, care este o tehnică de reducere a dimensionalității care poate fi utilizată pentru a vizualiza date de dimensiuni mari în 2-D.

Privind acest lucru, ne putem face o idee despre modul în care cuvintele sunt legate între ele. Cu cât sunt mai grupate, cu atât mai asemănătoare în context. Să mărim și să aruncăm o privire la câteva cuvinte.

În grupul din mijloc, putem vedea cuvinte care au legătură cu luptele interioare, precum „prost”, „îngrijorare”, „întuneric”, dar și încredere în sine: „te rog”, „știi”, „bine”. BTS are o mulțime de melodii pentru maturitate în care își exprimă nesiguranța și luptele în timp ce cresc, dar în spatele se află mesajul pozitiv pe care ar dori să-l transmită, este în regulă, toți vom fi bine.

Ei bine, există și o „petrecere” în acel grup, dar hei, uneori poți pur și simplu să-ți petreci problemele?!?

Modelarea subiectului

Acum că știu cum sunt legate cuvintele din versurile lor, vreau să știu dacă putem grupa toate melodiile lor în subiecte separate. Cu versurile BTS, putem găsi seturi de cuvinte care apar adesea împreună, formând diferite „subiecte” care se repetă în cariera lor muzicală.

Extragerea caracteristicilor

Mai întâi trebuie să extragem caracteristici pentru modelare. Un model comun de extragere a caracteristicilor este „bag-of-words”, care practic este doar să pună fiecare cuvânt într-o „pungă” separată și să se uite la frecvența acestuia în text. Renunțăm la informații despre ordinea cuvintelor sau structura propozițiilor. Această metodă este simplu de înțeles și implementat, dar pierdem contextul și sensul ca un compromis.

Dar în versurile cântecului, unele cuvinte sunt repetate mai des decât altele pentru a face cântecul mai captivant. Există o metodă care penalizează numărul de cuvinte ale cuvintelor care apar mai frecvent într-un corpus, deoarece este posibil ca aceste cuvinte să nu ofere o perspectivă suplimentară asupra subiectelor documentelor. Acesta se numește tf-idf, și îl vom folosi pentru extragerea caracteristicilor.

Modele

Există 2 algoritmi care sunt utilizați frecvent în modelarea subiectelor: „Factorizarea matricei nenegative” (NMF) și „Alocarea dirichletului latent” (LDA). Ambele preiau un corpus de text și returnează o listă de cuvinte care formează subiecte diferite, precum și documentele care aparțin unui anumit subiect. Vă voi scuti de „detaliile matematice” despre modul în care aceste două metode diferă una de cealaltă și voi intra direct în rezultate.

După cum puteți vedea, subiectele generate de NMF au fost mult mai bune decât cele generate de LDA. Acest lucru are sens, deoarece avem de-a face cu un corpus destul de mic, iar NMF, în general, se descurcă mai bine într-o astfel de situație. Am făcut niște reglaje și am decis să mă mulțumesc cu 9 subiecte generale (în aceeași ordine cu rezultatul de mai sus): „Tinerețe”, „Distracție”, „BTS”, „Dragoste”, „Întâlniri”, „Pierdere”, „ Probleme sociale”, „Vise” și „Singurătate”.

Din aceste subiecte, am trasat numărul de melodii pe subiect, agregate pe albume (ordonate după data lansării) pentru a vedea cum s-a schimbat muzica BTS de-a lungul anilor.

Pornind de la albumul lor de debut, putem vedea că pentru primele 2 albume, au existat o mulțime de melodii despre ei înșiși (o mulțime de scăpare de nume), ceea ce are sens pentru că aveau nevoie să-și aducă numele publicului, și ce modalitate mai bună de a face asta decât să-și lase numele în versurile melodiilor? Apoi, în jurul anului 2017, au devenit brusc masive după premiul BBMA, așa că este necesar ca noii fani internaționali să-și amintească și numele, ceea ce ar explica apogeul către lansările mai recente.

Subiectul lor „Întâlniri” atinge apogeul în epocile „Skool Luv Affair” și „Dark&Wild”, ceea ce are, de asemenea, sens, deoarece treceau prin pubertate la vremea respectivă și cântau mult despre întâlnirea/placerea cu cineva, cu melodii notabile precum „Boy in Luv”. , „Miss Right”, „War of Hormone”, pentru a numi doar câteva.

Temele „Visele”, „Tinerețea” și „Pierderea” par să fie un subiect răspândit pe tot parcursul anului. După cum am menționat, BTS își scriu muzica pentru tânăra generație, așa că aceste teme ar fi din majoritatea preocupărilor lor. La fel și „Problemele sociale”, care are un apogeu neobișnuit în epoca lor „Aripi”, când majoritatea cuvintelor care au alcătuit acest subiect erau din „ 뱁새 (Silver Spoon/Baepsae)”. Totuși, am constatat că melodiile asociate cu acest subiect din „Wings” sunt și ele reprezentative pentru ele abordând probleme sociale, de la „Am I Wrong”, la „21st Century Girls”.

Tema „Singurătate” pare să fie cea mai răspândită în Trilogia „Iubește-te pe tine însuți”, dar la fel este și „Dragostea”. Ei au încheiat această trilogie despre dragoste cu un album care leagă totul, că există părți întunecate și triste ale vieții, ale iubirii, dar răspunsul final la toate luptele, cel mai important lucru, este să te iubești pe tine însuți, în primul rând. .

„Când trece iarna, întotdeauna vine primăvara” – Răspuns: Iubește-mă pe mine însumi

Ce altceva?

Sunt atât de multe lucruri pe care le pot face cu extragerea versurilor, cum ar fi să fac o analiză a sentimentelor pentru a afla starea de spirit a fiecărei melodii sau a fiecărui album. Din asta, pot crea și un sistem de recomandare pentru a sugera o melodie care se potrivește dispoziției mele. Pot realiza modelarea subiectelor folosind versurile originale coreene (se dovedește că există pachete open source disponibile precum KoNLPy care au fost concepute pentru a procesa Hangul). Posibilitățile sunt nesfârșite. Dar, în general, am învățat o mulțime de tehnici noi, lucrând la ceea ce îmi place, m-am distrat foarte mult și am ieșit cu rezultate destul de interesante.

Toate codurile pentru acest proiect pot fi găsite „aici”.