Heim > Artikel > Backend-Entwicklung > Wie berechnet man die Kosinusähnlichkeit zwischen Satzzeichenfolgen in Python ohne externe Bibliotheken?
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:
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!