Créer des modèles n-grammes

Ingénierie des caractéristiques pour le NLP en Python

Rounak Banik

Data Scientist

Limites de BoW

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

 

  • Représentation BoW exactement identique !
  • Le contexte des mots est perdu.
  • Le sentiment dépend de la position de « not ».
Ingénierie des caractéristiques pour le NLP en Python

n-grammes

  • Suite contiguë de n éléments (ou mots) dans un document.
  • n = 1 → sac de mots
    'for you a thousand times over'
    
  • n = 2, n-grammes :
    [
    'for you',
    'you a',
    'a thousand',
    'thousand times',
    'times over'
    ]
    
Ingénierie des caractéristiques pour le NLP en Python

n-grammes

'for you a thousand times over'
  • n = 3, n-grammes :
    [
    'for you a',
    'you a thousand',
    'a thousand times',
    'thousand times over'
    ]
    
  • Capte davantage de contexte.
Ingénierie des caractéristiques pour le NLP en Python

Applications

  • Complétion de phrase
  • Correction orthographique
  • Correction en traduction automatique
Ingénierie des caractéristiques pour le NLP en Python

Créer des modèles n-grammes avec scikit-learn

Génère seulement des bigrammes.

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

Génère des unigrammes, bigrammes et trigrammes.

ngrams = CountVectorizer(ngram_range=(1,3))
Ingénierie des caractéristiques pour le NLP en Python

Limites

  • Malédiction de la dimensionnalité
  • Les n-grammes d'ordre élevé sont rares
  • Gardez n petit
Ingénierie des caractéristiques pour le NLP en Python

Passons à la pratique !

Ingénierie des caractéristiques pour le NLP en Python

Preparing Video For Download...