A newer version of the Gradio SDK is available: 6.14.0
title: Toxic Comment Classifier & Explainer
emoji: π§ͺ
colorFrom: indigo
colorTo: gray
sdk: gradio
sdk_version: 4.44.1
python_version: '3.10'
app_file: app.py
pinned: true
license: mit
description: >
A multi-label transformer-based Toxic Comment Classifier trained on the Jigsaw
dataset. It includes an explainability module (Captum Integrated Gradients)
that visualizes which words contribute most to each toxic label, powered by
Gradio UI.
tags:
- text-classification
- multi-label
- explainable-ai
- transformers
- gradio
- distilbert
- nlp
- toxicity-detection
- huggingface-space
π§ Toxic Comment Classification β Explainable Multi-Label NLP Model
DistilBERT-based multi-label classifier for detecting toxic online comments with explainability powered by Captum Integrated Gradients (IG).
π Overview
This project presents an explainable AI system for identifying toxic comments in text, built using a fine-tuned Transformer model (DistilBERT).
It performs multi-label classification across six toxicity categories while offering token-level explanations for each prediction.
π§© Labels
- toxic
- severe_toxic
- obscene
- threat
- insult
- identity_hate
π― Objectives
- Fine-tune DistilBERT for robust multi-label toxicity detection
- Enhance interpretability using Captum Integrated Gradients
- Deploy a real-time, user-friendly Gradio interface
π§ͺ How to Use the Demo
- Type or paste any comment in the text box
- Click βClassifyβ to view per-label probabilities and predictions
- Open the βExplainβ tab β select a target label
- Generate a heatmap showing which words support (red) or oppose (blue) the decision
π§ Example Inputs
| Example | Expected Labels |
|---|---|
| βYou are a complete idiot.β | toxic / insult |
| βI will kill you tomorrow.β | threat / toxic |
| βThanks for your help today!β | non-toxic |
| βGo away, you people donβt belong here.β | identity_hate / insult |
βοΈ Technical Stack
| Component | Technology |
|---|---|
| Language Model | DistilBERT (distilbert-base-uncased) |
| Frameworks | PyTorch β’ Transformers β’ Gradio |
| Explainability | Captum (Integrated Gradients) |
| Training | Stratified splits β’ Early Stopping β’ Regularization |
| Visualization | Gradio UI + Captum HTML heatmaps |
| Deployment | Hugging Face Spaces |
π Project Structure
.
βββ app.py # Gradio app entry point
βββ requirements.txt # Runtime dependencies
βββ artifacts/
β βββ best/ # Fine-tuned model weights + tokenizer
β βββ thresholds.json # Tuned thresholds for each label
βββ README.md # (this file)
π Model Training Summary
- Dataset: Jigsaw Toxic Comment Classification Challenge
- Tokenization: DistilBERT (max length = 256)
- Loss: Binary Cross-Entropy with Logits (BCEWithLogitsLoss)
- Optimizer: AdamW (learning rate = 2e-5, weight decay = 0.02)
- Regularization: Dropout (head=0.5, encoder=0.2)
- Evaluation Metrics: Macro F1 β’ Precision β’ Recall β’ AUC
- Explainability: Captum Layer Integrated Gradients (LIG)
π₯οΈ Live Demo
π Try the interactive demo on Hugging Face Spaces:
π yaekobB / Toxic-Comment-Classification
π§° Dependencies
transformers>=4.41.0
torch>=2.2.0
safetensors>=0.4.2
gradio>=4.20.0
captum>=0.7.0
pandas>=2.0.0
numpy>=1.24.0
πͺͺ License
This project is licensed under the MIT License.
You are free to use, modify, and distribute this work with attribution.
βBuilding safer and explainable AI for online interactions.β