Tilpasning av Bag of Words
Bag of Words-modellen, spesielt implementert gjennom CountVectorizer-klassen, tilbyr flere parametere for tilpasning. Dette gjør det mulig å skreddersy modellen til de spesifikke behovene i ulike tekstanalyseoppgaver, noe som i stor grad øker modellens effektivitet.
Minimum og maksimum dokumentfrekvens
Parameteren min_df definerer minimum antall dokumenter et begrep må forekomme i for å inkluderes i vokabularet, enten som et absolutt tall eller en andel. Dette bidrar til å utelate sjeldne begreper, som ofte er mindre informative.
Tilsvarende bestemmer max_df maksimal frekvens et begrep kan ha på tvers av dokumenter for å forbli i vokabularet, også spesifiserbart som et absolutt tall eller en andel. Dette filtrerer ut altfor vanlige begreper som ikke bidrar til å skille mellom 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)
Ved å sette max_df=3 utelukkes ord som forekommer i mer enn 3 dokumenter. I vårt korpus inkluderer dette ord som "quick" og "brown". Siden de forekommer i alle eller nesten alle dokumentene, bidrar de ikke til å skille mellom dokumentene. Alternativt kan vi sette max_df=0.6, ettersom 60 % av 5 dokumenter tilsvarer 3 dokumenter.
N-gram-område
Parameteren ngram_range lar deg definere området for n-gram-størrelser som skal inkluderes i vokabularet.
Et n-gram er en sammenhengende sekvens av n elementer fra et gitt tekstutvalg. Disse elementene er vanligvis ord (i vårt tilfelle), stavelser eller bokstaver.
Som standard vurderer CountVectorizer kun unigrammer (enkeltord). Ved å inkludere bigrammer (ordpar), trigrammer (ordtriplett) eller større n-gram, kan modellen berikes ved å fange opp mer kontekst og semantisk informasjon, noe som potensielt kan forbedre ytelsen.
Dette oppnås ved å sende en tuple (min_n, max_n) til parameteren ngram_range, der min_n angir minste n-gram-størrelse som skal inkluderes, og max_n angir den maksimale størrelsen.
La oss nå fokusere utelukkende på trigrammer som forekommer i to eller flere dokumenter 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)
Dette er de mest brukte parameterne, men dersom du ønsker å utforske flere, kan du se dokumentasjonen.
1. Hva kontrollerer parameteren min_df i CountVectorizer?
2. Hva er formålet med parameteren ngram_range i CountVectorizer?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain how to choose appropriate values for min_df and max_df?
What are some practical use cases for using n-grams instead of unigrams?
Can you show how the output changes if we use both bigrams and trigrams?
Awesome!
Completion rate improved to 3.45
Tilpasning av Bag of Words
Sveip for å vise menyen
Bag of Words-modellen, spesielt implementert gjennom CountVectorizer-klassen, tilbyr flere parametere for tilpasning. Dette gjør det mulig å skreddersy modellen til de spesifikke behovene i ulike tekstanalyseoppgaver, noe som i stor grad øker modellens effektivitet.
Minimum og maksimum dokumentfrekvens
Parameteren min_df definerer minimum antall dokumenter et begrep må forekomme i for å inkluderes i vokabularet, enten som et absolutt tall eller en andel. Dette bidrar til å utelate sjeldne begreper, som ofte er mindre informative.
Tilsvarende bestemmer max_df maksimal frekvens et begrep kan ha på tvers av dokumenter for å forbli i vokabularet, også spesifiserbart som et absolutt tall eller en andel. Dette filtrerer ut altfor vanlige begreper som ikke bidrar til å skille mellom 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)
Ved å sette max_df=3 utelukkes ord som forekommer i mer enn 3 dokumenter. I vårt korpus inkluderer dette ord som "quick" og "brown". Siden de forekommer i alle eller nesten alle dokumentene, bidrar de ikke til å skille mellom dokumentene. Alternativt kan vi sette max_df=0.6, ettersom 60 % av 5 dokumenter tilsvarer 3 dokumenter.
N-gram-område
Parameteren ngram_range lar deg definere området for n-gram-størrelser som skal inkluderes i vokabularet.
Et n-gram er en sammenhengende sekvens av n elementer fra et gitt tekstutvalg. Disse elementene er vanligvis ord (i vårt tilfelle), stavelser eller bokstaver.
Som standard vurderer CountVectorizer kun unigrammer (enkeltord). Ved å inkludere bigrammer (ordpar), trigrammer (ordtriplett) eller større n-gram, kan modellen berikes ved å fange opp mer kontekst og semantisk informasjon, noe som potensielt kan forbedre ytelsen.
Dette oppnås ved å sende en tuple (min_n, max_n) til parameteren ngram_range, der min_n angir minste n-gram-størrelse som skal inkluderes, og max_n angir den maksimale størrelsen.
La oss nå fokusere utelukkende på trigrammer som forekommer i to eller flere dokumenter 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)
Dette er de mest brukte parameterne, men dersom du ønsker å utforske flere, kan du se dokumentasjonen.
1. Hva kontrollerer parameteren min_df i CountVectorizer?
2. Hva er formålet med parameteren ngram_range i CountVectorizer?
Takk for tilbakemeldingene dine!