Построение моделей n-грамм

Конструирование признаков для NLP на Python

Rounak Banik

Data Scientist

Недостатки BoW

отзыв метка
'The movie was good and not boring' положительная
'The movie was not good and boring' отрицательная

 

  • Представление BoW полностью совпадает!
  • Контекст слов утрачен.
  • Тональность зависит от позиции слова 'not'.
Конструирование признаков для NLP на Python

n-граммы

  • Непрерывная последовательность из n элементов (слов) в документе.
  • n = 1 → мешок слов (bag-of-words)
    'for you a thousand times over'
    
  • n = 2, n-граммы:
    [
    'for you',
    'you a',
    'a thousand',
    'thousand times',
    'times over'
    ]
    
Конструирование признаков для NLP на Python

n-граммы

'for you a thousand times over'
  • n = 3, n-граммы:
    [
    'for you a',
    'you a thousand',
    'a thousand times',
    'thousand times over'
    ]
    
  • Захватывает больше контекста.
Конструирование признаков для NLP на Python

Применение

  • Автодополнение предложений
  • Исправление орфографии
  • Улучшение машинного перевода
Конструирование признаков для NLP на Python

Построение моделей n-грамм с помощью scikit-learn

Генерирует только биграммы.

bigrams = CountVectorizer(ngram_range=(2,2))

Генерирует униграммы, биграммы и триграммы.

ngrams = CountVectorizer(ngram_range=(1,3))
Конструирование признаков для NLP на Python

Недостатки

  • Проклятие размерности
  • N-граммы высокого порядка встречаются редко
  • Используйте небольшие значения n
Конструирование признаков для NLP на Python

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

Конструирование признаков для NLP на Python

Preparing Video For Download...