Maison > Article > développement back-end > Comment puis-je calculer la similarité entre différents documents texte ?
Problème : Vous souhaitez calculer la similarité entre deux documents texte pour évaluer leur alignement sémantique.
Solution : L'approche dominante pour mesurer la similarité des documents consiste à les convertir en vecteurs TF-IDF (Term Frequency-Inverse Document Frequency). TF-IDF attribue des pondérations aux termes en fonction de leur fréquence dans le document et de leur rareté dans le corpus. Par la suite, la similarité cosinus entre ces vecteurs est calculée pour quantifier leur similarité.
Implémentation : Gensim et scikit-learn de Python fournissent des implémentations robustes pour les transformations TF-IDF. Utilisation de scikit-learn :
<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer documents = [open(f).read() for f in text_files] tfidf = TfidfVectorizer().fit_transform(documents) # Cosine similarity is calculated automatically pairwise_similarity = tfidf * tfidf.T</code>
La pairwise_similarity résultante est une matrice clairsemée où chaque cellule représente la similarité cosinus entre les paires de documents correspondantes.
Interprétation des résultats : Le la matrice clairsemée a des dimensions égales au nombre de documents dans le corpus. Pour extraire le document présentant la plus grande similarité avec un document d'entrée donné, utilisez np.fill_diagonal() de NumPy pour masquer l'auto-similarité et np.nanargmax() pour trouver le maximum de non-auto-similarité :
<code class="python">result_idx = np.nanargmax(arr[input_idx]) most_similar_doc = corpus[result_idx]</code>
Notez que l'argmax est effectué sur le tableau masqué pour éviter le maximum trivial de 1 (la similarité de chaque document avec lui-même).
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!