Example #1
0
def build_precision(muti):
	precision={}
	precisionold={}
	voisinages_pos={}
	voisinages={}
	muti_pos = {}
	for x, y in muti.iteritems():
		if y>0:
			muti_pos[x]=y
			temp=voisinages_pos.get((x[0],x[2]),[])
			temp.append(x[1])
			voisinages_pos[(x[0],x[2])]=temp
	print "voisinages_pos ecrite"
	muti=muti_pos
	compt=0
	N=len(voisinages_pos.keys())
	muti2d = convert_muti3d_muti2d(muti)
	print 'matrice d information mutuelle 2d calculée'
	for element1,contextes in voisinages_pos.iteritems():
		terme1 = element1[0]
		inter = int(element1[1])
		compt+=1
		if not compt%100:
			print '(#'+str(compt)+" sur "+str(N) +")"
		MI_terme1 = muti2d[(terme1,inter)]
		denom = sum(MI_terme1.values())
		for cont,val in MI_terme1.iteritems():
			if cont != terme1:
				MI_terme2 = muti2d[(cont,inter)]
				somme_min =  fonctions_lib.merge0(MI_terme1, MI_terme2, lambda x,y: min(x,y))
				precision[(cont,terme1,inter)] = sum(somme_min.values())/denom
				
	print 'matrice de precision calculée'
	return precision
Example #2
0
def build_precision(muti):
	precision={}
	precisionold={}
	voisinages_pos={}
	voisinages={}
	muti_pos = {}
	# for x,y in muti.iteritems():
	# 	if y>0:
	# 		muti_pos[x]=y
	# 		temp=voisinages_pos.get((x[0],x[2]),[])
	# 		temp.append(x[1])
	# 		voisinages_pos[(x[0],x[2])]=temp
	# print "voisinages_pos ecrite"
	# muti=muti_pos
	# compt=0
	# N=len(voisinages_pos.keys())
	# muti2d = convert_muti3d_muti2d(muti)
	# print 'matrice d information mutuelle 2d calculée'
	#for element1,contextes in voisinages_pos.iteritems():
	compt=0
	N=len(muti.keys())
	for terme1,muti_terme1 in muti.iteritems():
		compt+=1
		if not compt%100:
			print '(#'+str(compt)+" sur "+str(N) +")"

		denom = sum(muti_terme1.values())
		for terme2 in muti_terme1.keys():#on itere donc sur les termes2 qui ont cooccuré au moins deux fois avec terme1
			muti_terme2 = muti[terme2]
			somme_min =  fonctions_lib.merge0(muti_terme1, muti_terme2, lambda x,y: min(x,y))
			precision[(terme1,terme2)] = sum(somme_min.values())/denom
		# 	
		# 	
		# terme1 = element1[0]
		# inter = int(element1[1])
		# MI_terme1 = muti2d[(terme1,inter)]
		# denom = sum(MI_terme1.values())
		# for cont,val in MI_terme1.iteritems():
		# 	if cont != terme1:
		# 		MI_terme2 = muti2d[(cont,inter)]
		# 		somme_min =  fonctions_lib.merge0(MI_terme1, MI_terme2, lambda x,y: min(x,y))
		# 		precision[(cont,terme1,inter)] = sum(somme_min.values())/denom
				
	print 'matrice de precision calculée'
	return precision