| --- |
| license: mit |
| language: |
| - en |
| base_model: |
| - google-bert/bert-base-uncased |
| --- |
| # RustBusters BERT Relevance Assessment Model Card |
|
|
| ## Model Description |
|
|
| **Model Name:** RustBusters-BERT-Relevance-Classifier |
| **Base Model:** bert-base-uncased |
| **Architecture:** BERT (Bidirectional Encoder Representations from Transformers) |
| **Task:** Binary Text Classification |
| **Version:** 1.0 |
| **Last Updated:** March 2025 |
|
|
| ## Intended Use |
|
|
| This model is designed to classify incoming customer queries as either relevant or not relevant to laser cleaning services. The model serves as a first-line filter to: |
|
|
| - Identify queries related to laser cleaning that should be routed to RustBusters' customer service |
| - Filter out unrelated queries to improve response efficiency |
| - Help automate initial query triage in customer service workflows |
| - Support chatbots and digital assistants in determining when to engage with laser cleaning queries |
|
|
| ## Training Details |
|
|
| - **Base Model:** bert-base-uncased (110M parameters) |
| - **Training Data:** 714 examples (571 training, 143 testing) |
| - Positive examples (relevant to laser cleaning): 557 (78%) |
| - Negative examples (not relevant to laser cleaning): 157 (22%) |
| - **Training Method:** Fine-tuning with AdamW optimizer |
| - **Training Parameters:** |
| - Learning rate: 2e-5 |
| - Batch size: 16 |
| - Epochs: 3 |
| - Sequence length: 128 tokens |
| - **Performance:** |
| - Final accuracy: 95.8% |
| - Precision for relevant class: 0.97 |
| - Recall for relevant class: 0.97 |
| - F1-score for relevant class: 0.97 |
| - Precision for non-relevant class: 0.90 |
| - Recall for non-relevant class: 0.90 |
| - F1-score for non-relevant class: 0.90 |
|
|
| ## Performance and Limitations |
|
|
| - **Strengths:** |
| - High accuracy (95.8%) on test set |
| - Well-balanced precision and recall for both classes |
| - Effective at identifying laser cleaning related queries |
| - Small model size, efficient for deployment |
| - Fast inference times |
|
|
| - **Limitations:** |
| - Limited to binary classification (relevant vs. not relevant) |
| - May struggle with highly ambiguous queries |
| - Cannot categorize queries by type, urgency, or complexity |
| - Limited exposure to industry-specific terminology beyond training data |
| - Performance dependent on queries being similar to training examples |
|
|
| ## Implementation Guidelines |
|
|
| The model assigns label 1 for relevant queries and label 0 for non-relevant queries. Implementation should account for this labeling scheme: |
|
|
| ```python |
| def classify_query(text): |
| # Tokenize input |
| encoding = tokenizer( |
| text, |
| add_special_tokens=True, |
| max_length=128, |
| padding='max_length', |
| truncation=True, |
| return_attention_mask=True, |
| return_tensors='pt' |
| ) |
| |
| # Get prediction |
| model.eval() |
| with torch.no_grad(): |
| outputs = model( |
| input_ids=encoding['input_ids'].to(device), |
| attention_mask=encoding['attention_mask'].to(device) |
| ) |
| |
| # Apply softmax to get probabilities |
| probs = torch.nn.functional.softmax(outputs.logits, dim=1)[0] |
| class_0_prob = probs[0].item() # Not relevant probability |
| class_1_prob = probs[1].item() # Relevant probability |
| |
| # Simple threshold-based classification |
| predicted_class = 1 if class_1_prob > 0.5 else 0 |
| |
| # Optional: Enhanced classification with keyword verification |
| laser_keywords = ["laser", "clean", "rust", "metal", "surface"] |
| contains_keywords = any(keyword in text.lower() for keyword in laser_keywords) |
| |
| # Return classification result |
| if predicted_class == 1 or contains_keywords: |
| return "Relevant to laser cleaning" |
| else: |
| return "Not relevant to laser cleaning" |
| ``` |
|
|
| ## Data Characteristics |
|
|
| The model was trained on a rich dataset containing: |
| - Queries about laser cleaning services, pricing, processes, and applications |
| - Questions about materials that can be laser cleaned (metals, industrial equipment, automotive parts) |
| - Service area inquiries related to Huntsville and Alabama |
| - Edge cases like general rust removal without mentioning laser |
| - Negative examples including: |
| - General information requests unrelated to laser cleaning |
| - Other cleaning-related queries that aren't laser-specific |
| - Questions about completely different services and products |
|
|
| The dataset was systematically expanded through: |
| - Template-based generation with material/problem variations |
| - Compound questions combining multiple aspects of laser cleaning |
| - Paraphrasing of base examples |
| - Inclusion of carefully labeled ambiguous examples |
|
|
| ## Ethical Considerations |
|
|
| - **False Negatives:** Important customer inquiries might be misclassified as irrelevant |
| - **Transparency:** Users should be informed if their queries are being automatically filtered |
| - **Human Oversight:** Regular auditing of model classifications is recommended |
| - **Bias:** Monitor for potential bias against certain query formulations or terminology |
|
|
| ## Maintenance Recommendations |
|
|
| We recommend: |
| - Periodically retraining with new customer queries to capture evolving language patterns |
| - Monitoring performance metrics, especially on edge cases |
| - Adding any consistently misclassified queries to the training dataset |
| - Considering expansion to multi-class classification for more nuanced routing |
|
|
| ## Contact Information |
|
|
| For issues, improvements, or questions about this model, please contact the RustBusters AI team. |
|
|
| --- |
|
|
| *This model card follows best practices for AI documentation and transparency.* |