def ngramme_fit(year):
	Nb_rows = fonctions_bdd.count_rows_where(name_bdd,'billets'," where jours IN ('" + "','".join(list(map(str,year))) + "') ")
	#Nb_rows = fonctions_bdd.count_rows(name_bdd,'billets')
	Nb_auteurs = fonctions_bdd.count_rows(name_bdd,'auteurs')
	size_seq = 1000
	nb_sequences = Nb_rows/size_seq
	billets_id=[]
	ngramme_billets_fit=[]
	ngrammes_auteurs_fit={}
	formes_fit={}
	#for x in range(nb_sequences+1):
	for x in range(nb_sequences+1):
		lim_d = str(size_seq*x)
		if x<nb_sequences:
			duration = str(size_seq)
		else:
			duration = str(size_seq)
		where = " jours IN ('" + "','".join(list(map(str,year))) + "') "
		sample = '1000000000'
		contenu = fonctions_bdd.select_bdd_table_where_limite(name_bdd,'billets','id,content_lemmatise,content,auteur_id',sample,requete,where,lim_d+','+duration,Nb_rows)
		#on indexe chaque billet et on recupere un triplet qui donne: la liste des ngrammes pour chaque billet, la liste des index des ngrammes pour chaque billet, et l'id des billets - ce script permet egalement de calculer les formes des n-lemmes.
		include=1 #le parametre include permet d'activer ou non l'overlap de lemmes dans le comptage: si 1, les nicolas sarkozy ne forment pas de sarkozy 
		ngramme_billets_fit_x,billets_id_x,formes_x,ngrammes_auteurs_fit_x = text_processing.indexer_billet(contenu,ngrammes,maxTermLength,include)
		billets_id = billets_id + billets_id_x
		ngramme_billets_fit = ngramme_billets_fit + ngramme_billets_fit_x
		formes_fit=fonctions_lib.merge(formes_fit, formes_x, lambda x,y: fonctions_lib.merge(x,y,lambda x,y:x+y))
		ngrammes_auteurs_fit=fonctions_lib.merge(ngrammes_auteurs_fit,ngrammes_auteurs_fit_x,lambda x,y : extension(x,y))
		print "    + billets numéros "+ str(int(lim_d)+1)+ " à "+  str(int(lim_d)+int(duration)) +" indexés (sur "+ str(Nb_rows) +")"
	return ngrammes_auteurs_fit, ngramme_billets_fit,formes_fit
def freq_comp(year):
	y=years.index(year)
#for y,year in enumerate(years):
	#on construit la liste des index des concepts dans l'ordre 
	ngrammes_fit_index=[]
	Nb_auteurs = fonctions_bdd.count_rows(name_bdd,'auteurs')

	ngramme_billets_fit =ngramme_billets_fit_year[y]
	ngrammes_auteurs_fit=ngrammes_auteurs_fit_year[y]
	#on calcule nos stats à l'échelle des auteurs aussi, freq = nombre de blogs parlant d'un terme 
	dictionnaire_frequence_exact_auteur={}
	dictionnaire_frequence_exact={}
	N = fonctions_bdd.count_rows_where(name_bdd,'billets'," where jours IN ('" + "','".join(list(map(str,year))) + "') ")
	for terme in liste_concepts:
		dictionnaire_frequence_exact[terme[0]]=0
		dictionnaire_frequence_exact_auteur[terme[0]]=0
	
	for clique in ngramme_billets_fit:
		clique_index=[]
		for terme in set(clique):
			clique_index.append(liste_concepts_dico[terme])
			dictionnaire_frequence_exact[terme]=dictionnaire_frequence_exact[terme]+1
		ngrammes_fit_index.append(clique_index)
	print "    + liste des index des concepts creee"


	for aut,clique in ngrammes_auteurs_fit.iteritems():
		for terme in set(clique):
			dictionnaire_frequence_exact_auteur[terme]=dictionnaire_frequence_exact_auteur[terme]+1
	print "    + liste des index des concepts creee"

	file_freq_exact =  path_req +'years/'+ requete +str(year) + '_'  +  'frequences_exactes.csv'
	fichier_out =file(file_freq_exact,'w')
	def format(value):
	    return "%.9f" % value

	for x in dictionnaire_frequence_exact:	
	#	print str(x) + '\t' + str(correspondance_lemme_forme[x]) +'\t' + (str(format(float(dictionnaire_frequence_exact[x])/N))).replace('.',',') +'\t' + (str(format(float(dictionnaire_frequence_exact_auteur[x])/float(Nb_auteurs)))).replace('.',',')+  '\n'
		fichier_out.write(str(x) + '\t' + str(correspondance_lemme_forme[x]) +'\t' + (str(format(float(dictionnaire_frequence_exact[x])/N))).replace('.',',') +'\t' + (str(format(float(dictionnaire_frequence_exact_auteur[x])/float(Nb_auteurs)))).replace('.',',')+  '\n')
	print "    + frequences exactes calculees   "+ file_freq_exact
Example #3
0
	for y,x in enumerate(pool_outputs):		
		dictionnaire_gramme_year[y]=x
	fonctions_lib.dumpingin(dictionnaire_gramme_year,name_export_pkl,requete)


#decoupage par periode:
print dictionnaire_gramme_year.keys()
#puis on itere annee par annee
try: 
	os.mkdir(path_req +'years/')
except:
	pass
for y,year in enumerate(years):
	#on trie par fréquence et on exporte le lexique final avec les occurrences 
	print '\n'
	print year
	
	dico_final = misc.freq_tri(dictionnaire_gramme_year[y],freqmin,int(math.floor(top*1.1)),language,ng_filter)#on effectue le tri de notre dictionnaire
	filename = path_req +'years/'+ requete + '_' + str(freqmin) + '_' +str(year) + '_'+ 'liste_n-grammes_freq_divers.csv'
	filename_redond =  path_req +'years/'+ requete + '_' + str(freqmin) +str(year) + '_'+ 'liste_n-grammes_freq_divers_noredond.csv'
	filename_redond_leven =  path_req +'years/'+ requete + '_' + str(freqmin)+str(year) + '_' 'liste_n-grammes_freq_divers_leven_noredond.csv'
	misc.ecrire_liste_lemmes_freq(dico_final,Nb_rows,filename,lemme_maj,freqmin,ng_filter)#on ecrit la liste precedente dans un fichier filename
	print "\n+++"+str(len(dico_final))+" n-lemmes crees."
	#leven.pack_rendondance(filename,filename_redond,maxTermLength,freqmin,language,redondance_manuelle,ng_filter,user_interface)
	leven.pack_rendondance_exact(filename,filename_redond,maxTermLength,freqmin,language,ng_filter,user_interface)
	print "\n"
	Nb_rows = fonctions_bdd.count_rows_where(name_bdd,'billets'," where jours IN ('" + "','".join(list(map(str,year))) + "') ")
	print Nb_rows
	leven.pack_leven(filename_redond,filename_redond_leven,language,user_interface,freqmin,Nb_rows)

fusion_years.fusion('redond')