File size: 7,858 Bytes
1638189 6826ebb 1638189 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
---
language:
- en
license: apache-2.0
base_model: microsoft/deberta-v3-small
tags:
- text-classification
- literary-analysis
- content-moderation
- explicitness-detection
- deberta-v3
- pytorch
- focal-loss
pipeline_tag: text-classification
model-index:
- name: deberta-v3-small-explicit-classifier-v2
results:
- task:
type: text-classification
name: Literary Explicitness Classification
dataset:
name: Custom Literary Dataset (Deduplicated)
type: custom
metrics:
- type: accuracy
value: 0.818
name: Accuracy
- type: f1
value: 0.754
name: Macro F1
- type: f1
value: 0.816
name: Weighted F1
widget:
- text: "Content warning: This story contains mature themes including explicit sexual content and violence."
example_title: "Content Disclaimer"
- text: "His hand lingered on hers as he helped her from the carriage, their fingers intertwining despite propriety."
example_title: "Suggestive Romance"
- text: "She gasped as he traced kisses down her neck, his hands exploring the curves of her body with growing urgency."
example_title: "Explicit Sexual"
- text: "The morning mist drifted across the Yorkshire moors as Elizabeth walked the familiar path to the village."
example_title: "Non-Explicit Literary"
---
# Literary Content Classifier - DeBERTa v3 Small (v2.0)
An improved fine-tuned DeBERTa-v3-small model for sophisticated literary content analysis across 7 categories of explicitness. This v2.0 model features **significant improvements** over the original, including focal loss training, extended epochs, and data quality enhancements.
## 🚀 Key Improvements in v2.0
- **+4.5% accuracy improvement** (81.8% vs 77.3%)
- **+6.4% macro F1 improvement** (0.754 vs 0.709)
- **+21% improvement on violent content** (F1: 0.581 vs 0.478)
- **+19% improvement on suggestive content** (F1: 0.476 vs 0.400)
- **Focal loss training** for better minority class performance
- **Clean dataset** with cross-split contamination resolved
- **Extended training** (4.79 epochs vs 1.1 epochs)
## Model Description
This model provides nuanced classification of textual content across 7 categories, enabling sophisticated analysis for digital humanities, content curation, and literary research applications.
### Categories
| ID | Category | Description | F1 Score |
|----|----------|-------------|----------|
| 0 | EXPLICIT-DISCLAIMER | Content warnings and age restriction notices | **0.977** |
| 1 | EXPLICIT-OFFENSIVE | Profanity, crude language, offensive content | **0.813** |
| 2 | EXPLICIT-SEXUAL | Graphic sexual content and detailed intimate scenes | **0.930** |
| 3 | EXPLICIT-VIOLENT | Violent or disturbing content | **0.581** |
| 4 | NON-EXPLICIT | Clean, family-friendly content | **0.851** |
| 5 | SEXUAL-REFERENCE | Mentions of sexual topics without graphic description | **0.652** |
| 6 | SUGGESTIVE | Mild innuendo or romantic themes without explicit detail | **0.476** |
## Performance Metrics
### Overall Performance
- **Accuracy**: 81.8%
- **Macro F1**: 0.754
- **Weighted F1**: 0.816
### Detailed Results (Test Set)
```
precision recall f1-score support
EXPLICIT-DISCLAIMER 0.95 1.00 0.98 19
EXPLICIT-OFFENSIVE 0.82 0.88 0.81 414
EXPLICIT-SEXUAL 0.93 0.91 0.93 514
EXPLICIT-VIOLENT 0.44 0.62 0.58 24
NON-EXPLICIT 0.77 0.87 0.85 683
SEXUAL-REFERENCE 0.63 0.73 0.65 212
SUGGESTIVE 0.37 0.46 0.48 134
accuracy 0.82 2000
macro avg 0.65 0.78 0.75 2000
weighted avg 0.75 0.82 0.82 2000
```
## Training Details
### Model Architecture
- **Base Model**: microsoft/deberta-v3-small
- **Parameters**: 141.9M (6 layers, 768 hidden, 12 attention heads)
- **Vocabulary**: 128,100 tokens
- **Max Sequence Length**: 512 tokens
### Training Configuration
- **Training Method**: Focal Loss (γ=2.0) for class imbalance
- **Epochs**: 4.79 (early stopped)
- **Learning Rate**: 5e-5 with cosine schedule
- **Batch Size**: 16 (effective 32 with gradient accumulation)
- **Warmup Steps**: 1,000
- **Weight Decay**: 0.01
- **Early Stopping**: Patience 5 on macro F1
### Dataset
- **Total Samples**: 119,023 (after deduplication)
- **Training**: 83,316 samples
- **Validation**: 17,853 samples
- **Test**: 17,854 samples
- **Data Quality**: Cross-split contamination eliminated (2,127 duplicates removed)
### Training Environment
- **Framework**: PyTorch + Transformers
- **Hardware**: Apple Silicon (MPS)
- **Training Time**: ~13.7 hours
## Usage
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
# Load model and tokenizer
model_id = "your-username/deberta-v3-small-explicit-classifier-v2"
model = AutoModelForSequenceClassification.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)
# Create classification pipeline
classifier = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
return_all_scores=True,
truncation=True
)
# Single classification
text = "His hand lingered on hers as he helped her from the carriage."
result = classifier(text)
print(f"Top prediction: {result[0]['label']} ({result[0]['score']:.3f})")
# All class probabilities
for class_result in result:
print(f"{class_result['label']}: {class_result['score']:.3f}")
```
### Recommended Thresholds (F1-Optimized)
For applications requiring specific precision/recall trade-offs:
| Class | Optimal Threshold | Precision | Recall | F1 |
|-------|------------------|-----------|--------|-----|
| EXPLICIT-DISCLAIMER | 0.995 | 0.950 | 1.000 | 0.974 |
| EXPLICIT-OFFENSIVE | 0.626 | 0.819 | 0.829 | 0.824 |
| EXPLICIT-SEXUAL | 0.456 | 0.927 | 0.911 | 0.919 |
| EXPLICIT-VIOLENT | 0.105 | 0.441 | 0.625 | 0.517 |
| NON-EXPLICIT | 0.103 | 0.768 | 0.874 | 0.818 |
| SEXUAL-REFERENCE | 0.355 | 0.629 | 0.726 | 0.674 |
| SUGGESTIVE | 0.530 | 0.370 | 0.455 | 0.408 |
## Model Files
- `model.safetensors`: Model weights in SafeTensors format
- `config.json`: Model configuration with proper label mappings
- `tokenizer.json`, `spm.model`: SentencePiece tokenizer files
- `label_mapping.json`: Label ID to name mapping reference
## Limitations & Considerations
1. **Challenging Distinctions**: SUGGESTIVE vs SEXUAL-REFERENCE categories remain difficult to distinguish due to conceptual overlap
2. **Minority Classes**: EXPLICIT-VIOLENT and SUGGESTIVE classes have lower F1 scores due to limited training data
3. **Context Dependency**: Short text snippets may lack sufficient context for accurate classification
4. **Domain Specificity**: Optimized for literary and review content; performance may vary on other text types
5. **Language**: English text only
## Evaluation Artifacts
The model includes comprehensive evaluation materials:
- Confusion matrix visualization
- Per-class precision-recall curves
- ROC curves for all categories
- Calibration analysis
- Recommended decision thresholds
## Ethical Use
This model is designed for:
- Academic research and digital humanities
- Content curation and library science applications
- Literary analysis and publishing workflows
- Educational content assessment
**Important**: This model should be used responsibly with human oversight for content moderation decisions.
## Citation
```bibtex
@misc{literary-explicit-classifier-v2-2025,
title={Literary Content Analysis: Improved Multi-Class Classification with Focal Loss},
author={Explicit Content Research Team},
year={2025},
note={DeBERTa-v3-small fine-tuned for literary explicitness detection}
}
```
## License
This model is released under the Apache 2.0 license. |