Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
# Emoloom-2B
|
6 |
+
|
7 |
+
**Emoloom-2B** is a ~2B parameter model fine-tuned for **emotion-centric dialogue understanding**.
|
8 |
+
It outputs both **categorical emotion labels** and **continuous Valence–Arousal–Dominance (VAD)** estimates in a structured JSON format.
|
9 |
+
|
10 |
+
---
|
11 |
+
|
12 |
+
## 📖 Model Details
|
13 |
+
|
14 |
+
* **Base model**: [Qwen-1.8B-Chat](https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat)
|
15 |
+
* **Fine-tuning objective**:
|
16 |
+
|
17 |
+
* Emotion classification (Macro-F1, P, R)
|
18 |
+
* VAD regression (minimize RMSE, maximize Pearson ρ)
|
19 |
+
* Structured response quality (ParseOK consistency)
|
20 |
+
* **Training mix**: GoEmotions, EmpatheticDialogues, MELD, with weak-label augmentation from NRC-VAD lexicon.
|
21 |
+
* **Best configuration**: 20:80 weak:gold ratio.
|
22 |
+
|
23 |
+
---
|
24 |
+
|
25 |
+
## ⚡ Performance
|
26 |
+
|
27 |
+
| Exp | Macro-F1 | Macro-P | Macro-R | VAD(1-RMSE) | ParseOK | n(dev) |
|
28 |
+
| ------------------------- | -------- | ------- | ------- | ----------- | ------- | ------ |
|
29 |
+
| sft_qwen_mix2080 | 0.3500 | 0.5000 | 0.2693 | 0.9417 | 1.000 | 3663 |
|
30 |
+
| sft_qwen_mix5050 | 0.3470 | 0.5000 | 0.2657 | 0.9337 | 1.000 | 3309 |
|
31 |
+
| sft_qwen_mix8020 | 0.3341 | 0.5000 | 0.2509 | 0.9135 | 1.000 | 2068 |
|
32 |
+
| sft_qwen_mix2080_dd_quick | 0.3071 | 0.5000 | 0.2136 | 0.8066 | 0.976 | 6261 |
|
33 |
+
|
34 |
+
---
|
35 |
+
|
36 |
+
## 🚀 Usage
|
37 |
+
|
38 |
+
```python
|
39 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
40 |
+
import torch, json
|
41 |
+
|
42 |
+
model = AutoModelForCausalLM.from_pretrained("Lixeeone/Emoloom-2B").to("cuda")
|
43 |
+
tokenizer = AutoTokenizer.from_pretrained("Lixeeone/Emoloom-2B")
|
44 |
+
|
45 |
+
text = "Utterance: I feel so lost today.\nContext: None\nPredict emotion + VAD:"
|
46 |
+
inputs = tokenizer(text, return_tensors="pt").to("cuda")
|
47 |
+
|
48 |
+
with torch.no_grad():
|
49 |
+
outputs = model.generate(**inputs, max_new_tokens=48)
|
50 |
+
gen_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
51 |
+
|
52 |
+
print(gen_text)
|
53 |
+
# Expected: {"labels": ["sad"], "vad": {"v": 0.3, "a": -0.2, "d": -0.4}}
|
54 |
+
```
|
55 |
+
|
56 |
+
---
|
57 |
+
|
58 |
+
## 🧩 Limitations
|
59 |
+
|
60 |
+
* Evaluated only on **English** text.
|
61 |
+
* DailyDialog cross-corpus generalization shows performance drop (F1 ~0.31).
|
62 |
+
* Weak labels from NRC-VAD are noisy; interpret fine-grained scores with caution.
|
63 |
+
|
64 |
+
---
|
65 |
+
|
66 |
+
## 📜 Citation
|
67 |
+
|
68 |
+
If you use this model, please cite:
|
69 |
+
|
70 |
+
```bibtex
|
71 |
+
@misc{emoloom2025,
|
72 |
+
title={Emoloom-2B: A 2B-parameter Emotion-Centric Dialogue Model},
|
73 |
+
author={Li, Zilin and collaborators},
|
74 |
+
year={2025},
|
75 |
+
url={https://huggingface.co/Lixeeone/Emoloom-2B}
|
76 |
+
}
|
77 |
+
```
|
78 |
+
|
79 |
+
|
80 |
+
|