CommencerCommencez gratuitement

Où peut-on observer la loi de Zipf ?

Même si Zipf a observé une baisse marquée et prévisible de l'usage des mots, vous n'adhérez peut‑être pas à la loi de Zipf. Vous vous dites peut‑être « Je connais beaucoup de mots et j'ai un vocabulaire bien à moi ». C'est possible, mais ce n'est pas le cas de la plupart des gens ! Pour le montrer, construisons un graphique à partir de 3 millions de tweets mentionnant « #sb ». Gardez à l'esprit que ce visuel ne suit pas parfaitement la loi de Zipf : tous les tweets contiennent le même hashtag, ce qui biaise un peu les résultats. Cela dit, le graphique que vous allez produire montre une forte décroissance, signe d'une faible diversité lexicale parmi des millions de tweets. Il y a donc bien un fondement scientifique à l'utilisation de lexiques pour l'analyse du langage naturel !

Dans cet exercice, vous allez utiliser le package metricsgraphics. Même si l'auteur recommande d'utiliser l'opérateur pipe %>%, vous allez construire le graphique étape par étape pour découvrir les différentes composantes du tracé. La fonction principale du package metricsgraphics est mjs_plot(), première étape pour créer un graphique JavaScript. Une fois cela fait, vous pouvez ajouter d'autres couches par‑dessus le graphique.

Un exemple de flux de travail avec metricsgraphics sans utiliser l'opérateur %>% :

metro_plot <- mjs_plot(data, x = x_axis_name, y = y_axis_name, show_rollover_text = FALSE)
metro_plot <- mjs_line(metro_plot)
metro_plot <- mjs_add_line(metro_plot, line_one_values)
metro_plot <- mjs_add_legend(metro_plot, legend = c('names', 'more_names'))
metro_plot

Cet exercice fait partie du cours

<cours>Analyse de sentiments en R</cours>
Voir le cours

Instructions de l’exercice

  • Utilisez head() sur sb_words pour vérifier les mots les plus fréquents.
  • Créez une nouvelle colonne expectations en divisant la fréquence du mot la plus élevée, freq[1], par la colonne rank.
  • Initialisez sb_plot avec mjs_plot().
    • Passez sb_words avec x = rank et y = freq.
    • Dans mjs_plot(), définissez show_rollover_text à FALSE.
  • Écrasez sb_plot en utilisant mjs_line() et en passant sb_plot.
  • Ajoutez à sb_plot avec mjs_add_line().
    • Passez l'objet sb_plot précédent et le vecteur expectations.
  • Ajoutez une légende sur un nouvel objet sb_plot avec mjs_add_legend().
    • Passez l'objet sb_plot précédent
    • Les libellés de la légende doivent être "Frequency" et "Expectation".
  • Appelez sb_plot pour afficher le graphique. Survolez un point avec la souris pour mettre en évidence simultanément un point freq et un point Expectation. La magie de JavaScript !

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Examine sb_words
___

# Create expectations
sb_words$expectations <- sb_words %$% 
  {___[___] / ___}

# Create metrics plot
sb_plot <- ___(___, x = ___, y = ___, ___ = ___)

# Add 1st line
sb_plot <- ___(___)

# Add 2nd line
sb_plot <- ___(___, ___)

# Add legend
sb_plot <- ___(___, legend = c("___", "___"))

# Display plot
sb_plot
Modifier et exécuter le code