Maison > Article > développement back-end > Comment calculer la similarité cosinus entre les chaînes de phrases en Python sans bibliothèques externes ?
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ù :
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!