Wie misst man Textähnlichkeit mithilfe von TF-IDF und Kosinusähnlichkeit?

Mary-Kate Olsen
Freigeben: 2024-10-23 06:53:30
Original
250 Leute haben es durchsucht

How to Measure Text Similarity using TF-IDF and Cosine Similarity?

Textähnlichkeit mit TF-IDF und Kosinusähnlichkeit messen

Die Bestimmung der Ähnlichkeit zwischen zwei Textdokumenten ist eine entscheidende Aufgabe beim Text Mining und bei der Informationsgewinnung Abruf. Ein beliebter Ansatz besteht darin, TF-IDF (Term Frequency-Inverse Document Frequency) und Kosinusähnlichkeit zu verwenden.

TF-IDF weist eine Gewichtung zu zu jedem Wort in einem Dokument basierend auf seiner Häufigkeit in diesem Dokument und seiner Seltenheit im gesamten Dokumentkorpus. Dokumente mit ähnlichen Wortmustern teilen sich höhere TF-IDF-Vektoren.

Kosinus-Ähnlichkeit misst den Winkel zwischen zwei Vektoren und liefert einen Wert zwischen 0 (keine Ähnlichkeit) und 1 (perfekte Ähnlichkeit). In unserem Fall bilden die TF-IDF-Vektoren der beiden Dokumente diese Vektoren, und die Kosinusähnlichkeit quantifiziert ihren Winkel.

Python-Implementierung

In Python wird mit dem scikit-learn und Gensim-Pakete ist die Berechnung paarweiser Ähnlichkeiten unkompliziert:

<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>
Nach dem Login kopieren

Alternativ, wenn die Dokumente bereits Zeichenfolgen sind, verwenden Sie:

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

Ergebnisse interpretieren

pairwise_similarity ist eine dünn besetzte Matrix, die die Ähnlichkeit zwischen jedem Dokumentpaar darstellt. Um das Dokument zu finden, das einem bestimmten Dokument am ähnlichsten ist, maskieren Sie die Ähnlichkeit des Dokuments mit sich selbst (setzen Sie es auf NaN) und ermitteln Sie den Maximalwert in seiner Zeile mit np.nanargmax():

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

arr = pairwise_similarity.toarray()
np.fill_diagonal(arr, np.nan)
input_doc = "The scikit-learn docs are Orange and Blue"
input_idx = corpus.index(input_doc)
result_idx = np.nanargmax(arr[input_idx])
similar_doc = corpus[result_idx]</code>
Nach dem Login kopieren

Andere Überlegungen

Bei großen Korpora und Vokabularien ist die Verwendung einer Sparse-Matrix effizienter als die Konvertierung in NumPy-Arrays.

Durch Anpassen der Parameter in TfidfVectorizer, z. B. min_df für das Mindestdokument Häufigkeit kann die TF-IDF-Berechnung an spezifische Anforderungen angepasst werden.

Zusätzliche Ressourcen

  • [Einführung in den Informationsabruf](http://infolab .stanford.edu/~backrub/classes/2002/cs276/handouts/04-tfidf.pdf)
  • [Berechnen paarweiser Ähnlichkeiten mit Gensim](https://stackoverflow.com/questions/23752770/computing- paarweise Ähnlichkeiten mit Gensim)

Das obige ist der detaillierte Inhalt vonWie misst man Textähnlichkeit mithilfe von TF-IDF und Kosinusähnlichkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!