Middle — Senior
Jak obliczyć podobieństwo kosinusowe między pytaniami?
sobes.tech AI
Odpowiedź od AI
Podobieństwo kosinusowe to miara podobieństwa między dwoma wektorami, obliczana jako cosinus kąta między nimi. Dla pytań (np. tekstowych) najpierw należy przedstawić każde pytanie w postaci wektora (embedding), na przykład za pomocą modeli Word2Vec, BERT lub TF-IDF.
Jak obliczyć podobieństwo kosinusowe:
- Zamienić każde pytanie na wektor liczb.
- Obliczyć cosinus kąta między dwoma wektorami:
[ \text{cosine_similarity}(A, B) = \frac{A \cdot B}{|A| |B|} = \frac{\sum_{i=1}^n A_i B_i}{\sqrt{\sum_{i=1}^n A_i^2} \sqrt{\sum_{i=1}^n B_i^2}} ]
Przykład w Pythonie z użyciem biblioteki numpy:
import numpy as np
def cosine_similarity(vec1, vec2):
dot_product = np.dot(vec1, vec2)
norm_a = np.linalg.norm(vec1)
norm_b = np.linalg.norm(vec2)
return dot_product / (norm_a * norm_b)
# Przykładowe wektory
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])
similarity = cosine_similarity(q1, q2)
print(f"Podobieństwo kosinusowe: {similarity}")
W ten sposób podobieństwo kosinusowe pokazuje, jak bardzo pytania są podobne pod względem znaczenia w przestrzeni embeddingów.