Maison  >  Article  >  développement back-end  >  Comment calculer la similarité cosinus entre les chaînes de phrases en Python sans bibliothèques externes ?

Comment calculer la similarité cosinus entre les chaînes de phrases en Python sans bibliothèques externes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 14:30:021025parcourir

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

Calcul de la similarité cosinus de chaînes de phrases sans bibliothèques externes

Pour calculer la similarité cosinus entre deux chaînes de texte sans modules externes, une simple implémentation Python peuvent être employés. La formule fondamentale de similarité cosinus est utilisée dans ce processus :

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

Où :

  • A et B sont deux vecteurs représentant les phrases.
  • A · B est le produit scalaire des vecteurs A et B.
  • ||A|| et ||B|| sont les grandeurs respectives des vecteurs A et B.

Implémentation

Le code Python suivant fournit une implémentation pratique de cette formule :

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

Pour utiliser ce code, convertissez les chaînes de phrases en vecteurs à l'aide de la fonction text_to_vector, puis calculez la similarité cosinus à l'aide de la fonction 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>

Cela affichera la similarité cosinus entre les deux chaînes de phrases. Notez que la pondération tf-idf n'est pas incluse dans cette implémentation, mais peut être ajoutée si un corpus approprié est disponible.

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!

Déclaration:
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