DistilBERT-SarcOji-KD-v2

distilbert student fine-tuned on SarcOji with sarcasm-aware emoji embeddings injected directly into the token-embedding matrix, distilled from Vandita/Bert-finetuned-Sarc.

Results

split accuracy precision recall F1 MCC ROC-AUC
validation 0.8832 0.8550 0.8430 0.8490 0.7538 0.9531
SarcOjiTest1 0.6606 0.7545 0.5257 0.6196 0.3482 0.7489
SarcOjiTest2 0.7275 0.4455 0.3721 0.4055 0.2321 0.6637

SarcOjiTest2 is ~75/25 negative-skewed, so its accuracy is not comparable to Test1's — MCC and ROC-AUC are the meaningful columns there.

Distillation

Hinton et al. (2015): L = α·T²·KL(teacher‖student) + (1−α)·CE, with T = 3, α = 0.5. The T² factor is applied, so soft-target gradients do not shrink as T rises.

Emoji handling

1444 emoji tokens added to the tokenizer (vocab 30522 → 31959). Each new row of the 768-d embedding matrix was initialised from a 300-d sarcasm-aware emoji vector using concat-mean. Remaining dimensions hold the mean of the original vocabulary embeddings rather than zeros, so new tokens are not anchored to the origin.

Because the emoji are part of the vocabulary, this is a standard HuggingFace model — no custom architecture, no custom loader.

Usage

from transformers import AutoModelForSequenceClassification, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Vandita/DistilBERT-SarcOji-KD-v2")
model = AutoModelForSequenceClassification.from_pretrained("Vandita/DistilBERT-SarcOji-KD-v2")

Data

SarcOji, 80:20 stratified split. Duplicates retained; identical texts were kept on one side of the split so no text appears in both train and validation. Evaluated on SarcOjiTest1 and SarcOjiTest2 in full.

Downloads last month
11
Safetensors
Model size
68.1M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support