import numpy as np 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)) ''' dot=lambda a,b: sum(a[i]*b[i] for i in range(len(a))) norm=lambda a: sum(n**2 for n in a)**(1/2) cosine=lambda a,b: dot(a,b)/(norm(a)*norm(b)) ''' with open('vettori/model10000.txt', errors="ignore") as file: #attenzione se il file non si trova in una sottocartella denominata vettori eliminare la sottostringa "vettori/" 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:np.array(vector)}) confronti = { "ragazza vs donna": (vectors['ragazza'], vectors['donna']), "ragazza vs ragazzo": (vectors['ragazza'], vectors['ragazzo']), "ragazza vs (ragazzo + donna)": (vectors['ragazza'], vectors['ragazzo'] + vectors['donna']), "ragazza vs (ragazzo - uomo + donna)": (vectors['ragazza'], vectors['ragazzo'] - vectors['uomo'] + vectors['donna']) } for etichetta, (vec_a, vec_b) in confronti.items(): print(f"COSENO {etichetta.upper()}:") print(f"{cosine(vec_a, vec_b)}\n") ''' 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'],vectors['ragazzo']+vectors['donna'])) print("COSENO TRA 'ragazza' E 'ragazzo'−'uomo'+'donna':") print(cosine(vectors['ragazza'],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'],vectors['re']+vectors['donna'])) print("COSENO TRA 'regina' E 're'−'uomo'+'donna':") print(cosine(vectors['regina'],vectors['re']-vectors['uomo']+vectors['donna'])) '''