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

Comment mesurer la similarité entre des documents texte ?

DDD
Libérer: 2024-10-23 06:55:02
original
1046 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal