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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 14:30:021024Durchsuche

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

Berechnung der Kosinusähnlichkeit von Satzzeichenfolgen ohne externe Bibliotheken

Um die Kosinusähnlichkeit zwischen zwei Textzeichenfolgen ohne externe Module zu berechnen, eine einfache Python-Implementierung eingesetzt werden kann. In diesem Prozess wird die grundlegende Kosinus-Ähnlichkeitsformel verwendet:

cos(θ) = (A · B) / (||A|| · ||B||)

Wobei:

  • A und B sind zwei Vektoren, die die Sätze darstellen.
  • A · B ist das Skalarprodukt der Vektoren A und B.
  • ||A|| und ||B|| sind die jeweiligen Größen der Vektoren A und B.

Implementierung

Der folgende Python-Code bietet eine praktische Implementierung dieser Formel:

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

Um diesen Code zu verwenden, konvertieren Sie die Satzzeichenfolgen mit der Funktion text_to_vector in Vektoren und berechnen Sie dann die Kosinusähnlichkeit mit der Funktion get_cosine:

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

Dadurch wird die Kosinusähnlichkeit zwischen den beiden Satzzeichenfolgen ausgegeben. Beachten Sie, dass die TF-IDF-Gewichtung in dieser Implementierung nicht enthalten ist, aber hinzugefügt werden kann, wenn ein geeigneter Korpus verfügbar ist.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Kosinusähnlichkeit zwischen Satzzeichenfolgen 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