Examen Données structurées 2022¶

ATTENTION¶

Quelques rappels bien voyants, pour ne pas que vous les manquiez

  • PENSEZ À TESTER VOTRE NOTEBOOK/SCRIPT EN L'EXÉCUTANT AVANT DE LE RENDRE
    • Dans le cas d'un notebook, vérifiez que ça marche aussi si vous faites « restart kernel and run all »
  • SAUVEGARDEZ RÉGULIÈREMENT VOTRE TRAVAIL
  • LISEZ LES CONSIGNES CI-DESSOUS ET VÉRIFIEZ QUE VOUS LES RESPECTEZ

Consignes¶

Vous travaillerez avec le fichier

Vous produirez un script ou un notebook Python compatible avec Python 3.9

Votre script ou notebook devra :

  • Ouvrir les fichiers fr_sequoia-ud-train.conllu et fr_sequoia-sud-train.conllu, supposés se trouver dans le même dossier que lui et représentant le sous-ensemble d'entraînement du corpus Sequoia, respectivement dans sa version Universal Dependencies 2.9 et SUD 2.9.
    • Voir ci-dessous pour des commandes permettant de les télécharger sur vos machines.
    • En cas de problème de téléchargement, appelez-moi tout de suite : je les ai aussi sur clé USB.
  • Afficher sur la sortie standard (par exemple avec print) une ligne et une seule par question.
    • N'afficher que la réponse et pas d'autre texte
    • Par exemple pour la question « Combien y a-t-il de jours dans une semaine ? » et que la variable days contient 7, répondez avec print(days).
    • Si vous n'avez pas réussi à répondre, affichez une ligne vide).
  • Ne produire aucune autre sortie
  • Autrement dit : un print et un seul par question, que vous rendiez un script ou un notebook.
    • Astuce : si vous travaillez avec un notebook, vous pouvez le télécharger comme script et ainsi tester plus facilement s'il affiche bien une ligne et une seule par question.
  • Termine en un temps raisonnable (disons moins de deux minutes sur votre machine).
  • Les réponses doivent bien évidemment être déduites du fichier par votre script et non pas codées en dur.

Votre rendu ne doit comporter qu'un seul fichier, nommé {prénom}_{nom}.py ou {prénom}_{nom}.ipynb, le prénom et le nom étant ceux sous lesquels vous êtes inscrit⋅e, en minuscules, sans diacritiques et le cas échéant transcrit en alphabet latin. Par exemple, en ce qui me concerne, ce serait loic_grobol.py.

Vous pouvez utiliser tous les modules de la bibliothèque standard, tous les modules listés dans requirements.txt. Vous pouvez aussi utiliser n'importe quel autre module disponible sur PyPI (ce n'est pas nécessaire, ni utile à mon avis, mais si vous le faites, pensez à l'indiquer dans un commentaire ou une cellule markdown).

Une fois terminé, envoyez ce script à lgrobol@parisnanterre.fr avec en objet Examen données structurées ou appelez-moi pour que je le récupère directement sur clé USB.

Pour les questions auxquelles vous n'aurez pas fourni de réponse (et donc affiché une ligne vide), vous pouvez indiquer dans votre script des éléments de réponse partiels par des fragments de code ou des commentaires. Dans ce cas, assurez-vous que vous n'affichez bien qu'une ligne vide en réponse à cette question.

Commandes pour télécharger les treebanks :

In [1]:
# !wget -nc "https://raw.githubusercontent.com/UniversalDependencies/UD_French-Sequoia/r2.9/fr_sequoia-ud-train.conllu" -O "fr_sequoia-ud-train.conllu"
In [2]:
# !wget -nc "https://sharedocs.huma-num.fr/wl/?id=lpoZ2kAIwONHyAD3tyS9pfE3Jl464Zlp&download=1" -O "fr_sequoia-sud-train.conllu"

Questions¶

  • Écrire des fonctions pour les opérations qui reviennent souvent est très fortement recommandé.
  • Dans tout ce qui suit, on parle de mots au sens de UD : les signes de ponctuation en font partie et certains tokens peuvent correspondre à plusieurs mots — comme « du » en français qui correspond aux mots « de » et « le ».
  1. Quels sont vos noms et prénoms ?
    • Répondre sous la forme d'une chaîne de caractères, comme Loïc Grobol.
  2. Combien d'arbres y a-t-il dans fr_sequoia-ud-train.conllu ?
    • Répondre par un entier, par exemple 76.
  3. Combien d'arbres y a-t-il dans fr_sequoia-sud-train.conllu et quelle est la longueur (en nombre de mots, pas de tokens) du plus long ?
    • Répondre par deux entiers séparés par un |, par exemple 1024|31.
  4. Lister les arcs de l'arbre annodis.er_00008 dans fr_sequoia-ud-train.conllu sous la forme d'un dictionnaire dont les clés sont les dépendants et les valeurs sont les gouverneurs.
    • Par exemple pour un arbre dont 1 est la racine et dont les arcs sont 1→4, 4→2et 4→3, afficher {1: 0, 2: 4, 3: 4, 4: 1}.
  5. Lister les arcs de l'arbre annodis.er_00008 dans fr_sequoia-ud-train.conllu sous la forme d'un dictionnaire dont les clés sont les gouverneurs et les valeurs sont les listes des dépendants.
    • Par exemple pour un arbre dont 1 est la racine et dont les arcs sont 1→4, 4→2et 4→3 {1: [4], 2: [], 3: [], 4: [2, 3]}.
  6. Lister les sous-arbres de l'arbre annodis.er_00008 dans fr_sequoia-ud-train.conllu sous la forme d'un dictionnaire dont les clés sont les gouverneurs et les valeurs sont les listes des descendants.
    • Par exemple pour un arbre dont 1 est la racine et dont les arcs sont 1→4, 4→2et 4→3, afficher {1: [2, 3, 4], 2: [], 3: [], 4: [2, 3]}.
  7. On appelle profondeur d'un arbre, la longueur du plus long chemin allant de la racine de l'arbre à un autre nœud. Afficher la profondeur moyenne des arbres des corpus fr_sequoia-ud-train.conllu et fr_sequoia-sud-train.conllu.
    • Afficher la réponse sous forme de deux nombres arrondis à deux chiffres après la virgule et séparés par |, par exemple 10.05|11.22.
  8. On dit qu'un arbre syntaxique en dépendances est projectif s'il n'a pas d'arcs qui se croisent quand les mots sont alignés dans leur ordre d'apparition dans la phrase. Afficher la proportion d'arbres projectifs dans les corpus fr_sequoia-ud-train.conllu et fr_sequoia-sud-train.conllu.

    • Afficher la réponse sous forme de deux pourcentages arrondis à deux chiffres après la virgule et séparés par |, par exemple 98.05%|90.22%.
  9. Pour les cracks :

    Étant donné un arbre syntaxique en dépendances $A$ de $n$ mots et un entier $i$ tel que $1⩽i<n$, on appelle taille du flux de dépendances à la position $i$ le nombre $f_i(A)$ d'arcs $a⟷b$ (peu importe la direction) de cet arbre tel que $a⩽i<b$, et on note $f(A)=\max_i f_i(A)$ la valeur maximale de cette taille. Calculer les valeurs moyennes de $f$ pour les arbres du corpus fr_sequoia-ud-train.conllu et du corpus fr_sequoia-sud-train.conllu.

    Afficher le résultat sous forme de deux nombres arrondis à deux chiffres après la virgule et séparés par |, par exemple 5.32|8.27