La série Chernobyl à travers le prisme de l'intelligence artificielle

Conférence PyConFr 2019 - Bordeaux


Le choix du thème de la conférence

What is the cost of lies?

Première phrase de la série Chernobyl

La série Chernobyl retrace l'accident qui a eu lieu sur le réacteur 4 de la centrale Lénine à une centaine de kilomètres de Kiev. Très bien documentée, cette série présente les points clès de l'accident aussi bien du point de vue technique que du point de vue du fonctionnement de l'URSS.

Ayant une formation d'ingénieur en génie nucléaire et ayant travaillé pendant 7 ans dans l'industrie électro-nucléaire, j'ai changé de secteur d'activité en 2017 pour travailler dans le développement en Python.

J'ai fait cette analyse de la série Chernobyl pour la PyconFr 2019 à Bordeaux. L'objectif de la conférence est de présenter les premières étapes d'une analyse de langage naturel en Python. Elle n'a pas pour but une étude poussée des algorithmes d'analyse du langage naturel mais plutôt d'étudier les possibilités de visualisation de la donnée.

Les principales librairies Python utilisées pour l'analyse sont les suivantes :

Pandas
Manipulation de données

Cette librairie est utilisée pour manipuler les données extraites des sous-titres sous forme de dataframes

Plus d'informations
Scikit-learn
Analyse du langage naturel

Cette librairie est utilisée pour effectuer l'analyse du langage naturel

Plus d'informations
NLTK
Analyse du langage naturel

Cette librairie est utilisée pour effectuer la racinisation et la lemmatisation

Plus d'informations
Gensim
Création de modèles thématiques (topic modelling)

Cette librairie est utilisée pour trouver les caractéristiques des personnages de la série

Plus d'informations
Wordcloud
Création de nuages de mots

Cette librairie est utlisée pour générer les nuages de mots

Plus d'informations
Pillow
Modification des nuages de mots

Cette librairie est utlisée pour ajouter le temps sur les nuages de mots

Plus d'informations
OpenCV
Création de vidéos

Cette librairie est utlisée pour générer vidéos de nuages de mots

Plus d'informations

La structure du code

L'architecture du code s'appuie sur quatre modules et un notebook Jupyter. Les différents modules sont :

Sbttimport Dataprocess Insightviz Main manager.ipynb
Architecture du code

L'analyse

Les nuages de mots

Les images

La librairie Wordcloud permet de générer des nuages de mots à partir d'images. Les nuages de mots suivants ont été générés à partir d'une image du réacteur de Tchernobyl et ils présentent les mots les plus présents dans les sous-titres de la série en français et en anglais :

Chernobyl wordcloud image French

Nuage de mots créé en utilisant de la racinisation des sous-titres français

Chernobyl wordcloud image English

Nuage de mots créé en utilisant de la lemmatisation des sous-titres anglais

Les nuages de mots de l'ensemble de la série permettent de se rendre compte que l'accent n'a pas été mis sur l'aspect technique de l'accident (même si l'épisode 5 présente très bien le déroulé technique de l'accident) mais plutôt sur comment la crise a été gérée ainsi que les conséquences.

La couleur

La couleur des mots générée par la librairie Wordcloud n'est pas utilisée à cette étape pour ajouter du sens aux nuages de mots. Une utilisation possible de la couleur des mots est d'afficher des champs lexicaux. On peut générer des champs lexicaux grâce à l'algorithme Latent Dirichlet Allocation (LDA). Les résultats obtenus sont présentés dans le tableau suivant :

Word 0 Word 1 Word 2 Word 3 Word 4 Word 5
Topic 0 minute much fuck moment dangerous number
Topic 1 reactivity said turn many won maybe
Topic 2 happen last bullet long dead life
Topic 3 world gonna already wait explosion institute
Topic 4 sorry give working matter safety year
Topic 5 ever everyone night ground scientist care

Le tableau a été généré à partir de la méthode show_topics de la classe Orchestrator du module main. Les champs lexicaux ne sont pas clairement définis. L'implémentation dans la couleur des mots des nuages de mots ne semble pas très intéressante en l'état.

Les vidéos de nuages de mots

La première étape est de générer une vidéo à partir de nuages de mots créés au fil de la série. Cette première vidéo ne prend pas en compte l'étape de racinisation ou de lemmatisation. Voici le rendu pour le premier épisode de la série :

La limites de cette visualisation est le manque de répères temporels pour se situer dans la série et l'utilisation d'un nombre de sous-titres uniformes pour générer les nuages de mots. Ce dernier point ne permet pas de se rendre compte de la quantité de dialogues sur une plage de temps définie.

Voici l'analyse réalisée sur des plages de temps fixes (10 minutes), pour les cinq épisodes de la série :

Vidéo de nuages de mots de l'épisode 1 de la série

Vidéo de nuages de mots de l'épisode 2 de la série

Vidéo de nuages de mots de l'épisode 3 de la série

Vidéo de nuages de mots de l'épisode 4 de la série

Vidéo de nuages de mots de l'épisode 5 de la série

L'analyse des personnages

Pour essayer de mieux se rendre compte de comment sont présentés les personnages de la série, on utilise l'algorithme Word2Vec de la librairie Gensim pour trouver les mots qui sont proches des noms des personnages.

Card image cap
Valeri Legassov
Directeur adjoint de l'institut d'énergie atomique Kourtchatov
Card image cap
Vassili Ignatenko
Pompier appelé pour éteindre le feu à Tchernobyl
Card image cap
Boris Chtcherbina
Vice-président du Conseil des ministres de l'URSS de 1984 à 1989 envoyé à Tchernobyl pour superviser la gestion de la catastrophe de Tchernobyl
Card image cap
Anatoli Diatlov
Ingénieur en chef adjoint de la centrale nucléaire de Tchernobyl
Card image cap
Viktor Brioukhanov
Directeur de la centrale nucléaire de Tchernobyl
Card image cap
Nikolaï Fomine
Ingénieur en chef de la centrale de Tchernobyl
Card image cap
Leonid Toptounov
Ingénieur en charge du contrôle du réacteur 4 de Tchernobyl

Conclusion et ouverture

Il s'agit d'une analyse très simple de la série Chernobyl grâce à de l'analyse du langage naturel. Les premières étapes d'une analyse du langage naturel ont été vues : tokenisation, lemmatisation, racinisation, sac de mots. Les algorithmes de machine learning ont été peu utilisés (uniquement le LDA pour détecter les thèmes principaux de la série et Word2Vec pour la description des personnages) et pas assez optimisés (affinage des hyperparamètres). Il s'agit donc d'une des principales pistes d'amélioration.

Un autre point important apparaît suite à cette analyse : le volume des données joue un grand rôle dans la qualité des résultats. Les cinq épisodes de la série contiennent quelques milliers de phrases : cela est assez faible pour les algorithmes de machine learning utilisés.

Autres algorithmes

Un travail sur les hyperparamètres des modèles de machine learning utilisés doit permettre d'obtenir de meilleurs résultats. D'autres algorithmes et librairies peuvent permettre de pousser plus loin l'analyse :

Spacy
Librairie NLP

Cette librairie peut être utilisée pour analyser plus finement la série

Plus d'informations
Scikit learn
Clusterisation

Cette librairie peut être utilisée pour effectuer une clusterisation sur du texte

Plus d'informations

Autres utilisations

Cette analyse peut facilement s'adapter à d'autres types d'oeuvres que les séries. En modifiant le module de collecte de données (sbttimport.py), il semble assez simple de pouvoir analyser une oeuvre littéraire par exemple.


Ressources

Documents de la conférence
Document de présentation

Support de présentation de la conférence PyconFR 2019

Livres
Livre technique sur l'accident

Tchernobyl, 25 ans après... Fukushima. Quel avenir pour le nucléaire ?

Crédits
Sources utilisées pour les sous-titres

www.MY-SUBS.com

www.sous-titres.eu