示例#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
path_req = parameters.path_req
user_interface=parameters.user_interface
print "--- initialisations terminees...\n"
print "+++ processing raw database \""+name_data+"\" into sql_where database file \""+name_bdd+"\""

sep  = ' *** '



#on définit une nouvelle table et une table billets temporaires
name_bdd_new = '.'.join(name_bdd.split('.')[:-2]) + '_new.' + '.'.join(name_bdd.split('.')[-2:])
name_bdd_temp = '.'.join(name_bdd.split('.')[:-2]) + '_temp.' +'.'.join(name_bdd.split('.')[-2:])

#on définit une série de nlemme qui forment la requête
#specific_nlemmes=['NO_an AD_lors','NO_scène','NO_expert'] 
specific_nlemmes = misc.lire_dico_classes(path_req + 'query.csv',language)
print specific_nlemmes
#on récupère les ids des concepts présents dans la requête dans query_ids
concepts = fonctions_bdd.select_bdd_table_champ_simple(name_bdd,'concepts','id,concepts')
query_ids =[]


for con in concepts:
	if con[1] in specific_nlemmes:
		query_ids.append(con[0])
print '\n' + str(len(query_ids)) + ' terms in the query.'
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])
# 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)
	if not os.path.isfile(filename) == 1:
		filename_leven_redond =  path_req + requete + '_' + str(freqmin) + '_' + 'liste_n-grammes_freq_divers_leven_noredond.csv'
		filename = filename_leven_redond
		
		
print '--- on indexe a partir du fichier \"' + filename+"\""
#on lit le fichier des n-grammes a indexer
ngrammes = misc.lire_dico_classes(filename,language)
#pour plus de sûreté
ngrammes = misc.lire_dico_classes(filename,language)
#pour plus de sûreté
ngrammes = misc.lire_dico_classes(filename,language)


#affichage de la liste des 10 premiers concepts
print "--- les 10 premiers concepts (sur " +str(len(ngrammes))+") : "
for gra in ngrammes[:10]:
	try:
		print "    ",str([gra])
	except:
		print "encodage error"

if len(ngrammes)>1000: