emo-detector / README.md
23f2001106
Updated README
fcca64e
---
language: en
license: mit
tags:
- text-classification
- multi-label
- emotion-detection
- huggingface
---
# emo-detector
**emo-detector** is a multi-label emotion detection model for text. It predicts one or more emotions from the following labels:
- anger
- fear
- joy
- sadness
- surprise
## Model Details
- **Architecture:** Pretrained DeBERTa + custom FFNN classifier
- **Task:** Multi-label text classification
- **Tokenizer:** DeBERTa tokenizer (`microsoft/deberta-v3-base`)
- **Output:** Probabilities → Thresholded to 0/1
## Custom Model Class
This model uses a custom architecture defined inside the `emo_detector/` module:
- `emo_detector/configuration_bert_ffnn.py` → `BertFFNNConfig`
- `emo_detector/modeling_bert_ffnn.py` → `BERT_FFNN`
To load or fine-tune this model, you must download the full repository (including the `emo_detector/` folder).
The recommended way is to use `snapshot_download()` from Hugging Face Hub.
## Installation
```bash
pip install torch transformers huggingface_hub
```
## Usage
```python
import sys
import torch
from transformers import AutoTokenizer
from huggingface_hub import snapshot_download
# Download entire repository
repo_dir = snapshot_download("NeuralNest05/emo-detector")
sys.path.append(repo_dir)
# Import custom architecture + config
from emo_detector.configuration_bert_ffnn import BertFFNNConfig
from emo_detector.modeling_bert_ffnn import BERT_FFNN
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained("NeuralNest05/emo-detector")
# Load model config and architecture
config = BertFFNNConfig.from_pretrained("NeuralNest05/emo-detector")
model = BERT_FFNN(config)
# Load weights
model.load_state_dict(torch.load(f"{repo_dir}/pytorch_model.bin", map_location=DEVICE))
model.to(DEVICE)
model.eval()
# Example prediction
texts = ["I am very happy today!", "This is scary..."]
encodings = tokenizer(texts, truncation=True, padding=True, return_tensors="pt").to(DEVICE)
with torch.no_grad():
logits = model(**encodings)
probs = torch.sigmoid(logits)
threshold = 0.5
preds = (probs > threshold).int()
print(preds)
```
## Output Format
Each prediction corresponds to the five emotion labels in this order:
```
["anger", "fear", "joy", "sadness", "surprise"]
```
Output is a multi-hot vector, e.g.:
```
[0, 0, 1, 0, 0] → joy
```
## License
MIT License
## Acknowledgements
- Microsoft DeBERTa-v3
- Hugging Face Transformers
- PyTorch