Préparer le texte pour la modélisation

Introduction au traitement automatique des langues en R

Kasey Jones

Research Data Scientist

Apprentissage supervisé en R : classification

Introduction au traitement automatique des langues en R

Modélisation de classification

  • approche d'apprentissage supervisé
  • classe les observations en catégories
    • gain/perte
    • dangereux, amical ou indifférent
  • peut utiliser diverses techniques :
    • régression logistique
    • arbres de décision/forêt aléatoire/xgboost
    • réseaux de neurones
    • etc.
Introduction au traitement automatique des langues en R

Étapes de base de la modélisation

  1. Nettoyer/préparer les données
  2. Créer les ensembles d'entraînement et de test
  3. Entraîner un modèle sur l'ensemble d'entraînement
  4. Indiquer la précision sur l'ensemble de test
Introduction au traitement automatique des langues en R

Reconnaissance de personnages

Napoléon Napoléon

Boxer Boxer

1 https://comicvine.gamespot.com/napoleon/4005-141035/ 2 https://hero.fandom.com/wiki/Boxer_(Animal_Farm)
Introduction au traitement automatique des langues en R

Phrases sur les animaux

# Make sentences
sentences <- animal_farm %>%
  unnest_tokens(output = "sentence", token = "sentences", input = text_column)
# Label sentences by animal
sentences$boxer <- grepl('boxer', sentences$sentence)
sentences$napoleon <- grepl('napoleon', sentences$sentence)
# Replace the animal name
sentences$sentence <- gsub("boxer", "animal X", sentences$sentence)
sentences$sentence <- gsub("napoleon", "animal X", sentences$sentence)
animal_sentences <- sentences[sentences$boxer + sentences$napoleon == 1, ]
Introduction au traitement automatique des langues en R

Poursuite des phrases

animal_sentences$Name <-
    as.factor(ifelse(animal_sentences$boxer, "boxer", "napoleon"))
# 75 of each
animal_sentences <- 
  rbind(animal_sentences[animal_sentences$Name == "boxer", ][c(1:75), ],
        animal_sentences[animal_sentences$Name == "napoleon", ][c(1:75), ])
animal_sentences$sentence_id <- c(1:dim(animal_sentences)[1])
Introduction au traitement automatique des langues en R

Préparer les données

library(tm); library(tidytext)
library(dplyr); library(SnowballC)
animal_tokens <- animal_sentences %>%
  unnest_tokens(output = "word", token = "words", input = sentence) %>%
  anti_join(stop_words) %>%
  mutate(word = wordStem(word))
Introduction au traitement automatique des langues en R

Préparation : suite

animal_matrix <- animal_tokens %>%
  count(sentence_id, word) %>%
  cast_dtm(document = sentence_id, term = word,
           value = n, weighting = tm::weightTfIdf)
animal_matrix
<<DocumentTermMatrix (documents: 150, terms: 694)>>
Non-/sparse entries: 1235/102865
Sparsity           : 99%
Maximal term length: 17
Weighting          : term frequency - inverse document frequency
Introduction au traitement automatique des langues en R

Retirer les termes rares

  • Non vides (1 235) + vides (102 865)
  • Dimensions de la matrice : 150 × 694
  • Parcimonie : 102 865 / 104 100 (99 %)

Solution : removeSparseTerms()

Introduction au traitement automatique des langues en R

À quel point est-ce trop parcimonieux ?

removeSparseTerms(animal_matrix, sparse = .90)
<<DocumentTermMatrix (documents: 150, terms: 4)>>
Non-/sparse entries: 207/393
Sparsity           : 66%
removeSparseTerms(animal_matrix, sparse = .99)
removeSparseTerms(animal_matrix, sparse = .99)
<<DocumentTermMatrix (documents: 150, terms: 172)>>
Non-/sparse entries: 713/25087
Sparsity           : 97%
Introduction au traitement automatique des langues en R

Passons à la pratique !

Introduction au traitement automatique des langues en R

Preparing Video For Download...