1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
dico3 = {}
N = defaultdict(int)
i = 0
print 'Longueur du dictionnaire à traiter : ',len(dico1)
print '\ntop départ temps t0'
t0 = clock()
for limots in dico1.values():
i += 1
if i%2000==0:
print str(i)+' ème élément de dico3 ', round(clock()-t0,4),'secondes'
for mot in limots:
N[mot] += 1
if not dico3.has_key(mot):
dico3[mot] = defaultdict(int)
lis = limots[:]
lis.remove(mot)
for autre_mot in lis:
N[autre_mot] += 1
dico3[mot][autre_mot] += 1
del lis
del dico1 # plus besoin
def dice(A,B,X): # A,B,X = mot,motcooc,entier
return float(X+X)/float(N[A]+N[B])
# calcul du 'dice' et extractions des 'm' meilleurs résultats:
outputname = "matricecooccurrenceTest"
f = file(outputname, "w")
m = 20
for mot, words in dico3.iteritems():
licoocX = [ ( float(X+X)/float(N[mot]+N[motcooc]) , motcooc ) for motcooc, X in words.iteritems()]
# licoocX : liste de doublets (valueDice,co-occurent de mot)
licoocX.sort(reverse=True)
slicoocs = [ c for d,c in licoocX[0:m] ]
f.write('<' + mot + '>' + '##'.join(slicoocs) + '</'+mot+'>\n')
f.close() |
Partager