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
ngrammes_auteurs_fit={} formes={} #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) #duration = str(Nb_rows - size_seq*x) #on extrait les champs contenus lemmatises et id de la table contenu = fonctions_bdd.select_bdd_table_limite(name_bdd,'billets','id,content_lemmatise,content,auteur_id',requete,lim_d+','+duration) #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=fonctions_lib.merge(formes, 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) +")" 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"