Maison  >  Article  >  développement back-end  >  Comment mesurer la similarité entre des documents texte ?

Comment mesurer la similarité entre des documents texte ?

DDD
DDDoriginal
2024-10-23 06:55:02980parcourir

How to Measure the Similarity Between Text Documents?

Détermination de la similarité entre les documents texte

Mesure de la similarité des documents

Pour vérifier la similarité entre deux documents texte en PNL, l'approche standard consiste à transformer les documents en vecteurs TF-IDF. Ces vecteurs sont ensuite utilisés pour calculer la similarité cosinus, une métrique couramment utilisée dans les systèmes de recherche d'informations. Pour des informations plus détaillées, reportez-vous à « Introduction to Information Retrieval », un livre électronique disponible en ligne.

Implémentation en Python

Python fournit des bibliothèques telles que Gensim et scikit-learn qui facilitent le calcul de la similarité TF-IDF et cosinus. Dans scikit-learn, le calcul de la similarité cosinus entre les documents implique d'utiliser leurs vecteurs TF-IDF :

<code class="python">from sklearn.feature_extraction.text import TfidfVectorizer

documents = [open(f).read() for f in text_files]
tfidf = TfidfVectorizer().fit_transform(documents)
pairwise_similarity = tfidf * tfidf.T</code>

Les documents en texte brut peuvent être traités directement :

<code class="python">corpus = ["I'd like an apple", "An apple a day keeps the doctor away"]
tfidf = TfidfVectorizer(min_df=1, stop_words="english").fit_transform(corpus)
pairwise_similarity = tfidf * tfidf.T</code>

Interprétation du Résultats

La matrice clairsemée résultante pairwise_similarity est de forme carrée. Pour identifier le document le plus similaire à un document donné, vous pouvez utiliser la fonction argmax de NumPy, après avoir masqué les éléments diagonaux (représentant l'autosimilarité).

<code class="python">import numpy as np

arr = pairwise_similarity.toarray()
np.fill_diagonal(arr, np.nan)
input_doc = "Document to compare"
input_idx = corpus.index(input_doc)
result_idx = np.nanargmax(arr[input_idx])
most_similar_doc = corpus[result_idx]</code>

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