def initialisation(): pm = Parsemail()#tain c quoi déja le truc pour écraser les méthodes??la surcharge, des constructeurs listeDmail, listeDmailRaci = pm.parsemail() fi = FichierIverse() dicoInv, nbmotsdocs, nbmotCorpus =fi.fichInv(listeDmail) dicoInvR, nbmotsdocsR, nbmotCorpusR = fi.fichInv(listeDmailRaci) ti = TfIdf(False,dicoInv,nbmotsdocs,nbmotCorpus) ti.calcul() ti.serialisation() ti2 =TfIdf(True, dicoInvR, nbmotsdocsR, nbmotCorpusR)#le true autorise la concaténation avec l'ancien dico ti2.calcul() ti2.serialisation()
def traitement_requete(self,requete): dicoreq = {} requete = requete.lower() parse = Parsemail(False) #dans l'initialisation de parsmail la detection et le trie des noms de fichier des mails est inutile.. stoplist = parse.stopwords() if self.flagRACI == True : listmotreqRACI = (parse.tokenostop(requete, stoplist))[1] listmotreq = (parse.tokenostop(requete, stoplist))[0] else: listmotreq = (parse.tokenostop(requete, stoplist))[0] #[0] pr le non racinisé #on ne calcule que le tf, car idf = log( nbdedocuments / nbdedocu_contenantle_mot ) = log(1/1) = 0 """ vérifier que le mot soit ds le grand dico...=>c'est vérifié, mais le tf est calculé avec la présence du mot. Ceci dit, ca reste cohérent du coup. """ for mot in listmotreq: if mot not in dicoreq: dicoreq[mot] = float( 1 / len(listmotreq) ) #calcule le tf else: dicoreq[mot] += float( 1 / len(listmotreq) ) #update le tf si plusieurs * le mm mot ds la requète if self.flagRACI == True : for mot in listmotreqRACI: if mot not in dicoreq: dicoreq[mot] = (float( 1 / len(listmotreq) ) / self.poids )#calcule le tf else: dicoreq[mot] += (float( 1 / len(listmotreq) ) / self.poids ) #update le tf si plusieurs * le mm mot ds la requète return dicoreq