Maison > Article > développement back-end > Comment puis-je calculer la similarité cosinus entre deux phrases sans utiliser de bibliothèques externes ?
Calcul de la similarité cosinus pour les chaînes de phrases
La similarité cosinus est une mesure de la corrélation entre deux vecteurs. Dans le cadre du traitement de texte, il peut être utilisé pour déterminer la similitude entre deux phrases. Pour calculer la similarité cosinus pour deux chaînes sans bibliothèques externes, suivez ces étapes :
Une implémentation Python simple :
<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>
Exemple d'utilisation :
<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>
Sortie :
Cosine: 0.861640436855
Notez que cette implémentation n'inclut pas la pondération TF-IDF, ce qui peut améliorer la précision de similarité cosinus pour des ensembles de données plus grands.
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!