Детализация с помощью n-грамм

Анализ тональности текста на Python

Violeta Misheva

Data Scientist

Контекст имеет значение

Я счастлив, не грустен.

Я грустен, не счастлив.

  • Отрицание (частица «не» перед словом) — один из примеров того, почему контекст важен.
Анализ тональности текста на Python

Учёт контекста с помощью BOW

  • Унiграммы : отдельные токены

  • Биграммы: пары токенов

  • Триграммы: тройки токенов

  • n-граммы: последовательность из n токенов

Анализ тональности текста на Python

Учёт контекста с BOW

Сегодня прекрасная погода.

  • Униграммы : { Сегодня, прекрасная, погода }

  • Биграммы: { Сегодня прекрасная, прекрасная погода }

  • Триграммы: { Сегодня прекрасная погода }

Анализ тональности текста на Python

n-граммы с 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)
Анализ тональности текста на Python

Какое n оптимально?

Более длинные последовательности токенов
  • Дают больше признаков
  • Повышают точность моделей машинного обучения
  • Создают риск переобучения
Анализ тональности текста на Python

Настройка размера словаря

CountVectorizer(max_features, max_df, min_df)
  • max_features: если задан, в словарь войдут только наиболее частотные слова
    • Если max_features = None, включаются все слова
  • max_df: игнорировать термины с частотой выше указанной
    • Целое число — абсолютное количество; дробное — доля
    • По умолчанию 1.0 — термины не исключаются
  • min_df: игнорировать термины с частотой ниже указанной
    • Целое число — абсолютное количество; дробное — доля
    • По умолчанию 1.0 — термины не исключаются
Анализ тональности текста на Python

Давайте потренируемся!

Анализ тональности текста на Python

Preparing Video For Download...