La base de données YOUPOL
Une base de données PostgreSQL complète de 24,676 vidéos provenant de 67 chaînes couvrant le contenu politique francophone de YouTube en France et au Québec, avec transcriptions, métadonnées, commentaires et annotations NLP.
* Vidéos détectées sur YouTube et TikTok, y compris celles en attente de traitement.
Observatoire en continu
La base est mise à jour en continu : scan des chaînes, transcription et annotation des vidéos, extraction de commentaires, mise à jour des métadonnées (vues, likes, abonnés). Chaque scan produit un historique longitudinal exploitable via l'API.
Vidéos par année
Nombre total de vidéos mises en ligne par année, depuis 2006
Vidéos par orientation politique
Répartition selon les quatre orientations
Vidéos par pays
France vs. Québec
Vues par orientation politique dans le temps
Diagramme en aires empilées des vues totales par année, groupées par orientation
Commentaires par année
Commentaires totaux sur les vidéos mises en ligne chaque année
Durée moyenne par orientation
Durée moyenne des vidéos en minutes
Détection de contenu politique dans le temps
Volume mensuel de phrases et proportion classée comme politique (niveau phrase)
—
La base de données est organisée en 6 tables relationnelles stockées dans PostgreSQL. Les données brutes (vidéos, commentaires, transcriptions) sont liées aux annotations NLP au niveau de la phrase via des tables traitées.
1. videos
Table principale ; une ligne par vidéo. Contient les métadonnées de la chaîne, les métriques d'engagement, la date de mise en ligne, l'orientation politique, le pays et le genre du créateur. 23,658 rows.
| Colonne | Type | Description |
|---|---|---|
| video_id | VARCHAR (PK) | Identifiant YouTube de la vidéo |
| channel_name | VARCHAR | Nom de la chaîne YouTube |
| title | TEXT | Titre de la vidéo |
| upload_date | DATE | Date de publication de la vidéo |
| duration | INTEGER | Durée de la vidéo en secondes |
| view_count | BIGINT | Nombre total de vues |
| like_count | INTEGER | Nombre total de likes |
| comment_count | INTEGER | Nombre total de commentaires |
| tags | JSONB | Tags de la vidéo en tableau JSON |
| ideas | VARCHAR | Orientation politique (Far_right, Left, Masc, Comp) |
| country | VARCHAR | Pays d'origine (FR, QC) |
| gender | VARCHAR | Genre du créateur de la chaîne (H, F, Mixte) |
2. comments
Tous les commentaires YouTube avec informations sur l'auteur, nombre de likes, horodatages et structure de réponses imbriquées. 7,601,616 rows.
| Colonne | Type | Description |
|---|---|---|
| comment_id | VARCHAR (PK) | Identifiant unique du commentaire |
| video_id | VARCHAR (FK) | Référence à la vidéo |
| author | VARCHAR | Nom de l'auteur du commentaire |
| text | TEXT | Texte du commentaire |
| like_count | INTEGER | Nombre de likes sur le commentaire |
| published_at | TIMESTAMP | Date de publication du commentaire |
| parent_id | VARCHAR | ID du commentaire parent (pour les réponses) |
3. video_transcripts
Transcriptions diarisées complètes avec étiquettes de locuteurs et versions nettoyées du texte. 20,983 rows.
| Colonne | Type | Description |
|---|---|---|
| transcript_id | SERIAL (PK) | Identifiant auto-incrémenté |
| video_id | VARCHAR (FK) | Référence à la vidéo |
| raw_transcript | TEXT | Transcription diarisée complète avec étiquettes de locuteurs |
| cleaned_transcript | TEXT | Version nettoyée sans étiquettes de locuteurs |
| language | VARCHAR | Code de langue détecté |
4. transcription_speakers
Segments individuels de locuteurs issus de la diarisation, ordonnés par position dans chaque vidéo. 600,336 rows.
| Colonne | Type | Description |
|---|---|---|
| segment_id | SERIAL (PK) | Identifiant auto-incrémenté |
| video_id | VARCHAR (FK) | Référence à la vidéo |
| speaker | VARCHAR | Étiquette du locuteur (SPEAKER_00, SPEAKER_01, etc.) |
| text | TEXT | Segment de parole transcrit |
| segment_order | INTEGER | Position dans la séquence de la vidéo |
| start_time | FLOAT | Temps de début du segment en secondes |
| end_time | FLOAT | Temps de fin du segment en secondes |
5. comments_processed
Commentaires tokenisés au niveau de la phrase avec reconnaissance d'entités nommées (PER, ORG, LOC) stockées en JSONB, plus les colonnes de prédiction des modèles CamemBERT. 7,601,616+ rows.
| Colonne | Type | Description |
|---|---|---|
| id | SERIAL (PK) | Identifiant auto-incrémenté |
| comment_id | VARCHAR (FK) | Identifiant unique du commentaire |
| sentence | TEXT | Phrase individuelle extraite du commentaire |
| sentence_order | INTEGER | Position de la phrase dans le commentaire |
| entities | JSONB | Sortie NER : {PER: [], ORG: [], LOC: []} |
| [model]_prediction | BOOLEAN | Prédiction binaire de chaque classifieur |
| [model]_confidence | FLOAT | Score de confiance pour chaque prédiction |
6. transcription_speakers_processed
Segments de locuteurs tokenisés au niveau de la phrase avec NER et annotations de discours haineux / rhétorique scientifique des classifieurs CamemBERT. 600,336+ rows.
| Colonne | Type | Description |
|---|---|---|
| id | SERIAL (PK) | Identifiant auto-incrémenté |
| segment_id | VARCHAR (FK) | Référence au segment de locuteur |
| sentence | TEXT | Phrase individuelle du segment |
| sentence_order | INTEGER | Position de la phrase dans le segment |
| entities | JSONB | Sortie NER : {PER: [], ORG: [], LOC: []} |
| [model]_prediction | BOOLEAN | Prédiction binaire de chaque classifieur |
| [model]_confidence | FLOAT | Score de confiance pour chaque prédiction |