N-gram i detalj

Sentimentanalys i Python

Violeta Misheva

Data Scientist

Kontext spelar roll

Jag är glad, inte ledsen.

Jag är ledsen, inte glad.

  • Att sätta 'inte' framför ett ord (negation) är ett exempel på varför kontext spelar roll.
Sentimentanalys i Python

Fånga kontext med en BOW

  • Unigramer : enstaka tokens

  • Bigramer: par av tokens

  • Trigramer: tripplar av tokens

  • n-gramer: sekvens av n tokens

Sentimentanalys i Python

Fånga kontext med BOW

The weather today is wonderful.

  • Unigramer : { The, weather, today, is, wonderful }

  • Bigramer: {The weather, weather today, today is, is wonderful}

  • Trigramer: {The weather today, weather today is, today is wonderful}

Sentimentanalys i Python

N-gramer med CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer(ngram_range=(min_n, max_n))
# Only unigrams
ngram_range=(1, 1)
# Uni- and bigrams
ngram_range=(1, 2)
Sentimentanalys i Python

Vilket n är bäst?

Längre tokensekvenser
  • Ger fler särdrag
  • Ökar precisionen hos maskininlärningsmodeller
  • Risk för överanpassning
Sentimentanalys i Python

Ange vokabulärens storlek

CountVectorizer(max_features, max_df, min_df)
  • max_features: om angivet inkluderas endast de vanligaste orden i vokabulären
    • Om max_features = None inkluderas alla ord
  • max_df: ignorerar termer med högre frekvens än angivet värde
    • Heltal innebär absolut antal; decimaltal innebär andel
    • Standard är 1.0, vilket innebär att inga termer ignoreras
  • min_df: ignorerar termer med lägre frekvens än angivet värde
    • Heltal innebär absolut antal; decimaltal innebär andel
    • Standard är 1.0, vilket innebär att inga termer ignoreras
Sentimentanalys i Python

Nu kör vi en övning!

Sentimentanalys i Python

Preparing Video For Download...