Anpassning av Bag of Words
Bag of Words-modellen, särskilt dess implementation genom klassen CountVectorizer, erbjuder flera parametrar för anpassning. Detta gör det möjligt att skräddarsy modellen efter de specifika behoven i olika textanalysuppgifter, vilket avsevärt ökar modellens effektivitet.
Minsta och största dokumentfrekvens
Parametern min_df definierar det minsta antalet dokument som ett ord måste förekomma i för att inkluderas i vokabulären, antingen som ett absolut tal eller en andel. Detta hjälper till att exkludera ovanliga ord, som ofta är mindre informativa.
På liknande sätt bestämmer max_df den högsta frekvens ett ord får ha över dokumenten för att finnas kvar i vokabulären, även detta kan anges som ett absolut tal eller en andel. Den filtrerar bort alltför vanliga ord som inte bidrar till att särskilja mellan dokument.
123456789101112131415from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
Att ange max_df=3 utesluter ord som förekommer i fler än 3 dokument. I vårt korpus inkluderar detta ord som "quick" och "brown". Eftersom de förekommer i alla eller nästan alla dokument, bidrar de inte till att särskilja mellan dokumenten. Alternativt kan vi ange max_df=0.6, eftersom 60% av 5 dokument är 3 dokument.
N-gramintervall
Parametern ngram_range gör det möjligt att definiera intervallet av n-gramstorlekar som ska inkluderas i vokabulären.
Ett n-gram är en sammanhängande sekvens av n element från ett givet textprov. Dessa element är vanligtvis ord (i vårt fall), stavelser eller bokstäver.
Som standard beaktar CountVectorizer endast unigram (enskilda ord). Genom att inkludera bigram (ordpar), trigram (ordtripletter) eller större n-gram kan modellen berikas genom att fånga mer kontext och semantisk information, vilket potentiellt kan förbättra prestandan.
Detta uppnås genom att ange en tuppel (min_n, max_n) till parametern ngram_range, där min_n representerar minsta n-gramstorlek som ska inkluderas och max_n representerar den största storleken.
Vi fokuserar nu uteslutande på trigram som förekommer i två eller fler dokument i vårt korpus:
123456789101112131415from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
Detta är de mest använda parametrarna, men om du vill utforska fler kan du läsa mer i dokumentationen.
1. Vad styr parametern min_df i CountVectorizer?
2. Vad är syftet med parametern ngram_range i CountVectorizer?
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
Awesome!
Completion rate improved to 3.45
Anpassning av Bag of Words
Svep för att visa menyn
Bag of Words-modellen, särskilt dess implementation genom klassen CountVectorizer, erbjuder flera parametrar för anpassning. Detta gör det möjligt att skräddarsy modellen efter de specifika behoven i olika textanalysuppgifter, vilket avsevärt ökar modellens effektivitet.
Minsta och största dokumentfrekvens
Parametern min_df definierar det minsta antalet dokument som ett ord måste förekomma i för att inkluderas i vokabulären, antingen som ett absolut tal eller en andel. Detta hjälper till att exkludera ovanliga ord, som ofta är mindre informativa.
På liknande sätt bestämmer max_df den högsta frekvens ett ord får ha över dokumenten för att finnas kvar i vokabulären, även detta kan anges som ett absolut tal eller en andel. Den filtrerar bort alltför vanliga ord som inte bidrar till att särskilja mellan dokument.
123456789101112131415from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
Att ange max_df=3 utesluter ord som förekommer i fler än 3 dokument. I vårt korpus inkluderar detta ord som "quick" och "brown". Eftersom de förekommer i alla eller nästan alla dokument, bidrar de inte till att särskilja mellan dokumenten. Alternativt kan vi ange max_df=0.6, eftersom 60% av 5 dokument är 3 dokument.
N-gramintervall
Parametern ngram_range gör det möjligt att definiera intervallet av n-gramstorlekar som ska inkluderas i vokabulären.
Ett n-gram är en sammanhängande sekvens av n element från ett givet textprov. Dessa element är vanligtvis ord (i vårt fall), stavelser eller bokstäver.
Som standard beaktar CountVectorizer endast unigram (enskilda ord). Genom att inkludera bigram (ordpar), trigram (ordtripletter) eller större n-gram kan modellen berikas genom att fånga mer kontext och semantisk information, vilket potentiellt kan förbättra prestandan.
Detta uppnås genom att ange en tuppel (min_n, max_n) till parametern ngram_range, där min_n representerar minsta n-gramstorlek som ska inkluderas och max_n representerar den största storleken.
Vi fokuserar nu uteslutande på trigram som förekommer i två eller fler dokument i vårt korpus:
123456789101112131415from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
Detta är de mest använda parametrarna, men om du vill utforska fler kan du läsa mer i dokumentationen.
1. Vad styr parametern min_df i CountVectorizer?
2. Vad är syftet med parametern ngram_range i CountVectorizer?
Tack för dina kommentarer!