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

bookImplementierung von TF-IDF

Standardimplementierung

Die Implementierung des TF-IDF-Modells in sklearn ähnelt der des Bag-of-Words-Modells. Zum Trainieren dieses Modells auf einem Korpus wird die Klasse TfidfVectorizer verwendet, wobei die bekannte Methode .fit_transform() zum Einsatz kommt.

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

Abgesehen von der Verwendung einer anderen Klasse ist die restliche Implementierung identisch mit der des Bag-of-Words-Modells. Standardmäßig wird die TF-IDF-Matrix mit L2-Normalisierung berechnet.

Anpassung von TF-IDF

Wie auch beim CountVectorizer können die Parameter min_df und max_df angegeben werden, um nur Begriffe einzubeziehen, die in mindestens min_df und höchstens max_df Dokumenten vorkommen. Diese Werte können entweder als absolute Anzahl von Dokumenten oder als Anteil an der Gesamtzahl der Dokumente angegeben werden.

Im folgenden Beispiel werden nur die Begriffe berücksichtigt, die in genau 2 Dokumenten vorkommen, indem sowohl min_df als auch max_df auf 2 gesetzt werden:

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 in der Matrix enthaltenen N-Gramme festzulegen, kann der Parameter ngram_range verwendet werden. Im folgenden Beispiel werden nur Bigrams in die resultierende Matrix aufgenommen:

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 weitere erkunden möchten, können Sie die Dokumentation konsultieren.

question mark

Welche scikit-learn-Klasse kann verwendet werden, um die TF-IDF-Vektoren aus dem Textkorpus zu erhalten?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 3.45

bookImplementierung von TF-IDF

Swipe um das Menü anzuzeigen

Standardimplementierung

Die Implementierung des TF-IDF-Modells in sklearn ähnelt der des Bag-of-Words-Modells. Zum Trainieren dieses Modells auf einem Korpus wird die Klasse TfidfVectorizer verwendet, wobei die bekannte Methode .fit_transform() zum Einsatz kommt.

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

Abgesehen von der Verwendung einer anderen Klasse ist die restliche Implementierung identisch mit der des Bag-of-Words-Modells. Standardmäßig wird die TF-IDF-Matrix mit L2-Normalisierung berechnet.

Anpassung von TF-IDF

Wie auch beim CountVectorizer können die Parameter min_df und max_df angegeben werden, um nur Begriffe einzubeziehen, die in mindestens min_df und höchstens max_df Dokumenten vorkommen. Diese Werte können entweder als absolute Anzahl von Dokumenten oder als Anteil an der Gesamtzahl der Dokumente angegeben werden.

Im folgenden Beispiel werden nur die Begriffe berücksichtigt, die in genau 2 Dokumenten vorkommen, indem sowohl min_df als auch max_df auf 2 gesetzt werden:

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 in der Matrix enthaltenen N-Gramme festzulegen, kann der Parameter ngram_range verwendet werden. Im folgenden Beispiel werden nur Bigrams in die resultierende Matrix aufgenommen:

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 weitere erkunden möchten, können Sie die Dokumentation konsultieren.

question mark

Welche scikit-learn-Klasse kann verwendet werden, um die TF-IDF-Vektoren aus dem Textkorpus zu erhalten?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 7
some-alt