def dot(a,b): return sum(a[i]*b[i] for i in range(len(a))) def norm(a): return sum(n**2 for n in a)**(1/2) def cosine(a,b): return dot(a,b)/(norm(a)*norm(b)) def v_sum(a,b): return tuple(a[i]+b[i] for i in range(len(a))) def v_subtr(a,b): return tuple(a[i]-b[i] for i in range(len(a))) with open('model10000.txt', errors="ignore") as file: lines=file.readlines() vectors={} for line in lines: line=line.split() term=line.pop(0) # term=v[0]; v=v[1:] vector=[] for number in line: vector.append(float(number)) vectors.update({term:tuple(vector)}) print("COSENO TRA 'ragazza' E 'donna':") print(cosine(vectors['ragazza'],vectors['donna'])) print("COSENO TRA 'ragazza' E 'ragazzo'") print(cosine(vectors['ragazza'],vectors['ragazzo'])) print("COSENO TRA 'ragazza' E 'ragazzo'+'donna':") print(cosine(vectors['ragazza'],v_sum(vectors['ragazzo'],vectors['donna']))) print("COSENO TRA 'ragazza' E 'ragazzo'−'uomo'+'donna':") print(cosine(vectors['ragazza'],v_sum(v_subtr(vectors['ragazzo'],vectors['uomo']),vectors['donna']))) print() print("COSENO TRA 'regina' E 'donna':") print(cosine(vectors['regina'],vectors['donna'])) print("COSENO TRA 'regina' E 're'") print(cosine(vectors['regina'],vectors['re'])) print("COSENO TRA 'regina' E 're'+'donna':") print(cosine(vectors['regina'],v_sum(vectors['re'],vectors['donna']))) print("COSENO TRA 'regina' E 're'−'uomo'+'donna':") print(cosine(vectors['regina'],v_sum(v_subtr(vectors['re'],vectors['uomo']),vectors['donna'])))