L2 MIASHS, Algorithme et Programmation 2, année 2021

TD bonus

  1. Télécharger le fichier et décompressez le.

En ligne de commande:

  1. En lisant la documentation sur la lecture des fichiers, écrire une fonction qui prend en argument un nom de livre présent dans le repertoires décompressé et retourne la chaîne de caractères contenant le livre.

Il n’est pas nécessaire de la doctester cette fonction.

  1. Écrire une fonction impérative qui prends en argument une chaîne de caractères et retourne un dictionnaire associant à chaque lettre sa fréquence dans la chaîne en entrée.

  2. Écrire une fonction impérative qui prends en argument une chaîne de caractères et retourne un dictionnaire associant chaque mots sa fréquence dans le document.

  3. Réécrire les fonctions précédentes en utilisant des constructeurs fonctionnelles.

Vous pouvez avoir besoin de la fonction groupby du module itertools

  1. Réécrire les fonctions précédentes en utilisant l’objet Counter du module collections

  2. Comparer les performances de chaque fonctions sur la chaine les_miserables.

  3. À l’aide des résultats de la question précédente, écrire une fonction efficace qui prends en argument une chaîne de caractères retourne la liste des paragraphes.

  4. Écrire une fonction, qui prends en argument deux dictionnaires et retourne leur distance pour la norme Euclidienne.

La norme Euclienne pour deux dictionnaires \(d_1\) et \(d_2\) dont l’ensemble des clefs est \(K\) (union des clefs de chaque dictionnaire), est définit comme \[ \sqrt{\sum_{k \in K} (d_1[k] - d_2[k])^2} \] avec comme convention que si la clef \(k\) n’est pas dans \(d_i\) alors \(d_i[k]\) vaut \(0\).

  1. Prenez un paragraphe au hasard des misérables, et trouver les trois paragraphe les plus proches dans le livre.

  2. Estimer la distance moyenne entre les paragraphes pour chaque livres.

  3. Écrire une fonction qui prends en argument un paragraphe et détermine de quel livre il est le plus proche.