Einfach 0 gelöst 0% Erfolgsquote

Cosine Similarity

Measure how similar two vectors are by the angle between them, as search engines do with embeddings.

Das lernst du

  • Measure similarity by angle
  • Compute dot products and vector norms
  • Understand how semantic search compares texts

Problem

Übersetzung anzeigen

Cosine similarity compares the direction of two vectors and ignores their length. Semantic search uses it to find texts with similar embeddings:

cos(a, b) = (a · b) / (|a| × |b|), where |a| = √(a₁² + a₂² + … + aₙ²)

The result is 1 for the same direction, 0 for perpendicular vectors and -1 for opposite directions. If either vector is all zeros, return 0.

Implement cosine_similarity(a, b).

Input

a, b: Two lists of numbers with the same length.

Output

Return the cosine similarity as a decimal number.

Einschränkungen

1 ≤ length ≤ 1,000

-1,000 ≤ each value ≤ 1,000

Beispiele

Beispiel 1
Eingabe:
a = [1.0, 0.0]
b = [0.0, 1.0]

Erwartete Ausgabe:
expected = 0.0
Eingabe:
std::vector<double> a = {1.0, 0.0};
std::vector<double> b = {0.0, 1.0};

Erwartete Ausgabe:
double expected = 0.0;
Eingabe:
double[] a = new double[] {1.0, 0.0};
double[] b = new double[] {0.0, 1.0};

Erwartete Ausgabe:
double expected = 0.0;

Erläuterung

The dot product is 0, so the vectors are perpendicular and the similarity is 0.

Beispiel 2
Eingabe:
a = [1.0, 2.0, 3.0]
b = [2.0, 4.0, 6.0]

Erwartete Ausgabe:
expected = 1.0
Eingabe:
std::vector<double> a = {1.0, 2.0, 3.0};
std::vector<double> b = {2.0, 4.0, 6.0};

Erwartete Ausgabe:
double expected = 1.0;
Eingabe:
double[] a = new double[] {1.0, 2.0, 3.0};
double[] b = new double[] {2.0, 4.0, 6.0};

Erwartete Ausgabe:
double expected = 1.0;

Erläuterung

b is a times 2: same direction, so the similarity is 1 even though the lengths differ.

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.