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>Instructions de l’exercice
- Utilisez
head()sursb_wordspour vérifier les mots les plus fréquents. - Créez une nouvelle colonne
expectationsen divisant la fréquence du mot la plus élevée,freq[1], par la colonnerank. - Initialisez
sb_plotavecmjs_plot().- Passez
sb_wordsavecx = rankety = freq. - Dans
mjs_plot(), définissezshow_rollover_textàFALSE.
- Passez
- Écrasez
sb_ploten utilisantmjs_line()et en passantsb_plot. - Ajoutez à
sb_plotavecmjs_add_line().- Passez l'objet
sb_plotprécédent et le vecteurexpectations.
- Passez l'objet
- Ajoutez une légende sur un nouvel objet
sb_plotavecmjs_add_legend().- Passez l'objet
sb_plotprécédent - Les libellés de la légende doivent être
"Frequency"et"Expectation".
- Passez l'objet
- Appelez
sb_plotpour afficher le graphique. Survolez un point avec la souris pour mettre en évidence simultanément un pointfreqet un pointExpectation. 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