Bag-of-Words Aanpassen
Het Bag of Words-model, met name de implementatie via de CountVectorizer-klasse, biedt verschillende parameters voor aanpassing. Hierdoor kan het model worden afgestemd op de specifieke behoeften van diverse tekstanalysetaken, wat de effectiviteit van het model aanzienlijk vergroot.
Minimale en Maximale Documentfrequentie
De parameter min_df definieert het minimale aantal documenten waarin een term moet voorkomen om te worden opgenomen in de vocabulaire, hetzij als een absoluut getal of een proportie. Dit helpt om zeldzame termen uit te sluiten, die vaak minder informatief zijn.
Op vergelijkbare wijze bepaalt max_df de maximale frequentie waarmee een term in documenten mag voorkomen om in de vocabulaire te blijven, eveneens op te geven als een absoluut getal of proportie. Hiermee worden te algemene termen gefilterd die niet bijdragen aan het onderscheiden van documenten.
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)
Het instellen van max_df=3 sluit woorden uit die in meer dan 3 documenten voorkomen. In onze corpus zijn dit woorden zoals "quick" en "brown". Aangezien deze in elk of bijna elk document voorkomen, dragen ze niet echt bij aan het onderscheiden van documenten. Als alternatief kunnen we max_df=0.6 instellen, aangezien 60% van 5 documenten gelijk is aan 3 documenten.
N-grambereik
De parameter ngram_range maakt het mogelijk om het bereik van n-gramgroottes te definiëren die in de vocabulaire worden opgenomen.
Een n-gram is een aaneengesloten reeks van n items uit een gegeven tekstsample. Deze items zijn doorgaans woorden (in ons geval), lettergrepen of letters.
Standaard beschouwt CountVectorizer alleen unigrammen (enkele woorden). Het opnemen van bigrammen (paren van woorden), trigrammen (reeksen van drie woorden) of grotere n-grammen kan het model verrijken door meer context en semantische informatie vast te leggen, wat mogelijk de prestaties verbetert.
Dit wordt bereikt door een tuple (min_n, max_n) door te geven aan de parameter ngram_range, waarbij min_n de minimale n-gramgrootte aangeeft en max_n de maximale grootte.
Laten we ons nu uitsluitend richten op trigrammen die in twee of meer documenten binnen onze corpus voorkomen:
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)
Dit zijn de meest gebruikte parameters. Indien u meer wilt verkennen, raadpleeg dan de documentatie.
1. Waar regelt de parameter min_df in CountVectorizer?
2. Wat is het doel van de parameter ngram_range in CountVectorizer?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
Bag-of-Words Aanpassen
Veeg om het menu te tonen
Het Bag of Words-model, met name de implementatie via de CountVectorizer-klasse, biedt verschillende parameters voor aanpassing. Hierdoor kan het model worden afgestemd op de specifieke behoeften van diverse tekstanalysetaken, wat de effectiviteit van het model aanzienlijk vergroot.
Minimale en Maximale Documentfrequentie
De parameter min_df definieert het minimale aantal documenten waarin een term moet voorkomen om te worden opgenomen in de vocabulaire, hetzij als een absoluut getal of een proportie. Dit helpt om zeldzame termen uit te sluiten, die vaak minder informatief zijn.
Op vergelijkbare wijze bepaalt max_df de maximale frequentie waarmee een term in documenten mag voorkomen om in de vocabulaire te blijven, eveneens op te geven als een absoluut getal of proportie. Hiermee worden te algemene termen gefilterd die niet bijdragen aan het onderscheiden van documenten.
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)
Het instellen van max_df=3 sluit woorden uit die in meer dan 3 documenten voorkomen. In onze corpus zijn dit woorden zoals "quick" en "brown". Aangezien deze in elk of bijna elk document voorkomen, dragen ze niet echt bij aan het onderscheiden van documenten. Als alternatief kunnen we max_df=0.6 instellen, aangezien 60% van 5 documenten gelijk is aan 3 documenten.
N-grambereik
De parameter ngram_range maakt het mogelijk om het bereik van n-gramgroottes te definiëren die in de vocabulaire worden opgenomen.
Een n-gram is een aaneengesloten reeks van n items uit een gegeven tekstsample. Deze items zijn doorgaans woorden (in ons geval), lettergrepen of letters.
Standaard beschouwt CountVectorizer alleen unigrammen (enkele woorden). Het opnemen van bigrammen (paren van woorden), trigrammen (reeksen van drie woorden) of grotere n-grammen kan het model verrijken door meer context en semantische informatie vast te leggen, wat mogelijk de prestaties verbetert.
Dit wordt bereikt door een tuple (min_n, max_n) door te geven aan de parameter ngram_range, waarbij min_n de minimale n-gramgrootte aangeeft en max_n de maximale grootte.
Laten we ons nu uitsluitend richten op trigrammen die in twee of meer documenten binnen onze corpus voorkomen:
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)
Dit zijn de meest gebruikte parameters. Indien u meer wilt verkennen, raadpleeg dan de documentatie.
1. Waar regelt de parameter min_df in CountVectorizer?
2. Wat is het doel van de parameter ngram_range in CountVectorizer?
Bedankt voor je feedback!