Sobes.tech
Middle — Senior

Суроолор ортосунда косинус жакындыгын кантип эсептөө керек?

sobes.tech AI

AIден жооп

Косинус окшоштуулугу — бул эки вектор ортосундагы окшоштуулукту өлчөөчү өлчөм, ал алардын ортосундагы бурчтун косинусуна барабар. Суроолор үчүн (мисалы, тексттик) биринчи кезекте ар бир суроону вектор (embedding) түрүндө көрсөтүү керек, мисалы, Word2Vec, BERT же TF-IDF моделдери аркылуу.

Косинус окшоштуулугун кантип эсептөө:

  1. Ар бир суроону сандык векторго айлантуу.
  2. Эки вектор арасындагы бурчтун косинусун эсептөө:

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

Python'до 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)

# Векторлордун мисалдары
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])

similarity = cosine_similarity(q1, q2)
print(f"Косинус окшоштуулугу: {similarity}")

Ушул жол менен, косинус окшоштуулугу суроолордун мааниси боюнча окшоштугун көрсөтөт.