Obtenir nombre d'occurrence de mots

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nicolas Halter
Messages : 23
Enregistré le : 25 Juin 2021, 08:30

Obtenir nombre d'occurrence de mots

Messagepar Nicolas Halter » 21 Déc 2021, 16:37

Bonjour,

Je cherche à déterminer la distribution de chaque mot afin de connaitre leur probabilité d'apparition et donc décider si le message est un spam ou non. Pour cela j'ai un data frame contenant un mot par cellule et je voudrais connaitre le nombre d'occurrence de chaque mot (idéalement en fonction des valeurs de "spam"). Sauf que lorsque je cherche à le calculer avec table R me renvoie 0 partout.

Voici un exemple reproductible :

Code : Tout sélectionner

df <- data.frame(spam = c(0,1,1,0),
                 V1 = c("salut","gagnez","voyance","tu"),
                 V2 = c("comment","le","gratuite","as"),
                 V3 = c("tu","nouvelle","appelez","fait"),
                 V4 = c("vas","iphone","le","le"),
                 V5 = c("","","2278","projet"))

Unique <- c("salut","comment","tu","vas",
         "gagnez","le","nouvelle","iphone",
         "voyance","gratuite","appelez","2278",
         "as","fait","projet")
         
table(factor(df[,2:6],levels = as.factor(Unique)))



Est-ce que quelqu'un a une idée pour obtenir le résultat souhaité ?

Cordialement,
Nicolas

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: Obtenir nombre d'occurrence de mots

Messagepar Gabriel Terraz » 21 Déc 2021, 16:54

Bonjour,
Il y a plusieurs erreurs dans ton code.
Appeler la fonction factor sur un dataframe et non sur un vecteur (tu peux utiliser unlist pour transformer ton dataframe en vecteur)
Donner comme levels à la fonction factor.... un facteur !

Sinon tu peux faire ça par exemple :

Code : Tout sélectionner

table_par_spam <- by(df, df$spam, function(x) table(factor(unlist(x[,-1]), levels = Unique)))
do.call(rbind, table_par_spam)


Il y a très probablement plein d'autres façons de faire !

Nicolas Halter
Messages : 23
Enregistré le : 25 Juin 2021, 08:30

Re: Obtenir nombre d'occurrence de mots

Messagepar Nicolas Halter » 21 Déc 2021, 17:27

Tout est bon ça marche, merci à toi Gabriel !

Bonnes fêtes à vous,
Nicolas


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité