Membangun model n-gram

Rekayasa Fitur untuk NLP di Python

Rounak Banik

Data Scientist

Keterbatasan BoW

ulasan label
'The movie was good and not boring' positif
'The movie was not good and boring' negatif

 

  • Representasi BoW persis sama!
  • Konteks kata hilang.
  • Sentimen bergantung pada posisi 'not'.
Rekayasa Fitur untuk NLP di Python

n-gram

  • Urutan berdekatan dari n elemen (atau kata) dalam sebuah dokumen.
  • 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'
    ]
    
Rekayasa Fitur untuk NLP di 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'
    ]
    
  • Menangkap lebih banyak konteks.
Rekayasa Fitur untuk NLP di Python

Aplikasi

  • Melengkapi kalimat
  • Koreksi ejaan
  • Koreksi terjemahan mesin
Rekayasa Fitur untuk NLP di Python

Membangun model n-gram dengan scikit-learn

Hanya menghasilkan bigram.

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

Menghasilkan unigram, bigram, dan trigram.

ngrams = CountVectorizer(ngram_range=(1,3))
Rekayasa Fitur untuk NLP di Python

Keterbatasan

  • Kutukan dimensi
  • n-gram orde tinggi jarang
  • Tetapkan n kecil
Rekayasa Fitur untuk NLP di Python

Ayo berlatih!

Rekayasa Fitur untuk NLP di Python

Preparing Video For Download...