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>
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>
Sortie :
Cosine: 0.861640436855
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!