Construindo modelos de n-gramas

Feature Engineering para NLP em Python

Rounak Banik

Data Scientist

Limitações do BoW

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

 

  • Exatamente a mesma representação BoW!
  • O contexto das palavras se perde.
  • Sentimento depende da posição de 'not'.
Feature Engineering para NLP em Python

n-gramas

  • Sequência contígua de n elementos (ou palavras) em um documento.
  • n = 1 → bag-of-words
    'for you a thousand times over'
    
  • n = 2, n-gramas:
    [
    'for you',
    'you a',
    'a thousand',
    'thousand times',
    'times over'
    ]
    
Feature Engineering para NLP em Python

n-gramas

'for you a thousand times over'
  • n = 3, n-gramas:
    [
    'for you a',
    'you a thousand',
    'a thousand times',
    'thousand times over'
    ]
    
  • Captura mais contexto.
Feature Engineering para NLP em Python

Aplicações

  • Completar sentenças
  • Correção ortográfica
  • Correção em tradução automática
Feature Engineering para NLP em Python

Construindo modelos de n-gramas com scikit-learn

Gera apenas bigramas.

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

Gera unigrama, bigramas e trigramas.

ngrams = CountVectorizer(ngram_range=(1,3))
Feature Engineering para NLP em Python

Limitações

  • Maldição da dimensionalidade
  • n-gramas de ordem maior são raros
  • Mantenha n pequeno
Feature Engineering para NLP em Python

Vamos praticar!

Feature Engineering para NLP em Python

Preparing Video For Download...