fbpx

Booba et Intelligence Artificielle: on vous montre comment nourrir votre algo avec la poésie du Duc de Boulogne

“L’IA est dangereuse”, “Les robots vont conquérir le monde”, “As-tu déjà entendu parler de GPT-2? Trop dangereux pour le grand public”

Obi Wan Kenobi t’aura prévenu: “Tu ne peux pas gagner. Si tu me terrasses, je deviendrais bien plus puissant que tu ne pourrais jamais l’imaginer.” En d’autres termes, plus tu parles, plus je m’entraîne, plus je te clash.

L’IA peut être vue comme un changement et une innovation positive, mais aussi comme un danger étant données les diverses utilisations possibles. Comme vous le savez peut-être, une “dangereuse” arme de propagande capable de générer des “fake news” a été lancée par Open AI en février. Cette IA est capable de générer des textes très réalistes sous différentes formes (papiers, musiques, livres…). Son nom est GPT-2.

Ces outils terrorisent une partie de la population qui y voit un réel danger… mais ceux qui savent l’utiliser ont la sensation d’avoir accès à un super-pouvoir. Ca tombe bien, je vais vous apprendre dans ce tuto à jouer avec nous et à utiliser GPT-2 pour pouvoir rapper comme le DUC: Booba.

Dans cet article, je vais vous guider étape par étape pour entraîner votre premier missile GPT-2 sur Google Colab. 

Si vous n’avez aucune expérience en code ou que vous n’avez pas le temps de rassembler toutes les paroles de Booba mais que vous voulez quand même tester le modèle GPT-2, je vous conseille plutôt d’utiliser les textes de Shakespeare (proche hein). Vous pouvez télécharger les textes de Shakespeare ici: Github (Karpathy) – Shakespeare’s text car je ne peux malheureusement pas vous fournir les paroles de Booba.

Copiez le texte, sauvegardez le dans un fichier et nommez le Shakespeare.txt Les crédits vont à https://github.com/karpathy/char-rnn pour les données sur les textes de Shakespeare #BigUp.

A- Récolter les données

  1. Où trouver la donnée?
  2. Comment collecter la donnée?

B- Traitement de données

  1. Quelques subtilités du rap français
  2. Traitement des paroles
  3. Format

C- Entraînement sur google colab

  1. Créez votre premier fichier Colab
  2. Uploadez votre fichier
  3. Entraînez votre intelligence artificielle
  4. Génèrez votre rap!

A- Récolter les données 

1. Où récolter les données?

Ayant tous les albums de Booba, j’ai réussi à les rassembler en un fichier que j’ai nommé Booba_lyrics.txt que je ne peux pas partager par soucis de copywriting.

On peut trouver des textes de chanteurs et rappeurs sur ces sites web: genius.com, greatsong.net

J’ai une préférence pour le deuxième car la “lecture” des paroles y est plus simple.

2. Comment collecter la donnée?

En utilisant les APIs des sites de paroles et en utilisant des librairies Python comme requests, BeautifulSoup, etc.

B- Traitement des données

  1. Quelques subtilités du rap Français

Dans le monde du rap, le rap français a des subtilités qui lui sont propres. Si l’on prend ces phrases par exemple:

“J’préfère mourir à se-l’ai que vivre en galérien”. (Paradis, Booba)

“Therapyzi neuf-deux Izi” (Paname, Booba)

“Cent moins ocho dans le building” (Paname, Booba)

“Tout, tout pour la monnaie brrr, brrr, billets verts” (Billets Verts, Booba)

“Tu dis partout qu’t’es une terreur, chez nous on t’trouve super sympa” (Double Poney, Booba)

La structure du rap français ajoute de la difficulté technique pour la génération automatique de paroles.

  • Évidemment, le rap français est écrit en français et les algorithmes d’intelligence artificielle comme GPT-2 ont été majoritairement pré-entraînés sur des corpus de textes anglais. L’”ADN” anglais de ces modèles va donc laisser des traces, même après l’entraînement sur du texte français.
  • Le rap français utilise le verlan qui consiste à inverser les syllabes de certains mots.
  • Dans certaines de ses phrases, Booba utilise ses mots favoris dans une logique qui est peut être plus proche du rythme que de la grammaire (“Therapyzi neuf-deux Izi”, “brrr, brrr”)
  • Booba peut faire des mix de mots provenant de plusieurs langues dans ses textes (français, espagnol, anglais, arabe…)
  • L’utilisation très fréquente des contractions (“on t’trouve”, “J’préfère”, “qu’t’es une terreur”)
  • Le rap est structuré par les rimes, le tempo, les syllabes, le rythme et d’autres conventions sur lesquels les modèles d’intelligence artificielle ne sont pas forcément pré-entraînés.

2. Traitement de données

  • Suppression des lyrics des autres rappeurs: Booba a fait de nombreux featurings avec d’autres rappeurs. Pour que l’intelligence artificielle reste fidèle au style de Booba, j’ai supprimé les paroles des autres rappeurs dans les textes.
  • Ajout des “starts” et “ends” entre ses morceaux: Chaque morceau a son propre style. J’ai ajouté un ‘<|startoftext|>’ et un  ‘<|endoftext|>’ au début et à la fin de chacun de ses morceaux pour que l’IA puisse rapper différents styles.
  • Ajout d’un espace avant et après les virgules et les apostrophes

“Tu dis partout qu’t’es une terreur” —-> “Tu dis partout qu’ t’ es une terreur”

Tout, tout pour la monnaie brrr,brrr, billets verts” —->   “Tout , tout pour la monnaie brrr , brrr , billets verts”

  • Séparation par syllabes: Pour donner à la donnée une forme qui représente le concept de rap il faut structurer par rimes, tempo, syllabes, rythme, … Pour l’exemple suivant, j’ai fait le test en prenant en compte une séparation par syllabe. Libre à vous d’approfondir la recherche… Ceci est possible en utilisant pyphen.

import pyphen

dic = pyphen.Pyphen(lang=’fr’)

lyrics = [dic.inserted(sentence, hyphen=’|| ‘) for sentence in lyrics]

3. Format

Sauvegardez la donnée en un fichier .txt. La donnée ressemble à ceci:

Séparée par syllabes.

Non séparée par syllabes (meilleure performance).

C- Entraînement sur Google Colab

Nul besoin d’être un expert data scientist pour cette partie. Elle est accessible à tout le monde. Il suffit de juste suivre ce tutoriel étape par étape.

Ce tutoriel est séparé en de très simples étapes pour être accessible à n’importe qui. Chaque étape ne prend que quelques secondes. Comptez 5 minutes pour l’ensemble du tutoriel.

Si vous n’avez utilisé colab, suis le tutoriel de A à Z. Si vous avez déjà utilisé colab, vous pouvez commencer à partir de l’étape 8.

a. Le notebook

Allez sur Colab en cliquant ici: https://colab.research.google.com

1- Cliquez sur File

2- Cliquez sur New Python 3 notebook

3- Cliquez sur ok

4- Entrez votre adresse email

5- Cliquez sur suivant et entrez votre mot de passe

6- Vous êtes sur votre premier notebook colab. Cliquez sur No thanks (fenêtre bleue).

7- Renommez votre notebook en haut à gauche. Je l’ai renommé rap-like-booba.ipynb

8- Cliquez sur runtime

9- Cliquez sur Change runtime type

10- Cliquez sur la flèche du bas à côté de None

11- Cliquez sur GPU

12 — Cliquez sur sauvegarder

13-Copiez ces lignes:

!pip install -q gpt-2-simpleimport gpt_2_simple as gpt2

Cliquez sur la première cellule rectangulaire et collez les lignes.

14- Cliquez sur shift en entrée simultanément. Félicitations, vous avez importé la librairie pour entraîner le modèle!

15- Cliquez sur la petite flèche à côté de la première cellule (encerclée en rouge sur l’image ci-dessous)

16- Cliquez sur Files (cercle rouge)

17- Cliquez sur UPLOAD (cercle rouge)

18- Cliquez sur ok

19- Si vous avez réussi à récolter les paroles de Booba, appelez votre fichier Booba_lyrics.txt. Si vous n’avez pas réussi mais que vous voulez quand même tester le modèle, vous pouvez quand même tester avec les paroles de Shakespeare, libres de droits et accessibles ici
(Credits à https://github.com/karpathy/char-rnn pour les paroles de Shakespeare).

Choisissez Booba_lyrics.txt et cliquez sur upload

20- Dans le deuxième rectangle, collez les lignes ci-dessous et appuyez sur shift et entrée.

gpt2.download_gpt2(model_name=”124M”)

gpt2.download_gpt2(model_name=”355M”)

21- Vos modèles sont maintenant téléchargés, il ne vous reste plus qu’à les entraîner avec votre donnée!

Sur le troisième rectangle, copiez-collez les lignes ci-dessous:

sess = gpt2.start_tf_sess()

gpt2.finetune(sess, dataset=’Booba_lyrics.txt‘, model_name=’124M’, steps=2000, restore_from=’fresh’, run_name=’rap’, print_every=10, sample_every=200, save_every=500)

22- Cliquez sur shift + enter. Votre modèle est en train de s’entraîner! Il pourra bientôt rapper!

Mon fichier compte environ 230K mots et s’entraîne en 2 heures. Si vous voulez réduire le temps d’entraînement d’une heure, changez cette ligne 

steps=2000,

en

steps=1000,

Pendant l’entraînement, votre modèle va rapper toutes les 200 steps.

Au début, la qualité des prédictions est très basse car l’intelligence artificielle commence à s’entraîner (par précaution, les gros mots sont barrés):

A la fin, les prédictions sont bien meilleures. Voici quelques paroles pendant l’entraînement

Parfois, l’IA rappe exactement comme Booba: C’est l’overfitting.

23- L’entraînement est terminé, l’IA peut maintenant rapper!

Copiez-collez la ligne ci-dessous et appuyez sur shift+entrée

gpt2.generate(sess, run_name=’rap’)

Félicitations, vous avez créé votre première IA sur Booba! Petite punchline complètement sortie du chapeau de l’IA Booba: “Aucune attache, grosse bague en poche”

Merci d’avoir suivi mon tuto! Si vous avez des questions ou besoin d’aide, contactez-moi sur edmond@ponicode.com, je suis très réactif.

Gardez néanmoins à l’esprit qu’il faut rester responsable. N’utilisez pas cela à mauvais escient, faites-en bon usage! 

@Booba merci de m’avoir inspiré! N’hésite pas me contacter directement sur edmond@ponicode.com si tu veux que je te génère des paroles bien propres à toi #IZI

Edmond Aouad, data scientist à Ponicode