#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