Cahier des charges - UQO-2019-INF1583/annotator GitHub Wiki

Historique des modifications

Date Version Description Auteurs
2017-12-21 1.0 Création du document Étudiants du cours INF1583 Aut 2017 à l'Université du Québec en Outaouais
2018-09-18 2.0 Modification de l'intégration de brat Étudiants de l'équipe #1 du cours INF1583 Aut 2018 à l'UQO
2018-10-10 2.1 L'ajout de la gestion de l'ensemble des données de collection Étudiants de l'équipe #2 du cours INF1583 Aut 2018 à l'UQO
2018-10-30 2.2 Compléments pour l'implémentation des données de collection (attributs, relations, événements) et Filtrage des annotations Étudiants de l'équipe #3 du cours INF1583 Aut 2018 à l'UQO

Table des matières

  1. Introduction
  2. Spécification des exigences
    1. Fonctionnement général
    2. Utilisateurs
      1. Lecteur
      2. Membre
        1. Annotateur
        2. Administrateur du projet
      3. Administrateur du système
    3. Interfaces
      1. Authentification des utilisateurs
      2. Manipulation des projets
      3. Gestion des annotations
        1. Gestion de relation entre des annotations
      4. Administration du système
      5. Sélection d'une page d'annotation
    4. Brat
      1. Actions
        1. Ajouter une annotation
        2. Modifier une annotation
        3. Supprimer une annotation
        4. Filtrer des annotations
      2. Donnees
        1. Cohérences des données
      3. Structures CollData et DocData
        1. Structure de CollData
        2. Structure de DocData
        3. Connections de la BDD à BRAT
    5. Gestion de projet
      1. Données de base du projet
      2. Corpus
      3. Catégories
      4. Attributs
      5. Relations
      6. Événements
      7. Annotateurs et Administrateur
    6. Historique
      1. Annotations
      2. Audit
    7. Gestion des pages d'annotation
      1. Création de nouvelles pages d'annotation
      2. Sélection d'une nouvelles page d'annotation
      3. Sauvegarde des pages d'annotation
    8. Annotateurs unique ou multiple
      1. Annotateur Unique
      2. Annotateurs multiples
    9. Permission
      1. Les différents niveaux d'autorisations
      2. Les groupes
      3. Assignation
  3. Glossaire
  4. Contraintes d’ordre général
    1. Version des packages npm principaux utilisés par l'application
  5. Évolution de l'application

I Introduction

L'application UQO-annotator permettra de modifier des fichiers .xmi avec annotations produites par l'outil cTakes (exemple d'un fichier produit par cTakes) ou d'annoter les fichiers texte. Durant son fonctionnement, UQO-annotator sera similaire à l'outil brat. Ses fonctionnalités incluent la création/suppression d'annotations et la gestion d'annotateurs par projet.

Dans l’application, un projet n’est qu’un corpus de fichiers texte qui possède ses propres annotations.

L’application n’est pas réservée à un seul domaine d’application, elle sera utile dans plusieurs contextes où l’utilisation des annotations sera nécessaire. En particulier, elle s’intègre bien dans un contexte de recherche et d’apprentissage à partir des textes écrits.

Par exemple, le département de pédiatrie d’un hôpital universitaire pourrait créer un corpus comportant les notes médicales de ses patients, puis les annoter selon des annotations comme l'entité “symptôme” et "diverses maladies". Il serait ensuite possible, par exemple, pour un étudiant en pédiatrie de retrouver tous les symptômes associés aux patients où l’annotation “diabète” apparaît dans leur dossier. Une utilisation future de l’application pourrait exploiter les bénéfices de l’apprentissage automatique afin de trouver des liens auparavant inconnus entre certains symptômes et maladies.

On suppose qu’un utilisateur type n’a pas nécessairement les expertises particulières en informatique nécessaires, donc, le logiciel doit être assez intuitif.

II Spécification des exigences

1. Fonctionnement général

  • 1.1 L’application doit être disponible sur le web.

  • 1.2 L’application doit prendre en compte les différents problèmes d’accès concurrent.

  • 1.3 L’application doit offrir la possibilité de consulter les statistiques sur les documents annotés.

  • 1.4 L'application doit permettre d'ouvrir un document annoté dans l'interface de brat.

2. Utilisateurs

2.1 Types

Utilisateurs* Fonctions
2.1.1 Lecteur Il ne pourra que consulter les documents annotés
2.1.2 Membre Un membre peut être assigné la tâche d'annotateur ou d'administrateur de projet lié à un ou plusieurs projets
2.1.2.1 Annotateur C'est un membre du système qui peut consulter et annoter le ou les documents du projet donc il est annotateur
2.1.2.2 Administrateur du projet Il hérite des permissions des annotateurs du projet, il doit pouvoir gérer la liste des annotateurs et des documents du projet et la consolidation des annotations multiples
2.1.3 Administrateur du système Il doit pouvoir créer des projets, gérer les administrateurs de projet et les utilisateurs du système

* Tous les types d'utilisateurs ont les droits de tous les types qui le précèdent.

Table: Rôles des utilisateurs

2.1.1 Lecteur

  • Le lecteur est un utilisateur du système, qui n'est pas forcement connecté et qui possède seulement les droits de lectures liés au système.

Il doit pouvoir...

  • Créer un compte afin d'obtenir le status de membre pour obtenir plus accès.

  • Visualiser les différents projets du système.

  • Posséder seulement les permissions de lecture liés au projet.

  • Visualiser les différentes annotations d’un corpus de texte et les catégories qui en découlent.

  • Télécharger un fichier ou un corpus entier avec ses différentes annotations.

  • Se connecter au système avec une identité unique.

  • Se connecter grâce à son compte d’utilisateur et un mot de passe.

  • Se connecter grâce à un compte d'un réseau social.

2.1.2 Membre

Un membre est un utilisateur qu’on peut assigner la tâche d'annotateur ou d'administrateur de projet.

Il doit pouvoir...

  • Consulter n’importe quel projet dont il n'est pas annotateur.

  • Restaurer le mot de passe en cas de perte.

  • Demander l’obtention pour la tache annotateur ou d’administrateur d’un projet

2.1.2.1 Annotateur

Tâche assignée par l'administrateur du projet en question.

Il doit pouvoir...

  • sélectionner un fichier à annoter si ce fichier fait partie de son projet.

  • Créer une nouvelle page d'annotation.

  • Sélectionner une page d'annotation existante.

  • Visualiser les annotations existantes et les textes correspondants.

  • Supprimer une annotation existante.

  • Ajouter une nouvelle annotation à partir d'un texte sélectionné.

  • Modifier une annotation à partir d'une annotation sélectionnée.

  • Associer plusieurs annotations au même texte.

  • Associer une annotation avec d'autres annotations.

2.1.2.2 Administrateur de projet

Tâche assignée par l'administrateur du système.

Il doit pouvoir...

  • Définir le corpus à annoter (téléverser ses documents) qui contient :

  • Un ou plusieurs fichiers qui définissent les types d'entités ( Type System Descriptors )

  • Les fichiers texte .txt à annoter

  • Les fichiers correspondants xml .xmi qui contiennent les annotations et qui ont été produits soit par l'outil cTakes soit par l'outil d'annotation.

  • Modifier les annotations de ses projets.

  • Supprimer les annotations de ses projets ou valider les annotations qui conviennent et conserver l'historique de toutes les annotations.

  • Assigner de nouveaux membres (annotateurs) à un projet

  • Modifier les informations des membres actuels (annotateurs ou administrateur de projet) d'un projet.

  • Contacter un administrateur de système au besoin.

2.1.3 Administrateur du système

Un administrateur système est un super-utilisateur connecté du système, qui possède tous les droits sur les utilisateurs du système.

Il doit pouvoir...

  • Créer des projets.

  • Assigner des annotateurs et des administrateurs de projets à un projet.

  • Visualiser les utilisateurs du système. Retirer ou modifier les membres et les lecteurs. L'interface utilisée pour afficher cette liste d'utilisateurs devra être accessible par l'administrateur système seulement. Tout autre utilisateur essayant d'accéder à cette interface sera bloqué et redirigé à la page d'accueil.

  • Faire des modifications au système lui-même en cas de besoin.

3. Interfaces

3.1 Authentification des utilisateurs

Interactions : Cette interface est la porte d’entrée du logiciel et sert à récupérer les informations de l’utilisateur en question grâce à une authentification par courriel ou grâce aux différents réseaux sociaux. De plus, c'est ici qu'un utilisateur peut demander à réinitialiser son mot de passe. Pour ce faire, l’utilisateur doit fournir son adresse courriel et suivre le lien reçu au dit courriel afin de changer son mot de passe.Si le compte de l'utilisateur est enregistré dans l'application , il doit recevoir un message à son courriel incluant un lien URL qui lui permet de réinitialiser son mot de passe, aussi ,l’option d’ignorer ce message s’il n’était pas sûre qu’il l’a initié .Lorsque son compte n’est pas enregistré dans l'application,un message de réinitialisation du mot de passe par défaut sera envoyé au courriel indiqué , mais avec l'impossibilité de réinitialiser son mot de passe.

Relation avec les autres interfaces : Cette interface définit les droits que l’utilisateur aura lorsque sa session sera commencée.

CapLogin

Interface Utilisateur

3.1.1 Creation de comptes utilisateurs

Cette interface sert à la création de compte utilisateurs pour avoir accès a cette interface cliquer sur SIGN UP qui se trouve à droite dans l'entête de la page principale ou en cliquant sur le bouton register à partir de page LOGIN.

Capture-Register

Interface register

Capture-save-Succ

L'utilisateur doit pouvoir...

  • Remplir tous les entrées(input) du formulaire à partir des informations mentionnées dans les champs d'entêtes
  • Cliquer sur register pour sauvegarder l'utilisateur
  • Une fenêtre s'ouvre qui confirme que l'utilisateur est enregistré avec succès
  • Suivre les instructions que la fenêtre affiche pour vous rediriger vers la page de votre choix
    en cliquant sur Ok pour rediriger vers la page LOGIN ou Cancel vers la page principale.

Note : L'utilisateur ne doit pas se connecter automatiquement après la creation de compte.

3.1.2 Interaction avec le bouton « Contact »

Cette interface sert à contacter un membre (un annotateur ou un administrateur du projet). Cette interface est accessible par tout ce qui ont un compte valide. Par exemple, un lecteur peut l’utiliser pour contacter un membre de l’équipe des annotateurs.

Pour accéder à cette fonctionnalité, l’utilisateur doit au préalable :

  • Se connecter à l’application
  • Cliquer sur « Contact »

Après cela, il doit pouvoir :

  • Entrer les informations de la personne qu’il souhaite contacter.
  • Écrire le message.
  • Cliquer sur le bouton « Submit ».

3.2 Manipulation des projets

3.2.1 Administration des projets

Administration des projets

Interaction : Cette interface permet d’afficher la liste de projets. Pour chacun des projets, on peut y apercevoir son titre ainsi que sa description. Il sera possible de consulter ou modifier un projet particulier via l’interface 3.2.3 Gestion d’un projet en appuyant sur le bouton View ou de le supprimer en appuyant sur le bouton Delete (dans le cas où l’utilisateur est l’administrateur du projet). L’option de supprimer un projet est cependant limitée à l’utilisateur ayant créé le projet en question.

Relation avec les autres interfaces : L’interface est associée à l’interface 3.2.3 Gestion d’un projet par l’entremise du bouton View.

3.2.2 Création d'un projet

Interactions : Cette interface permet la création d’un projet (titre et description).

3.2.3 C’est seulement l’administrateur du projet qui doit être à mesure de modifier le titre et la description du projet.

3.2.4 Dès sa création, le nouveau projet aura comme administrateur l’utilisateur qui l’a créé.

3.2.5 Le nouveau projet viendra s’ajouter à l’interface 3.2.1 Administration des Projets et pourra dorénavant être consulté et modifié via l’interface 3.2.3 Gestion d’un projet.

3.2.7 Relation avec les autres interfaces : Bien sûr, l’interface est associée avec l’interface 3.2.1 Administration des Projets ainsi qu’à l’interface 3.2.7 Gestion d’un projet.

3.2.7 Gestion d'un projet

Gestion d'un projet

Interactions : Cette interface a pour but de modifier et de visualiser les paramètres d’un projet spécifique. Si l’utilisateur est administrateur du projet en question, il lui sera possible d’y ajouter des éléments pour chaque paramètre via le bouton “+” qui apparaît lorsqu'un utilisateur est administrateur du projet. Dans ce cas-ci, l’administrateur pourrait ajouter un événement au projet intitulé Event2.

Relation avec les autres interfaces : L’interface est liée à l’interface 3.3 Gestion des annotations via le bouton View du Corpus.

3.3 Gestion des annotations

Interactions : Cette interface permet de modifier les annotations disponibles sur un projet spécifique.

Relation avec les autres interfaces : Cette interface interagit avec l'interface 3.3 en y ajoutant des annotations.

3.3.1 Gestion de relation entre les annotations

Relation entre deux entités

  1. La relation peut se faire de l’entité A vers l’entité B et inversement.
  2. On doit choisir un seul type de relation pour chaque direction (A --> B ou B --> A), non pas le même type dans la liste de type de relation.
  3. Être capable de faire des relations entre différents types d’entités. Des arguments peuvent être spécifiés pour n'inclure que certaines entités. Gestion de relation entre annotations

3.4 Administration du système

Interactions : Cette interface permet de visualiser les utilisateurs du système, et supprimer/modifier les membres et les visiteurs. Elle devrait lister l'ensemble des utilisateurs du système avec les attributs e-mail, nom et rôle. De plus, il est possible de modifier le rôle des membres et des visiteurs à travers cette interface accessible seulement par un administrateur du système.

Relation avec les autres interfaces : Cette interface interagit avec la plupart des autres interfaces.

3.5 Sélection d'une page d'annotation

Interactions : Cette interface permet la création d'une nouvelle page d'annotation ou la sélection d'une page déjà existante.

Relation avec les autres interfaces : Cette interface définit ce qui sera sauvegardé dans l’interface 3.4.

4. Brat

4.1 Actions

(?) : Actions facultatives.
(X) : Actions peuvent être fait à répétition.

*Une action peut toujours être annulée avant la sauvegarde avec le bouton "Cancel"

4.1.1 Ajouter une annotation

Entité

Une entité définit les types d'éléments pouvant être marqués dans le texte en tant que types de texte, tels que les mentions de "choses" réelles, telles que des personnes ou des emplacements. Une entité est liste avec un type par ligne.

  1. Sélectionner une section de texte.
  2. Choix d'un type dans la liste de type disponible à la gauche.
  3. (?) Ajouter des attributs.
  4. (?) Ajouté une note.
  5. Appuyer sur "OK".
Événement

Un évènement définit les associations n-aire entre d'autres annotations (entités ou événements).

  1. Sélectionner une section de texte.
  2. Choix d'un type d'événement.
  3. (?) Ajouter un (des) attribut(s) à l'événement.
  4. (?) Faire la négation de l'événement.
  5. (?) Ajouter une note.
  6. Appuyer sur "OK".
  7. (X) Cliquer sur l'événement, garder enfoncé et déplacer le curseur sur une autre entité qui deviendra un de ses arguments.
  8. Choisir le type.
  9. Appuyer sur "OK".

Notons que dans le cas de l'ajout d'une annotation si ni une entité ou ni un événement n'est pas sélectionné et que l utilisateur clique sur le bouton "OK" aucune annotation ne doit être crée.

Ajouter une entité ou un événement

Image: Ajouter une entité ou un événement

Relation

Une relation définit un type de relation, les entités qu’elle peut associer et, éventuellement, les propriétés de la relation. Une relation est fondamentalement une ligne entre deux entités, donc elle peut exister indépendamment.

  1. Cibler les entités qu’on veut mettre en relation.
  2. Cliquer sur la 1ere l'entité, garder enfoncé et déplacer le curseur sur l’autre entité.
  3. Choisir le type de relation.
  4. Appuyer sur "ok"

Ajouter une relation

Image: Ajouter une relation

4.1.2 Modifier une annotation

Entité

Modifier les valeurs de l'entité

  1. Double-clique sur une entité.
  2. (?) Changer le type.
  3. (?) Changer les attributs.
  4. (?) Changer les notes.
  5. Appuyer sur "OK".

Déplacer l'entité.

  1. Double-cliquer sur une entité.
  2. Appuyer sur "Move".
  3. Sélectionner la nouvelle section de texte.

Fragmenter l'entité.

  1. Double-cliquer sur une entité.
  2. Appuyer sur "Add Frag.".
  3. Sélectionner le nouveau fragment de texte.

Modifier une entité

Image: Modifier une entité

Événement

Modifier les valeurs de l'événement.

  1. Double-cliquer sur l'événement.
  2. (?) Changer le type.
  3. (?) Changer les attributs.
  4. (?) Changer les notes.
  5. Appuyer sur "OK".

Déplacer l'événement.

  1. Double-cliquer sur l'événement.
  2. Appuyer sur "Move".
  3. Sélectionner la nouvelle section de texte.

Fragmenter l'événement.

  1. Double-cliquer sur une l'événement.
  2. Appuyer sur "Add Frag.".
  3. Sélectionner le nouveau fragment de texte.

Modifier les liens de l'événement.

  1. Double-cliquer sur un lien.
  2. (?) Changer le type.
  3. Appuyer sur "OK".

Changer les liens de l'événement.

  1. Double-cliquer sur un lien.
  2. Appuyer sur "Reselect".
  3. Sélectionner la nouvelle section du texte.

Modifier un événement

Image: Modifier un événement

Relation

Modifier les valeurs de la relation.

  1. Double-cliquer sur une relation.
  2. (?) Changer le type.
  3. (?) Changer les notes.
  4. (?) Supprimer la relation avec "Delete".
  5. Appuyer sur "OK".

Changer la relation.

  1. Appuyer sur "Reselect".
  2. Cliquer sur la nouvelle destination.

Modifier une relation

Image: Modifier une relation

4.1.3 Supprimer une annotation

  1. Double-cliquer sur une annotation.
  2. Appuyer sur "Delete".
  3. Appuyer sur "Save".

4.1.4 Filtrer des annotations

Cette section spécifie le fonctionnement des filtres disponibles dans l'interface d'édition d'un document. Afin de faciliter la revue et le visionnement des annotations, des options de filtrage devront être offertes aux annotateurs et lecteurs.

À droite, dans l'écran se trouve les filtres offerts pour le document ouvert, soit les entités, les relations et les événements. Ce sont les mots-clés, les types ou les concepts d'annotations qui sont utilisées pour filtrer le texte.

4.1.4.1 Éléments de l'interface graphique des filtres

  1. Quand l’utilisateur ouvre l’interface d’édition d’un document, une liste de filtres disponibles doit apparaître à droite de l’écran dans un délais raisonnable (c’est-à-dire quand les données de Brat sont disponibles). Le tableau de filtres contient les éléments annotés dans le document et ceux-ci sont surligner avec la même couleur que l’annotation.

  2. Quand un utilisateur ajoute une annotation, et que celle-ci se trouve à être la première de son type, l’interface graphique doit se mettre à jour, sans qu’il ait à rafraîchir la page, et ajouter celle-ci au tableau afin que l’utilisateur puisse interagir avec.

  3. Quand un utilisateur supprime une annotation, et que celle-ci se trouve à être la dernière de son type, le tableau de filtre doit se mettre à jour et supprimer ce type d’annotation du tableau de filtre, sans que l’utilisateur ait à rafraichir la page, pour que l’utilisateur ne puisse plus interagir avec.

  4. Quand une nouvelle entitée, attribut, relation ou événement est ajouté dans l’interface de gestion de projet, celle-ci doit être disponible dans l’interface d’édition de documents, afin que si l’utilisateur décide d’ajouter une annotation de ce type, celle-ci suit les points 2 et 3 mentionnés plus haut.

Implémentation des filtres dans l'interface

4.1.4.2 Éléments logiques des filtres

  1. Lorsque l’utilisateur charge le document, au début de son travail avec celui-ci, les filtres du document doivent être en état actif si le document possède des annotations de ces filtres. Et la case du filtre est cochée indiquant que le filtre est actif.

  2. Les filtres vont masquer ou montrer seulement leurs annotations respectives lorsque l'utilisateur va les cocher ou décocher.

4.1.4.3 Logique de sélection

Pour afficher une relation, il faut avoir coché le type des deux entités de la relation, ainsi que le type de la relation elle-même.

4.1.5 Fonctions de l'interface graphique pour l’édition des annotations

Cette section spécifie le fonctionnement des outils d'annotation disponibles dans l'interface d'édition d'un document. Afin de faciliter l'ajout et la revue des annotations.

  1. La fenêtre de gestion d'annotations s'affiche lorsque l'utilisateur sélectionne un segment de texte. La fenêtre montre les données de collections du document et du projet. Les données de collections sont les types d'annotations que l'utilisateur peut utiliser pour annoter le document. Les types d'annotations se catégorisent en des entités ou des évènements. Les évènements sont les relations entre deux entités. Et plusieurs annotations dans le texte peuvent faire partie du même type d'annotation. Dans la fenêtre on peut voir la liste de types d'annotations d'entités et la liste de types d'annotations d'évènements.

  2. L'utilisateur pourra annoter le texte en sélectionnant un segment du texte. Si le segment de texte n'est pas déjà annoté, l'utilisateur pourra choisir le type d'annotation d'entité puis annoter le segment. Si le segment est déjà annoté l'utilisateur pourra enlever l'annotation ou mettre une annotation d'évènement entre deux entités.

  3. Lorsque l'utilisateur veut annoter un segment de texte, pas annoté, il le sélectionne, la fenêtre de gestion d’annotations va apparaitre. Et l’utilisateur va choisir le type d’annotation d’entité à mettre sur le segment. Si le texte à annoter est assez long, l'annotation doit rester dans le cadre de la page. Le segment de texte va ensuite, prendre la couleur du type de l'annotation de la fenêtre des gestions d'annotations. Et une étiquette désignant le nom de l'annotation va apparaitre au-dessus du segment de texte annoté.

  4. Lorsque l'utilisateur veut créer des évènements entre deux entités, il sélectionne une annotation entité, la fenêtre de gestion d'annotations va apparaitre. Et l'utilisateur pourra choisir quelle annotation d'évènement mettre sur cette annotation d'entité. Une étiquette désignant le nom de l'évènement va apparaitre au-dessus de cette annotation entité. L'utilisateur va pouvoir répéter cette action pour mettre d'autres annotations d'entités dans cet évènement. Ainsi l'utilisateur pourra catégoriser plusieurs annotations d'entités ensembles et créer des relations.

  5. Lorsque l'utilisateur va vouloir supprimer une annotation, il la sélectionne, la fenêtre de gestion d'annotations va apparaitre. Et en cliquant sur le bouton "Delete" l'annotation va s'enlever, la couleur de cette annotation va s'enlever du texte et l'étiquette de cette annotation va s'enlever aussi.

  6. L'utilisateur peut faire des liens entre deux segments de texte annotés avec des flèches. En cliquant sur un segment avec la souris puis en déplaçant le curseur vers un autre segment de texte annoté, une flèche va apparaitre. Et lorsque le bout de la flèche va toucher l'étiquette de l'autre annotation, la flèche va se stabiliser et créer une relation entre ces deux segments.

4.2 Donnees

Reference

4.2.1 Cohérences des données

Les champs de données (nom et type de données) demandées à l’utilisateur (p. ex. Entities, Attributs, Relations et Events) dans l’interface de gestion de projet devront se conformer à la structure de données requises par Brat.

Données des collections (collData)

Type
{
  "entity_types": [
    {
      "type": "Person",
      "labels": [ "Person", "Per" ],
      "bgColor": "#7fa2ff",
      "borderColor": "darken"
    }
  ]
}
Attribut
{
  "entity_attribute_types": [
    {
      "type": "Notorious",
      "values": {"Notorious": { "glyph": "" }},
      "bool": "Notorious"
    }
  ]
}
Relation
{
  "relation_types": [
    {
      "type": "Anaphora",
      "labels": [ "Anaphora", "Ana" ],
      "dashArray": "3,3",
      "color": "purple",
      "args": [
        {"role": "Anaphor", "targets": [ "Person" ]},
        {"role": "Entity",  "targets": [ "Person" ]}
      ]
    }
  ]
}
Événement
{  
  "event_types": [
    {
      "type": "Assassination",
      "labels": [ "Assassination", "Assas" ],
      "bgColor": "lightgreen",
      "borderColor": "darken",
      "arcs": [
        {
          "type": "Victim",
          "labels": [ "Victim", "Vict" ]
        },
        {
          "type": "Perpetrator",
          "labels": [ "Perpetrator", "Perp" ],
          "color": "green"
        }
      ]
    }
  ]
}

Données du document (docData)

Example annotation

Image: Example annotation

{
 "text":"Ed O'Kelley was the man who shot the man who shot Jesse James.",
 "entities":[
  ["T1", "Person", [[0, 11]]],
  ["T2", "Person", [[20, 23]]],
  ["T3", "Person", [[37, 40]]],
  ["T4", "Person", [[50, 61]]]
],
 "attributes":[["A1", "Notorious", "T4"]],
 "relations":[["R1", "Anaphora", [["Anaphor", "T2"], ["Entity", "T1"]]]],
 "triggers":[
  ["T5", "Assassination", [[45, 49]]],
  ["T6", "Assassination", [[28, 32]]]
],
 "events":[
  ["E1", "T5", [["Perpetrator", "T3"], ["Victim", "T4"]]],
  ["E2", "T6", [["Perpetrator", "T2"], ["Victim", "T3"]]]
]
}

4.3. Identification des structures CollData et DocData

Dans cette section, nous identifions précisément les strutures CollData et DocData. Ces structures peuvent êtres considérés comme complexes. L'objectif est d'implémenter les classes en typescript.

4.3.1. Structure de Colldata


  Class CollData {
    entites : Entity[]; //Remplace entity_types
    relations : Relation[] //Remplace relation_types
    events : Event[] //Remplace event_types
    entityAttributes : Attribute[] // Remplace entity_attribute_types
    eventAttributes : Attribute[] //Remplace event_attribute_types
    relationAttribute : Attribute[] //Remplace relation_attribute_types
  }

Les méthodes à implémenter sont les getters, les setters ainsi que des fonctions d'ajout et de retrait pour les différents types.

Il faut considérer une fonction "toJSON" afin de faciliter la transition en tant que paramètre de BRAT.

La structure de donnée Project doit contenir une variable colData de type ColData.

4.3.2. Struture de DocData

Dû à la complexité de DocData, nous allons éviter de créer une classe Typescript. Nous pouvons sauvegarder l'objet DocData en utilisant JSON.stringify et l'insérer dans l'objet Projet.

4.3.3 Connections

Finalement, lorsque Annotateur est mis en action, il faut que celui-ci charge BRAT avec colData et docData sauvegardés dans le projet.

5. Gestion de projet

Cette section décrit le fonctionnement de l’interface de gestion de projet. Cette interface affiche les différents concepts associés à chaque projet. Chacun possède un nom et un descriptif décrivant le sujet du projet, un corpus contenant plusieurs documents annotés, des annotateurs et des administrateurs notant la liste des membres travaillant sur le projet, et, enfin, les entités, les attributs, les relations et les événements décrivant les règles d’annotations.

Chaque projet possède un identificateur unique attribué lors de sa création. Il suffit d’effectuer une requête HTML Get avec le paramètre id valide pour retrouver la page du projet correspondant. L’interface d’administration des projets simplifie cette tâche.

Selon les paramètres de configuration, seuls les utilisateurs authentifiés peuvent accéder à cette page. Les annotateurs utilisent les entités, les attributs, les relations et les événements déclarés pour apporter des annotations au corpus. Les administrateurs des projets peuvent ajouter, modifier et supprimer ces derniers éléments.

Lors de l'ouverture d'un projet, la page affiche un icône de chargement le temps que celle-ci soit entièrement chargée. Lorsqu’un utilisateur veut changer de projet, une boîte de dialogue s’affiche pour lui demander s’il veut sauvegarder ses changements.

5.1 Données de base du projet

En haut de l’interface se trouvent les trois champs: nom du projet, état du projet et sa description. Ces derniers permettent à un administrateur de projet de changer le titre, l'état et la description d’un projet. Pour tout autre utilisateur, ces champs demeurent invariables. Appuyer sur la commande Save (au bas de l’interface) enregistre les modifications apportées.

5.1.1. - Nom d'un projet

5.1.1.1. - Le nom d'un projet ne peut être modifié que par un administrateur de projet

5.1.1.2. - Le nom d'un projet ne peut pas être vide ou des charactères vide (espace)

5.1.1.3. - Deux projets ne peuvent pas avoir le même nom

5.1.2. - État du projet

5.1.2.1. - L'état d'un projet ne peut être modifié que par un administrateur de projet

5.1.2.2. - Un nouveau projet doit avoir l'état 'Nouveau'

5.1.2.3. - Un 'dropdown' des états permet à l'utilisateur de choisir un état

5.1.3. - Description

5.1.3.1. - Une description de projet ne peut pas être vide

5.2 Corpus

Cette section permet à l'administrateur de projet d'ajouter de nouveaux fichiers et aux annotateurs de les sélectionner pour les annoter.

5.2.1. - Ajout d'un/des fichier(s) au corpus.

5.2.1.1. - Une boîte de dialogue s'ouvre suite à la sélection du bouton d'ajout

5.2.1.2. - Deux champs se trouvent dans la boîte de dialogue : le/les fichier(s) à rajouter dans le corpus et le/les nom(s) des fichiers séparés par une virgule

5.2.1.3. - L'ajout d'un ficher est fait de deux façons :

5.2.1.3.1. - L'administrateur de projet peut naviguer dans son système de fichiers pour en choisir un seul

5.2.1.3.2. - L'administrateur de projet peut sélectionner et déposer plusieurs fichiers dans la boîte de dialogue

5.2.1.4. - L'option Annuler est disponible et ferme la boîte de dialogue

5.2.1.5. - L'option Ajouter est disponible que si :

5.2.1.5.1. - Un/des ficher(s) ont été ajouter

5.2.1.5.2. - Chacun des fichiers ajoutés à un nom

5.2.2. La liste de fichiers affiche un bouton Supprimer pour les administrateurs, qui supprime ensuite le fichier de la liste.

5.2.3. Si un annotateur clique sur le bouton View d'un fichier, il est redirigé vers la page d'annotation de ce dernier.

5.2.4 La liste des fichiers doit être ordonnée en ordre alphabétique.

5.3 Entités

Cette section permet aux administrateurs de déterminer les entités disponibles pour un projet.

5.3.1. La liste affiche les entités du projet, en affichant la couleur choisie pour la catégorie en arrière-plan de la ligne.

5.3.2. Un bouton en haut de la liste permet d'ajouter une nouvelle entité. Lorsque ce bouton est cliqué, une boîte de dialogue apparaît permettant de choisir le nom, le type, l’étiquette et la couleur de l’entité.

5.3.3. Un bouton sur chaque ligne permet la suppression de l’entité.

5.3.4. Un bouton sur chaque ligne permet la modification de l’entité (nom, type, étiquette ou couleur).

5.3.5. Les entités dans la liste sont disponibles dans l'interface de Brat comme entity.

5.3.6. La liste est affichée en ordre alphabétique.

5.3.7. Une entité doit avoir un nom. Un nom d'entité ne peut pas être composé d'espaces seulement.

5.4 Attributs

Cette section permet aux administrateurs de déterminer les attributs disponibles pour un projet.

5.4.1. La liste affiche les attributs du projet et est ordonnée en ordre alphabétique.

5.4.2. Un bouton en haut de la liste permet d'ajouter un nouvel attribut. Lorsque le bouton est cliqué, une boîte de dialogue apparaît permettant le choix du nom et du symbole représentant l'attribut, ainsi qu'un menu déroulant permettant le choix de la catégorie à laquelle il est appliqué.

5.4.3. Un bouton sur chaque ligne permet la suppression de l'attribut.

5.4.4. Un bouton sur chaque ligne permet la modification de l'attribut (nom, symbole ou catégorie).

5.4.5. La liste des attributs est disponible dans l'interface de Brat comme attributs sur l'entity correspondant à la catégorie associée.

5.4.6. Un attribut doit avoir un nom. Un nom d’attribut ne peut pas être composé d'espaces seulement.

5.5 Relations

Cette section permet aux administrateurs de déterminer les relations disponibles pour un projet.

5.5.1. La liste affiche les relations du projet et est ordonnée en ordre alphabétique.

5.5.2. Un bouton en haut de la liste permet d'ajouter une nouvelle relation. Lorsque le bouton est cliqué, une boîte de dialogue apparaît permettant de choisir le nom et la couleur de la relation, ainsi que deux menus déroulants permettant le choix des catégories auxquelles elle est appliquée.

5.5.3. Un bouton sur chaque ligne permet la suppression de la relation.

5.5.4. Un bouton sur chaque ligne permet la modification de la relation (nom, couleur ou attributs).

5.5.5. Les relations dans la liste sont disponibles dans l'interface de Brat comme relations sur les entity correspondant aux catégories associées.

5.5.6 Une relation est unique de nom pour un projet.

5.6 Événements

Cette section permet aux administrateurs de déterminer les événements disponibles pour un projet.

5.6.1. La liste affiche les événements du projet, en affichant la couleur choisie pour l'événement en arrière-plan de la ligne.

5.6.2. Un bouton en haut de la liste permet d'ajouter un nouvel événement. Lorsque le bouton est cliqué, un dialogue apparaît permettant le choix du nom et de la couleur de l’événement, ainsi que deux menus déroulants permettant le choix des catégories associées.

5.6.3. Un bouton sur chaque ligne permet la suppression de l'événement.

5.6.4. Un bouton sur chaque ligne permet la modification de l'événement (nom, couleur ou catégories).

5.6.5. Les événements dans la liste sont disponibles dans l'interface de Brat comme events.

5.6.6.1. Un événement est unique de nom pour un projet.

5.6.6.2. Un événement doit avoir un nom. Un nom d’événement ne peut pas être composé d'espaces seulement.

5.6.7 Les fenêtres des événements doivent être fixes et permettre l’utilisation d’un ascenseur vertical.

5.6.8 Le titre de chaque événement ne doit pas dépasser 100 caractères.

5.6.9 Le nom d’un événement doit pouvoir être lisible en tout temps.

5.6.10 La liste des évènements doit être en ordre alphabétique. Cette section permet aux administrateurs de déterminer les événements disponibles pour un projet.

5.7 Annotateurs et Administrateurs

Cette section permet aux administrateurs de système de déterminer quels utilisateurs remplissent les rôles d'annotateurs et d'administrateurs pour ce projet.

5.7.1 Les listes affichent les noms d'utilisateurs des annotateurs et Administrateurs respectivement

5.7.2 en haut des deux listes, un bouton permet l'ajout d'un utilisateur à la liste. Cliquer sur le bouton fait apparaître un dialogue contenant une liste de tous les utilisateurs du système, permettant de choisir l'utilisateur à ajouter en cliquant sur son nom.

5.7.3 Un bouton sur chaque ligne permet de supprimer un utilisateur de la liste.

5.7.4 Un utilisateur supprimé ne devrait pas pouvoir ouvrir une session de nouveau.

5.7.5 Un bouton devrait permettre à l’administrateur de projets d’assigner le projet à un autre administrateur de projet.

5.7.6 Il doit y avoir un administrateur pour chaque projet et ce, en tout temps. Si l'utilisateur qui l'a créé souhaite l'assigner à un autre utilisateur afin que ce dernier s'en occupe, il doit lui confier avant de se retirer du groupe des administrateurs

6.0 Historique

6.1 Annotations

6.1.1 L’application doit être en mesure de maintenir un historique de toutes modifications

        apportées à un fichier d’annotation.

6.1.2 L’historique implémenté dans l’application doit comprendre les informations suivantes:

*Date et heure de la modification *Identifiant unique de l'annotateur *Nom de l'utilisateur *Action apportée (exemple: ajout, initialisation , modification et sauvegarde)

Exemple

Date et heure AnnotationID User Action
2018-10-08 19:24:24 bc32hk slaroche modified

6.1.3 Chaque fois qu’un annotateur place des entités, des relations, des événements et des attributs dans un nouveau document, une nouvelle référence est créée dans l’historique.

  • L’historique doit être sauvegardé dans la base de données.
  • L’historique ne peut pas être modifié par un utilisateur.

6.2 Audit

6.2.1 Grâce à une option, l’interface de travail de l’administrateur du projet peut afficher à côté de chaque annotation dans le texte le nom de l’utilisateur l’ayant créé.

6.2.2 L’application permet à l’administrateur du projet(expert) de consulter l'historique complet des annotations pour un texte dans le document que lui soumet l’annotateur. Peut être affiché dans la même page que le texte.

7. Gestion des pages d'annotation

Cette section se concentrera sur l'interface de gestion des pages d'annotation, où les annotateurs auront la possibilité de créer ou de sélectionner une page d'annotation. L'annotateur sera alors dirigé vers le projet à annoter.

7.1. Création de nouvelles pages d'annotation

En haut de l'interface, un champ Nom du fichier permettra de spécifier le nom d'une nouvelle page d'annotation et un bouton présent sous le champ permettra de confirmer la création du nouveau fichier.

7.2 Sélection d'une page d'annotation

Positionnée sous la section de création, une liste des pages d'annotation existantes sera affichée, où l'annotateur pourra sélectionner une page, avant de cliquer sur un bouton placé sous la liste, pour confirmer l'ouverture de la page d'annotation sélectionnée.

7.3 Sauvegarde des pages d'annotation

Les annotations ajoutées à un projet par l'annotateur devront être sauvegardées automatiquement dans un fichier séparé du texte annoté. Ce fichier doit être nommé et classé de manière à identifier le projet auquel il est attaché.

8. Annotateur unique ou multiple

L'application doit être en mesure de gérer les cas où un ou plusieurs annotateurs décident de travailler sur le même texte. Chaque annotateur devrait avoir les permissions nécessaires avant de pouvoir annoter un texte. ### 8.1 Annotateur unique

Cette section permettra de définir la manière dont l’annotateur unique s’acquittera de ses tâches

8.1.1 Lorsqu’un annotateur désire travailler sur un document, il prend une copie de ce dernier et ajoute ses annotations.

8.1.2 À tout moment il peut sauvegarder son travail et continuer ses annotations à un moment ultérieur.

8.1.3 Lorsque l’annotateur aura terminé ses annotations, il soumettra son travail à l’administrateur du projet (Expert) qui pourra valider les annotations et ainsi rendre le document final disponible/public en lecture seulement aux utilisateurs.

8.1.4 Le document final ne fera aucune mention de l’annotateur.# ## ###

8.1.5 Seul l’expert ( administrateur du projet) détient l’information quant aux auteurs des annotations de chaque copie du corpus.

8.2 Annotateurs multiples

Cette section permettra de définir la manière dont les annotateurs multiples pourront accomplir leurs tâches

8.2.1 Quand plusieurs annotateurs doivent annoter un document, ils auront chacun une copie du document original sur laquelle ils pourront travailler.

8.2.2 Chaque annotateur aura un accès total (lecture du document et écriture des annotations) à sa propre copie, mais ne pourra pas accéder aux copies des autres annotateurs.

8.2.3 Il est important de noter qu’un annotateur ne devrait en aucun cas pouvoir éditer le corpus lui-même.

8.2.4 Chaque document annoté devra ainsi respecter certaines contraintes:

  • Le document associé à l'annotateur n'est visible et modifiable que par son propriétaire et l'administrateur du projet.
  • Chaque annotateur a son document uniquement s’il est associé au projet.
  • Annoter son document en temps réel sans influencer le travail des autres.
  • Pour accéder à un document et faire des annotations tout utilisateur doit être un annotateur du projet.

8.3 Validations des annotations

Cette section permettra de définir les tâches de validations qui incombent à l’administrateur du projet

8.3.1 L'administrateur du projet doit pouvoir :
  • Voir chaque annotation de son corpus.

  • Comparer les annotations sur toutes les relations.

  • Valider/choisir ou refuser les annotations.

  • Combiner, dans le cas des annotateurs multiples, les documents annotés en un corpus lisible.

    8.3.2 Une fois qu’il a combiné les documents annotés, l’administrateur du projet génère la version finale qui contient toutes les annotations approuvées.

    8.3.3 On ne devrait trouver dans cette version finale aucune documentation , aucun commentaire, ni aucune information qui indique les annotations effectuées par les différents annotateurs du projet.

    9. Permission

    Une fois qu’un dossier sera créé, l’administrateur du projet pourrait fournir ou restreindre l’accès aux utilisateurs à son contenu. Par exemple, celui-ci peut fournir l’accès au site aux seuls membres de son équipe, à tout le monde (par défaut) ou le restreindre à certains. Pour utiliser les autorisations, la méthode la plus simple consiste à utiliser les groupes et niveaux d’autorisations par défaut, qui couvrent les scénarios les plus fréquents. Si l’administrateur du projet le souhaite, il peut définir des autorisations affinées en plus des niveaux par défaut.

    9.1 Les différents niveaux d'autorisations

    Contrôle total

    Contient toutes les autorisations disponibles (autorisation par défaut). Modifier

    Afficher, ajouter, mettre à jour et supprimer des éléments du document d’annotation et des documents.

    Accès limité

    Permet à un utilisateur ou à un groupe de parcourir une page ou un dossier, pour accéder à un document de contenu spécifique, lorsqu’il ne dispose pas d'autorisations nécessaires pour ouvrir ou modifier d’autres éléments du site ou du dossier.

    Lecture

    Afficher des pages, des documents et des dossiers de documents existants et télécharger des documents.

    Lecture seule

    Afficher des pages, des éléments ou des documents. Ces derniers ne peuvent être ni téléchargés ni modifiés.

    9.2 Les groupes

    Les niveaux d’autorisation peuvent aussi fonctionner en utilisant des groupes. Un groupe est un ensemble d’utilisateurs qui disposent tous du même niveau d’autorisation. Les différents groupes sont:

    Visiteurs (lecture)

    Ce niveau inclut les autorisations suivantes :

    • Ouvrir.
    • Afficher les éléments, les versions et les pages des applications.
    • Parcourir les informations concernant les utilisateurs.

    Annotateur(trice)s (modifier)

    Ce niveau inclut toutes les autorisations Lecture, plus les suivantes :

    • Afficher, ajouter, mettre à jour et supprimer des éléments.
    • Ajouter, modifier et supprimer des éléments.

Administrateur(trice)s du projet (Contrôle total)

Ce niveau inclut toutes les autorisations.

9.3 Assignation

La plateforme doit proposer un outil de gestion des groupes au sein des projets. Il doit ainsi être possible de créer, nommer et supprimer des groupes. Une fois créé, le niveau d’autorisation pour le groupe doit être défini (visiteur/annotateur/administrateur). Il est ensuite possible d’ajouter ou de supprimer des utilisateurs via leur adresse courriel.

Pour gérer plus finement les affectations d’autorisations, il est possible de gérer les utilisateurs au cas par cas. Par défaut, les projets étant publics, il faut proposer un bouton dans la gestion des permissions pour restreindre totalement l’accès au projet. Il est ensuite possible d’ajouter ou de supprimer des utilisateurs, en leur affectant un certain niveau de droit (contrôle total/accès limité/lecture/lecture seule).

III Glossaire

  • Administrateur de projet

Un utilisateur créateur d’un projet. Celui-ci peut déterminer les catégories d’annotations associées au corpus, ajouter des annotateurs au projet et importer des fichiers textes au corpus. Tous les privilèges accordés aux annotateurs sont étendus à l’administrateur.

  • Administrateur de système

Celui-ci peut ajouter des administrateurs de projet et il est responsable des considérations techniques du système (p. ex. régler les problèmes de connexion, etc.)

  • Annotateur

Un utilisateur ayant les droits d’accès à un corpus qui ajoute des annotations aux documents du corpus selon les catégories d’annotations appartenant au projet. Tous les privilèges accordés aux lecteurs sont étendus aux annotateurs.

  • Annotation

Une annotation est l’information ajoutée au texte qui amène plus de précision et fait des liens avec des concepts sans changer le contenu du texte initial.

  • Entité

Représente une abstraction que l'on considère comme une réalité. Une entité est une section de texte composée de mots qui a un début et une fin, qui peut être référencée par d’autre annotation.

  • Type

Un type est un nom qu'on donne à une entité pour la catégoriser (ex. personne, pays).

  • Relation

Permet une liaison binaire entre entités pour représenter une influence, une dépendance ou de l’information sur le lien qui unit plusieurs entités ensemble. La relation peut être unilatérale et bilatérale.

  • Attribut

Permet l'ajout d'informations sur une entité. Par exemple, on pourrait avoir un texte contenant trois instances de l'entité "Personne". Si l'une d'entre elles est célèbre, on y ajouterait l'attribut "Célèbre". Elle peut aussi avoir une valeur.

  • Événement

Définit une relation n-aire entre des annotations (entité ou événement) où chaque relation est accompagnée d'un type. Un événement sert à marquer des choses qui se sont produites dans un texte.

  • Corpus

L’ensemble des utilisateurs (administrateur, annotateurs), des catégories d’annotation et des textes qui sont associés au même projet.

  • Lecteur

Un utilisateur quelconque qui accède à la partie publique de l’application via le web.

  • Projet

Collection des textes (documents UIMA), avec leurs annotations respectives, comprises dans un projet.

  • Texte de corpus

Le fichier texte ou le fichier du format UIMA.

IV Contraintes d’ordre général

  • Tout le cheminement (cahier de charges, plan de tests, code, ...) doit être partagé sur GitHub.

  • L'application doit fonctionner au moins sur les navigateurs Chrome et Firefox.

  • L'application sera développée en utilisant la plateforme de développement Firebase.

1. Version des packages npm principaux utilisés par l'application :

Nom Version
Angular 5.2.9
Angular Material 5.2.4
ng-bootstrap 1.0.0
AngularFire2 5.0.0-rc.4
Firebase 4.10.1
ngx-file-drop 2.0.5
rxjs 5.5.2
tslint 5.9.1
Typescript 2.4.2 < 2.7

V Évolution de l'application

  • Traitement des situations où deux annotateurs ne sont pas en accord (e.g. niveau de certitude).
  • Implémenter un système qui donne la possibilité d’insert une image et de l'annoter soit dans un corpus seul ou dans le même corpus.
  • Implémente un ensemble complet de fonctions de recherche d’un mot ou d’une phrase dans tous les corpus ou dans un seul.
  • Implémenter un système qui donne plus d’information sur l’annotation. Des informations supplémentaires recherchées dans le net. bratinfo

Popup montrant des informations supplémentaires de Wikipedia pour une annotation



⚠️ **GitHub.com Fallback** ⚠️