from typing import Tuple

import fasttext


fasttext_model_path = "classifiers/ultra_fineweb_en.bin"
# fasttext_model_path = "classifiers/ultra_fineweb_zh.bin"

fasttext_model = fasttext.load_model(fasttext_model_path)


def fasttext_infer(norm_content: str) -> Tuple[str, float]:
    """Fasttext inference function

    Args:
        content (str): input text
    
    Returns:
        str: json string with pred_label and pred_score
    """

    pred_label, pred_prob = fasttext_model.predict(norm_content)
    pred_label = pred_label[0]
    _score = min(pred_prob.tolist()[0], 1)
    if pred_label == "__label__neg":
        _score = 1 - _score

    return pred_label, _score