Maison > Article > développement back-end > Comment calculer la similarité cosinus entre deux phrases sans bibliothèques externes ?
Dans le contexte du traitement du langage naturel, le calcul de la similarité cosinus est essentiel pour mesurer la similarité textuelle entre les documents. Bien que des bibliothèques externes telles que tf-idf-cosine puissent faciliter cette tâche, il est également possible de calculer manuellement la similarité cosinus sans s'appuyer sur de telles dépendances.
Aperçu de la similarité cosinus
Cosinus la similarité quantifie l'angle entre deux vecteurs représentant les textes. Une similarité cosinus plus élevée indique un angle plus petit, ce qui implique une plus grande similarité entre les textes. Il est calculé en utilisant le produit scalaire des vecteurs normalisés divisé par leurs magnitudes.
Implémentation manuelle de la similarité cosinus
Pour calculer manuellement la similarité cosinus, nous définissons les étapes suivantes :
Implémentation du code
Vous trouverez ci-dessous une implémentation Python du calcul manuel de similarité cosinus :
<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 vec1]) sum2 = sum([vec2[x] ** 2 for x in vec2]) denominator = math.sqrt(sum1) * math.sqrt(sum2) if not denominator: return 0.0 else: return numerator / denominator def text_to_vector(text): words = WORD.findall(text) return Counter(words) 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>
Résultat
Ce code s'exécute comme suit :
Cosine: 0.861640436855
Cette valeur indique une forte similarité cosinus entre les deux phrases, confirmant qu'elles sont textuellement similaires.
Considérations supplémentaires
Bien que cette approche manuelle fournisse une implémentation de base, elle peut être améliorée par :
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!