Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Bag of Words -mallin Mukauttaminen | Perustekstin Mallit
Johdatus NLP:hen

bookBag 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.

123456789101112131415
from 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)
copy

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.

Note
Määritelmä

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:

123456789101112131415
from 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)
copy

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?

question mark

Mitä min_df-parametri CountVectorizer-luokassa ohjaa?

Select the correct answer

question mark

Mikä on ngram_range-parametrin tarkoitus CountVectorizer-luokassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.45

bookBag 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.

123456789101112131415
from 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)
copy

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.

Note
Määritelmä

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:

123456789101112131415
from 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)
copy

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?

question mark

Mitä min_df-parametri CountVectorizer-luokassa ohjaa?

Select the correct answer

question mark

Mikä on ngram_range-parametrin tarkoitus CountVectorizer-luokassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt