Introduction
La plateforme Kairntech donne aux utilisateurs l’accès à de puissantes capacités d’apprentissage machine, intégrées dans une interface graphique simple, intuitive et facile à utiliser. Bien que cela soit essentiel de permettre aux experts métier sans compétence informatique particulière d’utiliser la plateforme, il existe une deuxième approche pour travailler avec la plateforme : l’utilisation de l’API REST. Dans ce tutoriel, nous vous expliquerons comment implémenter un client en python donnant accès aux fonctionnalités de l’API.
Le code complet se trouve ICI, et nous vous expliquerons la mise en place étape par étape.
Prérequis
Dans ce qui suit, nous supposons que vous avez python 3 installé sur votre machine et que vous êtes habitué à utiliser un éditeur de texte pour écrire du code et enfin exécuter un script python en ligne de commande. Nous supposons également que vous avez accès à la plateforme Kairntech. Nous maintenons des instances de la plateforme en ligne pour des tests et des démonstrations. Si vous avez besoin d’un accès, veuillez nous en informer à l’adresse info@kairntech.com et nous vous recontacterons.
Enfin, le client que nous sommes sur le point de mettre en œuvre nécessite l’installation d’une poignée de modules python. Si au lancement du client, un message d’erreur vous informe que ce module spécifique n’est pas présent, vous pouvez l’ajouter facilement en utilisant les procédures python par défaut. Par exemple, si votre installation python ne contient pas encore la bibliothèque de pandas, la commande ci-dessous vous permet de l’ajouter rapidement :
# pip install pandas
Collecting pandas
Downloading https://files.pythonhosted.org/packages/*******/pandas-0.24.2-cp35-cp35m-manylinux1_x86_64.whl (10.0MB)
100% |████████████████████████████████| 10.0MB 928kB/s
Installing collected packages: pandas
Successfully installed pandas-0.24.2
#
Une introduction complète à l’utilisation de l’installateur du module python pip dépasse la portée de ce texte. Voir ici pour plus de détails sur pip.
L’API Rest
La plateforme est accessible par des appels aux méthodes de l’API REST via tout client qui « parle » REST. Une documentation complète de l’API est accessible ici. Cette page contient une liste complète des appels disponibles, les paramètres requis et le format des résultats renvoyés par l’appel respectif. Toutes les interactions utilisateur qui peuvent être effectuées sur l’interface web GUI peuvent également être exécutées via l’API, de sorte que vous avez un accès complet à toute la gamme de méthodes telles que la connexion, la vérification de la liste des projets existants, la création d’un nouveau projet, le téléchargement de documents, le lancement d’un travail de formation et la collecte des résultats d’une annotation et bien d’autres.
Il est en principe possible d’interagir de manière productive avec l’API simplement en vérifiant la documentation ci-dessus, mais le fait d’avoir un exemple de client qui explique comment les choses sont censées fonctionner permet souvent de gagner du temps. Alors, nous y voilà :
Dans ce qui suit, nous allons suivre un scénario spécifique, à savoir le processus de connexion à la plateforme, la vérification de la liste des projets installés, puis la vérification de la liste des modèles entrainés disponibles dans l’un d’entre eux et enfin l’envoi d’un texte (ou d’un répertoire de textes) pour être annoté avec ce modèle et le retour des résultats.
Authentification
Pour pouvoir interagir avec la plateforme, vous devez d’abord vous connecter. L’appel correspondant vous renvoie un « jeton au porteur » qui doit être soumis avec les appels suivants dans la même session. Le code respectif en python est assez simple :
Lors de l’exécution du code ci-dessus, un « bearer token » sera renvoyé et imprimé. Cela montre que l’accès au serveur a réussi et que nous sommes maintenant prêts à utiliser le jeton obtenu pour accéder à l’API.
Liste des projets et modèles
Lorsque je travaille avec l’interface graphique de la plateforme, l’application me présente immédiatement la liste des projets installés, m’invitant à en sélectionner un (ou à en créer un nouveau). Cependant, lorsque je travaille avec l’API, il se peut que je ne sache pas quels sont les projets disponibles, c’est pourquoi nous demandons d’abord une liste des projets installés. Heureusement, il existe un appel de l’API pour cela. Et il en va de même pour la liste des modèles à l’intérieur d’un projet. Le code ci-dessous en est un exemple pour les projets :
En utilisant le jeton que nous avons reçu à la suite de l’appel précédent, nous pouvons demander une liste des projets installés.
Envoi du contenu
Après avoir sélectionné le projet que nous voulons utiliser (et le modèle spécifique – il peut y avoir plusieurs modèles au sein d’un même projet correspondant à des entrainements avec les différents algorithmes disponibles), nous sommes maintenant prêts à envoyer le contenu et à le faire annoter.
La fonction « call_sherpa » ci-dessus appelle le serveur avec le jeton, le projet et le modèle sur un morceau de texte et renvoie ensuite les annotations résultantes, où l’étiquette est le type d’entité (par exemple, PERSONNE ou LIEU ou tout ce que le modèle sélectionné a été entraîné à reconnaître). Les valeurs multiples pour la même étiquette sont renvoyées sous forme de liste.
Impression des résultats
Il ne reste plus qu’à décider comment notre client doit renvoyer les résultats de l’appel. Nous avons décidé ici que les résultats seront exportés dans un fichier CSV avec une ligne par fichier traité, les colonnes étant les types d’entités des modèles sélectionnés et chaque cellule contenant la liste des entités pour ce type d’entité dans ce fichier :
Lorsque nous lançons notre exemple de client sur un répertoire d’appels d’offres publics en anglais collectés sur le site web et que nous les envoyons à un modèle entrainé pour trouver certaines métadonnées telles que la date d’échéance de l’appel d’offres, le volume estimé et l’objet de l’appel d’offres, le script renvoie un fichier csv avec les informations correspondantes, ce qui permet de vérifier facilement, par exemple, le prochain appel d’offres qui est dû ou celui qui a le plus grand volume ou celui qui correspond le mieux au profil de mon entreprise – toutes ces questions m’auraient pris des heures si j’avais dû compiler manuellement ces informations.

Conclusion
Nous avons introduit l’utilisation de l’API REST de la plateforme Kairntech avec un exemple simple : Envoyer un fichier texte à un modèle d’extraction d’entité donné et renvoyer les résultats de l’annotation sous forme de tableau Excel CSV. Veuillez consulter le code complet ici afin d’avoir un exemple fonctionnel (les extraits ci-dessus ne présentent que l’approche de haut niveau).
Notre client suggéré répond déjà à un large éventail de cas d’utilisation : En utilisant le modèle approprié, on peut maintenant envoyer des documents sur des essais cliniques et générer automatiquement un tableau Excel indiquant quels médicaments sont étudiés pour quelle maladie ; ou en travaillant sur des appels d’offres publics, on peut générer un tableau indiquant quand quel type de projet et quel volume de contrat est dû ; ou en travaillant avec des factures, quel montant a été payé et à quel destinataire.
Comme mentionné au début, le scénario sélectionné ici ne sert que d’exemple d’utilisation potentielle de l’API. Veuillez nous faire part des autres scénarios que vous avez en tête. Veuillez également noter que l’API est en développement constant. Au moment où nous écrivons ce petit tutoriel, nous finalisons la prochaine version de l’API qui proposera également des appels à la catégorisation des documents et de plus en plus de fonctionnalités seront ajoutées dans un futur proche.