LT360
Final update
47e416f
# app/ml/__init__.py
from .nb_model import get_prediction_and_explanation_nb, nb_model, nb_preprocessor
from .bert_mini_model import get_prediction_and_explanation_bert_mini, bert_mini_model, bert_mini_tokenizer
from typing import Dict
def get_model_prediction(subject: str, sender: str, body: str, model_choice: str = "nb") -> Dict:
"""
# Dispatcher function to get predictions from the chosen model.
"""
if model_choice == "bert-mini":
if bert_mini_model is None or bert_mini_tokenizer is None:
return {"error": "BERT-Mini Model/Tokenizer is not available. Check server logs.",
"prediction": "Error", "label": -1, "confidence": 0.0, "explanation": []}
return get_prediction_and_explanation_bert_mini(subject, sender, body)
elif model_choice == "nb":
if nb_model is None or nb_preprocessor is None: # Check if NB loaded successfully
return {"error": "Multinomial Naive Bayes Model/Preprocessor is not available. Check server logs.",
"prediction": "Error", "label": -1, "confidence": 0.0, "explanation": []}
return get_prediction_and_explanation_nb(subject, sender, body)
else:
return {"error": f"Invalid model_choice: '{model_choice}'. Choose 'nb' or 'bert-mini'.",
"prediction": "Error", "label": -1, "confidence": 0.0, "explanation": []}
def check_model_status():
status = {
"naive_bayes": {
"model_loaded": nb_model is not None,
"preprocessor_loaded": nb_preprocessor is not None
},
"bert-mini": {
"model_loaded": bert_mini_model is not None,
"tokenizer_loaded": bert_mini_tokenizer is not None
}
}
return status