Madeleine est née le 14 avril 2005. Sa mère dirige une société de production et son père est cadre supérieur dans une entreprise de restauration industrielle. Elle est le deuxième enfant de la famille et au début du tournage, sa sœur est de onze ans son aînée.
Martine Sékali la filme en situation naturelle, chez elle, une heure par mois depuis l’âge de 1 ans et 5 jours, et tous les trois mois depuis l’âge de 4 ans.
Madeleine est une petite fille très bavarde dont le développement langagier peut-être qualifié d’impressionnant. En effet, elle utilise dès l’âge de 2;02 un lexique très précis, des marqueurs grammaticaux, des prépositions, des conjonctions ainsi que des déterminants variés. Elle est aussi capable de faire des plaisanteries, raconter des histoires, décrire ses actions et maîtrise plusieurs temps et aspects. A cinq ans, Madeleine entre au CP, elle sait déjà lire et est très sociable et joyeuse. Elle a désormais un petit frère très vif et dynamique de 3 ans, Côme, qui vient d’entrer en maternelle, et avec qui elle échange et joue volontiers.
Récupèrer la liste des noms de fichier pour Madeleine :
import os
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
import matplotlib.pyplot as plt
import chardet
#print(os.getcwd())
#os.chdir('/Users/marine/Desktop/Projet_TER/data/madeleine_texte')
#listing=os.listdir() # On crée une liste de tout les noms des fichiers
#listing.sort()
#listing
#del listing[0] # pour retirer '.DS_Store'
#len(listing)
Nous avons 35 fichiers pour Madeleine, chacun de ses fichiers corresepondent aux retrancriptions d'un enregistrement vidéo.
d = {} # Le dictionnaire contenant les noms des fichiers
nom_col = ['type', 'seconde_debut', 'seconde_fin', 'contenu']
rows = 0 #Compteur de ligne pour vérifier la perte de données
for file in listing:
d[file]=pd.read_csv(file,
sep = '\t',
names = nom_col,
header = None)
# On ajoute le nom de l'enfant
nom_pos1 = 0
nom_pos2 = file.find('-')
nom = file[nom_pos1:nom_pos2]
d[file]['enfant'] = nom
# On ajoute l'age de l'enfant
age_pos1 = file.find('_')-1
age_pos2 = file.find('.')
age = file[age_pos1:age_pos2]
d[file]['age'] = age
rows += len(d[file])
# DataFrame contenant toutes les lignes de l'enfant
data = pd.concat([d[file] for file in listing],
sort=False,
ignore_index=True)
#data.shape
On vérifie qu'il y a autant de ligne lu (variable rows) que de ligne écritent (len(data))
print(rows == len(data))
#data=data[['enfant', 'age','type', 'seconde_debut', 'seconde_fin', 'contenu']]
#data.head()
# Création du fichier enfant
os.chdir('/Users/marine/Desktop/Projet_TER/TER/data')
data.to_csv('data_madeleine_final.csv',
encoding = 'utf-8',
sep = '\t',
header = True)
On peut maintenant utiliser le fichier 'data_madeleine_finale.csv' pour l'exploration de données.
os.chdir('C:\\Users\\Lamou\\Desktop\\MIASHS\\TER_a\\data')
data_madeleine = pd.read_csv('data_madeleine_final.csv',
sep = '\t',
encoding = 'utf-8',
index_col=False)
# On supprime la colonne qui duplique les index
data_madeleine = data_madeleine.drop(columns = 'Unnamed: 0')
#data_madeleine
Qu'elles sont les différents type de ligne ?
print(len(data_madeleine['type'].unique()))
Il existe 40 types de ligne dans les fichiers Madeleine :
print(sorted(data_madeleine['type'].unique()))
Les lignes de type 'pho' correspondent à la traduction phonétique lorsque Madeleine s'exprime :
pho_madeleine = data_madeleine[data_madeleine['type'] == 'pho']
#pho_madeleine
#mad = data_madeleine['type'].unique()
#mad.sort()
#type_madeleine = {}
#for file in mad:
# type_madeleine[file] = len(data_madeleine[data_madeleine['type'] == file])
#type_madeleine
Nous allons chercher à visualiser la quantité phonétique de données à disposition
On considère que la colonne age a pout format : x_xx_xx (année_mois_jour) ainsi :
pho_madeleine['age'][0:1]
nous donne le nombre d'annéepho_madeleine['age'][2:4]
nous donne le nombre de moispho_madeleine['age'][5:7]
nous donne le nombre de jours# Ajout du nombre d'année
année_pho_madeleine = pho_madeleine.apply(lambda row: row['age'][0:1], axis=1)
pho_madeleine['année'] = année_pho_madeleine
# Ajout du nombre de mois
mois_pho_madeleine = pho_madeleine.apply(lambda row: row['age'][2:4], axis=1)
pho_madeleine['mois'] = mois_pho_madeleine
# Ajout du nombre de jour
jour_pho_madeleine = pho_madeleine.apply(lambda row: row['age'][5:7], axis=1)
pho_madeleine['jour'] = jour_pho_madeleine
#pho_madeleine
Combien avons-nous de ligne pour chaque année ? mois ? jour ?
nb_phrase_annee = pho_madeleine[{'année','contenu'}].groupby('année').count()
nb_phrase_annee.rename(columns={'contenu': 'nb_phrase'})
nb_phrase_annee.plot(kind='bar',
subplots=True,
figsize=(10,5),
title = 'Nombre de données phonétiques par année : Madeleine',
fontsize = 15,
use_index = True);
On voit qu'il y a des quantités de données phonétiques différentes pour chaques années :
Regardons plus en détail la quantité de données phonétiques par mois :
nb_phrase_mois = pho_madeleine[{'année','mois','contenu'}].groupby(['année','mois']).count()
nb_phrase_mois = nb_phrase_mois.rename(columns={'contenu': 'nb_phrase'})
#nb_phrase_mois.unstack(level=1)
On note que contrairement aux informations donnée par le corpus, le nombre d'enregistrements diminuent des les 3ans de Madeleine :
Cela vérifie qu'il y ait moins de données des les 3 ans de Madeleine
plt = nb_phrase_mois.unstack(level=0).plot(kind='bar',
subplots=True,
figsize=(20, 20),
title = 'Nombre de phrases phonétiques retranscritent par mois : Madeleine',
fontsize = 15,
use_index = True)
En effet on voit que l'enfant fait de nombreuses interactions lors de chacun enregistrement, hormis à l'âge de 6 ans.
(Il faudrait peut-être regarder si ce que l'enfant a dit à cet âge-là a été traduit en phonétique)
plt = nb_phrase_mois.plot(kind='bar',
subplots=True,
figsize=(20, 10),
title = 'Nombre de phrases phonétiques retranscritent par mois : Madeleine',
fontsize = 15,
use_index = True)
Cette visualisation regroupe toutes les informations commentées ci-dessus.
Regardons maintenant la quantité de données par jours :
nb_phrase_jour = pho_madeleine[{'année','mois', 'jour', 'contenu'}].groupby(['année','mois', 'jour']).count()
nb_phrase_jour = nb_phrase_jour.rename(columns={'contenu': 'nb_phrase'})
#nb_phrase_jour
plt = nb_phrase_jour.plot(kind='bar',
subplots=True,
figsize=(20, 10),
title = 'Nombre de phrases phonétiques retranscritent par jour : Madeleine',
fontsize = 15,
use_index = True)
Ici nous avons découpé les données de tel sorte à avoir la quantité de données pour chaque enregistrement de Madeleine. Mais elles ne sont pas distribué de manière équitable dans le temps. On peut mesurer la croissance du nombre de prise de parole (on pourrait croiser cette donnée avec la durée de l'enregistrement pour une meilleure mesure).
Les quantites de donnnees phonetiques pour les ages ci-dessous, sont tres faibles:
On a maintenant une meilleure vision du nombre de la quantité de données phonétiques à disposition et de leur répartition dans le temps pour Madeleine.
Nous allons chercher à explorer le nombre de mot au sens phonétique par phrase.
Pour cela on peut compter le nombre d'espace dans la chaîne de caractère :
# Exemple
pho = pho_madeleine.at[103508, 'contenu']
print('Nombre de mot dans "' + pho + ' : '+ str(pho.count(' ')+1))
Pour chaque ligne on calcul le nombre de mot phonétique :
nb_mot_pho = pho_madeleine.apply(lambda row: row['contenu'].count(' ')+1, axis=1)
pho_madeleine['nombre_mot_phonétique'] = nb_mot_pho #On ajoute une colonne contenant le nombre de mot
Par exemple on peut avoir la phrase de Madeleine avec le plus grand nombre de mot :
pho_madeleine.loc[pho_madeleine['nombre_mot_phonétique'] == pho_madeleine['nombre_mot_phonétique'].max()].contenu.values
Voici la ligne de cette phrase :
pho_madeleine.loc[pho_madeleine['nombre_mot_phonétique'] == pho_madeleine['nombre_mot_phonétique'].max()]
Il est intéressant d'observer le nombre de mot moyen que contient les phrases. C'est un indicateur qui peut nous aiguiller sur l'explosion du lexicale de l'enfant.
mean_nb_mot_pho_madeleine_jour = pho_madeleine[{'année', 'mois', 'jour', 'nombre_mot_phonétique'}].groupby(['année', 'mois', 'jour']).mean()
mean_nb_mot_pho_madeleine_jour = mean_nb_mot_pho_madeleine_jour.rename(columns={'nombre_mot_phonétique': 'espérance_nombre_de_mot_phonétique'})
#mean_nb_mot_pho_madeleine_jour
mean_nb_mot_pho_madeleine_jour.plot(kind='bar',
subplots=True,
figsize=(20, 10),
title = 'Espérance du nombre de mot phonétique par mois : Madeleine',
fontsize = 15,
use_index = True,
grid=True);
var_nb_mot_pho_madeleine = pho_madeleine[{'année','mois','nombre_mot_phonétique'}].groupby(['année','mois']).var()
var_nb_mot_pho_madeleine = var_nb_mot_pho_madeleine.rename(columns={'nombre_mot_phonétique': 'variance'})
#var_nb_mot_pho_madeleine.unstack(level=1)
plt = var_nb_mot_pho_madeleine.plot(kind='bar',
subplots=True,
figsize=(20, 13),
title = 'Variance du nombre de mot phonétique par jours : Julie',
fontsize = 15,
use_index = True,
grid=True)
max_mot_pho_madeleine = pho_madeleine[{'année','mois','nombre_mot_phonétique'}].groupby(['année','mois']).max()
max_mot_pho_madeleine = max_mot_pho_madeleine.rename(columns={'nombre_mot_phonétique': 'longueur_max'})
#max_mot_pho_madeleine.unstack(level=1)
max_mot_pho_madeleine.plot(kind='bar',
subplots=True,
figsize=(20, 13),
title = 'Longueur de la plus grande phrase par jour : Madeleine',
fontsize = 15,
use_index = True,
grid=True);
On note une que la longueur de la plus longue phrase par enregistrement évolue jusqu'à ses 3 ans, ensuite elle ne fluctue plus beaucoup.
Remarque: le fait que l'enfant effectue une longue prhase signifie pas forcement que celle-ci a un sens