示例#1
0
    def evalModel(self, k=None, beta=None):
        """
            Fontions qui nous permet d'evaluer le modèle self, un IRModel
        
        :type k: float
        :param k: parametre k pour les evaluations
        
        :type beta: float
        :param beta: parametre beta pour les FMesureAtK
        """

        if k is not None:
            self.k = k

        if beta is not None:
            self.beta = beta

        evaluation = [
            Eval.PrecisionAtK(self.k),
            Eval.RappelAtK(self.k),
            Eval.FMesureAtK(self.k, self.beta),
            Eval.AvgP(),
            Eval.reciprocalRank(),
            Eval.Ndcg()
        ]
        resultat = [[] for _ in range(len(evaluation))]

        for query in self.collectionQry:
            self.print_verbose('query =', self.collectionQry[query].getTexte())
            liste = [
                resultat[0] for resultat in self.model.getRanking(
                    self.collectionQry[query].getTexte())
            ]
            self.print_verbose(liste)
            for i in range(len(evaluation)):
                resultat[i].append(evaluation[i].evalQuery(
                    liste, self.collectionQry[query]))
        self.print_verbose(resultat)
        return [(np.mean(l), np.std(l)) for l in resultat]