Bygga n-gram-modeller

Funktionsutveckling för NLP i Python

Rounak Banik

Data Scientist

BoW:s begränsningar

recension etikett
'The movie was good and not boring' positiv
'The movie was not good and boring' negativ

 

  • Exakt samma BoW-representation!
  • Ordens kontext går förlorad.
  • Sentimentet beror på placeringen av 'not'.
Funktionsutveckling för NLP i Python

n-gram

  • En sammanhängande sekvens av n element (eller ord) i ett givet dokument.
  • n = 1 → bag-of-words
    'for you a thousand times over'
    
  • n = 2, n-gram:
    [
    'for you',
    'you a',
    'a thousand',
    'thousand times',
    'times over'
    ]
    
Funktionsutveckling för NLP i Python

n-gram

'for you a thousand times over'
  • n = 3, n-gram:
    [
    'for you a',
    'you a thousand',
    'a thousand times',
    'thousand times over'
    ]
    
  • Fångar mer kontext.
Funktionsutveckling för NLP i Python

Tillämpningar

  • Meningskomplettering
  • Stavningskorrigering
  • Maskinöversättningskorrigering
Funktionsutveckling för NLP i Python

Bygga n-gram-modeller med scikit-learn

Genererar enbart bigram.

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

Genererar unigramer, bigramer och trigramer.

ngrams = CountVectorizer(ngram_range=(1,3))
Funktionsutveckling för NLP i Python

Begränsningar

  • Dimensionalitetens förbannelse
  • N-gram av högre ordning är sällsynta
  • Håll n litet
Funktionsutveckling för NLP i Python

Nu kör vi en övning!

Funktionsutveckling för NLP i Python

Preparing Video For Download...