Sobes.tech
Middle — Senior

Kako izračunati kosinusnu sličnost između pitanja?

sobes.tech АИ

Одговор од АИ

Косинусна sličnost je mera sličnosti između dva vektora, koja se računa kao kosinus ugla između njih. Za pitanja (na primer, tekstualna), prvo je potrebno predstaviti svako pitanje u obliku vektora (embedding), na primer pomoću modela Word2Vec, BERT ili TF-IDF.

Kako izračunati kosinusnu sličnost:

  1. Pretvoriti svako pitanje u numerički vektor.
  2. Izračunati kosinus ugla između dva vektora:

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

Primer u Python-u pomoću biblioteke 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)

# Primeri vektora
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])

similarity = cosine_similarity(q1, q2)
print(f"Kosinusna sličnost: {similarity}")

Na ovaj način, kosinusna sličnost pokazuje koliko su pitanja slična po značenju u prostoru embeddinga.