fabernovel loader

Mar 22, 2019 | 8 min de lecture

Tech

Des APIs qui définissent les mots qu’elles utilisent. Parlons (web) sémantique.

Antoine Chéron

Developer


FABERNOVEL TECHNOLOGIES
Et si au lieu de rechercher et intégrer une API manuellement, nous pouvions décrire ce que nous voulons réaliser, comme “obtenir la météo”, et laisser la machine faire le travail ? Quand les machines sont capables de raisonner sur le sens des mots, cela devient réalité. Dans cet article, nous vous expliquerons comment les technologies du Web Sémantique le rendent possible.

Oui, lorsque la machine peut interpréter les mots comme nous, les humains, elle devient capable de faire beaucoup de choses intelligentes. Tant de choses qui peuvent nous faire gagner un temps précieux à la fois en tant qu’organisation, développeur et utilisateur. Cette propriété aide notamment à réduire le couplage clients-serveur. Vous les découvrirez dans cet article.

“La sémantique”, c’est le terme qui veut dire “le sens des mots”. Plus précisément, c’est une branche de la linguistique qui étudie les signifiés, ce dont on parle, ce que l’on veut énoncer. Mémorisez bien ce terme, nous l’utiliserons tout au long de l’article.

La sémantique déjà dans notre quotidien

Que vous soyez développeur ou utilisateur du web, vous utilisez régulièrement la sémantique. Sur Google par exemple, lorsque vous recherchez un lieu, ou un artiste, le bandeau latéral droit, que nous avons encadré en bleu sur la capture suivante, utilise ces technologies.

Les Rich Snippets sont un autre exemple que nous croisons régulièrement sur Google.

L’Open Graph Protocol de Facebook les utilise lui aussi. Il permet de générer des aperçus des liens partagés sur les réseaux sociaux et services de messagerie instantanée.

Comment ça fonctionne, la sémantique, avec des machines ?

Dans cette série, quand nous parlons de sémantique, il s’agit de sémantique interprétable par la machine.

Prenons la phrase “John Lennon avait une voiture dont la marque était Mercedes” comme exemple.

Comment différencier les sens d’un même mot ? Par exemple, “marque” a 18 sens d’après larousse.fr. Comment identifier la signification utilisée dans la phrase ci-dessus ? La méthode la plus directe est d’écrire “[…] la marque (au sens 1er de larousse.fr) était […]”.

C’est quasiment ce qui est fait avec les machines. Pour dire à la machine “(au sens 1er de larousse.fr)”, on lui dit que la définition du mot “marque” est accessible à une URI bien précise. Dans notre cas : https://www.larousse.fr/def/marque#sens_1. Les URIs ont une propriété très utile : elles identifient un élément accessible par internet de manière unique. Il nous est donc garanti qu’il n’y a qu’une seule définition derrière une URI, jamais plus. C’est donc simplement en liant les mots utilisés à leur définition que nous rendons les machines capables de raisonner sur leur sens.

Qu’en est-il des synonymes ?

Si dans la phrase précédente, “voiture” est remplacé par “auto”, sans sémantique, la machine ne peut pas comprendre que la phrase a le même sens. Toutefois, avec la sémantique, si ces deux mots sont liés à la même définition, ou qu’un dictionnaire de synonymes existe, alors cela devient possible. C’est de nouveau ce qui est fait.

Grâce aux technologies existantes, on peut même aller plus loin. Si l’on dit que “Nicolas a comme maman Christine A” et que “Brigitte a comme maman 

Christine A”, sans préciser qu’ils sont frère et sœur, il est possible de le déduire.

Pour les profils techniques qui aimeraient voir ce dont nous venons de parler dans un exemple, en voici un au format JSON-LD. Profils non techniques rassurez-vous, nous ne l’utiliserons pas par la suite.

Si vous souhaitez en savoir plus sur la théorie de ces concepts, nous vous renvoyons vers cet article.

Qu’est-ce que la sémantique rend possible ? Comment réduit-elle le couplage ?

Et si les mots-clés n’avaient plus d’importance ?

Si l’on demande à une API le modèle de voiture que possédait John Lennon pour afficher cette information à l’utilisateur, quelle importance a le mot clé utilisé par l’API pour nous donner cette réponse ? Quelle différence entre “voiture”, “bagnole”, “auto” ou “car” ? Ces mots ont finalement tous le même sens.

Sans sémantique, impossible d’ignorer le mot-clé utilisé, nous devrions donc écrire le code suivant.

Avec la sémantique, nous pouvons écrire le code ci-dessous. Il supprime le couplage à une liste finie de mots-clés, et par conséquent d’APIs.

Des composants visuels couplés à une liste d’informations plutôt qu’un modèle de données figé

Pour illustrer ce point, regardons ce qui est fait aujourd’hui. Sur cet exemple, le composant a été codé pour fonctionner avec le type <code>Person</code> visible en partie supérieure. Si les données lui sont transmises dans la structure visible dans la partie inférieure de l’exemple, cela ne fonctionnera pas. Pourtant, les mêmes informations sont présentes.

Le problème serait le même si la structure était identique mais les mots-clés différents. Ceci dit, nous avons vu ce cas précédemment.

La sémantique nous offre une solution à ce problème. En lieu et place de programmer le composant pour fonctionner avec un seul modèle de données (structure + mots-clés + type d’information), il pourrait trouver automatiquement l’information dont il a besoin dans le jeu de données qui lui est fourni.

Ici, c’est le cas du couplage à un modèle de données fixe que nous avons traité.

Une meilleure UX pour les librairies de composants visuels

La sémantique nous offre un système de typage uniforme quelque soit le langage de programmation utilisé. Un système de typage, c’est un mécanisme pour préciser de quelle type est une donnée. Par exemple, une personne ou une voiture. Le principal avantage de ce système est qu’il n’impose pas une structure unique, il sait s’adapter.

En utilisant cela, il est possible de créer des librairies de composants visuels plus intelligentes. Elles peuvent par exemple afficher le composant le plus pertinent selon le type de donnée qui leur est passé et mettre en avant l’information la plus pertinente, selon si c’est une personne, un événement ou un autre type de donnée qu’il faut afficher.

Dans cette exemple, nous avons vu une solution qui réduit le couplage entre les données envoyées par les APIs et celles attendues par les librairies de composants. Il s’agit de nouveau d’un couplage à une structure de donnée fixe.

Des APIs interchangeables, automatiquement sélectionnées et composées

Grâce à la sémantique, des programmes intelligents sont désormais capables de comprendre que deux APIs proposent les mêmes services, comme nous fournir la météo d’une ville. Pour cela, il suffit que la même définition soit utilisée, ou des synonymes, comme nous l’avons vu dans la première partie.

Il devient alors possible de remplacer deux APIs automatiquement, sans avoir à changer le code. Voyons deux cas ou cela s’avère très utile. Premièrement, une API que vous utilisez ne répond plus. Pour continuer à offrir ces fonctionnalités à vos utilisateurs, le programme va alors la remplacer par une autre. Un autre cas : l’API que vous exploitez devient lente, une autre à un meilleur temps de réponse moyen. Idem, automatiquement remplacée pour améliorer l’expérience utilisateur.

Comment trouver ces APIs automatiquement ? Il faut commencer par rendre disponibles les descriptions des services que proposent les APIs, par exemple sur un dépôt en ligne les regroupant toutes. Ensuite, il suffit à un programme d’interroger le dépôt avec la liste des fonctionnalités et des critères non-fonctionnels (délai de réponse, etc.) souhaités.
Nous pouvons étendre à un autre usage cette capacité à découvrir ce que fait une API, et par extension ce dont elle a besoin pour répondre.
Admettons que nous voulons écouter les 10 morceaux les plus célèbres de John Lennon. Nous avons une enceinte connectée chez nous, qui embarque une API. Notre système intelligent la voit. L’API de cette enceinte nous permet uniquement de lire de la musique, il faut donc une autre API pour trouver ces 10 morceaux, et récupérer le fichier musical. Grâce à la sémantique, notre agent intelligent est capable d’identifier qu’il manque cette API, de la trouver, et de la composer automatiquement avec celle de notre enceinte connectée.
Au travers de ces exemples, vous avez découvert comment la sémantique peut réduire le couplage d’un logiciel à des APIs bien définies.

Des recherches très puissantes et précises retournant exactement le type d’information demandé

DBPedia, un projet de recherche scientifique qui a récupéré l’information de Wikipedia et l’a sémantiquement annoté, nous offre un très bel exemple de cela : récupérer la liste des “joueurs de football, qui sont nés dans un pays de plus de 10 millions d’habitants, qui ont joué comme gardien de but dans un club dont le stade a une capacité de plus de 30 000 places et qui jouent dans un club qui se trouve dans un pays étranger à leur pays de naissance.” Le résultat est le tableau suivant. Effectuez la même recherche sur Google, vous verrez que le résultat est sensiblement moins précis.

résultats tronqués

Observez que tous les résultats sont des liens. Vous pouvez donc naviguer vers la page détaillée de chaque joueur, pays ou équipe.

Des assistants (bots, vocaux) plus intelligents

Nous avons vu qu’il est possible de s’affranchir du couplage aux mots-clés et structure de données, que les APIs peuvent être automatiquement sélectionnées, intégrées, remplacées et composées et qu’il est possible d’exprimer des requêtes très précises.

Grâce à ces nouveaux outils, nous pouvons résoudre l’un des problèmes majeurs des assistants intelligents que nous connaissons tous : Siri, Google Assistant, Cortana. Il s’agit de leur capacité à communiquer avec une liste restreinte d’APIs, pour lesquelles ils ont été spécifiquement programmés. Nous pourrions ne plus restreindre Siri à Uber et Lyft alors que Marcel propose les mêmes services en Ile-de-France. Si aujourd’hui Google Assistant ne peut vous réserver un massage à domicile, en exploitant la sémantique, il pourrait le faire si tôt une API le permettrait. Cela s’applique aussi aux chatbots des plateformes de messagerie instantanée.

Avec notre accord, ces assistants pourraient même retenir les informations que nous leur confions, très facilement, comme notre nom, prénom ou adresse. Et cela sans avoir été programmés spécifiquement pour chaque information. Le tout sans créer de doublons.

Conclusion

Dans cet article, nous vous avons présenté ce qu’est la sémantique interprétable par la machine, quels usages nous pouvons en faire et en quoi cela peut réduire le couplage technique. Vous avez pu voir que ces technologies pourraient faire gagner du temps aux développeurs, à condition que nous ayons les outils pour.

Dans notre prochain article, nous vous présenterons les technologies qui permettent d’enrichir les APIs avec de la sémantique ainsi que quelques ressources qui vous permettront d’approfondir ce sujet.

Si vous n’êtes pas technique vous pouvez le passer et dès la semaine prochaine, nous vous partagerons ce qu’il est possible de faire en combinant à la fois l’hypermedia et la sémantique, permettant de créer des assistants vraiment intelligents, des architectures moins rigides et de nombreux outils qui aident le développeur au quotidien.

 

Crédits images :

Icones : freepik from www.flaticon.com

Illustrations personnages : semantic-ui-react

Captures de code : carbon.now.sh

Et vous, quel est votre point de vue ?

ECHANGEONS
Cet article appartient à une enquête
logo business unit

FABERNOVEL TECHNOLOGIES

150 talents pour répondre aux défis technologiques de la transformation digitale.

à lire