Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Implementering av TF-IDF | Grundläggande Textmodeller
Introduktion till NLP

bookImplementering 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().

123456789101112131415
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)
copy

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:

12345678910111213
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)
copy

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:

12345678910111213
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)
copy

Detta är de mest använda parametrarna, men om du vill utforska fler kan du hänvisa till dokumentationen.

question mark

Vilken scikit-learn-klass kan användas för att erhålla TF-IDF-vektorer från textkorpuset?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookImplementering 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().

123456789101112131415
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)
copy

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:

12345678910111213
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)
copy

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:

12345678910111213
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)
copy

Detta är de mest använda parametrarna, men om du vill utforska fler kan du hänvisa till dokumentationen.

question mark

Vilken scikit-learn-klass kan användas för att erhålla TF-IDF-vektorer från textkorpuset?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 7
some-alt