Sobes.tech
Middle — Senior

Jak spočítat kosinusovou podobnost mezi otázkami?

sobes.tech AI

Odpověď od AI

Kosínusová podobnosť je míra 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.