Kursinhalt
Einführung in NLP
Einführung in NLP
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:
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)
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:
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)
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:
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)
Dies sind die am häufigsten verwendeten Parameter. Wenn Sie jedoch mehr davon erkunden möchten, können Sie die Dokumentation einsehen.
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:
-
Importieren Sie die
TfidfVectorizer
-Klasse, um ein TF-IDF-Modell zu erstellen. -
Instanziieren Sie die
TfidfVectorizer
-Klasse alstfidf_vectorizer
, die sowohl Unigramme, Bigramme als auch Trigramme enthält. -
Verwenden Sie die geeignete Methode von
tfidf_vectorizer
, um eine TF-IDF-Matrix aus der'Document'
-Spalte imcorpus
zu erzeugen. -
Konvertieren Sie
tfidf_matrix
in ein dichtes Array und erstellen Sie einDataFrame
daraus, wobei die einzigartigen Merkmale (Begriffe) als Spalten festgelegt werden. Weisen Sie dies der Variablentfidf_matrix_df
zu. -
Zeigen Sie den Vektor für 'medical' als Array an, anstatt als pandas
Series
.
Lösung
Danke für Ihr Feedback!
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:
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)
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:
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)
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:
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)
Dies sind die am häufigsten verwendeten Parameter. Wenn Sie jedoch mehr davon erkunden möchten, können Sie die Dokumentation einsehen.
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:
-
Importieren Sie die
TfidfVectorizer
-Klasse, um ein TF-IDF-Modell zu erstellen. -
Instanziieren Sie die
TfidfVectorizer
-Klasse alstfidf_vectorizer
, die sowohl Unigramme, Bigramme als auch Trigramme enthält. -
Verwenden Sie die geeignete Methode von
tfidf_vectorizer
, um eine TF-IDF-Matrix aus der'Document'
-Spalte imcorpus
zu erzeugen. -
Konvertieren Sie
tfidf_matrix
in ein dichtes Array und erstellen Sie einDataFrame
daraus, wobei die einzigartigen Merkmale (Begriffe) als Spalten festgelegt werden. Weisen Sie dies der Variablentfidf_matrix_df
zu. -
Zeigen Sie den Vektor für 'medical' als Array an, anstatt als pandas
Series
.
Lösung
Danke für Ihr Feedback!