N-gramy w szczegółach

Analiza sentymentu w Pythonie

Violeta Misheva

Data Scientist

Kontekst ma znaczenie

Jestem szczęśliwy, nie smutny.

Jestem smutny, nie szczęśliwy.

  • Przeczenie (np. „nie") przed słowem to przykład znaczenia kontekstu.
Analiza sentymentu w Pythonie

Uwzględnianie kontekstu w modelu BOW

  • Unigramy: pojedyncze tokeny

  • Bigramy: pary tokenów

  • Trygramy: trójki tokenów

  • n-gramy: sekwencje n tokenów

Analiza sentymentu w Pythonie

Uwzględnianie kontekstu w BOW

Pogoda dziś jest wspaniała.

  • Unigramy: { Pogoda, dziś, jest, wspaniała }

  • Bigramy: {Pogoda dziś, dziś jest, jest wspaniała}

  • Trygramy: {Pogoda dziś jest, dziś jest wspaniała}

Analiza sentymentu w Pythonie

N-gramy z 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)
Analiza sentymentu w Pythonie

Jakie n jest optymalne?

Dłuższe sekwencje tokenów
  • Więcej cech
  • Wyższa precyzja modeli uczenia maszynowego
  • Ryzyko przeuczenia
Analiza sentymentu w Pythonie

Określanie rozmiaru słownika

CountVectorizer(max_features, max_df, min_df)
  • max_features: jeśli określone, uwzględnia tylko najczęstsze słowa w słowniku
    • Jeśli max_features = None, uwzględniane są wszystkie słowa
  • max_df: ignoruje terminy o częstości wyższej niż podana
    • Liczba całkowita oznacza liczbę bezwzględną, liczba zmiennoprzecinkowa – proporcję
    • Domyślnie 1.0 – żadne terminy nie są ignorowane
  • min_df: ignoruje terminy o częstości niższej niż podana
    • Liczba całkowita oznacza liczbę bezwzględną, liczba zmiennoprzecinkowa – proporcję
    • Domyślnie 1.0 – żadne terminy nie są ignorowane
Analiza sentymentu w Pythonie

Czas na ćwiczenia!

Analiza sentymentu w Pythonie

Preparing Video For Download...