Tilpasning af Bag of Words
Bag of Words-modellen, især dens implementering gennem CountVectorizer-klassen, tilbyder flere parametre til tilpasning. Dette muliggør, at modellen kan tilpasses de specifikke behov i forskellige tekstanalyseopgaver, hvilket væsentligt øger modellens effektivitet.
Minimum og Maksimal Dokumentfrekvens
Parameteren min_df definerer det mindste antal dokumenter, et term skal optræde i for at blive inkluderet i vokabularet, enten som et absolut tal eller en proportion. Dette hjælper med at udelukke sjældne termer, som ofte er mindre informative.
Tilsvarende bestemmer max_df den maksimale frekvens, et term må have på tværs af dokumenter for at forblive i vokabularet, også angivet som et absolut tal eller en proportion. Dette filtrerer alt for almindelige termer fra, som ikke bidrager til at skelne mellem dokumenter.
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)
Indstilling af max_df=3 udelukker ord, der forekommer i mere end 3 dokumenter. I vores korpus omfatter dette ord som "quick" og "brown". Da de optræder i alle eller næsten alle dokumenter, bidrager de ikke væsentligt til at skelne mellem dokumenterne. Alternativt kunne vi sætte max_df=0.6, da 60% af 5 dokumenter svarer til 3 dokumenter.
N-gram-interval
Parameteren ngram_range gør det muligt at definere intervallet af n-gram-størrelser, der skal inkluderes i ordforrådet.
Et n-gram er en sammenhængende sekvens af n elementer fra en given tekstprøve. Disse elementer er typisk ord (i vores tilfælde), stavelser eller bogstaver.
Som standard overvejer CountVectorizer kun unigrammer (enkeltord). Ved at inkludere bigrammer (ordpar), trigrammer (ordtriple) eller større n-grammer kan modellen dog beriges ved at indfange mere kontekst og semantisk information, hvilket potentielt kan forbedre ydeevnen.
Dette opnås ved at angive en tuple (min_n, max_n) til parameteren ngram_range, hvor min_n angiver den mindste n-gram-størrelse, der skal inkluderes, og max_n angiver den maksimale størrelse.
Fokusér nu udelukkende på trigrammer, der forekommer i to eller flere dokumenter i vores 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)
Dette er de mest anvendte parametre, men hvis du ønsker at udforske flere, kan du se dokumentationen.
1. Hvad styrer parameteren min_df i CountVectorizer?
2. Hvad er formålet med parameteren ngram_range i CountVectorizer?
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
Tilpasning af Bag of Words
Stryg for at vise menuen
Bag of Words-modellen, især dens implementering gennem CountVectorizer-klassen, tilbyder flere parametre til tilpasning. Dette muliggør, at modellen kan tilpasses de specifikke behov i forskellige tekstanalyseopgaver, hvilket væsentligt øger modellens effektivitet.
Minimum og Maksimal Dokumentfrekvens
Parameteren min_df definerer det mindste antal dokumenter, et term skal optræde i for at blive inkluderet i vokabularet, enten som et absolut tal eller en proportion. Dette hjælper med at udelukke sjældne termer, som ofte er mindre informative.
Tilsvarende bestemmer max_df den maksimale frekvens, et term må have på tværs af dokumenter for at forblive i vokabularet, også angivet som et absolut tal eller en proportion. Dette filtrerer alt for almindelige termer fra, som ikke bidrager til at skelne mellem dokumenter.
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)
Indstilling af max_df=3 udelukker ord, der forekommer i mere end 3 dokumenter. I vores korpus omfatter dette ord som "quick" og "brown". Da de optræder i alle eller næsten alle dokumenter, bidrager de ikke væsentligt til at skelne mellem dokumenterne. Alternativt kunne vi sætte max_df=0.6, da 60% af 5 dokumenter svarer til 3 dokumenter.
N-gram-interval
Parameteren ngram_range gør det muligt at definere intervallet af n-gram-størrelser, der skal inkluderes i ordforrådet.
Et n-gram er en sammenhængende sekvens af n elementer fra en given tekstprøve. Disse elementer er typisk ord (i vores tilfælde), stavelser eller bogstaver.
Som standard overvejer CountVectorizer kun unigrammer (enkeltord). Ved at inkludere bigrammer (ordpar), trigrammer (ordtriple) eller større n-grammer kan modellen dog beriges ved at indfange mere kontekst og semantisk information, hvilket potentielt kan forbedre ydeevnen.
Dette opnås ved at angive en tuple (min_n, max_n) til parameteren ngram_range, hvor min_n angiver den mindste n-gram-størrelse, der skal inkluderes, og max_n angiver den maksimale størrelse.
Fokusér nu udelukkende på trigrammer, der forekommer i to eller flere dokumenter i vores 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)
Dette er de mest anvendte parametre, men hvis du ønsker at udforske flere, kan du se dokumentationen.
1. Hvad styrer parameteren min_df i CountVectorizer?
2. Hvad er formålet med parameteren ngram_range i CountVectorizer?
Tak for dine kommentarer!