File size: 1,756 Bytes
c551752
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# 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