TF-IDF Implementeren
Standaardimplementatie
De implementatie van het TF-IDF-model in sklearn is vergelijkbaar met die van het bag of words-model. Om dit model op een corpus te trainen, wordt de klasse TfidfVectorizer gebruikt, waarbij de bekende .fit_transform()-methode wordt toegepast.
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)
Afgezien van het gebruik van een andere klasse is de rest van de implementatie identiek aan die van het bag of words-model. Standaard wordt de TF-IDF-matrix berekend met L2-normalisatie.
TF-IDF aanpassen
Net als bij CountVectorizer kunnen we de parameters min_df en max_df opgeven om alleen termen op te nemen die in ten minste min_df documenten en in maximaal max_df documenten voorkomen. Deze kunnen worden opgegeven als absolute aantallen documenten of als een proportie van het totale aantal documenten.
Hier is een voorbeeld waarbij we alleen die termen opnemen die in precies 2 documenten voorkomen door zowel min_df als max_df op 2 te zetten:
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)
Om de n-grammen te specificeren die we in onze matrix willen opnemen, kunnen we de parameter ngram_range gebruiken. Laten we alleen bigrams opnemen in de resulterende matrix:
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)
Dit zijn de meest gebruikte parameters. Indien u echter meer wilt verkennen, kunt u terecht in de documentatie.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
TF-IDF Implementeren
Veeg om het menu te tonen
Standaardimplementatie
De implementatie van het TF-IDF-model in sklearn is vergelijkbaar met die van het bag of words-model. Om dit model op een corpus te trainen, wordt de klasse TfidfVectorizer gebruikt, waarbij de bekende .fit_transform()-methode wordt toegepast.
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)
Afgezien van het gebruik van een andere klasse is de rest van de implementatie identiek aan die van het bag of words-model. Standaard wordt de TF-IDF-matrix berekend met L2-normalisatie.
TF-IDF aanpassen
Net als bij CountVectorizer kunnen we de parameters min_df en max_df opgeven om alleen termen op te nemen die in ten minste min_df documenten en in maximaal max_df documenten voorkomen. Deze kunnen worden opgegeven als absolute aantallen documenten of als een proportie van het totale aantal documenten.
Hier is een voorbeeld waarbij we alleen die termen opnemen die in precies 2 documenten voorkomen door zowel min_df als max_df op 2 te zetten:
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)
Om de n-grammen te specificeren die we in onze matrix willen opnemen, kunnen we de parameter ngram_range gebruiken. Laten we alleen bigrams opnemen in de resulterende matrix:
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)
Dit zijn de meest gebruikte parameters. Indien u echter meer wilt verkennen, kunt u terecht in de documentatie.
Bedankt voor je feedback!