Bag of Words -mallin Mukauttaminen
Bag of Words -malli, erityisesti sen toteutus CountVectorizer-luokan kautta, tarjoaa useita parametreja mukauttamiseen. Näiden avulla mallia voidaan räätälöidä erilaisten tekstianalyysitehtävien tarpeisiin, mikä parantaa merkittävästi mallin tehokkuutta.
Minimi- ja maksimi dokumenttifrekvenssi
min_df-parametri määrittää vähimmäismäärän dokumentteja, joissa termin on esiinnyttävä, jotta se sisällytetään sanastoon. Tämä voidaan määrittää joko absoluuttisena lukuna tai suhteena. Parametri auttaa poistamaan harvinaiset termit, jotka ovat usein vähemmän informatiivisia.
Vastaavasti max_df määrittää suurimman sallitun frekvenssin, jolla termi voi esiintyä dokumenteissa pysyäkseen sanastossa. Tämä voidaan myös määrittää absoluuttisena lukuna tai suhteena. Parametri suodattaa pois liian yleiset termit, jotka eivät auta erottamaan dokumentteja toisistaan.
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)
Asetus max_df=3 sulkee pois sanat, jotka esiintyvät useammassa kuin kolmessa dokumentissa. Korpuksessamme tällaisia sanoja ovat esimerkiksi "quick" ja "brown". Koska ne esiintyvät jokaisessa tai lähes jokaisessa dokumentissa, ne eivät oikeastaan auta erottamaan dokumentteja toisistaan. Vaihtoehtoisesti voimme asettaa max_df=0.6, sillä 60 % viidestä dokumentista on kolme dokumenttia.
N-grammi-alue
Parametri ngram_range mahdollistaa määrittää, minkä kokoisia n-grammeja sisällytetään sanastoon.
N-grammi on peräkkäinen jakso n yksiköstä annetusta tekstinäytteestä. Nämä yksiköt ovat tyypillisesti sanoja (tässä tapauksessa), tavuja tai kirjaimia.
Oletuksena CountVectorizer huomioi vain unigrammit (yksittäiset sanat). Kuitenkin bigrammien (sanapareja), trigrammien (kolmen sanan yhdistelmiä) tai suurempien n-grammien sisällyttäminen voi rikastuttaa mallia tallentamalla enemmän kontekstia ja semanttista tietoa, mikä voi parantaa suorituskykyä.
Tämä saavutetaan antamalla tuple (min_n, max_n) ngram_range-parametrille, jossa min_n määrittää pienimmän mukaan otettavan n-grammin koon ja max_n suurimman koon.
Keskitytään nyt pelkästään trigrammeihin, jotka esiintyvät kahdessa tai useammassa dokumentissa korpuksessamme:
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)
Nämä ovat yleisimmin käytetyt parametrit, mutta jos haluat tutustua muihin vaihtoehtoihin, voit katsoa dokumentaatiota.
1. Mitä min_df-parametri CountVectorizer-luokassa ohjaa?
2. Mikä on ngram_range-parametrin tarkoitus CountVectorizer-luokassa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.45
Bag of Words -mallin Mukauttaminen
Pyyhkäise näyttääksesi valikon
Bag of Words -malli, erityisesti sen toteutus CountVectorizer-luokan kautta, tarjoaa useita parametreja mukauttamiseen. Näiden avulla mallia voidaan räätälöidä erilaisten tekstianalyysitehtävien tarpeisiin, mikä parantaa merkittävästi mallin tehokkuutta.
Minimi- ja maksimi dokumenttifrekvenssi
min_df-parametri määrittää vähimmäismäärän dokumentteja, joissa termin on esiinnyttävä, jotta se sisällytetään sanastoon. Tämä voidaan määrittää joko absoluuttisena lukuna tai suhteena. Parametri auttaa poistamaan harvinaiset termit, jotka ovat usein vähemmän informatiivisia.
Vastaavasti max_df määrittää suurimman sallitun frekvenssin, jolla termi voi esiintyä dokumenteissa pysyäkseen sanastossa. Tämä voidaan myös määrittää absoluuttisena lukuna tai suhteena. Parametri suodattaa pois liian yleiset termit, jotka eivät auta erottamaan dokumentteja toisistaan.
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)
Asetus max_df=3 sulkee pois sanat, jotka esiintyvät useammassa kuin kolmessa dokumentissa. Korpuksessamme tällaisia sanoja ovat esimerkiksi "quick" ja "brown". Koska ne esiintyvät jokaisessa tai lähes jokaisessa dokumentissa, ne eivät oikeastaan auta erottamaan dokumentteja toisistaan. Vaihtoehtoisesti voimme asettaa max_df=0.6, sillä 60 % viidestä dokumentista on kolme dokumenttia.
N-grammi-alue
Parametri ngram_range mahdollistaa määrittää, minkä kokoisia n-grammeja sisällytetään sanastoon.
N-grammi on peräkkäinen jakso n yksiköstä annetusta tekstinäytteestä. Nämä yksiköt ovat tyypillisesti sanoja (tässä tapauksessa), tavuja tai kirjaimia.
Oletuksena CountVectorizer huomioi vain unigrammit (yksittäiset sanat). Kuitenkin bigrammien (sanapareja), trigrammien (kolmen sanan yhdistelmiä) tai suurempien n-grammien sisällyttäminen voi rikastuttaa mallia tallentamalla enemmän kontekstia ja semanttista tietoa, mikä voi parantaa suorituskykyä.
Tämä saavutetaan antamalla tuple (min_n, max_n) ngram_range-parametrille, jossa min_n määrittää pienimmän mukaan otettavan n-grammin koon ja max_n suurimman koon.
Keskitytään nyt pelkästään trigrammeihin, jotka esiintyvät kahdessa tai useammassa dokumentissa korpuksessamme:
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)
Nämä ovat yleisimmin käytetyt parametrit, mutta jos haluat tutustua muihin vaihtoehtoihin, voit katsoa dokumentaatiota.
1. Mitä min_df-parametri CountVectorizer-luokassa ohjaa?
2. Mikä on ngram_range-parametrin tarkoitus CountVectorizer-luokassa?
Kiitos palautteestasi!