Implementierung von TF-IDF
Swipe um das Menü anzuzeigen
Standardimplementierung
Die Implementierung des TF-IDF-Modells in sklearn ähnelt der des Bag-of-Words-Modells. Zur Modellierung auf einem Korpus wird die Klasse TfidfVectorizer verwendet, wobei die bekannte Methode .fit_transform() zum Einsatz kommt.
123456789101112131415from 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)
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 bei CountVectorizer können die Parameter min_df und max_df festgelegt werden, um nur Begriffe einzubeziehen, die in mindestens min_df und höchstens max_df Dokumenten vorkommen. Diese Parameter 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:
12345678910111213from 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 festzulegen, die in die Matrix aufgenommen werden sollen, kann der Parameter ngram_range verwendet werden. Im folgenden Beispiel werden nur Bigrams in die resultierende Matrix aufgenommen:
12345678910111213from 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. Falls Sie jedoch weitere erkunden möchten, finden Sie zusätzliche Informationen in der Dokumentation.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen