def dicoSimilaire(dicoDocuments): print("Creation du dico des pages similaires"); dicoSim = dict() compteur = 1 taille = len(dicoDocuments.items()); print("Traitement pages similaires\n") for lien1,texte1 in dicoDocuments.items(): for lien2,texte2 in dicoDocuments.items(): if(lien1 != lien2): d = textdistance.hamming.similarity(texte1,texte2) s = dicoSim.setdefault(lien1,set()) if(d>300): # si leur similarité est supérieur à 300 on ajoute la page comme valeur dans le set s.add(lien2) progress_bar_test.print_progress_bar(compteur, taille, prefix = 'Vérifie si les fichiers sont dans le dico : ' + str(compteur) + '/' + str(taille), suffix = '') compteur = compteur + 1 return (dicoSim)
def sort(self, documents_cleaner): """ Tri des l'ensemble de chaque mot de l'index par rapport à un score Chaque ensemble deviendra une liste triée en fonction des scores @params: documents_cleaner - Required : Les documents à trier (Dict) """ list_files_content = [] compteur = 1 taille = len(documents_cleaner.items()) # On recupere tous les contenus de tous les fichiers for file, content in documents_cleaner.items(): list_files_content.append(content) #Progress bar progress_bar_test.print_progress_bar( compteur, taille, prefix='Récupération des fichiers : ' + str(compteur) + '/' + str(taille), suffix='') compteur = compteur + 1 compteur = 1 taille = len(self.index.items()) #Pour chaque mot de chaque fichier on calcule le score associé for word, files in self.index.items(): dict_word = dict() for file in files: score_word_file = tf_idf_test.TF_frequence_brute( word, documents_cleaner[file]) #score_word_file = tf_idf_test.TF_IDF(tf_idf_test.TF_frequence_brute,word,documents_cleaner[file], list_files_content) dict_word[file] = score_word_file #On tri par rapport au score list_word = sorted(dict_word.items(), key=lambda t: t[1], reverse=True) # L'index est devient word [('file_name' : score) , ...] # On a ainsi un index où les fichiers sont triés par ordre décroissant en fonction du mot et des autres fichiers self.index[word] = list_word #Progress bar progress_bar_test.print_progress_bar( compteur, taille, prefix='Tri des fichiers (par score de mot) : ' + str(compteur) + '/' + str(taille), suffix='') compteur = compteur + 1
def supressionPage(dico): fichiers = os.listdir('./pages_web_test/') taille = len(fichiers) compteur = 1 for fichier in fichiers: try: #print(dico[fichier]); #KeyError #si dans le dico alors supprimé du dico les pages dans son set setfichiers = dico[fichier] #set de nom fichier (string) #print("clé trouvé") for f in setfichiers: dico.pop(f) #supprime clé nom du fichier du dico except KeyError: #print("pas de clé trouvé donc suppression de la page") os.remove('./pages_web_test/' + fichier) progress_bar_test.print_progress_bar(compteur, taille, prefix = 'Vérifie si les fichiers sont dans le dico : ' + str(compteur) + '/' + str(taille), suffix = '') compteur = compteur + 1
def listeSimilaire(request, Dico): liste = [] taille = len(request) compteur = 1 for motCle in request: #Progress bar progress_bar_test.print_progress_bar( compteur, taille, prefix='Mot de la recherche traité : ' + str(compteur) + '/' + str(taille), suffix='') compteur = compteur + 1 if (len(motCle) > 2): for keys in Dico.keys(): if textdistance.levenshtein(motCle, keys) < 2: liste.append(keys) else: liste.append(motCle) return liste
def convert_url(urls): """ Fonction permettant d'avoir les documents sous forme de dictionnaire {'file_name':'file_content'} Ici le file_content est normalisé et nettoyé On affiche en plus la progression des fichiers nettoyés @params: urls - Required : Les urls des fichiers """ res = dict() compteur = 1 taille = len(urls) for url in urls: #On associer à l'url son contenu nettoyé res[url] = cleaner_link(url) progress_bar_test.print_progress_bar( compteur, taille, prefix='Nettoyage des fichier : ' + str(compteur) + '/' + str(taille), suffix='') compteur = compteur + 1 return res
def build(self, documents): """ Construction de l'index inversé Cette fonction va permettre d'ajouter dans l'index inversé le mot et son fichier. @params: documents - Required : Les documents sur lesquels ont veux contruire l'index inversé (Dict) """ compteur = 1 taille = len(documents) for file_name, file_content in documents.items(): self.add(file_name, file_content) progress_bar_test.print_progress_bar( compteur, taille, prefix='Indexation des fichiers : ' + str(compteur) + '/' + str(taille), suffix='') compteur = compteur + 1 print( "\nTri des fichiers (trie décroissant des scores des fichiers en fonction du mot indexe) en cours..." ) self.sort(documents) print("\nTri des fichiers terminé")