Multimodale Emotie Analyse

Complete NLP systeem voor automatische emotie detectie in Nederlandse video content

📅 Februari - April 2025 (Jaar 2 - Block C)
🏢 NLP Cursus
👥 Team van 3 studenten (8 weken)
🎯 Content Intelligence Agency

Project Overzicht

Volledige NLP-pipeline ontwikkeld voor een Content Intelligence Agency, die automatisch emoties analyseert in YouTube-video's. Het systeem ontvangt een video-URL als input en genereert een CSV met tijdstempels, transcripties, vertaalde zinnen en emotielabels gebaseerd op het Ekman-model (geluk, verdriet, woede, verrassing, angst, walging, neutraal). De pipeline bestaat uit vier stappen: audio downloaden (PyTubeFix), spraak-naar-tekst conversie (Whisper Large-v3-Turbo), vertaling Nederlands → Engels (MarianMT), en emotieclassificatie (RobBERT). Voor de emotieclassificatie zijn acht verschillende modellen getest.

Uitdagingen

Er was weinig Nederlandse emotie-data beschikbaar, waardoor de hele klas gezamenlijk 4.000 zinnen heeft gelabeld voor training. Daarnaast was er een sterke class imbalance: neutrale en positieve emoties kwamen veel voor, terwijl angst, walging en woede zeldzaam waren. Data augmentation via Nederlandse WordNet en SpaCy (synoniemenvervanging) vergrootte de zeldzame emotieklassen 6×. Een belangrijke keuze betrof het model: RobBERT (native Dutch, F1-score 85%) versus BERT op vertaalde data (F1-score 92%), een afweging tussen nauwkeurigheid en systeemcomplexiteit.

Resultaten

Het RobBERT-model behaalde 85% F1-score op Nederlandse emotieclassificatie, aanzienlijk beter dan traditionele modellen (LSTM ~65%, SVM ~58%). Ondanks dat BERT op Engelse vertalingen 92% behaalde, werd gekozen voor directe verwerking in het Nederlands, om nuanceverlies en vertaalfouten te voorkomen. De pipeline is volledig operationeel en verwerkt YouTube-URL's tot een gestructureerd CSV-bestand. Systematische vergelijking van modellen toonde aan dat Transformers 20-30% beter presteren dan traditionele NLP-methoden voor emotieclassificatie.

4000+
Handmatig Gelabelde Zinnen
40 min
Test Video
8
Modellen Getest
85%
F1-Score

Pipeline Architectuur

Een volledig geautomatiseerd systeem dat een YouTube URL verwerkt tot een gestructureerd CSV bestand met tijdstempels, transcripties, vertalingen en emotie labels.

1
Audio Download
Automatische download van audio vanaf YouTube
PyTubeFix
2
Spraak-naar-Tekst
Transcriptie van Nederlandse spraak met tijdstempels
Whisper Large-v3-Turbo
3
Emotie Classificatie
RobBERT voorspelt emotie per zin
RobBERT
4
Vertaling
Automatische vertaling Nederlands → Engels
MarianMT

Stap Details

Model Vergelijking

Systematisch 8 verschillende modellen getest en geëvalueerd op onze 4000-zins dataset.

Prestatie Overzicht

Model Type F1-Score Status
BERT (Engels) Transformer op vertaalde data 92% Hoogste Score
RobBERT (NL) Nederlandse Transformer 85% Gebruikt
LSTM Recurrent Netwerk ~65% Baseline
RNN Basic Recurrent ~62% Baseline
SVM Support Vector Machine ~58% Baseline
Logistic Regression Lineair ~55% Baseline
Naive Bayes Probabilistisch ~53% Baseline

🎯 Keuze voor RobBERT

Hoewel Engelse BERT het hoogst scoorde (92%), kozen we voor RobBERT (85%) omdat:

  • Direct Nederlands verwerken: Begrijpt Nederlandse nuances beter dan vertaalde tekst
  • Geen vertaalfouten: Vermijdt fouten uit de vertaalstap
  • Betere generalisatie: Werkte betrouwbaarder op nieuwe content
  • Eenvoudiger systeem: Eén model minder = minder foutpunten

Echte Voorbeelden uit Test Video

Hieronder enkele concrete voorbeelden van hoe de pipeline werkt op een 40-minuten test video:

⏱️ 00:03:45 Geluk
Nederlands:
"Wat geweldig om je hier te zien! Ik ben zo blij dat je er bent."
Engels:
"How wonderful to see you here! I'm so happy you're here."
⏱️ 00:12:18 Verdriet
Nederlands:
"Het is zo moeilijk om afscheid te nemen, dit doet pijn."
Engels:
"It's so hard to say goodbye, this hurts."
⏱️ 00:18:32 Woede
Nederlands:
"Dit is onacceptabel! Hoe durf je dit te doen?"
Engels:
"This is unacceptable! How dare you do this?"
⏱️ 00:25:09 Verrassing
Nederlands:
"Wow, dat had ik echt niet verwacht! Wat een verrassing!"
Engels:
"Wow, I really didn't expect that! What a surprise!"
⏱️ 00:31:47 Neutraal
Nederlands:
"De vergadering begint om drie uur in de conferentiezaal."
Engels:
"The meeting starts at three o'clock in the conference room."

Technologie Stack

🎭 RobBERT
🎤 Whisper v3
🔄 MarianMT
🤗 Transformers
🐍 Python
🐼 Pandas
📊 Scikit-Learn
🔥 PyTorch
📝 SpaCy
📚 NLTK
📹 PyTubeFix
☁️ Azure Cloud

Complete NLP Toolkit

  • Speech-to-Text: Whisper Large-v3-Turbo voor state-of-the-art Nederlandse spraakherkenning
  • Machine Translation: MarianMT Helsinki-NLP model voor Nederlands → Engels vertaling
  • Emotion Classification: RobBERT fine-tuned op 4000 handmatig gelabelde Nederlandse zinnen
  • Data Augmentation: Nederlandse WordNet en SpaCy voor contextueel passende synoniemen
  • Model Training: HuggingFace Transformers library voor BERT/RobBERT fine-tuning
  • Baseline Models: Scikit-Learn voor SVM, Logistic Regression, Naive Bayes vergelijking
  • Deep Learning: PyTorch voor LSTM en RNN implementaties
  • Deployment: Azure cloud voor model hosting (tijdelijk voor cursus)

Uitdagingen & Oplossingen

🎯 Gebrek aan Gelabelde Nederlandse Data
Weinig publieke datasets met Nederlandse zinnen gelabeld met Ekman emoties. Bestaande datasets zijn vaak Engels of gebruiken andere emotie categorieën.
Oplossing:
Hele klas labelde samen 4000 zinnen (elk 25 zinnen). Transcript data van Nederlandse TV-shows verzameld en systematisch gelabeld volgens 7 Ekman categorieën.
⚖️ Ongelijke Verdeling Emoties
Natuurlijke spraak bevat voornamelijk neutrale en positieve emoties. Angst, walging en woede kwamen veel minder voor, wat leidde tot slechte prestaties op deze categorieën.
Oplossing:
Data augmentation via synoniemen. Angst, woede en walging 6× vergroot, verdriet en verrassing 3×. Nederlandse WordNet en SpaCy gebruikt voor contextueel passende synoniemen.
🤔 Traditionele Modellen Onvoldoende
LSTM, RNN, SVM en andere traditionele modellen haalden F1-scores onder 65%. Misten contextuele nuances voor nauwkeurige emotie detectie.
Oplossing:
Overstap naar Transformers. RobBERT's voorgetrainde taalbegrip gaf boost naar 85% F1. Attention mechanisme vangt context veel beter.

Resultaten & Model Prestaties

85%
RobBERT F1-Score
Gekozen model - native Dutch
92%
BERT F1-Score
Hoogste maar vereist vertaling
+20%
Transformers Boost
vs traditionele modellen
7
Ekman Categorieën
Incl. neutraal

Per-Emotie Performance

RobBERT behaalde goede resultaten voor alle emotie categorieën:

  • Geluk: Hoogste precision - duidelijke positieve signaalwoorden ("geweldig", "blij", "fantastisch")
  • Neutraal: Meest voorkomend, goede recall - baseline voor alle classificaties
  • Verdriet: Goede balance precision/recall - contextuele markers zoals "moeilijk", "pijn", "verdrietig"
  • Woede: Na augmentation significant verbeterd - profiteert van synoniemen expansie
  • Verrassing: Moeilijkst te classificeren - vaak confused met geluk bij positieve verrassingen
  • Angst & Walging: Zeldzaam in data maar na 6× augmentation werkbare prestaties

Geleerde Lessen

  • Complete NLP pipeline ontwikkeling: Van ruwe video tot gestructureerde data - begrip van elke stap in een productie systeem
  • Systematische model vergelijking: 8+ modellen evalueren leerde objectieve selectie op basis van metrics én praktische overwegingen
  • Data annotatie is cruciaal: Handmatig labelen gaf inzicht in belang van data kwaliteit voor model prestaties
  • Pretrained modellen zijn krachtig: Transformers presteren 20-30% beter dan traditionele benaderingen
  • Native taalverwerking wint: Direct Nederlandse verwerking werkte beter dan eerst vertalen
  • Class imbalance vereist actie: Data augmentation essentieel voor goede prestaties op zeldzame emoties

Wat Ik Anders Zou Doen

  • Meer tijd investeren in data verzameling voor grotere, meer diverse dataset
  • Ensemble methoden: Meerdere modellen combineren (RobBERT + BERT + LSTM) voor robuustere voorspellingen
  • A/B testen voor RobBERT vs Engelse BERT in productie context met echte gebruikers
  • Fine-tuning experimenteren met verschillende learning rates en batch sizes

Bekijk Ook Mijn Andere Projecten