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

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

Susan Sarandon
Freigeben: 2024-10-30 08:05:02
Original
899 Leute haben es durchsucht

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

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

Ausgabe:

Cosine: 0.861640436855
Nach dem Login kopieren

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!

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