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)
Пример #2
0
 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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
 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é")