Comment calculer la similarité cosinus de deux chaînes de texte en Python pur ?

Susan Sarandon
Libérer: 2024-10-30 08:05:02
original
840 Les gens l'ont consulté

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

Comment calculer la similarité cosinus de deux chaînes de texte sans bibliothèques externes

Dans l'analyse de texte, la similarité cosinus est une mesure de la similarité entre deux des textes basés sur leur vocabulaire commun. Bien que des bibliothèques externes puissent être utilisées pour calculer cette mesure, il est également possible d'implémenter une simple fonction Python pur :

<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>
Copier après la connexion

Cette fonction prend deux vecteurs vec1 et vec2 en entrée et calcule leur similarité cosinus. Voici comment l'utiliser pour comparer deux chaînes de texte text1 et text2 :

<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>
Copier après la connexion

Sortie :

Cosine: 0.861640436855
Copier après la connexion

Cela indique que les deux chaînes de texte sont très similaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!