Text Classification
Transformers
Safetensors
English
distilbert
command-classification
intent-detection
nlp
text-embeddings-inference
Instructions to use jhonacmarvik/distilbert-command-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use jhonacmarvik/distilbert-command-classifier with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="jhonacmarvik/distilbert-command-classifier")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("jhonacmarvik/distilbert-command-classifier") model = AutoModelForSequenceClassification.from_pretrained("jhonacmarvik/distilbert-command-classifier") - Notebooks
- Google Colab
- Kaggle
| library_name: transformers | |
| tags: | |
| - text-classification | |
| - distilbert | |
| - command-classification | |
| - intent-detection | |
| - nlp | |
| language: | |
| - en | |
| license: apache-2.0 | |
| metrics: | |
| - accuracy | |
| - f1 | |
| base_model: distilbert-base-uncased | |
| pipeline_tag: text-classification | |
| # DistilBERT Command Classifier | |
| A fine-tuned DistilBERT model for classifying user commands and questions with high accuracy, including handling of typos and variations. | |
| ## Model Details | |
| ### Model Description | |
| This model is a fine-tuned version of `distilbert-base-uncased` specifically trained to classify various command types from user input. It's designed to handle natural language commands with typos, variations in phrasing, and different command intents. | |
| - **Developed by:** jhonacmarvik | |
| - **Model type:** Text Classification (Sequence Classification) | |
| - **Language(s):** English | |
| - **License:** Apache 2.0 | |
| - **Finetuned from model:** distilbert-base-uncased | |
| ### Model Sources | |
| - **Base Model:** [distilbert-base-uncased](https://huggingface.co/distilbert-base-uncased) | |
| - **Framework:** PyTorch + Transformers | |
| ## Uses | |
| ### Direct Use | |
| This model can be directly used for: | |
| - **Command intent classification** - Identify what action the user wants to perform | |
| - **Voice assistant routing** - Route commands to appropriate handlers | |
| - **Natural language interface control** - Control systems through natural language | |
| - **Question vs Command detection** - Distinguish between questions and actionable commands | |
| ### Example Usage | |
| ```python | |
| from transformers import pipeline | |
| # Load the classifier | |
| classifier = pipeline( | |
| "text-classification", | |
| model="jhonacmarvik/distilbert-command-classifier", | |
| top_k=3 | |
| ) | |
| # Single prediction | |
| result = classifier("Turn on all work lights") | |
| print(result) | |
| # Output: [ | |
| # {'label': 'turn_on_lights', 'score': 0.9234}, | |
| # {'label': 'increase_brightness', 'score': 0.0543}, | |
| # {'label': 'turn_off_lights', 'score': 0.0123} | |
| # ] | |
| # Batch prediction | |
| commands = [ | |
| "Turn on all work lights", | |
| "Decrease the brightness", | |
| "What's the temperature?" | |
| ] | |
| results = classifier(commands) | |
| ``` | |
| ### Alternative Usage (Manual) | |
| ```python | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| import torch | |
| model = AutoModelForSequenceClassification.from_pretrained( | |
| "jhonacmarvik/distilbert-command-classifier" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| "jhonacmarvik/distilbert-command-classifier" | |
| ) | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| model.eval() | |
| # Tokenize | |
| text = "Turn on all work lights" | |
| tokens = tokenizer(text, return_tensors="pt", padding=True, truncation=True) | |
| tokens = {k: v.to(device) for k, v in tokens.items()} | |
| # Predict | |
| with torch.no_grad(): | |
| outputs = model(**tokens) | |
| probs = torch.softmax(outputs.logits, dim=-1) | |
| predicted_class = torch.argmax(probs, dim=-1) | |
| print(f"Predicted: {model.config.id2label[predicted_class.item()]}") | |
| print(f"Confidence: {probs[0][predicted_class].item():.4f}") | |
| ``` | |
| ### Downstream Use | |
| Can be integrated into: | |
| - Smart home systems | |
| - Voice assistants | |
| - Chatbots and conversational AI | |
| - IoT device control interfaces | |
| - Natural language command parsers | |
| ### Out-of-Scope Use | |
| This model is NOT suitable for: | |
| - Commands outside its training vocabulary | |
| - Languages other than English | |
| - Sentiment analysis or emotion detection | |
| - General text classification tasks unrelated to commands | |
| - Safety-critical applications without human oversight | |
| ## Bias, Risks, and Limitations | |
| - **Vocabulary Limitation:** Model is trained on specific command types and may not generalize to completely novel command categories | |
| - **Typo Handling:** While trained on variations with typos, extreme misspellings may reduce accuracy | |
| - **Context Awareness:** Model processes single utterances and doesn't maintain conversation context | |
| - **Language:** Only supports English language commands | |
| ### Recommendations | |
| - Implement confidence thresholds (e.g., > 0.7) before executing commands | |
| - Provide fallback mechanisms for low-confidence predictions | |
| - Add human-in-the-loop for critical operations | |
| - Monitor model performance on production data and retrain periodically | |
| - Test thoroughly with your specific use case before deployment | |
| ## Training Details | |
| ### Training Data | |
| - **Dataset:** Custom dataset of command variations with intentional typos and paraphrases | |
| - **Size:** Multiple variations per command class | |
| - **Format:** CSV with text variations and corresponding labels | |
| - **Split:** 80% training, 20% validation (stratified) | |
| ### Training Procedure | |
| #### Preprocessing | |
| - Text converted to lowercase | |
| - Tokenization using DistilBERT tokenizer | |
| - Maximum sequence length: 128 tokens | |
| - Padding and truncation applied | |
| #### Training Hyperparameters | |
| - **Training regime:** FP32 | |
| - **Optimizer:** AdamW | |
| - **Learning rate:** 2e-5 | |
| - **Warmup steps:** 100 | |
| - **Weight decay:** 0.01 | |
| - **Batch size:** 16 (per device) | |
| - **Number of epochs:** 10 | |
| - **Early stopping patience:** 3 epochs | |
| - **Evaluation strategy:** Per epoch | |
| - **Best model selection:** Based on eval_loss | |
| #### Hardware & Software | |
| - **Framework:** PyTorch + Transformers (Hugging Face) | |
| - **Base model:** distilbert-base-uncased | |
| - **Hardware:** GPU (CUDA-enabled) or CPU compatible | |
| ## Evaluation | |
| ### Metrics | |
| The model was evaluated using: | |
| - **Accuracy:** Overall classification accuracy | |
| - **F1 Score:** Per-class and macro-averaged F1 | |
| - **Precision & Recall:** Per-class metrics | |
| - **Confusion Matrix:** Visual representation of classification performance | |
| - **ROC-AUC:** Per-class ROC curves | |
| ### Results | |
| Model achieves high accuracy on the validation set with strong performance across all command classes. Detailed metrics are available in the training outputs. | |
| *Note: Specific metrics depend on your final training results. Update with actual values after training.* | |
| ## How to Get Started | |
| ### Installation | |
| ```bash | |
| pip install transformers torch | |
| ``` | |
| ### Quick Start | |
| ```python | |
| from transformers import pipeline | |
| classifier = pipeline( | |
| "text-classification", | |
| model="jhonacmarvik/distilbert-command-classifier" | |
| ) | |
| result = classifier("Turn on the lights") | |
| print(result) | |
| ``` | |
| ### Production Deployment | |
| For production use with custom loading pattern: | |
| ```python | |
| import os | |
| import torch | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| class CommandClassifier: | |
| def __init__(self): | |
| model_path = "jhonacmarvik/distilbert-command-classifier" | |
| self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| self.tokenizer = AutoTokenizer.from_pretrained(model_path) | |
| self.model = AutoModelForSequenceClassification.from_pretrained(model_path) | |
| self.model.to(self.device) | |
| self.model.eval() | |
| def predict(self, text: str, top_k: int = 3): | |
| tokens = self.tokenizer(text, return_tensors="pt", padding=True, truncation=True) | |
| tokens = {k: v.to(self.device) for k, v in tokens.items()} | |
| with torch.no_grad(): | |
| logits = self.model(**tokens).logits | |
| probs = torch.softmax(logits, dim=-1) | |
| top_probs, top_indices = torch.topk(probs, k=top_k) | |
| results = [] | |
| for prob, idx in zip(top_probs[0], top_indices[0]): | |
| results.append({ | |
| "label": self.model.config.id2label[idx.item()], | |
| "score": float(prob.item()) | |
| }) | |
| return results | |
| # Usage | |
| classifier = CommandClassifier() | |
| result = classifier.predict("Turn on lights", top_k=3) | |
| ``` | |
| ## Environmental Impact | |
| Training a single model on standard GPU hardware has minimal environmental impact compared to large language models. This model uses a lightweight DistilBERT architecture which is significantly more efficient than full BERT models. | |
| - **Hardware Type:** GPU (CUDA-enabled) | |
| - **Compute Region:** [Your region] | |
| - **Carbon Impact:** Minimal due to efficient architecture | |
| ## Technical Specifications | |
| ### Model Architecture | |
| - **Base Architecture:** DistilBERT (6-layer, 768-hidden, 12-heads) | |
| - **Parameters:** ~66M parameters | |
| - **Classification Head:** Linear layer for multi-class classification | |
| - **Dropout:** 0.1 (default DistilBERT configuration) | |
| - **Activation:** GELU | |
| ### Compute Infrastructure | |
| #### Hardware | |
| - Compatible with CPU and GPU (CUDA) | |
| - Recommended: GPU with 4GB+ VRAM for faster inference | |
| - Works on CPU for low-volume applications | |
| #### Software | |
| - Python 3.8+ | |
| - PyTorch 2.0+ | |
| - Transformers 4.30+ | |
| - CUDA 11.0+ (for GPU acceleration) | |
| ## Citation | |
| If you use this model in your research or application, please cite: | |
| ```bibtex | |
| @misc{distilbert-command-classifier, | |
| author = {jhonacmarvik}, | |
| title = {DistilBERT Command Classifier}, | |
| year = {2024}, | |
| publisher = {HuggingFace}, | |
| howpublished = {\url{https://huggingface.co/jhonacmarvik/distilbert-command-classifier}} | |
| } | |
| ``` | |
| ## Model Card Authors | |
| jhonacmarvik | |
| ## Model Card Contact | |
| For questions or issues, please open an issue in the model repository or contact through HuggingFace. |