Sobes.tech
Middle — Senior

Ako vypočítať kosínusovú podobnosť medzi otázkami?

sobes.tech AI

Odpoveď od AI

Kosínusová podobnosť je miera podobnosti medzi dvoma vektormi, ktorá sa vypočíta ako kosínus uhla medzi nimi. Pre otázky (napríklad textové) je najprv potrebné každú otázku reprezentovať vo forme vektora (embedding), napríklad pomocou modelov Word2Vec, BERT alebo TF-IDF.

Ako vypočítať kosínusovú podobnosť:

  1. Preveďte každú otázku na číselný vektor.
  2. Vypočítajte kosínus uhla medzi dvoma vektormi:

[ \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}} ]

Príklad v Pythone s použitím knižnice 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)

# Príklady vektorov
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])

similarity = cosine_similarity(q1, q2)
print(f"Kosínusová podobnosť: {similarity}")

Takto ukazuje kosínusová podobnosť, ako veľmi sú otázky podobné z hľadiska významu v priestore embeddingov.