Implementering af TF-IDF
Standardimplementering
Implementeringen af TF-IDF-modellen i sklearn ligner den for bag of words-modellen. For at træne denne model på et korpus anvendes klassen TfidfVectorizer sammen med den velkendte .fit_transform()-metode.
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)
Bortset fra brugen af en anden klasse er resten af implementeringen identisk med bag of words-modellen. Som standard beregnes TF-IDF-matricen med L2-normalisering.
Tilpasning af TF-IDF
Igen, ligesom med CountVectorizer, kan vi angive parametrene min_df og max_df for kun at inkludere de termer, der forekommer i mindst min_df dokumenter og højst max_df dokumenter. Disse kan angives som enten absolutte tal for dokumenter eller som en procentdel af det samlede antal dokumenter.
Her er et eksempel, hvor vi kun inkluderer de termer, der optræder i præcis 2 dokumenter, ved at sætte både min_df og max_df til 2:
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)
For at angive hvilke n-grammer, der skal inkluderes i vores matrix, kan vi bruge parameteren ngram_range. Lad os kun inkludere bigrams i den 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)
Dette er de mest almindeligt anvendte parametre, men hvis du ønsker at udforske flere af dem, kan du se dokumentationen.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.45
Implementering af TF-IDF
Stryg for at vise menuen
Standardimplementering
Implementeringen af TF-IDF-modellen i sklearn ligner den for bag of words-modellen. For at træne denne model på et korpus anvendes klassen TfidfVectorizer sammen med den velkendte .fit_transform()-metode.
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)
Bortset fra brugen af en anden klasse er resten af implementeringen identisk med bag of words-modellen. Som standard beregnes TF-IDF-matricen med L2-normalisering.
Tilpasning af TF-IDF
Igen, ligesom med CountVectorizer, kan vi angive parametrene min_df og max_df for kun at inkludere de termer, der forekommer i mindst min_df dokumenter og højst max_df dokumenter. Disse kan angives som enten absolutte tal for dokumenter eller som en procentdel af det samlede antal dokumenter.
Her er et eksempel, hvor vi kun inkluderer de termer, der optræder i præcis 2 dokumenter, ved at sætte både min_df og max_df til 2:
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)
For at angive hvilke n-grammer, der skal inkluderes i vores matrix, kan vi bruge parameteren ngram_range. Lad os kun inkludere bigrams i den 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)
Dette er de mest almindeligt anvendte parametre, men hvis du ønsker at udforske flere af dem, kan du se dokumentationen.
Tak for dine kommentarer!