cahlen's picture
Add fine-tuned DistilBERT model and card
1242396 verified
---
language: en
license: apache-2.0
library_name: transformers
tags:
- distilbert
- text-classification
- token-classification
- intent-classification
- slot-filling
- joint-intent-slot
- smart-home
- generated:Enfuse.io
pipeline_tag: token-classification # Or text-classification, often token is used for joint models
model-index:
- name: distilbert-joint-intent-slot-smarthome
results:
- task:
type: token-classification # Represents the slot filling part
name: Slot Filling
dataset:
name: enfuse/joint-intent-slot-smarthome
type: enfuse/joint-intent-slot-smarthome
config: default
split: test
metrics:
- type: micro_f1
value: 0.8800
name: Slot F1 (Micro)
- type: precision
value: 0.8800
name: Slot Precision (Micro)
- type: recall
value: 0.8800
name: Slot Recall (Micro)
- task:
type: text-classification # Represents the intent part
name: Intent Classification
dataset:
name: enfuse/joint-intent-slot-smarthome
type: enfuse/joint-intent-slot-smarthome
config: default
split: test
metrics:
- type: accuracy
value: 0.9208
name: Intent Accuracy
---
# DistilBERT for Smart Home Joint Intent Classification and Slot Filling
## Model Description
**Produced By:** [Enfuse.io](https://enfuse.io/)
This model is a fine-tuned version of `distilbert-base-uncased` specifically adapted for **joint intent classification and slot filling** in the **smart home domain**. Given a user command related to controlling smart home devices (like lights or thermostats), the model simultaneously predicts:
1. The user's **intent** (e.g., `set_device_state`, `get_device_state`).
2. The relevant **slots** (entities like `device_name`, `location`, `state`, `attribute_value`) within the command, using BIO tagging.
## Intended Use and Limitations
**Primary Intended Use:** This model is intended for **hobbyist experimentation and educational purposes** related to Natural Language Understanding (NLU) for smart home applications. It can be used as a baseline or starting point for understanding how to build NLU components for simple device control.
**Disclaimer:** **This model is NOT intended for use in production environments.** Enfuse.io takes **no responsibility** for the performance, reliability, security, or any consequences arising from the use of this model in production systems or safety-critical applications. Use in such contexts is entirely at the user's own risk.
**Out-of-Scope Use:**
* The model is not designed for general conversation or tasks outside the specific smart home intents and slots it was trained on.
* It has **no built-in mechanism for handling out-of-domain requests** (e.g., asking about weather, playing music). It will likely attempt to classify such requests into one of the known smart home intents, potentially leading to incorrect behavior.
* It has not been evaluated for fairness, bias, or robustness against adversarial inputs.
## Training Data
The model was fine-tuned on the `enfuse/joint-intent-slot-smarthome` dataset, specifically the `generated_smarthome_2016_unique.jsonl` version containing 2016 unique synthetic examples.
This dataset was generated by Enfuse.io using a combination of `mistralai/Mistral-7B-Instruct-v0.1` and `openai/gpt-4o`, followed by validation and de-duplication. Please refer to the [dataset card](https://huggingface.co/datasets/enfuse/joint-intent-slot-smarthome) for more details on the data generation process and limitations.
## Training Procedure
### Preprocessing
The text was tokenized using the `distilbert-base-uncased` tokenizer. Slot labels were converted to a BIO tagging scheme. Input sequences were padded and truncated to a maximum length of 128 tokens.
### Fine-tuning
The model was fine-tuned using the Hugging Face `transformers` library Trainer on a single NVIDIA RTX 5090.
* **Epochs:** 10
* **Batch Size:** 16 (per device)
* **Learning Rate:** 5e-5 (with linear decay)
* **Optimizer:** AdamW
* **Precision:** FP16
* **Dataset Split:** 80% Train (1612), 10% Validation (202), 10% Test (202)
* **Best Model Selection:** The checkpoint with the highest `eval_intent_accuracy` on the validation set during training was selected for the final model (corresponding to Epoch 8 or 10 in the 10-epoch run).
## Evaluation Results
The following results were achieved on the **test set** (202 examples) using the best checkpoint saved during training:
* **Intent Accuracy:** 92.08%
* **Slot F1 Score (Micro):** 88.00%
* **Slot Precision (Micro):** 88.00%
* **Slot Recall (Micro):** 88.00%
*(Note: These results are specific to this particular training setup and may vary with different hyperparameters or training runs.)*
## How to Use
*(You would typically add code examples here showing how to load and use the model with the Transformers pipeline or custom code, similar to the logic in `infer.py`. Since the user requested no code, this section is omitted but would normally be present.)*
## Model Card Contact
[Enfuse.io](https://enfuse.io/)
## Citation
If you use this model, please cite the dataset:
```bibtex
@misc{enfuse_smarthome_intent_slot_2024,
author = {Enfuse.io},
title = {Enfuse Smart Home Joint Intent and Slot Filling Dataset},
year = {2024},
publisher = {Hugging Face},
journal = {Hugging Face Hub},
howpublished = {\url{https://huggingface.co/datasets/enfuse/joint-intent-slot-smarthome}}
}
```