diff --git a/utils/__init__.py b/utils/__init__.py index 02e1c74..e8a0178 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -1,8 +1,84 @@ """ Ce module contient des fonctions utilisataires """ +from HMM import HMM def normalize_probabilities(prob_fr: float, prob_en: float, prob_it: float, searched: float) -> float: sum = prob_fr + prob_en + prob_it return searched / sum + + +def forward_detection(hmm_fr: HMM, hmm_en: HMM, hmm_it: HMM, O: str): + """ + Prints the language detected with forward method + :param hmm_fr: lambda_fr + :param hmm_en: lambda_en + :param hmm_it: lambda_it + :param O: mot à détecter + :return: + """ + res_fr = hmm_fr.forward(O) + res_en = hmm_en.forward(O) + res_it = hmm_it.forward(O) + + proba_fr = normalize_probabilities(res_fr, res_en, res_it, res_fr) + proba_en = normalize_probabilities(res_fr, res_en, res_it, res_en) + proba_it = normalize_probabilities(res_fr, res_en, res_it, res_it) + + print(f'FR={proba_fr}, EN={proba_en}, IT={proba_it}') + + probas = [proba_fr, proba_en, proba_it] + + max_prob = proba_fr + language_index = 0 + for index in 1..len(probas): + if max_prob < probas[index]: + max_prob = probas[index] + language_index = index + + if language_index == 0: + print('Français') + elif language_index == 1: + print('Anglais') + else: + print('Italien') + + +def backward_detection(hmm_fr: HMM, hmm_en: HMM, hmm_it: HMM, O: str): + """ + Prints the language detected with backward method + :param hmm_fr: lambda_fr + :param hmm_en: lambda_en + :param hmm_it: lambda_it + :param O: mot à détecter + :return: + """ + res_fr = hmm_fr.backward(O) + res_en = hmm_en.backward(O) + res_it = hmm_it.backward(O) + + proba_fr = normalize_probabilities(res_fr, res_en, res_it, res_fr) + proba_en = normalize_probabilities(res_fr, res_en, res_it, res_en) + proba_it = normalize_probabilities(res_fr, res_en, res_it, res_it) + + print(f'FR={proba_fr}, EN={proba_en}, IT={proba_it}') + + probas = [proba_fr, proba_en, proba_it] + + max_prob = proba_fr + language_index = 0 + for index in 1..len(probas): + if max_prob < probas[index]: + max_prob = probas[index] + language_index = index + + if language_index == 0: + print('Français') + elif language_index == 1: + print('Anglais') + else: + print('Italien') + + +