Irenegirard
Leonard Cohen (1934-2016) était un chanteur, compositeur, poète et romancier canadien. Célèbre pour ses chansons introspectives comme "Hallelujah" et "Suzanne", son œuvre mêle folk, rock et poésie, abordant des thèmes de l'amour, de la spiritualité et de la condition humaine. Pour ce travail de text mining je me suis posée la question suivante : Quels sont les thèmes récurrents dans l’oeuvre de L. Cohen et comment ont-ils évolué ?
Pour réaliser mon corpus, j'ai scrappé un site répertoriant les poèmes et un site répertoriant les chansons de L. Cohen et les ai combiné dans un TSV commun.
A. GRAPH DE CONNAISSANCES
Dans un premier temps, j’ai souhaité créer un graphe de connaissance pour visualiser et analyser les relations sémantiques complexes entre les termes présents dans les paroles des chansons de Leonard Cohen afin de mieux comprendre les thèmes récurrents et les interconnexions de ses œuvres et en utilisant de nouvelles technologies possibles grâce au développement de LLMs (large language models).
Pour faire ce réseau, je me suis seulement appuyée sur le début de son œuvre (ses cinq premiers albums), ce qui permet d'analyser les thèmes et motifs initiaux qui ont établi son style et son influence artistique, garantissant ainsi une cohérence dans l'exploration de son évolution musicale. Pour la création de mon graph de connaissance, j’ai suivi la méthodologie suivante, issue du travail de Rahul Nayak.
( Voici mon carnet Collab, que je commente ci-dessous : https://colab.research.google.com/drive/1wFpPCL-HO4AjFZrH2OFgWzjcNBImydD8 )
- En premier lieu, j'utilise la bibliothèque `pandas` pour lire un fichier TSV contenant les paroles des chansons et je sélectionne les 2534 premières lignes de la colonne 'text' pour ne garder que les chansons des cinq premiers albums
- Ensuite, j'importe les bibliothèques ‘openai’( pour accéder à l'API de GPT-3),`networkx` et `pyvis` pour la création et la visualisation des graphes
- Puis je procède à l’extraction des concepts et des relations : Cette étape est cruciale pour extraire les termes clés et leurs relations des textes en utilisant un modèle de langage
- Je définis ensuite la fonction `extract_concepts_and_relations`, qui utilise donc un modèle GPT-3 pour extraire les concepts et leurs relations à partir de fragments de texte. Un message système (`SYS_PROMPT`) définit les instructions pour le modèle, et un message utilisateur (`USER_PROMPT`) fournit le texte spécifique à analyser.
- Je crée une boucle sur les textes sélectionnés pour extraire les relations conceptuelles de chaque "fragment de texte" (phrase)
- Enfin, je construis la structure du graphe en utilisant les relations extraites. Pour ce faire, j'initialise un graphe non orienté `G` avec `networkx`et Pour chaque relation extraite, je crée des nœuds et des arêtes dans le graphe. Si une arête existe déjà entre deux nœuds, j'incrémente son poids et j'ajoute la nouvelle relation à son titre
- Pour finir, je visualise le graphe en utilisant `pyvis` : J'utilise `pyvis` pour convertir le graphe `networkx` en une visualisation interactive --> avec la méthode `net.show` pour générer un fichier HTML affichant le graphe. Le fichier est disponible ici : réseau final (dépôt)
B. ANALYSE DES THEMES
Pour l'analyse des thèmes, j'ai utilisé la bibliothèque BUNKA développée par Charles de Dampierre. Le carnet est disponible ici.
Le topic modeling de Bunka consiste à identifier et visualiser les sujets principaux dans des ensembles de données textuelles non structurées. En utilisant des modèles d'embedding de phrases et des techniques de clustering, Bunka permet de regrouper les documents en différents thèmes et de visualiser ces thèmes de manière intuitive, facilitant ainsi l'analyse et le nettoyage des données pour un affinage précis des modèles de langage.