Sobes.tech
Middle — Senior

Como calcular a similaridade do cosseno entre perguntas?

sobes.tech IA

Resposta da IA

A similaridade do cosseno é uma medida de semelhança entre dois vetores, calculada como o cosseno do ângulo entre eles. Para perguntas (por exemplo, de texto), primeiro é necessário representar cada pergunta na forma de um vetor (embedding), por exemplo, usando modelos como Word2Vec, BERT ou TF-IDF.

Como calcular a similaridade do cosseno:

  1. Converter cada pergunta em um vetor de números.
  2. Calcular o cosseno do ângulo entre os dois vetores:

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

Exemplo em Python usando a biblioteca 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)

# Exemplos de vetores
q1 = np.array([1, 2, 3])
q2 = np.array([4, 5, 6])

similarity = cosine_similarity(q1, q2)
print(f"Similaridade do cosseno: {similarity}")

Assim, a similaridade do cosseno mostra o quão semelhantes as perguntas são em termos de significado no espaço de embeddings.