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.