#on construit le dictionnaire de lemmes si inexistant (pas besoin de redonner le nom du dictionnaire si celui-ci a deja ete cree) dictionnaire_treetagged_name= path_req + "Treetagger_lemmes.txt" if lemmadictionary==0: print "+++ creation du dictionnaire de lemmes \""+dictionnaire_treetagged_name+"\"" else: print "*** dictionnaire de lemmes non recree pour eviter une passe inutile" if lemmadictionary==0: contenu = fonctions_bdd.select_bdd_table(name_bdd,'billets','content,content_lemmatise',requete) else: contenu = '' occ_termes_lemmes=text_processing.lemmatisation(lemmadictionary,dictionnaire_treetagged_name,contenu,treetagger_dir)#cette fonction renvoie le dictionnaire termes/lemmes mais aussi un dictionnaire du nombre d'occurrences des couples (terme,lemme): occ #print occ_termes_lemmes dictionnaire_treetagged__formes_name = path_req + "Treetagger_lemmes_formes.txt" dictionnaire_treetagged__formemajoritaire_name = path_req + "Treetagger_lemmes_formemajoritaire.txt" print "+++ creation des fichiers de lemmes:\n 1. \""+dictionnaire_treetagged__formes_name+"\" (toutes les formes des lemmes)\n 2. \""+dictionnaire_treetagged__formemajoritaire_name+"\" (formes majoritaires)" lemme_maj = text_processing.extraire_forme_majoritaire(lemmadictionary,occ_termes_lemmes,dictionnaire_treetagged__formes_name,dictionnaire_treetagged__formemajoritaire_name) fonctions_lib.dumpingin(lemme_maj,name_export_lemme_pkl,requete) #where=0, on applique la requete resserree, where =1 on ne l'applique pas. where=1 if where==0: filename = "requete_OR.csv" filename_req = path_req + filename print "+++ on essaie d'importer la requete depuis le fichier "+filename_req try: where = fonctions_bdd.filtre_requete_base(filename_req) except: where=1
pool_size = int(multiprocessing.cpu_count() / 2 * 3) pool = multiprocessing.Pool(processes=pool_size) pool_outputs = pool.map(ngramme_fit, years) for y,x in enumerate(pool_outputs): ngrammes_auteurs_fit_year[y]=x[0] ngramme_billets_fit_year[y]=x[1] formes_fit_year[y]=x[2] formes={} for formes_x in formes_fit_year.values(): formes=fonctions_lib.merge(formes, formes_x, lambda x,y: fonctions_lib.merge(x,y,lambda x,y:x+y)) dictionnaire_treetagged__formes_name = path_req + "Treetagger_n-lemmes_formes.txt" dictionnaire_treetagged__formemajoritaire_name = path_req + "Treetagger_n-lemmes_formemajoritaire.txt" text_processing.extraire_forme_majoritaire(0,formes,dictionnaire_treetagged__formes_name,dictionnaire_treetagged__formemajoritaire_name) #N = float(len(ngramme_billets_fit)) #print " +" + str(N) + " billets indexés" ## on alimente la table concepts avec la liste des concepts trie et leur forme principale file_concepts=codecs.open(dictionnaire_treetagged__formemajoritaire_name,'r','utf-8') liste_concepts=[] correspondance_lemme_forme={} for ligne in file_concepts.readlines(): lignev = ligne.split('\t') liste_concepts.append((lignev[0].encode('utf-8','replace'),lignev[1].encode('utf-8','replace'))) correspondance_lemme_forme[lignev[0].encode('utf-8','replace')]=lignev[1].encode('utf-8','replace') print "&&&",len(liste_concepts),"concepts now." ##si necessaire on recree la table concepts