Implementering av TF-IDF
Standardimplementering
Implementeringen av TF-IDF-modellen i sklearn liknar den för bag of words-modellen. För att träna denna modell på en korpus används klassen TfidfVectorizer tillsammans med den välbekanta metoden .fit_transform().
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)
Förutom användningen av en annan klass är resten av implementeringen identisk med den för bag of words-modellen. Som standard beräknas TF-IDF-matrisen med L2-normalisering.
Anpassning av TF-IDF
Precis som med CountVectorizer kan vi ange parametrarna min_df och max_df för att endast inkludera termer som förekommer i minst min_df dokument och högst max_df dokument. Dessa kan anges antingen som absoluta tal för antal dokument eller som en andel av det totala antalet dokument.
Här är ett exempel där vi endast inkluderar de termer som förekommer i exakt 2 dokument genom att sätta både min_df och max_df till 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)
För att ange vilka n-gram som ska inkluderas i vår matris kan vi använda parametern ngram_range. Låt oss endast inkludera bigrams i den resulterande matrisen:
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)
Detta är de mest använda parametrarna, men om du vill utforska fler kan du hänvisa till dokumentationen.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain how the TF-IDF values are calculated in the matrix?
What is the difference between min_df and max_df parameters?
How does using ngram_range affect the resulting TF-IDF matrix?
Awesome!
Completion rate improved to 3.45
Implementering av TF-IDF
Svep för att visa menyn
Standardimplementering
Implementeringen av TF-IDF-modellen i sklearn liknar den för bag of words-modellen. För att träna denna modell på en korpus används klassen TfidfVectorizer tillsammans med den välbekanta metoden .fit_transform().
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)
Förutom användningen av en annan klass är resten av implementeringen identisk med den för bag of words-modellen. Som standard beräknas TF-IDF-matrisen med L2-normalisering.
Anpassning av TF-IDF
Precis som med CountVectorizer kan vi ange parametrarna min_df och max_df för att endast inkludera termer som förekommer i minst min_df dokument och högst max_df dokument. Dessa kan anges antingen som absoluta tal för antal dokument eller som en andel av det totala antalet dokument.
Här är ett exempel där vi endast inkluderar de termer som förekommer i exakt 2 dokument genom att sätta både min_df och max_df till 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)
För att ange vilka n-gram som ska inkluderas i vår matris kan vi använda parametern ngram_range. Låt oss endast inkludera bigrams i den resulterande matrisen:
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)
Detta är de mest använda parametrarna, men om du vill utforska fler kan du hänvisa till dokumentationen.
Tack för dina kommentarer!