File size: 5,518 Bytes
1242396
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
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}}
}
```