Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung von TF-IDF | Grundlegende Textmodelle
Einführung in NLP
course content

Kursinhalt

Einführung in NLP

Einführung in NLP

1. Grundlagen der Textvorverarbeitung
2. Stemming und Lemmatisierung
3. Grundlegende Textmodelle
4. Wort-Einbettungen

book
Implementierung von TF-IDF

Standardimplementierung

Die Implementierung des TF-IDF-Modells in sklearn ähnelt der des Bag-of-Words-Modells. Um dieses Modell auf einem Korpus zu trainieren, verwenden wir die TfidfVectorizer-Klasse, die uns bereits bekannte Methode .fit_transform().

Schauen wir uns ein Beispiel an:

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Wie Sie sehen können, ist abgesehen von der Verwendung einer anderen Klasse der Rest der Implementierung identisch mit der des Bag-of-Words-Modells. Standardmäßig wird die TF-IDF-Matrix, wie im vorherigen Kapitel beschrieben, mit L2-Normalisierung berechnet.

Anpassen von TF-IDF

Ähnlich wie bei CountVectorizer können wir die Parameter min_df und max_df angeben, um nur Begriffe einzuschließen, die in mindestens min_df Dokumenten und höchstens max_df Dokumenten vorkommen. Diese können entweder als absolute Zahlen von Dokumenten oder als Anteil der Gesamtzahl der Dokumente angegeben werden.

Hier ist ein Beispiel, bei dem wir nur die Begriffe einbeziehen, die in genau 2 Dokumenten vorkommen, indem wir sowohl min_df als auch max_df auf 2 setzen:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Um die n-Gramme anzugeben, die in unsere Matrix aufgenommen werden sollen, können wir den Parameter ngram_range verwenden. Lassen Sie uns nur Bigrams in die resultierende Matrix aufnehmen:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Dies sind die am häufigsten verwendeten Parameter. Wenn Sie jedoch mehr davon erkunden möchten, können Sie die Dokumentation einsehen.

Aufgabe

Swipe to start coding

Ihre Aufgabe ist es, den Vektor für das 'medical' Unigramm in einem TF-IDF-Modell mit Unigrammen, Bigrammen und Trigrammen anzuzeigen:

  1. Importieren Sie die TfidfVectorizer-Klasse, um ein TF-IDF-Modell zu erstellen.

  2. Instanziieren Sie die TfidfVectorizer-Klasse als tfidf_vectorizer, die sowohl Unigramme, Bigramme als auch Trigramme enthält.

  3. Verwenden Sie die geeignete Methode von tfidf_vectorizer, um eine TF-IDF-Matrix aus der 'Document'-Spalte im corpus zu erzeugen.

  4. Konvertieren Sie tfidf_matrix in ein dichtes Array und erstellen Sie ein DataFrame daraus, wobei die einzigartigen Merkmale (Begriffe) als Spalten festgelegt werden. Weisen Sie dies der Variablen tfidf_matrix_df zu.

  5. Zeigen Sie den Vektor für 'medical' als Array an, anstatt als pandas Series.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7
toggle bottom row

book
Implementierung von TF-IDF

Standardimplementierung

Die Implementierung des TF-IDF-Modells in sklearn ähnelt der des Bag-of-Words-Modells. Um dieses Modell auf einem Korpus zu trainieren, verwenden wir die TfidfVectorizer-Klasse, die uns bereits bekannte Methode .fit_transform().

Schauen wir uns ein Beispiel an:

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Wie Sie sehen können, ist abgesehen von der Verwendung einer anderen Klasse der Rest der Implementierung identisch mit der des Bag-of-Words-Modells. Standardmäßig wird die TF-IDF-Matrix, wie im vorherigen Kapitel beschrieben, mit L2-Normalisierung berechnet.

Anpassen von TF-IDF

Ähnlich wie bei CountVectorizer können wir die Parameter min_df und max_df angeben, um nur Begriffe einzuschließen, die in mindestens min_df Dokumenten und höchstens max_df Dokumenten vorkommen. Diese können entweder als absolute Zahlen von Dokumenten oder als Anteil der Gesamtzahl der Dokumente angegeben werden.

Hier ist ein Beispiel, bei dem wir nur die Begriffe einbeziehen, die in genau 2 Dokumenten vorkommen, indem wir sowohl min_df als auch max_df auf 2 setzen:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Um die n-Gramme anzugeben, die in unsere Matrix aufgenommen werden sollen, können wir den Parameter ngram_range verwenden. Lassen Sie uns nur Bigrams in die resultierende Matrix aufnehmen:

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Dies sind die am häufigsten verwendeten Parameter. Wenn Sie jedoch mehr davon erkunden möchten, können Sie die Dokumentation einsehen.

Aufgabe

Swipe to start coding

Ihre Aufgabe ist es, den Vektor für das 'medical' Unigramm in einem TF-IDF-Modell mit Unigrammen, Bigrammen und Trigrammen anzuzeigen:

  1. Importieren Sie die TfidfVectorizer-Klasse, um ein TF-IDF-Modell zu erstellen.

  2. Instanziieren Sie die TfidfVectorizer-Klasse als tfidf_vectorizer, die sowohl Unigramme, Bigramme als auch Trigramme enthält.

  3. Verwenden Sie die geeignete Methode von tfidf_vectorizer, um eine TF-IDF-Matrix aus der 'Document'-Spalte im corpus zu erzeugen.

  4. Konvertieren Sie tfidf_matrix in ein dichtes Array und erstellen Sie ein DataFrame daraus, wobei die einzigartigen Merkmale (Begriffe) als Spalten festgelegt werden. Weisen Sie dies der Variablen tfidf_matrix_df zu.

  5. Zeigen Sie den Vektor für 'medical' als Array an, anstatt als pandas Series.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
We're sorry to hear that something went wrong. What happened?
some-alt