def select_query(query=[]): #on définit une nouvelle table et une table billets temporaires #specific_nlemmes est la requête de base issue de query.csv. if len(query)==0: specific_nlemme = misc.lire_dico_classes(path_req + 'query.csv',language) specific_nlemmes=[] for x in specific_nlemme: specific_nlemmes=specific_nlemmes+x.split('***') else: specific_nlemmes = query print specific_nlemmes print '\n' + str(len(specific_nlemmes)) +' terms in the query ' #on récupère les ids des concepts présents dans la requête dans query_ids query_ids =[] try: concepts = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'concepts','id,concepts') for con in concepts: if con[1] in specific_nlemmes: query_ids.append(con[0]) except: #il se peut que la base n'est jamais été indexée pass try: #tous les termes de la query ont déjà été indexés sous_corpus_idb_vect = fonctions_bdd.select_bdd_table_champ_simple(jesaispas,name_bdd,'concept2billets','id_b', ' where concept in '+ str(query_ids).replace('[','(').replace(']',')')) sous_corpus_idb=[] for x in sous_corpus_idb_vect: if not x[0] in sous_corpus_idb: sous_corpus_idb.append(x[0]) except: #tous les termes de la query n'ont pas encore été indexés, on passe à une méthode like. where_like = " where content_lemmatise like '%" where_like = where_like + " %' or content_lemmatise like '% ".join(specific_nlemmes) + " %'" print where_like sous_corpus_idb = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'billets','id',where_like ) print str(len(sous_corpus_idb)) +' documents retrieved \n' sql_where = " id in " + str(sous_corpus_idb).replace('[','(').replace(']',')') #print sql_where print 'creation de la nouvelle base de données ' + name_bdd_new shutil.copy(name_bdd, name_bdd_temp) try: fonctions_bdd.detruire_table(name_bdd,'billets2') except: pass try: fonctions_bdd.add_column(name_bdd,'billets','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass try: fonctions_bdd.creer_table_billets(name_bdd,'billets2')#creer une table billet2 fonctions_bdd.add_column(name_bdd,'billets2','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass fonctions_bdd.insert_select(name_bdd,'billets','billets2',sql_where) fonctions_bdd.detruire_table(name_bdd,'billets') fonctions_bdd.renommer_table(name_bdd,'billets2','billets') shutil.copy(name_bdd, name_bdd_new) shutil.copy(name_bdd_temp, name_bdd) os.remove(name_bdd_temp) return specific_nlemmes,fonctions_bdd.count_rows(name_bdd,'billets')
sous_corpus_idb_vect = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'concept2billets','id_b', ' where concept in '+ str(query_ids).replace('[','(').replace(']',')')) sous_corpus_idb=[] for x in sous_corpus_idb_vect: if not x[0] in sous_corpus_idb: sous_corpus_idb.append(x[0]) print str(len(sous_corpus_idb)) +' documents \n' sql_where = " id in " + str(sous_corpus_idb).replace('[','(').replace(']',')') print 'creation de la nouvelle base de données ' + name_bdd_new shutil.copy(name_bdd, name_bdd_temp) try: fonctions_bdd.detruire_table(name_bdd,'billets2') except: pass try: fonctions_bdd.creer_table_billets(name_bdd,'billets2')#creer une table billet2 fonctions_bdd.add_column(name_bdd,'billets2','concepts_id','text')#et lui adjoindre le champ concepts_id except: pass fonctions_bdd.insert_select(name_bdd,'billets','billets2',sql_where) fonctions_bdd.detruire_table(name_bdd,'billets') fonctions_bdd.renommer_table(name_bdd,'billets2','billets') shutil.copy(name_bdd, name_bdd_new) shutil.copy(name_bdd_temp, name_bdd) os.remove(name_bdd_temp)
requete = parameters.requete user_interface=parameters.user_interface name_data_real = parameters.name_data_real #lemmadictionnary = parameters.lemmadictionary# si nul, on calcule ou recalcule le dico de lemmes sur la requete consideree sinon on ne calcule pas path_req = parameters.path_req sep = parameters.sep build_link_tables=parameters.build_link_tables language = parameters.language ################################### #######3.Indexer les billets####### ################################### #on crée la table concepts #marche une fois sur deux, zarbo, peut-etre unique?... try: fonctions_bdd.detruire_table(name_bdd,'concepts') print "on detruit la table concept" except: print "pas de tabe concept" print " + creation de la table \"concepts\" (qui fait office de dictionnaire)..." fonctions_bdd.creer_table_concepts(name_bdd,'concepts') # on indexe a partir de la liste des ngrammes tries filename = path_req + requete + '_' + str(freqmin) + '_' + 'liste_n-grammes_freq_comparatif' +'_trie' + '.csv' #fichier d'entree trie (rajouter _trie a la fin de la sortie standard) #print filename if os.path.isfile(filename) == 1: print '--- on indexe a partir du fichier \"' + filename+"\"" else: filename = path_req + 'concepts.csv' #fichier d'entree trie (rajouter _trie a la fin de la sortie standard)
print name_bdd print name_bdd_new champs_name = "(title,date,permalink,site,categorie1,categorie2,categorie3,content_lemmatise,content,href,jours,concepts,identifiant_unique,requete,concepts_id)"#on n'enregistre pas le html brut billet_new = fonctions_bdd.select_bdd_table_champ_simple(name_bdd_new,'billets',champs_name[1:-1]) champs=billet_new fonctions_bdd.remplir_table(name_bdd,'billets',champs,champs_name) ################################### #######2.calcul des infos annexes## ################################### #creation de la table auteurs try: fonctions_bdd.detruire_table(name_bdd,'auteurs') except: pass print " + creation de la table auteurs..." fonctions_bdd.creer_table_auteurs(name_bdd,'auteurs') print " - remplissage de la table auteurs..." sortie = fonctions_bdd.select_bdd_table(name_bdd,'billets','site',requete) sites = set() for sor in sortie: names =sor[0].split(sep) for nom in names: sites.add(text_processing.nettoyer_url(nom)) sites=list(sites) #print sites fonctions_bdd.remplir_table(name_bdd,'auteurs',sites,"(auteurs)")
dist_mat_10[(int(x),int(u[0]),int(inter))]=u[1] level={} for x in dico_termes: level[x]=1 gexf.gexf_builder(dico_termes,dist_mat_temp,fichier_gexf,level) fonctions.ecrire_dico(dico_termes,dico_termes,dico_termes,1) print 'dicos ecrits' #fonctions.dumpingin(p_cooccurrences,'p_cooccurrences'+name_date) fonctions.dumpingin(dist_mat_10,'dist_mat_10'+name_date) print 'on a dumpé distmat_10: top 10 de chaque terme' fonctions.dumpingin(dist_mat,'dist_mat'+name_date) print 'on a dumpé distmat' try: fonctions_bdd.detruire_table(name_bdd,'sem_weighted') except: pass #fonctions_bdd.creer_table_sem(name_bdd,'sem') fonctions_bdd.creer_table_sem_periode_valuee(name_bdd,'sem_weighted') lienssem_weighted=[] deja=[] for x,dist0 in dist_mat_10.iteritems(): if not x in deja: deja.append((x[1],x[0],x[2])) deja.append(x) dist1 = dist_mat_10.get((x[1],x[0],x[2]),'') lienssem_weighted.append((x[0],x[1],x[2],dist0,dist1)) starttime= time.time() fonctions_bdd.remplir_table_new(name_bdd,'sem_weighted',lienssem_weighted,"(concept1,concept2,periode,distance0,distance1)")
name_data = parameters.name_data requete = parameters.requete user_interface=parameters.user_interface name_data_real = parameters.name_data_real #lemmadictionnary = parameters.lemmadictionary# si nul, on calcule ou recalcule le dico de lemmes sur la requete consideree sinon on ne calcule pas path_req = parameters.path_req sep = parameters.sep build_link_tables=parameters.build_link_tables language = parameters.language ################################### #######3.Indexer les billets####### ################################### ################################### ####construction des liens######### ################################### #on alimente enfin la table soc liant les index des acteurs entre eux ainsi qu'au jour du lien try: fonctions_bdd.detruire_table(name_bdd,'soc') except: pass fonctions_bdd.creer_table_soc(name_bdd,'soc') lienssoc = misc.build_social_net(requete,name_bdd,sep,name_data) fonctions_bdd.remplir_table(name_bdd,'soc',lienssoc,"(auteur1,auteur2,jours,id_b,requete,identifiant_unique)") print "\n--- finished inserting data in table soc."