Heim > Backend-Entwicklung > Python-Tutorial > 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
Freigeben: 2024-11-01 08:20:30
Original
1001 Leute haben es durchsucht

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 eindeutig sind die Häufigkeiten dieser Wörter.
  3. Berechnen Sie das Skalarprodukt: Berechnen Sie das Skalarprodukt der beiden Vektoren, indem Sie die Produkte der entsprechenden Elemente summieren.
  4. Berechnen Sie Größen: Ermitteln Sie die Größe jedes Vektors, indem Sie alle seine Elemente quadrieren und summieren und dann das Quadrat bilden Wurzel.
  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>
Nach dem Login kopieren

Beispiel Verwendung:

<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>
Nach dem Login kopieren

Ausgabe:

Cosine: 0.861640436855
Nach dem Login kopieren

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

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage