N-gramy do hloubky

Sentiment Analysis v Pythonu

Violeta Misheva

Data Scientist

Kontext je důležitý

Jsem šťastný, ne smutný.

Jsem smutný, ne šťastný.

  • Negace (umístění „ne" před slovo) je příkladem důležitosti kontextu.
Sentiment Analysis v Pythonu

Zachycení kontextu pomocí BOW

  • Unigramy: jednotlivé tokeny

  • Bigramy: dvojice tokenů

  • Trigramy: trojice tokenů

  • N-gramy: sekvence n tokenů

Sentiment Analysis v Pythonu

Zachycení kontextu pomocí BOW

Dnes je nádherné počasí.

  • Unigramy: { Dnes, je, nádherné, počasí }

  • Bigramy: { Dnes je, je nádherné, nádherné počasí }

  • Trigramy: { Dnes je nádherné, je nádherné počasí }

Sentiment Analysis v Pythonu

N-gramy s 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)
Sentiment Analysis v Pythonu

Jaké n je nejlepší?

Delší sekvence tokenů
  • Více příznaků
  • Vyšší přesnost modelů strojového učení
  • Riziko přetrénování
Sentiment Analysis v Pythonu

Nastavení velikosti slovníku

CountVectorizer(max_features, max_df, min_df)
  • max_features: zahrnuje pouze nejčastější slova ve slovníku
    • Pokud max_features = None, zahrnuty jsou všechny termy
  • max_df: ignoruje termy s vyšší než zadanou frekvencí
    • Celé číslo = absolutní počet; desetinné číslo = podíl
    • Výchozí hodnota je 1.0 – žádné termy se neignorují
  • min_df: ignoruje termy s nižší než zadanou frekvencí
    • Celé číslo = absolutní počet; desetinné číslo = podíl
    • Výchozí hodnota je 1.0 – žádné termy se neignorují
Sentiment Analysis v Pythonu

Pojďme si procvičit!

Sentiment Analysis v Pythonu

Preparing Video For Download...