Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man die Kosinusähnlichkeit zweier Textzeichenfolgen in reinem Python?

Wie berechnet man die Kosinusähnlichkeit zweier Textzeichenfolgen in reinem Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 08:05:02827Durchsuche

How to Calculate Cosine Similarity of Two Text Strings in Pure Python?

So berechnen Sie die Kosinusähnlichkeit zweier Textzeichenfolgen ohne externe Bibliotheken

In der Textanalyse ist die Kosinusähnlichkeit ein Maß für die Ähnlichkeit zwischen zwei Texte basierend auf ihrem gemeinsamen Wortschatz. Während zur Berechnung dieses Maßes externe Bibliotheken verwendet werden können, ist es auch möglich, eine einfache reine Python-Funktion zu implementieren:

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

Diese Funktion verwendet zwei Vektoren vec1 und vec2 als Eingabe und berechnet ihre Kosinusähnlichkeit. So können Sie damit zwei Textzeichenfolgen text1 und text2 vergleichen:

<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

Dies zeigt an, dass die beiden Textzeichenfolgen sehr ähnlich sind.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Kosinusähnlichkeit zweier Textzeichenfolgen in reinem Python?. 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