Maison  >  Article  >  développement back-end  >  Comment pouvez-vous déterminer la similarité entre les documents texte en Python ?

Comment pouvez-vous déterminer la similarité entre les documents texte en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-23 06:52:02188parcourir

How Can You Determine the Similarity Between Text Documents in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn