def load_contenu_socsem(): try: auteurs_billets = fonctions.dumpingout('auteurs_billets') contenu_socsem =fonctions.dumpingout('contenu_socsem') except: contenu_socsem = fonctions_bdd.select_bdd_table(name_bdd,'socsem','auteur,concept,jours,id_b',requete) auteurs_billets={} #auteurs_billets associe à chaque auteur les billets auxquels il a contribué for cont in contenu_socsem: auteur = cont[0] id_b = cont[3] if auteurs_billets.has_key(auteur): temp=auteurs_billets[auteur] if not id_b in temp: temp.append(id_b) auteurs_billets[auteur] = temp else: arr = [] arr.append(id_b) auteurs_billets[auteur] = arr fonctions.dumpingin(contenu_socsem,'contenu_socsem') fonctions.dumpingin(auteurs_billets,'auteurs_billets') return auteurs_billets,contenu_socsem
print requete + '_' + str(freqmin) + str(sample) if user_interface =='y': var = raw_input('do you wish to force new indexation ? (y to reindex)') else: var='n' if var =='y': dictionnaire_gramme=fonctions_lib.dumpingout(name_export_pkl+'jlkjjlkjlkjlkjlkjl',requete) print '\n\nOn importe le dictionnaire de n-grammes deja calcule\n\n' dictionnaire_gramme_year=fonctions_lib.dumpingout(name_export_pkl,requete) lemme_maj=fonctions_lib.dumpingout(name_export_lemme_pkl,requete) except: if lemmatisation ==1: # on extrait le champ contenu de la table print "--- extraction des contenus des billets..." contenu = fonctions_bdd.select_bdd_table(name_bdd,'billets','id,content,content_lemmatise',requete) print " - par exemple, contenu[0][1]=",contenu[0][1] print "+++ lemmatisation avec treetagger de tous les contenus..." #on construit la liste des n-grammes accompagnée de leur fréquence tagger = treetaggerwrapper.TreeTagger(TAGLANG=language,TAGDIR=treetagger_dir) billetprocessed=0 billetnotprocessed=0 billetcleans=[] billetorigs=[] for billets in contenu: billetprocessed+=1 billet_id = billets[0] billet = billets[1] billet = billet.replace('<b>','').replace('</b>','') billet_lem = billets[2] if not billetprocessed%250 :
################################### #######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)") print " - recuperation des ids des auteurs dans la table \"auteurs\" (index SQL) pour reinjecter dans la table \"billets\"..." auteurs = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'auteurs','id,auteurs') dic_auteurs ={} for aut in auteurs: dic_auteurs[aut[1]] = aut[0] site_billets = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'billets','id,site')
#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 treetagger_dir =parameters.treetagger_dir ################################### #######export ##################### ################################### try: os.mkdir(path_req + "exportWE") except: pass #reseau social contenu = fonctions_bdd.select_bdd_table(name_bdd,'soc','auteur1,auteur2,jours',requete) file_net_name = path_req + "exportWE/social_net.txt" misc.extraire_reseaux(contenu,file_net_name) print "=> reseau social exporte fichier: " + file_net_name #reseau semantique contenu = fonctions_bdd.select_bdd_table(name_bdd,'sem','concept1,concept2,jours,id_b',requete) file_net_name = path_req + "exportWE/sem_net" + '.txt' misc.extraire_reseaux(contenu,file_net_name) print "=> reseau semantique exporte fichier: " + file_net_name file_net_name = path_req + "exportWE/sem_net" + "_pondere.txt" misc.extraire_reseaux_pondere(contenu,file_net_name,name_bdd) print "=> reseau semantique pondere exporte fichier: " + file_net_name #reseau socio-semantique
def build_social_net(requete,name_bdd,sep,name_data): lienssoc=[] auteurs = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'auteurs','id,auteurs') dic_auteurs ={} for aut in auteurs: dic_auteurs[aut[1]] = aut[0] #auteur = fonctions_bdd.select_bdd_table_champ(name_bdd,'billets','site','id',b_id) #auteur = text_processing.nettoyer_url((auteur)) #jours = fonctions_bdd.select_bdd_table_champ(name_bdd,'billets','jours','id',b_id) # print auteur #names =auteur.split(" *%* ") #auteur_ids=[] #for nom in names: # auteur_ids.append(fonctions_bdd.select_bdd_table_champ(name_bdd,'auteurs','id','auteurs',nom)) if name_data[-4:] in ['.isi','.med'] : contenu = fonctions_bdd.select_bdd_table(name_bdd,'billets','id,auteur_id,jours',requete) for cont in contenu: b_id=cont[0] clique_auteurs = cont[1] participants=[] jours = cont[2] for participant in clique_auteurs.split(', '): participant=participant.replace('[','') participant=participant.replace(']','') participants.append(participant) for aut_1 in participants: for aut_2 in participants: if aut_1 != aut_2: lienssoc.append([aut_1,aut_2,jours,b_id,requete,str(b_id)+'_' + str(aut_1) + '_' + str(aut_2)]) else: contenu = fonctions_bdd.select_bdd_table(name_bdd,'billets','id,href,jours,site',requete) for cont in contenu: b_id=cont[0] aut_id = cont[1] href_list = cont[1] jours = cont[2] site = cont[3] auteurs = text_processing.nettoyer_url(site) names =auteurs.split(sep) auteur_ids=[] for nom in names: auteur_ids.append(fonctions_bdd.select_bdd_table_champ(name_bdd,'auteurs','id','auteurs',nom)) url_ids=[] if len(href_list)>0: hrefs = href_list.split("***") hrefs_propre=[] for hre in hrefs: if len(hre)>1: hrefs_propre.append(hre) hrefs = hrefs_propre hrefs = map(text_processing.nospace,hrefs) for url in hrefs: if not str(url)=='None': urlok = url.decode('utf-8','replace') url = urlok.replace("popostrophe","'") for aut in dic_auteurs.keys(): if aut in url: id_lien = dic_auteurs[aut] if not id_lien in url_ids: url_ids.append(id_lien) for aut_id in auteur_ids: if not id_lien ==aut_id: lienssoc.append([aut_id,id_lien,jours,b_id,requete,str(b_id)+'_' + str(aut_id) + '_' + str(id_lien)]) return(lienssoc)
print '- ' +dico_termes[ii] +' ('+dico_lemmes[ii]+')' except: pass print '\n' years_bins = [] #traite le multi-type des variables: try: datef=datef[0] dated=dated[0] except: pass for y in range(datef-dated+1): years_bins.append(y+dated) years_bins=[years_bins] contenu = fonctions_bdd.select_bdd_table(name_bdd,'billets','concepts_id,jours,id',requete) print "contenu importé" print '\n' from time import time timeavt = time() p_cooccurrences,NN,p_cooccurrences_lignes = build_cooc_matrix(contenu,years_bins) print 'coocc fabriquées' timeapres = timeavt timeavt = time() print 'duree de la derniere etape : ' + str( timeavt-timeapres) + '\n' distribution_distance = distribution_distance_build(p_cooccurrences,dico_termes,p_cooccurrences_lignes) print '\nrapprochements suggérés:\n' timeapres = timeavt timeavt = time() print 'duree de la derniere etape : ' + str(timeavt-timeapres) + '\n'