예제 #1
0
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')
예제 #2
0
파일: db_selecter.py 프로젝트: jphcoi/MLMTC
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)
예제 #3
0
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)
예제 #4
0
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)")
예제 #5
0
					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)")
		
예제 #6
0
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)
예제 #7
0
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."