Les étapes types d’un projet

Préparation des documents

  • Sélectionnez des documents liés à votre problématique : c’est votre corpus
    • 50 documents minimum
    • Le corpus peut être monolingue ou éventuellement multilingue
  • Vérifiez le format des documents
    • Si des métadonnées sont associées à vos documents, utilisez le format JSON de Kairntech (accessible ici pour les projets de REN ou pour les projets de catégorisation).
    • Si les documents sont pré annotés, utilisez le format JSON de Kairntech.
    • Si c’est un format XML propriétaire, contactez-nous car il est possible de développer un « Converter » spécifique
    • Si le format est en PDF Image, convertissez le contenu en format TXT (Tesseract, Abbyy..) avant de les importer dans la plateforme ou contactez-nous.

Quel est le problème posé ?

  • Posez-vous la question : Quelle tâche NLP peut résoudre mon problème ?
    • Classification de texte (catégorisation) (Voir Annexe 2)
    • Reconnaissance d’Entités Nommées (REN) ? (Voir Annexe 3)
    • Extraction de termes / vocabulaire métier ?
    • En liaison avec base de connaissance Wikidata ou autres ? (Voir Annexe 4)
    • Une succession des actions ci-dessus ? (Voir Annexe 5)
    • Extraction de relations ? Cette tâche n’est pas encore disponible dans la plateforme
  • Si c’est une tâche de REN… Quelle est la bonne segmentation des documents ? (car l’apprentissage se fera sur les segments)
    • Aucune car les documents sont très courts
    • Par phrase, par paragraphe ? (Voir Annexe 1)

Lire les documents

  • Créez un projet
    • Définissez le type de tâche NLP (Catégorisation ou REN)
    • Choisissez la langue du projet (= langue des documents)
    • Importez les documents avec, dans un premier temps, la segmentation par défaut (= la phrase) pour les projets REN

  • Allez dans la vue Documents et…lisez plusieurs documents pour voir à quoi ils ressemblent, en quoi ils différent.

Définition des étiquettes

  • Projet Catégorisation
    • Une étiquette = une catégorie
    • Se poser la question de savoir si un document doit appartenir à une ou plusieurs catégories.
  • Projet REN
    • Une étiquette = un concept = un type d’entité
    • Définir une étiquette = je dois être capable d’annoter le texte sur cette étiquette (créer des exemples et des contre exemples de ce concept)
    • Les sous-entités (par ex. le Prénom et le Nom pour une entité « Personne ») seront adressées dans un second temps
    • Créez éventuellement d’autres étiquettes pour compléter les premières étiquettes pour avoir un meilleur résultat qualité au final

Annotation

  • Projet Catégorisation
    • Annotation au niveau du document (pas des segments)
    • Mono ou multi-catégories

  • Projet REN
    • Annotation dans les segments ou dans les documents
    • Un segment doit être parfaitement annoté. Si une entité n’est pas annotée alors qu’elle devrait l’être, elle sera considérée comme un contre exemple !
    • La vue Segments peut manquer de contexte pour pouvoir annoter (dans ce cas aller dans la vue Documents)
    • Attention : dans la vue Documents, il est impossible de faire une annotation inter-segment !

Suggestion

  • Commencez à annoter manuellement. Au moins 5 ou 10 annotations par étiquette. Continuer même si le « pop up » bleu apparait.
  • Allez dans la vue Suggestions  (Voir Annexe 6)
Suggestions dans un projet de REN

Suggestions dans un projet de Catégorisation

  • Acceptez/corrigez/rejetez les annotations suggérées puis validez le segment (ou le document pour un projet de Catégorisation). Il sera alors ajouté au jeu de données  (voir Annexe 7) avec ses annotations.
  • Triez les suggestions selon le score de confiance donné par la machine
  • Au fil des validations le moteur de suggestion se met à jour.
  • Si le contexte du segment est insuffisant pour valider une suggestion, augmentez le contexte ou cliquez sur le titre pour accéder au document.
  • Vous pouvez filtrer la liste des suggestions sur les étiquettes sur lesquelles vous voulez travailler le plus !
  • Le moteur de suggestion est un excellent moyen (et rapide) de voir si la machine peut arriver à apprendre…

Revue du jeu de données

  • Allez dans le menu Projet | Jeu de données (Voir Annexe 7)

  • Assurez vous de la bonne distribution des annotations selon les étiquettes… dans la mesure du possible
  • Allez ensuite dans la vue Documents ou Segments et filtrer le corpus en cochant « dans le jeu de données = oui ».
  • Filtrez le jeu de données sur une étiquette pour faire une revue plus ciblée. C’est une bonne manière de voir si des annotations sont incorrectes !

  • Filtrer le jeu de données sur une étiquette en mode « exclusif ». C’est une bonne manière de voir si des annotations sont manquantes !

  • Le jeu de données doit être parfait : Aucune mauvaise annotation, aucune incohérence, aucune annotation manquante ! (Voir Annexe 8)

Expériences

  • Lancez les expériences par défaut (menu Expériences) pour tester différents algorithmes
  • Paramétrez vous même un apprentissage :
    • Générez idéalement des métadonnées d’entraînement et de test (train/test) sur le jeu de données pour avoir le même jeu de données et donc pouvoir comparer les différentes expériences entre elles (contactez-nous si nécessaire)
    • Sinon utilisez le paramètre « Shuffle : true ». Cela permettra d’effectuer un nouveau découpage aléatoire du jeu de données à chaque cycle d’entraînement. Les changements dans la qualité de l’apprentissage peuvent alors provenir des propriétés de ces découpages aléatoires, en particulier lorsque le nombre de documents est faible.

  • Paramétrez l’algorithme (voir Annexe 9)
    • Sélectionnez le cas échéant des « Embeddings » pour bénéficier du potentiel de modèles de langages pré entraînés. Contactez-nous si nécessaire.
  • Evaluez la qualité globale et celle sur chaque étiquette… comparer les algorithmes entre eux.

  • Améliorez le jeu de données sur les étiquettes présentant une faible qualité (ou trouver une autre solution !) en refaisant les phases précédentes. Puis itérez jusqu’à obtenir une qualité suffisante.

Validation du modèle

  • Lancez une nouvelle expérience avec le meilleur algorithme trouvé (et son paramétrage) sur l’ensemble du jeu de données avec « test_size = 0 ».
  • Testez ce modèle sur des documents du jeu de données dans la vue Test
    • Allez dans la vue Documents et sélectionner un document
    • Cliquez sur le menu « Afficher dans vue test »
    • Testez l’annotation du document avec le modèle
    • Utilisez le bouton « Back » de votre navigateur pour revenir dans la vue Documents

  • Testez ce modèle sur des nouveaux documents dans la vue Test
  • Si les résultats sont satisfaisants, mettez le modèle en pré production

Pré production

  • Passez en Pré production
    • Utilisez l’API Rest Kairntech
    • Ou bien téléchargez le modèle dans la vue Expériences et installez-le sur Kairntech Server (container Docker livré par Kairntech)

Maintenance du modèle

  • Implémentez une boucle de rétroaction
    • Collectez des retours utilisateurs via une interface utilisateur
    • Soumettez des retours pour alimenter la vue Suggestions
    • Validez ces suggestions pour améliorer le jeu de données
    • Effectuez un nouvelle expérience avec le jeu de données enrichi
    • Pratiquez des tests de qualité et de non régression sur le nouveau modèle trouvé
    • Déployez le nouveau modèle mis à jour

Annexe 1 : Segmentation

  • En quoi cela consiste
    • Découper un document en « unités » : phrase, paragraphe…
  • A savoir
    • Pour les projets REN, l’apprentissage se fait sur les segments annotés
    • Pour les projets de catégorisation, pas de segmentation. L’apprentissage se fait sur les documents annotés
  • Pourquoi segmenter sur un projet REN?
    • Pour gagner du temps en annotant uniquement des segments et pas tous les documents.
    • Pour construire un bon modèle, il n’est pas forcément nécessaire d’annoter tous les documents dans leur globalité (jeu de données de type « Gold Standard »).

Annexe 2 : Projet Catégorisation

  • En quoi cela consiste ?
    • La catégorisation en mode supervisé consiste à entrainer un modèle sur un jeu de données pour classer automatiquement des documents dans des catégories pré définies
  • Mono catégorie versus multi catégories
    • Mono catégorie : on ne peut assigner qu’une seule catégorie à chaque document
    • Multi catégories : on peut assigner une ou plusieurs catégories à chaque document
  • Catégorie « Autre »
    • Dans certains cas, il peut être utile d’introduire des exemples négatifs explicites en définissant une catégorie « autre ».

Annexe 3 : Projet REN

  • REN = Reconnaissance d’Entités Nommées
  • Qu’est ce qu’une entité nommée ?
    • Une entité nommée est une chaine de caractère à laquelle on peut assigner une étiquette qui permet de typer l’information. Par exemple « Jean Dupont » est une entité nommée de type « Personne »
  • Qu’est-ce qu’une sous entité ?
    • Une entité est potentiellement constituée de sous entités. Par ex une entité de type Personne a en général deux sous entités : son prénom et son nom de famille
  • Qu’est ce qu’une extraction ?
    • Capacité à lire un texte et d’identifier automatiquement des entités nommées dans un texte
  • Vocabulaire métier
    • Une liste ordonnée de mots-clés « métiers » concernant un domaine donné : Un vocabulaire sur la « finance » peut contenir par exemple « prêts », « taux », « intérêts », etc…

Annexe 4 : Wikidata

  • Qu’est ce qu’une base de connaissance ?
    • Une façon d’organiser de manière structurée de la connaissance. En général, une base de connaissance recense des « objets » appartenant à des « classes », ces objets pouvant avoir des « propriétés » et des « liens » entre eux
  • Qu’est ce que Wikidata ?
    • C’est la base de connaissance construite à partir de Wikipédia.
  • Qu’est ce que extraire en liaison avec une base de connaissance ?
    • Extraire une entité nommée à partir d’un texte et l’identifier de manière unique (résoudre l’ambiguïté) dans la base de connaissance. Par ex. la ville de « Tripoli » existe en Lybie et au Liban. Si l’article parle du Liban, « Tripoli » sera la ville du Liban.

Annexe 5 : Plan d’annotation

  • Qu’est-ce qu’un plan d’annotation ou chaîne de traitement ou encore pipeline d’annotation ? C’est un workflow avec :
    • Un composant de conversion de format (converter)
    • Une combinaison de modèles d’entraînement et d’annotateurs divers (à base de lexiques, bases de connaissance…)
    • Un processeur de consolidation
    • Une formatter pour générer une sortie personnalisé (enrichissement de contenu, export XLS, alimentation de base de données…)
  • Qu’est ce qu’une cascade de modèles ?
    • C’est un enchainement de modèles d’entraînement dont la sortie de l’un devient l’entrée de l’autre. Par exemple un premier modèle reconnait des noms de personnes, le second modèle analyse les sorties pour extraire le prénom et le nom de famille.

Annexe 6 : Suggestion

  • Qu’est ce qu’une suggestion ?
    • C’est une entité nommée ou une catégorie suggérée par la machine que l’utilisateur doit valider, corriger ou rejeter dans le but d’enrichir et d’améliorer le jeu de données et pouvoir ainsi améliorer la qualité du modèle final. L’utilisateur doit aussi vérifier qu’une ou plusieurs entités nommées ou catégories  n’ont pas été oubliées avec la suggestion proposée. L’objectif est d’assister l’utilisateur pour gagner du temps dans la création d’un jeu de données.
  • Qu’est qu’un contre exemple ?
    • La machine peut suggérer une entité ou une catégorie de manière erronée. Si l’utilisateur rejette cette suggestion, la machine considèrera le segment validé comme un contre exemple par rapport à cette entité ou cette catégorie. La machine apprend autant des exemples que des contre exemples.

Annexe 7 : Jeu de données

  • Qu’est ce qu’un jeu de données ?
    • C’est un ensemble de documents ou de segments qui ont été annotés.
  • Quelle différence entre corpus et jeu de données ?
    • Le corpus est constitué des documents bruts sans annotation.
    • Le jeu de données (ou corpus d’apprentissage) est constitué de documents ou de segments annotés
  • Que signifie « dans » ou « en dehors » du jeu de données ?
    • Un segment ou un document qui n’a pas été annoté est « en dehors » du jeu de données. Un segment dont les annotations auront été suggérées et finalement rejetées par l’utilisateur sera bien « dans » le jeu de données. Il sera considéré comme un contre exemple.

Annexe 8 : Incohérences

  1. Exemples d’annotations incohérentes
    • Par exemple : Si une première annotation porte sur « Monsieur Jean Dupont » et une seconde sur « Jean Dupont » en omettant Monsieur avant, ces deux annotations seront incohérentes. La machine apprendra moins bien. Il est très important de suivre les mêmes lignes directrices pour annoter.
  2. Exemples d’annotations manquantes
    • Un segment doit être parfaitement annoté. Aucune annotation ne doit manquer sinon cela sera considéré comme un contre exemple par rapport à l’annotation manquante !

Annexe 9 : Modèles de langage et « embeddings »

  • Qu’est ce qu’un modèle de langage ou « Word Embeddings » (plongement de mots) ?
    • C’est une représentation mathématique d’une langue construite à partir d’un réseau de neurones sur un très grand nombre d’exemples c’est-à-dire sur un très grand nombre de documents (des centaines de milliers ou des dizaines de millions de documents).
  • A quoi servent les « Embeddings » ?
    • Cela sert à avoir un premier niveau d’analyse et de compréhension d’un texte de la part de la machine et ce de manière générale.
    • Il est possible de créer des « Embeddings » dans des domaines où les structures de phrases et le vocabulaire sont très spécifiques (domaine du biomédical par exemple)
    • Le fait d’utiliser des « Embeddings » dans une architecture à base de réseaux de neurones permet en général d’augmenter de manière significative la qualité d’un modèle d’entrainement.