Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man die Kosinusähnlichkeit zwischen Sätzen in Python ohne externe Bibliotheken?

Wie berechnet man die Kosinusähnlichkeit zwischen Sätzen in Python ohne externe Bibliotheken?

DDD
DDDOriginal
2024-10-30 07:48:28584Durchsuche

How to Calculate Cosine Similarity Between Sentences in Python Without External Libraries?

Berechnung der Kosinusähnlichkeit zwischen Satzzeichenfolgen

Angesichts zweier Zeichenketten, die Sätze darstellen, besteht die Notwendigkeit, deren Kosinusähnlichkeit zu berechnen, ohne externe Bibliotheken zu verwenden. Lassen Sie uns eine Python-Implementierung untersuchen, um dies zu erreichen.

Die Kosinusähnlichkeit misst den Winkel zwischen zwei Vektoren, die typischerweise Dokumente oder Sätze in einem Vektorraum darstellen. Ein hoher Kosinus-Ähnlichkeitswert zeigt an, dass die Sätze ähnlich sind, während ein niedriger Wert darauf hindeutet, dass sie sich unterscheiden.

Schritt 1: Tokenisierung und Vektorisierung

Um die Kosinus-Ähnlichkeit zu berechnen, haben wir muss die Sätze in Vektoren umwandeln. Wir verwenden einen einfachen wortbasierten Tokenizer, der die Sätze in Wörter aufteilt und deren Vorkommen zählt:

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

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

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

Schritt 2: Berechnung der Kosinusähnlichkeit

Die Kosinusähnlichkeitsformel ist:

cosine = (Numerator) / (Denominator)

wobei:

  • Zähler ist das Skalarprodukt der beiden Vektoren.
  • Nenner ist das Produkt der Beträge der beiden Vektoren.
<code class="python">import math

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</code>

Schritt 3: Beispielverwendung

Mit den oben genannten Funktionen können wir die Kosinusähnlichkeit zwischen zwei Sätzen berechnen:

<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>

Die Ausgabe zeigt einen hohen Kosinus-Ähnlichkeitswert, was darauf hinweist, dass die Sätze ähnlich sind.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Kosinusähnlichkeit zwischen Sätzen in Python ohne externe Bibliotheken?. 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