Advanced hate speech detection in Tamil-English code-mixed social media content using hybrid deep learning architectures.
Jupyter Notebook
0
1 commits
updated Jul 30, 2025
๐ฏ Advanced hate speech detection in Tamil-English code-mixed social media content using hybrid deep learning architectures
This repository contains our award-winning submission to the LT-EDI 2025 shared task on caste and migration-based hate speech detection in code-mixed Tamil social media content. Our innovative multi-scale hybrid architecture combines classical TF-IDF features with state-of-the-art transformer embeddings, achieving 3rd place with an impressive F1-score of 0.818.
๐๏ธ Multi-scale Hybrid Architecture Overview
Our solution achieved outstanding performance in the LT-EDI 2025 shared task:
| ๐ Rank | ๐ฅ Team Name | ๐ F1-Score | ๐ Performance |
|---|---|---|---|
| ๐ฅ 1st | CUET_N317 | 0.88105 | Leading |
| ๐ฅ 2nd | CUET's_white_walkers | 0.86289 | Strong |
| ๐ฅ 3rd | Wise (Ours) | 0.81827 | Excellent |
| 4th | CUET_blitz_aces | 0.81682 | Good |
| 5th | hinterwelt | 0.80916 | Good |
๐ Amrita School of Artificial Intelligence
Coimbatore, Amrita Vishwa Vidyapeetham, India
| ๐ค Team Member | ๐ฏ Role | ๐ Profile |
|---|---|---|
| Ganesh Sundhar S | Lead Researcher | Deep Learning & NLP |
| Durai Singh K | ML Engineer | Feature Engineering & Ensemble |
| Gnanasabesan G | Data Scientist | Preprocessing & Analysis |
| Hari Krishnan N | AI Researcher | Model Architecture |
| Dhanush MC | Software Engineer | Pipeline & Optimization |
๐๏ธ LT-EDI 2025 Tamil-English Code-Mixed Hate Speech Dataset
| ๐ Split | ๐ข Count | ๐ Description |
|---|---|---|
| ๐ Training | 5,512 | Comments for model training |
| ๐ Development | 787 | Comments for validation |
| ๐งช Test | 1,576 | Comments for final evaluation |
| ๐ฆ Total | 7,875 | Complete dataset |
| ๐ท๏ธ Label | ๐ Description | ๐ฏ Target |
|---|---|---|
0 | Non-hate speech | Safe content |
1 | Hate speech | Caste/migration-based hate |
๐ธ Non-hate: "Good morning anna, how are you doing today?"
๐น Hate: "[Contains offensive content targeting specific communities]"
Note: The dataset contains Tamil-English code-mixed social media comments with varying degrees of code-switching and transliteration.
Our approach implements a sophisticated multi-stage pipeline that combines classical and modern NLP techniques.
Input Text โ Replace newlines โ Convert emojis โ Remove URLs โ
Normalize spaces โ Convert to lowercase โ Output
Input Text โ Basic cleaning โ Tamil Unicode to English โ
Remove repeated chars โ Remove non-ASCII โ Output
๐ Preprocessing Steps:
graph LR
A[Raw Text] --> B[TF-IDF Vectorizer]
B --> C[~22,000 dimensions]
C --> D[Truncated SVD]
D --> E[512/1024/2048 dims]
E --> F[MLP Compression]
F --> G[32/64/128 dims]
| ๐ค Model | ๐ Type | ๐ค Input | ๐ Dimensions |
|---|---|---|---|
| Google BERT | bert-large-uncased | Transliterated | 768 โ 960 |
| XLM-RoBERTa Base | xlm-roberta-base | Original | 768 โ 960 |
| XLM-RoBERTa Large | xlm-roberta-large | Original | 1024 โ 960 |
| IndicBERT | IndicBERTv2-MLM | Original | 768 โ 960 |
| Seanbenhur BERT | tanglish-offensive | Transliterated | 768 โ 960 |
graph TD
A[TF-IDF Features] --> D[Feature Fusion]
B[BERT Embeddings] --> D
C[RoBERTa Embeddings] --> D
D --> E[ML Classifiers]
E --> F[Level 1: Top-3 Voting]
F --> G[Level 2: Cross-Model Voting]
G --> H[Level 3: Multi-Scale Voting]
H --> I[Final Prediction]
๐ณ Tree-Based Models:
๐ Linear Models:
๐ฎ Other Models:
๐ง Comprehensive System Architecture
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | Random Forest | 0.803 | ๐ข Good |
| IndicBERT | Random Forest | 0.817 | ๐ก Very Good |
| SeanBenhur BERT | XGBoost | 0.814 | ๐ก Very Good |
| XLM-R Base | Random Forest | 0.807 | ๐ข Good |
| XLM-R Large | Extra Trees | 0.806 | ๐ข Good |
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | SVM | 0.818 | ๐ก Very Good |
| IndicBERT | Random Forest | 0.829 | ๐ Excellent |
| SeanBenhur BERT | Random Forest | 0.822 | ๐ก Very Good |
| XLM-R Base | Nu-SVM | 0.825 | ๐ก Very Good |
| XLM-R Large | Random Forest | 0.830 | ๐ Excellent |
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | Gradient Boosting | 0.839 | ๐ฅ Outstanding |
| IndicBERT | Ridge Regression | 0.824 | ๐ก Very Good |
| SeanBenhur BERT | Nu-SVM | 0.826 | ๐ก Very Good |
| XLM-R Base | Random Forest | 0.835 | ๐ Excellent |
| XLM-R Large | Random Forest | 0.833 | ๐ Excellent |
๐ LT-EDI 2025 Leaderboard
| ๐ Rank | ๐ฅ Team Name | ๐ F1-Score | ๐ Gap | ๐ฏ Status |
|---|---|---|---|---|
| ๐ฅ 1st | CUET_N317 | 0.88105 | - | ๐ฅ Winner |
| ๐ฅ 2nd | CUET's_white_walkers | 0.86289 | -0.018 | ๐ Runner-up |
| ๐ฅ 3rd | Wise (Ours) | 0.81827 | -0.044 | โจ Bronze |
| 4th | CUET_blitz_aces | 0.81682 | -0.001 | ๐ Close |
| 5th | hinterwelt | 0.80916 | -0.009 | ๐ช Strong |
๐ฏ Achievement: Our team secured 3rd place out of numerous international participants, demonstrating the effectiveness of our multi-scale ensemble approach!
๐ Model Training Visualization Across Different Dimensions
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
# Python 3.8+ required
python --version # Should be >= 3.8
# Clone the repository
git clone https://github.com/your-username/CasteMigrationHateSpeech.git
cd CasteMigrationHateSpeech
# Install dependencies
pip install -r requirements.txt
# Install additional dependencies
pip install torch torchvision transformers
pip install xgboost lightgbm catboost
# Navigate to preprocessors
cd "DL Feature set 1024/Processors"
# Run preprocessing notebooks
jupyter notebook with_transliteration_processor.ipynb
jupyter notebook no_transliteration_processor.ipynb
# Generate TF-IDF features
jupyter notebook tf_idf_vectorizer.ipynb
# Apply vectorizer
jupyter notebook apply_vectorizer.ipynb
# Navigate to trainers
cd "../Trainers"
# Train transformer models
python training_bert.py # Configure model in script
# Navigate to ML heads
cd "../../ML Classification Heads"
# Run ensemble classification
jupyter notebook code.ipynb
๐ CasteMigrationHateSpeech-main/
โ
โโโ ๐ DL Feature set 512/ # 512-dimensional experiments
โ โโโ ๐ค Models/ # Transformer model definitions
โ โ โโโ google_bert.py
โ โ โโโ indic_model.py
โ โ โโโ tanglish_model.py
โ โ โโโ xlm_roberta_base.py
โ โ โโโ xlm_roberta_large.py
โ โ
โ โโโ ๐ No trans data/ # Non-transliterated features
โ โ โโโ test_features_no_trans.csv
โ โ โโโ test_processed_no_trans.csv
โ โ โโโ tfidf_vectorizer_2.pkl
โ โ
โ โโโ ๐ Original Data/ # Raw dataset
โ โ โโโ test.csv
โ โ
โ โโโ ๐ง Processors/ # Data preprocessing scripts
โ โ โโโ apply_vectorizer.ipynb
โ โ โโโ no_transliteration_processor.ipynb
โ โ โโโ tf_idf_vectorizer.ipynb
โ โ โโโ with_transliteration_processor.ipynb
โ โ
โ โโโ ๐ Train Data/ # Training results & visualizations
โ โ โโโ Graphs/ # Training performance plots
โ โ โโโ Logs/ # Training logs
โ โ โโโ Results/ # Model outputs
โ โ
โ โโโ ๐๏ธ Trainers/ # Training infrastructure
โ โโโ classification_features_generator.ipynb
โ โโโ dataset.py
โ โโโ logger.py
โ โโโ trainer.py
โ โโโ training_bert.py
โ
โโโ ๐ DL Feature set 1024/ # 1024-dimensional experiments
โ โโโ [Same structure as 512]
โ
โโโ ๐ DL Feature set 2048/ # 2048-dimensional experiments
โ โโโ [Same structure as 512]
โ
โโโ ๐ Trans data/ # Transliterated features
โ โโโ test_features.csv
โ โโโ test_processed.csv
โ โโโ tfidf_vectorizer_1.pkl
โ
โโโ ๐ผ๏ธ Images/ # Documentation assets
โ โโโ overview.png
โ
โโโ ๐ฏ ML Classification Heads/ # Ensemble classification
โ โโโ size 512/ # 512-dim ensemble results
โ โโโ size 1024/ # 1024-dim ensemble results
โ โโโ size 2048/ # 2048-dim ensemble results
โ โโโ code.ipynb # Main ensemble script
โ โโโ final_1024.csv # Final predictions
โ โโโ final_2048.csv
โ โโโ final_512.csv
โ โโโ best_submission.csv # Competition submission
โ
โโโ ๐ README.md # This file
๐ ๏ธ Technology Stack
| ๐ท๏ธ Package | ๐ข Version | ๐ Purpose |
|---|---|---|
3.8+ | Programming language | |
2.0+ | Deep learning framework | |
4.0+ | Pre-trained models | |
1.0+ | Machine learning |
| ๐ท๏ธ Package | ๐ Purpose |
|---|---|
xgboost | Gradient boosting |
lightgbm | Light gradient boosting |
catboost | Categorical boosting |
pandas | Data manipulation |
numpy | Numerical computing |
nltk | Natural language processing |
emoji | Emoji handling |
pip install torch>=2.0 transformers>=4.0 scikit-learn>=1.0 \
xgboost lightgbm catboost pandas numpy nltk emoji \
matplotlib seaborn tqdm jupyter
| ๐ก Finding | ๐ Impact | ๐ Details |
|---|---|---|
| ๐ข Multi-scale representations | +3.6% F1 | Different dimensions (512/1024/2048) capture varying feature granularity |
| ๐ค Hybrid features | +2.8% F1 | TF-IDF + transformers = statistical + contextual information |
| ๐ง Model-specific preprocessing | +1.9% F1 | Transliteration vs. original text per model type |
| ๐ณ๏ธ Ensemble diversity | +4.2% F1 | Hierarchical voting across features, models, and scales |
๐ฅ Best Performing: 2048-dimensional features
๐ฏ Most Consistent: Random Forest classifiers
๐ Biggest Surprise: Gradient Boosting on Google BERT
๐ Sweet Spot: 1024-dimensional IndicBERT
Advanced hate speech detection in Tamil-English code-mixed social media content using hybrid deep learning architectures.
Jupyter Notebook
0
1 commits
updated Jul 30, 2025
๐ฏ Advanced hate speech detection in Tamil-English code-mixed social media content using hybrid deep learning architectures
This repository contains our award-winning submission to the LT-EDI 2025 shared task on caste and migration-based hate speech detection in code-mixed Tamil social media content. Our innovative multi-scale hybrid architecture combines classical TF-IDF features with state-of-the-art transformer embeddings, achieving 3rd place with an impressive F1-score of 0.818.
๐๏ธ Multi-scale Hybrid Architecture Overview
Our solution achieved outstanding performance in the LT-EDI 2025 shared task:
| ๐ Rank | ๐ฅ Team Name | ๐ F1-Score | ๐ Performance |
|---|---|---|---|
| ๐ฅ 1st | CUET_N317 | 0.88105 | Leading |
| ๐ฅ 2nd | CUET's_white_walkers | 0.86289 | Strong |
| ๐ฅ 3rd | Wise (Ours) | 0.81827 | Excellent |
| 4th | CUET_blitz_aces | 0.81682 | Good |
| 5th | hinterwelt | 0.80916 | Good |
๐ Amrita School of Artificial Intelligence
Coimbatore, Amrita Vishwa Vidyapeetham, India
| ๐ค Team Member | ๐ฏ Role | ๐ Profile |
|---|---|---|
| Ganesh Sundhar S | Lead Researcher | Deep Learning & NLP |
| Durai Singh K | ML Engineer | Feature Engineering & Ensemble |
| Gnanasabesan G | Data Scientist | Preprocessing & Analysis |
| Hari Krishnan N | AI Researcher | Model Architecture |
| Dhanush MC | Software Engineer | Pipeline & Optimization |
๐๏ธ LT-EDI 2025 Tamil-English Code-Mixed Hate Speech Dataset
| ๐ Split | ๐ข Count | ๐ Description |
|---|---|---|
| ๐ Training | 5,512 | Comments for model training |
| ๐ Development | 787 | Comments for validation |
| ๐งช Test | 1,576 | Comments for final evaluation |
| ๐ฆ Total | 7,875 | Complete dataset |
| ๐ท๏ธ Label | ๐ Description | ๐ฏ Target |
|---|---|---|
0 | Non-hate speech | Safe content |
1 | Hate speech | Caste/migration-based hate |
๐ธ Non-hate: "Good morning anna, how are you doing today?"
๐น Hate: "[Contains offensive content targeting specific communities]"
Note: The dataset contains Tamil-English code-mixed social media comments with varying degrees of code-switching and transliteration.
Our approach implements a sophisticated multi-stage pipeline that combines classical and modern NLP techniques.
Input Text โ Replace newlines โ Convert emojis โ Remove URLs โ
Normalize spaces โ Convert to lowercase โ Output
Input Text โ Basic cleaning โ Tamil Unicode to English โ
Remove repeated chars โ Remove non-ASCII โ Output
๐ Preprocessing Steps:
graph LR
A[Raw Text] --> B[TF-IDF Vectorizer]
B --> C[~22,000 dimensions]
C --> D[Truncated SVD]
D --> E[512/1024/2048 dims]
E --> F[MLP Compression]
F --> G[32/64/128 dims]
| ๐ค Model | ๐ Type | ๐ค Input | ๐ Dimensions |
|---|---|---|---|
| Google BERT | bert-large-uncased | Transliterated | 768 โ 960 |
| XLM-RoBERTa Base | xlm-roberta-base | Original | 768 โ 960 |
| XLM-RoBERTa Large | xlm-roberta-large | Original | 1024 โ 960 |
| IndicBERT | IndicBERTv2-MLM | Original | 768 โ 960 |
| Seanbenhur BERT | tanglish-offensive | Transliterated | 768 โ 960 |
graph TD
A[TF-IDF Features] --> D[Feature Fusion]
B[BERT Embeddings] --> D
C[RoBERTa Embeddings] --> D
D --> E[ML Classifiers]
E --> F[Level 1: Top-3 Voting]
F --> G[Level 2: Cross-Model Voting]
G --> H[Level 3: Multi-Scale Voting]
H --> I[Final Prediction]
๐ณ Tree-Based Models:
๐ Linear Models:
๐ฎ Other Models:
๐ง Comprehensive System Architecture
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | Random Forest | 0.803 | ๐ข Good |
| IndicBERT | Random Forest | 0.817 | ๐ก Very Good |
| SeanBenhur BERT | XGBoost | 0.814 | ๐ก Very Good |
| XLM-R Base | Random Forest | 0.807 | ๐ข Good |
| XLM-R Large | Extra Trees | 0.806 | ๐ข Good |
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | SVM | 0.818 | ๐ก Very Good |
| IndicBERT | Random Forest | 0.829 | ๐ Excellent |
| SeanBenhur BERT | Random Forest | 0.822 | ๐ก Very Good |
| XLM-R Base | Nu-SVM | 0.825 | ๐ก Very Good |
| XLM-R Large | Random Forest | 0.830 | ๐ Excellent |
| ๐ค Transformer | ๐ Best Model | ๐ F1-Score | ๐ฏ Performance |
|---|---|---|---|
| Google BERT | Gradient Boosting | 0.839 | ๐ฅ Outstanding |
| IndicBERT | Ridge Regression | 0.824 | ๐ก Very Good |
| SeanBenhur BERT | Nu-SVM | 0.826 | ๐ก Very Good |
| XLM-R Base | Random Forest | 0.835 | ๐ Excellent |
| XLM-R Large | Random Forest | 0.833 | ๐ Excellent |
๐ LT-EDI 2025 Leaderboard
| ๐ Rank | ๐ฅ Team Name | ๐ F1-Score | ๐ Gap | ๐ฏ Status |
|---|---|---|---|---|
| ๐ฅ 1st | CUET_N317 | 0.88105 | - | ๐ฅ Winner |
| ๐ฅ 2nd | CUET's_white_walkers | 0.86289 | -0.018 | ๐ Runner-up |
| ๐ฅ 3rd | Wise (Ours) | 0.81827 | -0.044 | โจ Bronze |
| 4th | CUET_blitz_aces | 0.81682 | -0.001 | ๐ Close |
| 5th | hinterwelt | 0.80916 | -0.009 | ๐ช Strong |
๐ฏ Achievement: Our team secured 3rd place out of numerous international participants, demonstrating the effectiveness of our multi-scale ensemble approach!
๐ Model Training Visualization Across Different Dimensions
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
| ๐ค Model | ๐ Training Graph |
|---|---|
| Google BERT | ![]() |
| IndicBERT | ![]() |
| Seanbenhur BERT | ![]() |
| XLM-RoBERTa Base | ![]() |
| XLM-RoBERTa Large | ![]() |
# Python 3.8+ required
python --version # Should be >= 3.8
# Clone the repository
git clone https://github.com/your-username/CasteMigrationHateSpeech.git
cd CasteMigrationHateSpeech
# Install dependencies
pip install -r requirements.txt
# Install additional dependencies
pip install torch torchvision transformers
pip install xgboost lightgbm catboost
# Navigate to preprocessors
cd "DL Feature set 1024/Processors"
# Run preprocessing notebooks
jupyter notebook with_transliteration_processor.ipynb
jupyter notebook no_transliteration_processor.ipynb
# Generate TF-IDF features
jupyter notebook tf_idf_vectorizer.ipynb
# Apply vectorizer
jupyter notebook apply_vectorizer.ipynb
# Navigate to trainers
cd "../Trainers"
# Train transformer models
python training_bert.py # Configure model in script
# Navigate to ML heads
cd "../../ML Classification Heads"
# Run ensemble classification
jupyter notebook code.ipynb
๐ CasteMigrationHateSpeech-main/
โ
โโโ ๐ DL Feature set 512/ # 512-dimensional experiments
โ โโโ ๐ค Models/ # Transformer model definitions
โ โ โโโ google_bert.py
โ โ โโโ indic_model.py
โ โ โโโ tanglish_model.py
โ โ โโโ xlm_roberta_base.py
โ โ โโโ xlm_roberta_large.py
โ โ
โ โโโ ๐ No trans data/ # Non-transliterated features
โ โ โโโ test_features_no_trans.csv
โ โ โโโ test_processed_no_trans.csv
โ โ โโโ tfidf_vectorizer_2.pkl
โ โ
โ โโโ ๐ Original Data/ # Raw dataset
โ โ โโโ test.csv
โ โ
โ โโโ ๐ง Processors/ # Data preprocessing scripts
โ โ โโโ apply_vectorizer.ipynb
โ โ โโโ no_transliteration_processor.ipynb
โ โ โโโ tf_idf_vectorizer.ipynb
โ โ โโโ with_transliteration_processor.ipynb
โ โ
โ โโโ ๐ Train Data/ # Training results & visualizations
โ โ โโโ Graphs/ # Training performance plots
โ โ โโโ Logs/ # Training logs
โ โ โโโ Results/ # Model outputs
โ โ
โ โโโ ๐๏ธ Trainers/ # Training infrastructure
โ โโโ classification_features_generator.ipynb
โ โโโ dataset.py
โ โโโ logger.py
โ โโโ trainer.py
โ โโโ training_bert.py
โ
โโโ ๐ DL Feature set 1024/ # 1024-dimensional experiments
โ โโโ [Same structure as 512]
โ
โโโ ๐ DL Feature set 2048/ # 2048-dimensional experiments
โ โโโ [Same structure as 512]
โ
โโโ ๐ Trans data/ # Transliterated features
โ โโโ test_features.csv
โ โโโ test_processed.csv
โ โโโ tfidf_vectorizer_1.pkl
โ
โโโ ๐ผ๏ธ Images/ # Documentation assets
โ โโโ overview.png
โ
โโโ ๐ฏ ML Classification Heads/ # Ensemble classification
โ โโโ size 512/ # 512-dim ensemble results
โ โโโ size 1024/ # 1024-dim ensemble results
โ โโโ size 2048/ # 2048-dim ensemble results
โ โโโ code.ipynb # Main ensemble script
โ โโโ final_1024.csv # Final predictions
โ โโโ final_2048.csv
โ โโโ final_512.csv
โ โโโ best_submission.csv # Competition submission
โ
โโโ ๐ README.md # This file
๐ ๏ธ Technology Stack
| ๐ท๏ธ Package | ๐ข Version | ๐ Purpose |
|---|---|---|
3.8+ | Programming language | |
2.0+ | Deep learning framework | |
4.0+ | Pre-trained models | |
1.0+ | Machine learning |
| ๐ท๏ธ Package | ๐ Purpose |
|---|---|
xgboost | Gradient boosting |
lightgbm | Light gradient boosting |
catboost | Categorical boosting |
pandas | Data manipulation |
numpy | Numerical computing |
nltk | Natural language processing |
emoji | Emoji handling |
pip install torch>=2.0 transformers>=4.0 scikit-learn>=1.0 \
xgboost lightgbm catboost pandas numpy nltk emoji \
matplotlib seaborn tqdm jupyter
| ๐ก Finding | ๐ Impact | ๐ Details |
|---|---|---|
| ๐ข Multi-scale representations | +3.6% F1 | Different dimensions (512/1024/2048) capture varying feature granularity |
| ๐ค Hybrid features | +2.8% F1 | TF-IDF + transformers = statistical + contextual information |
| ๐ง Model-specific preprocessing | +1.9% F1 | Transliteration vs. original text per model type |
| ๐ณ๏ธ Ensemble diversity | +4.2% F1 | Hierarchical voting across features, models, and scales |
๐ฅ Best Performing: 2048-dimensional features
๐ฏ Most Consistent: Random Forest classifiers
๐ Biggest Surprise: Gradient Boosting on Google BERT
๐ Sweet Spot: 1024-dimensional IndicBERT