Maison > Article > développement back-end > Comment pouvez-vous déterminer la similarité entre les documents texte en Python ?
Détermination de la similarité d'un texte
Dans le traitement du langage naturel (NLP), la détermination de la similarité entre deux documents texte est cruciale. L'approche la plus courante consiste à convertir les documents en vecteurs TF-IDF et à calculer la similarité cosinus.
Implémentation de TF-IDF et de similarité cosinus
En Python, le Gensim et les packages scikit-learn fournissent des implémentations de TF-IDF et de similarité cosinus. Le code suivant, utilisant scikit-learn, transforme les documents en vecteurs TF-IDF et calcule leur similarité par paire :
<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer # Load documents documents = [open(f).read() for f in text_files] # Create TF-IDF vectorizer tfidf = TfidfVectorizer().fit_transform(documents) # Compute pairwise similarity pairwise_similarity = tfidf * tfidf.T</code>
Interprétation des résultats
Pairwise_similarity est une valeur clairsemée matrice représentant les scores de similarité entre les documents. La similarité de chaque document avec lui-même est de 1, ces valeurs sont donc masquées. Le code ci-dessous trouve le document le plus similaire à un document d'entrée donné :
<code class="python">import numpy as np # Input document index input_idx = corpus.index(input_doc) # Mask out diagonal and find the most similar document np.fill_diagonal(pairwise_similarity.toarray(), np.nan) result_idx = np.nanargmax(pairwise_similarity[input_idx]) # Get the most similar document similar_doc = corpus[result_idx]</code>
Autres méthodes
Gensim propose des options supplémentaires pour les tâches de similarité de texte. Une autre ressource à explorer est [cette question Stack Overflow](https://stackoverflow.com/questions/52757816/how-to-find-text-similarity-between-two-documents).
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!