Π£ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΌΠ±Π΅Π΄Π΄ΠΈΠ½Π³ΠΎΠ² β Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ).
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ find_similar_pairs(vectors, tolerance=0.05)
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π³Π΄Π΅ ΠΊΠΎΡΠΈΠ½ΡΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΌΠ΅Π½ΡΡΠ΅ tolerance.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
β’ ΠΠ΅ΠΊΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ (Π΄ΠΎ 512)
β’ ΠΠ°ΡΠ° (i, j) ΡΡΠΈΡΠ°Π΅ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠΌ (i < j), Π΅ΡΠ»ΠΈ ΠΈΡ cosine similarity ~ 1.0
β’ ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ML-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ: ΡΠΎΠ»ΡΠΊΠΎ numpy
β’ Π€ΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° β Π±Π΅Π· Π³ΡΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
import numpy as np
def cosine_similarity(a, b):
a, b = np.array(a), np.array(b)
returnnp.dot (a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
def find_similar_pairs(vectors, tolerance=0.05):
result = []
n = len(vectors)
for i in range(n):
for j in range(i + 1, n):
sim = cosine_similarity(vectors[i], vectors[j])
if 1 - sim <= tolerance:
result.append((i, j))
return result