"# Sujet 5 - Analyse des dialogues dans l'Avare de Molière"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Récupérer les données"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import re"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L’Observatoire de la vie littéraire (OBVIL) promeut une approche de l'analyse des textes littéraires fondée sur le numérique. Dans le cadre du Projet Molière, des pièces de cet auteur ont été numérisées et sont accessibles librement dans différents formats utilisables par un programme informatique. Nous allons utiliser ici les textes sous format markdown accessibles [ici](http://dramacode.github.io/markdown/moliere_avare.txt)."
"Pour plus de reproductibilité, nous allons télécharger les données dans ce répertoire GitLab d'abord puis nous allons lire ce fichier plutôt que l'url directement."
"Nous pouvons regarder les premières lignes de ce fichier:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%load_ext rpy2.ipython"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"---\n",
"identifier: moliere_avare \n",
"creator: Molière. \n",
"date: 1668 \n",
"title: L'Avare. Comédie \n",
"---\n",
"\n",
"\n",
"L'AVARE,\n",
"\n",
"COMÉDIE.\n",
"\n",
"Par J.B.P. MOLIÈRE.\n",
"\n",
"À PARIS, Chez JEAN RIBOU, au Palais, vis à vis la Porte de l'Église de la Sainte Chapelle, à l'Image Saint-Louis. M. DC. LXIX. *AVEC PRIVILÈGE DU ROI*\n",
"\n",
"\n",
"\n",
"# ACTEURS.\n",
" – Harpagon, Père de Cléante et d'Élise, et Amoureux de Mariane.\n",
" – Cléante, Fils d'Harpagon, Amant de Mariane.\n",
" – Élise, Fille d'Harpagon, Amante de Valère.\n",
" – Valère, Fils d'Anselme, et Amant d'Élise.\n",
" – Mariane, Amante de Cléante, et aimée d'Harpagon.\n",
" – Anselme, Père de Valère et de Mariane.\n",
" – Frosine, Femme d'Intrigue.\n",
" – Maitre Simon, Courtier.\n",
" – Maitre Jacques, Cuisinier et Cocher d'Harpagon.\n",
" – La Flèche, Valet de Cléante.\n",
" – Dame Claude, Servante d'Harpagon.\n",
" – Brindavoine, laquais d'Harpagon.\n",
" – La Merluche, laquais d'Harpagon.\n",
" – Le commissaire, et son clerc.\n",
"La Scène est à Paris.\n",
"\n",
"\n",
"\n",
"# L'Avare, *Comédie.*.\n",
"\n",
"\n",
"## Acte Premier.\n",
"\n",
"\n",
"### Scène Première.\n",
"Valère, Élise\n",
"\n",
"\n",
" VALÈRE.\n",
"Hé quoi, charmante Élise, vous devenez mélancolique, après les obligeantes assurances que vous avez eu la bonté de me donner de votre foi ?Je vous vois soupirer, hélas, au milieu de ma joie !Est-ce du regret, dites-moi, de m'avoir fait heureux ? et vous repentez-vous de cet engagement où mes feux ont pu vous contraindre ?\n",
"\n",
" ÉLISE.\n",
"Non, Valère, je ne puis pas me repentir de tout ce que je fais pour vous. Je m'y sens entraîner par une trop douce puissance, et je n'ai pas même la force de souhaiter que les choses ne fussent pas. Mais, à vous dire vrai, le succès me donne de l'inquiétude ; et je crains fort de vous aimer un peu plus que je ne devrais.\n",
"\n",
" VALÈRE.\n",
"Hé que pouvez-vous craindre, Élise, dans les bontés que vous avez pour moi ?\n"
]
}
],
"source": [
"%%sh\n",
"head -n 55 moliere_avare.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comme nous pouvons le voir, les actes sont marqués par un double-dièse en début de ligne et les scènes sont marquées par un triple-dièse en début de ligne. Les dialogues de personnages ont l'air d'être sur 2 lignes : une première avec le nom du personnage en majuscule et une deuxième avec les répliques du personnage.\n",
"\n",
"Nous allons tenter de réarranger les données sous forme de tableau, comme ceci :\n",
"\n",
"| Personnage | Acte | Scene | Nombre de Mots | Nombre de Repliques |\n",
" return u\"\".join([c for c in nfkd_form if not unicodedata.combining(c)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comme nous pouvons le voir, il y a quelques discordances entre la liste des personnages énumérés en-dessous du numéro de scène et les répliques dans le dialogue."
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"VALERE is not listed under scene 19 acte 3 but is speaking\n",
"No characters listed for scene 26 acte 4\n",
"HARPAGON is not listed under scene 26 acte 4 but is speaking\n"
" infos_scene = {l.strip().upper():{'acte':acte,'scene':scene,'personnage':l.strip().upper(),'nombre_de_mots':0,'nombre_de_repliques':0} for l in remove_accents(line.strip()).split(\",\")}\n",
" else:\n",
" infos_scene = {}\n",
" print(\"No characters listed for scene\",scene,\"acte\",acte)\n",
"Voyons voir s'il y a bien le bon nombre d'Actes et de Scènes:"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n",
"32\n"
]
}
],
"source": [
"%%sh\n",
"grep -c \"## Acte\" moliere_avare.txt\n",
"grep -c \"### Scène\" moliere_avare.txt"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(5,)"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.acte.value_counts().shape"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(31,)"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.scene.value_counts().shape"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(15,)"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.personnage.value_counts().shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On voit donc qu'on retrouve le même nombre d'actes et de scènes qu'avec l'analyse de texte via `grep`. On retrouve aussi les 15 personnages listées en début de document."
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" – Harpagon, Père de Cléante et d'Élise, et Amoureux de Mariane.\n",
" – Cléante, Fils d'Harpagon, Amant de Mariane.\n",
" – Élise, Fille d'Harpagon, Amante de Valère.\n",
" – Valère, Fils d'Anselme, et Amant d'Élise.\n",
" – Mariane, Amante de Cléante, et aimée d'Harpagon.\n",
" – Anselme, Père de Valère et de Mariane.\n",
" – Frosine, Femme d'Intrigue.\n",
" – Maitre Simon, Courtier.\n",
" – Maitre Jacques, Cuisinier et Cocher d'Harpagon.\n",