Побудова моделей n-грам

Інженерія ознак для NLP у Python

Rounak Banik

Data Scientist

Недоліки BoW

review label
'The movie was good and not boring' positive
'The movie was not good and boring' negative

 

  • Тотожне представлення 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...