N-grammodellen bouwen

Feature Engineering voor NLP in Python

Rounak Banik

Data Scientist

BoW-beperkingen

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

 

  • Exact dezelfde BoW-representatie!
  • Context van de woorden gaat verloren.
  • Sentiment hangt af van de positie van 'not'.
Feature Engineering voor NLP in Python

n-grams

  • Aaneengesloten reeks van n elementen (of woorden) in een document.
  • n = 1 → bag-of-words
    'for you a thousand times over'
    
  • n = 2, n-grams:
    [
    'for you',
    'you a',
    'a thousand',
    'thousand times',
    'times over'
    ]
    
Feature Engineering voor NLP in Python

n-grams

'for you a thousand times over'
  • n = 3, n-grams:
    [
    'for you a',
    'you a thousand',
    'a thousand times',
    'thousand times over'
    ]
    
  • Vangt meer context.
Feature Engineering voor NLP in Python

Toepassingen

  • Zin-aanvulling
  • Spellingcorrectie
  • Vertaalcorrectie (MT)
Feature Engineering voor NLP in Python

N-grammodellen bouwen met scikit-learn

Genereert alleen bigrams.

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

Genereert uni-, bi- en trigrams.

ngrams = CountVectorizer(ngram_range=(1,3))
Feature Engineering voor NLP in Python

Beperkingen

  • Vloek van dimensionaliteit
  • Hogere-orde n-grams zijn zeldzaam
  • Houd n klein
Feature Engineering voor NLP in Python

Laten we oefenen!

Feature Engineering voor NLP in Python

Preparing Video For Download...