Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Kosinusähnlichkeit zwischen zwei Sätzen berechnen, ohne externe Bibliotheken zu verwenden?

Wie kann ich die Kosinusähnlichkeit zwischen zwei Sätzen berechnen, ohne externe Bibliotheken zu verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 08:20:30839Durchsuche

How can I calculate cosine similarity between two sentences without using external libraries?

Berechnung der Kosinusähnlichkeit für Satzketten

Kosinusähnlichkeit ist ein Maß für die Korrelation zwischen zwei Vektoren. Im Rahmen der Textverarbeitung kann damit die Ähnlichkeit zweier Sätze festgestellt werden. Um die Kosinusähnlichkeit für zwei Zeichenfolgen ohne externe Bibliotheken zu berechnen, führen Sie die folgenden Schritte aus:

  1. Tokenisieren Sie die Zeichenfolgen: Teilen Sie jede Zeichenfolge in einzelne Wörter auf, die als Token bezeichnet werden.
  2. Wortvektoren erstellen:Erstellen Sie für jede Zeichenfolge ein Wörterbuch (Vektor), in dem die Schlüssel eindeutige Wörter und die Werte die Häufigkeiten dieser Wörter sind.
  3. Skalarprodukt berechnen : Berechnen Sie das Skalarprodukt der beiden Vektoren, indem Sie die Produkte der entsprechenden Elemente summieren.
  4. Größen berechnen: Ermitteln Sie dann die Größe jedes Vektors, indem Sie alle seine Elemente quadrieren und summieren Ziehen der Quadratwurzel.
  5. Normalisieren:Dividieren Sie das Skalarprodukt durch das Produkt der Größen, um die normalisierte Kosinusähnlichkeit zu erhalten.

Eine einfache Python-Implementierung:

<code class="python">import math
import re
from collections import Counter

WORD = re.compile(r"\w+")

def get_cosine(vec1, vec2):
    intersection = set(vec1.keys()) & set(vec2.keys())
    numerator = sum([vec1[x] * vec2[x] for x in intersection])

    sum1 = sum([vec1[x] ** 2 for x in list(vec1.keys())])
    sum2 = sum([vec2[x] ** 2 for x in list(vec2.keys())])
    denominator = math.sqrt(sum1) * math.sqrt(sum2)

    if not denominator:
        return 0.0
    else:
        return float(numerator) / denominator

def text_to_vector(text):
    words = WORD.findall(text)
    return Counter(words)</code>

Beispielverwendung:

<code class="python">text1 = "This is a foo bar sentence ."
text2 = "This sentence is similar to a foo bar sentence ."

vector1 = text_to_vector(text1)
vector2 = text_to_vector(text2)

cosine = get_cosine(vector1, vector2)

print("Cosine:", cosine)</code>

Ausgabe:

Cosine: 0.861640436855

Beachten Sie, dass diese Implementierung keine TF-IDF-Gewichtung enthält, was die Genauigkeit von verbessern kann Kosinusähnlichkeit für größere Datensätze.

Das obige ist der detaillierte Inhalt vonWie kann ich die Kosinusähnlichkeit zwischen zwei Sätzen berechnen, ohne externe Bibliotheken zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn