Cyberpesten Detecteren in Tweets: Een Analyse met Python, Machine Learning en Deep Learning

Inleiding

Cyberpesten is een groeiend probleem in de digitale wereld, met name op sociale media platforms zoals Twitter. Het identificeren van cyberpesten in tweets is cruciaal om slachtoffers te beschermen en een veiligere online omgeving te bevorderen. Dit artikel beschrijft een project dat zich richt op het detecteren van cyberpesten in tweets met behulp van Machine Learning (ML) en Deep Learning (DL) technieken, geïmplementeerd in Python en voorzien van een gebruiksvriendelijke Graphical User Interface (GUI) gebouwd met PyQt.

Data Exploratie en Visualisatie

De eerste stap in dit project is data exploratie. Hierbij wordt een dataset geladen en geanalyseerd om inzicht te krijgen in de structuur en inhoud ervan. Visualisaties worden gecreëerd om de verdeling van verschillende soorten cyberpesten en andere relevante kenmerken in de data te begrijpen. Deze visualisaties, waaronder bar plots en pie charts, worden in de GUI geïntegreerd om gebruikers een intuïtief begrip van de data te geven.

Data Preprocessing

Na de data exploratie volgt de preprocessing fase. Hierin worden de tweets schoongemaakt en voorbereid voor analyse. Verschillende text cleaning technieken worden toegepast, zoals het verwijderen van emoji's, punctuatie, links en stopwoorden. Deze stappen zijn essentieel om de kwaliteit van de data te verbeteren en de prestaties van de modellen te optimaliseren. De data wordt vervolgens gecategoriseerd op basis van de lengte van de tweets om verdere analyse te faciliteren.

Feature Extractie

Feature extractie is een cruciale stap in het proces. De data wordt gesplitst in input (X) en output (y) variabelen, waarbij de tweet tekst de input feature (X) vormt en het type cyberpesten de output (y). De types cyberpesten worden omgezet in numerieke labels, zodat ze compatibel zijn met de ML modellen. Verschillende feature extractie technieken worden gebruikt, waaronder TF-IDF (Term Frequency-Inverse Document Frequency), Count Vectorizer en Hashing Vectorizer. Deze technieken transformeren de tekstdata in numerieke representaties die door de ML modellen kunnen worden verwerkt.

TF-IDF (Term Frequency-Inverse Document Frequency)

TF-IDF is een veelgebruikte techniek om de relevantie van woorden in een document (in dit geval, een tweet) te bepalen ten opzichte van een verzameling documenten (de dataset). Het berekent een gewicht voor elk woord op basis van hoe vaak het voorkomt in het document (Term Frequency) en hoe zeldzaam het is in de gehele dataset (Inverse Document Frequency). Woorden die vaak voorkomen in een specifieke tweet maar zeldzaam zijn in de rest van de dataset, krijgen een hogere TF-IDF score, wat aangeeft dat ze belangrijk zijn voor het identificeren van het type cyberpesten.

Lees ook: Opkomst van rugby in Papoea-Nieuw-Guinea

Count Vectorizer

Count Vectorizer is een andere techniek om tekst om te zetten in numerieke data. Het creëert een matrix waarin elke rij een document (tweet) vertegenwoordigt en elke kolom een uniek woord uit de dataset. De cellen in de matrix bevatten het aantal keren dat een bepaald woord voorkomt in een specifieke tweet. Deze techniek is eenvoudig en effectief, maar houdt geen rekening met de context of de relatieve belangrijkheid van woorden.

Hashing Vectorizer

Hashing Vectorizer is een variant van Count Vectorizer die hashing gebruikt om woorden om te zetten in numerieke indices. In plaats van een woordenboek bij te houden van alle unieke woorden, gebruikt Hashing Vectorizer een hashfunctie om elk woord direct om te zetten in een index. Dit maakt het efficiënter in termen van geheugengebruik en snelheid, vooral bij grote datasets met veel unieke woorden. Het nadeel is dat hashing kan leiden tot botsingen, waarbij verschillende woorden dezelfde index krijgen, wat de nauwkeurigheid van de modellen kan beïnvloeden.

Machine Learning Modellen

Verschillende Machine Learning modellen worden getraind en geëvalueerd om cyberpesten te detecteren. Om het probleem van class imbalance aan te pakken, wordt SMOTE (Synthetic Minority Oversampling Technique) toegepast. SMOTE genereert synthetische samples voor de minderheidsklassen, waardoor de balans tussen de klassen wordt verbeterd en de modellen beter presteren. De data wordt gesplitst in training- en testsets om de modellen te trainen en hun prestaties te evalueren. Grid Search wordt gebruikt om de beste hyperparameters voor de ML modellen te vinden, waardoor hun prestaties worden geoptimaliseerd.

De volgende Machine Learning modellen worden gebruikt:

  • Logistic Regression: Een lineair model dat de waarschijnlijkheid van een binaire uitkomst voorspelt.
  • Support Vector Machines (SVM): Een model dat de optimale hyperplane vindt om data in verschillende klassen te scheiden.
  • K-Nearest Neighbors (KNN): Een model dat de klasse van een nieuw datapunt voorspelt op basis van de klassen van de k meest nabije datapunten.
  • Decision Trees: Een model dat beslissingen neemt op basis van een boomstructuur van regels.
  • Random Forests: Een ensemble model dat bestaat uit meerdere decision trees en de voorspellingen combineert om de nauwkeurigheid te verbeteren.
  • Gradient Boosting: Een ensemble model dat decision trees sequentieel traint, waarbij elke boom de fouten van de vorige boom corrigeert.
  • Extreme Gradient Boosting (XGBoost): Een geoptimaliseerde versie van Gradient Boosting met verbeterde prestaties en regularisatie technieken.
  • Light Gradient Boosting Machine (LightGBM): Een gradient boosting framework dat gebruik maakt van tree-based learning algoritmen en is ontworpen om efficiënt en snel te werken.

Deep Learning Modellen

Naast Machine Learning worden ook Deep Learning modellen ingezet om cyberpesten te detecteren. LSTM (Long Short-Term Memory) en 1D CNN (Convolutional Neural Network) modellen worden geconstrueerd om de types cyberpesten te identificeren. De tweet tekst wordt embedded, en verschillende lagen worden aan de modellen toegevoegd om betekenisvolle features te extraheren. De modellen worden gecompileerd met geschikte loss functions en optimizers.

Lees ook: Complete Gids Rugby Jeugd

LSTM (Long Short-Term Memory)

LSTM is een type recurrent neural network (RNN) dat speciaal is ontworpen om lange-termijn afhankelijkheden in sequentiële data te verwerken. In de context van cyberpesten detectie, kan LSTM de context van woorden in een tweet begrijpen en patronen identificeren die indicatief zijn voor cyberpesten. LSTM modellen hebben geheugencellen die informatie over lange perioden kunnen opslaan en doorgeven, waardoor ze effectief zijn in het verwerken van tekstdata.

1D CNN (Convolutional Neural Network)

1D CNN is een type neuraal netwerk dat convolutionele lagen gebruikt om features uit 1-dimensionale data te extraheren. In de context van cyberpesten detectie, kan 1D CNN patronen in de tweet tekst identificeren door filters over de embedded woorden te schuiven. Deze filters leren specifieke patronen te herkennen, zoals bepaalde woordcombinaties of zinsstructuren die vaak voorkomen in cyberpesten tweets.

Evaluatie

Het evaluatieproces wordt uitgevoerd met behulp van de testset voor zowel de Machine Learning als Deep Learning modellen. Metrics zoals accuracy, precision, recall en F1-score worden gebruikt om de prestaties van de modellen te beoordelen bij het detecteren van de types cyberpesten. Deze metrics geven een gedetailleerd beeld van hoe goed de modellen presteren en helpen bij het identificeren van sterke en zwakke punten.

  • Accuracy: Het percentage correct voorspelde tweets ten opzichte van het totale aantal tweets.
  • Precision: Het percentage correct als cyberpesten geïdentificeerde tweets ten opzichte van alle tweets die als cyberpesten zijn geïdentificeerd.
  • Recall: Het percentage correct als cyberpesten geïdentificeerde tweets ten opzichte van alle daadwerkelijke cyberpesten tweets.
  • F1-score: Het harmonisch gemiddelde van precision en recall, dat een gebalanceerde maatstaf biedt voor de prestaties van het model.

Graphical User Interface (GUI)

Om de functionaliteiten gemakkelijk toegankelijk te maken, is een Graphical User Interface (GUI) ontwikkeld met behulp van PyQt. De GUI stelt gebruikers in staat om gemakkelijk te interageren met de modellen en de dataset. Gebruikers kunnen de feature extractie techniek selecteren, de classifier kiezen en het model training proces initiëren met behulp van de knoppen en dropdown menu's in de GUI.

Functionaliteiten van de GUI

De GUI biedt verschillende functionaliteiten die het gebruik van de modellen vereenvoudigen:

Lees ook: Van rugby naar media: JayJay Boske

  • Data Selectie: Gebruikers kunnen eenvoudig de dataset selecteren die ze willen analyseren.
  • Feature Extractie Selectie: Gebruikers kunnen kiezen uit verschillende feature extractie technieken, zoals TF-IDF, Count Vectorizer en Hashing Vectorizer.
  • Model Selectie: Gebruikers kunnen het Machine Learning of Deep Learning model selecteren dat ze willen gebruiken voor de detectie van cyberpesten.
  • Training Initiatie: Gebruikers kunnen het model training proces starten met een simpele klik op de knop.
  • Visualisaties: De GUI bevat verschillende plots, zoals bar plots en pie charts, om de verdeling van de types cyberpesten en andere kenmerken weer te geven.
  • Predictie: Gebruikers kunnen eigen tekst invoeren en de GUI zal voorspellingen geven over de waarschijnlijkheid van elk type cyberpesten op basis van de getrainde modellen.

Testen en Voorspellingen

De laatste fase omvat het testen van de GUI met verschillende inputs en het verkennen van modelvoorspellingen op door de gebruiker verstrekte tekst. De GUI biedt voorspellingen voor de gegeven tweet tekst, waarbij de waarschijnlijkheid van elk type cyberpesten wordt aangegeven op basis van de getrainde modellen. Dit stelt gebruikers in staat om snel en eenvoudig te beoordelen of een bepaalde tweet als cyberpesten kan worden beschouwd.

tags: #rugby #tweets #python #analyse