# Annotation sémantique

L'annotation sémantique est l'opération consistant à relier le contenu d'un texte à des entités dans une ontologie. Par exemple, pour la phrase «Paris est la capitale de la France.», l'annotation correcte de Paris serait Paris et non Paris Hilton. L'annotation sémantique est une variante plus détaillée mais moins exacte de la méthode des entitiés nommées, car ces dernières décrivent seulement la catégorie de l'entité (Paris est une ville, sans la relier à la bonne page Wikipédia).
La tâche d'annotation sémantique est souvent considéré comme un des aspects applicatifs du Web sémantique, notamment pour trouver les métadonnées en relation avec l'identité sémantique des données annotées.

## Applications

L'annotation sémantique est une tâche de fouille de texte proche des méthodes de traitement automatique des langues qui consiste à étiqueter dans un document les mots avec des liens qui pointent vers une description sémantique.
Outre l'insertion de contenus qui permettent de compléter un texte (par exemple en identifiant automatiquement les noms de personnes et en fournissant leur date de naissance), l'annotation sémantique joue un rôle essentiel en désambiguïsation en fournissant un identifiant unique représentant parfaitement l'identité du mot ou du groupe de mots annotés.
On peut ainsi définir l'annotation sémantique comme la tâche permettant de déterminer l'identité exacte d'un concept contenu dans un texte et de fournir des informations sur ce concept.
Ses applications sont nombreuses, de la fouille de données intelligente à la conception d'application de compréhension du langage de haut niveau comme Siri.

### Fonctionnement

Les systèmes d'annotation sémantique recourant à de très volumineuses ressources ontologiques, requises pour la désambiguïsation, ainsi qu'à des modèles de classification complexes et eux aussi parfois volumineux, ils sont le plus souvent livrés sous forme de services Web gratuits ou par abonnement. Certains systèmes tels DBpedia Spotlight sont fournis à la fois sous forme de logiciel serveur et de web service, mais sont très complexes à déployer et maintenir. La maintenance est notamment rendue difficile par la nécessité pour ces systèmes de mettre à jour régulièrement leurs ressources de désambiguïsation, par exemple pour couvrir l'apparition de concepts.

## Historique

La tâche d'annotation sémantique émerge dès les années 1970 comme le principe de mise en relation d'un contenu textuel avec une métadonnée externe qui l'enrichit. Au cours des années suivantes, les méthodes d'extraction d'information vont se focaliser sur des processus plus simples (et à la portée des ordinateurs disponibles) telle que l'extraction d'entités nommées. Mais dès les années 2000, la question de la mise en relation de ces entités avec un contenu extérieur revient à l'ordre du jour par la communauté du traitement automatique du langage naturel.
Plus récemment, l'émergence du web sémantique fait ressortir le besoin d'élaborer des méthodes qui permettraient d'enrichir des annotateurs avec des étiqueteurs sémantiques. Dans le contexte du web sémantique, cette tâche prend alors le nom d'entity linking par référence à l'idée d'établir un lien entre un mot ou une séquence de texte et sa représentation sur le réseau Linked Data.

## Méthodes et standards

La plupart des méthodes d'extraction et de recherche d'information ont été expérimentées en matière d'annotation sémantique : le modèle vectoriel est le plus répandu dans les systèmes récents, mais des systèmes à entropie maximale ou de simples probabilités conditionnelles donnent également de bons résultats. Le principal obstacle rencontré au cours des trente dernières années pour mettre au point des systèmes d'annotation sémantique résidait dans la disponibilité de ressources libres susceptibles de servir de base de connaissance pour appliquer les algorithmes de calcul de similarité. Désormais, la totalité des systèmes états de l'art (tels que DBpedia Spotlight, l'annotateur de Yahoo! ou encore Wikimeta) exploitent des ressources dérivées des dumps de Wikipédia pour mener à bien le processus de désambiguïsation.

### Méthode de désambiguïsation

Le principal problème pour un système d'annotation sémantique réside dans la multiplicité des annotations possibles. Pour annoter une phrase telle que :
    Paris est la capitale de la France.
L'annotateur doit être en mesure de choisir la bonne réponse au sein de la multitude de réponse possibles (il existe une dizaine de villes portant le nom Paris, ainsi que des personnes ou encore des navires). Le système d'annotation doit donc mesurer le degré de similarité entre le document et les ressources d'annotation, pour par exemple annoter ainsi en utilisant des URI issues du Web sémantique :
    (Paris, fr.dbpedia.org/page/Paris) est la capitale de la (France, fr.dbpedia.org/page/France).
Généralement, l'annotateur utilise un nombre de n mots situés dans une fenêtre entourant le concept à annoter qu'il stocke dans un vecteur. Ce vecteur est comparé à l'ensemble des vecteurs de mots correspondants extraits d'après la ressource de désambiguïsation (par exemple les dumps de l'encyclopédie Wikipédia). Selon les applications, le calcul de similarité sera réalisé par un produit scalaire pour la similarité cosinus, ou un calcul de probabilité pour une mesure d'entropie.
Ces calculs de similarités produisent une liste de score donné pour chaque entité potentielle, et c'est le rang des candidats dans une liste qui permet de choisir le lien le plus probable.
Le contexte dérivé de Wikipédia utilisé pour réaliser les calculs de similarité peut prendre une forme variable: dans le cas d'ontologie spécialisées pour la désambiguïsation telles que NLGbAse (utilisée par Wikimeta) ou Aleda (utilisée par l'AFP) c'est le texte plein des documents de Wikipédia dont chaque mot est pondéré par un poids TF-IDF qui est retenu. Pour ce qui est de la ressource utilisées par DBpedia Spotlight, les sacs de mots retenus sont constitués de paragraphes entourant l'entité ciblée, dans diverses pages de l'encyclopédie ou l'entité se trouve liée.

### Standards de liens

L'annotation sémantique consiste nécessairement à apposer un descriptif de l'entité ou de la métadonnée correspondante (par exemple une entrée de base de données). Dans un premier temps, des systèmes tels que Kim (Knowledge Integrated Modeling, développé par IBM) ou ceux développés par l'université de Sheffield ont adopté des normes propriétaires.
Désormais, les systèmes - qu'ils soient propriétaires, issus du monde académique ou libres - adoptent en tant que lien sémantique des URI en provenance du Web sémantique (le plus souvent des liens DBpedia, comme pour Yahoo!, Spotlight, Wikimeta, ou encore Alchemy API). Seuls quelques rares systèmes tels Calais (en) de Thomson Reuters exploitent une ontologie propriétaire et non compatible avec le Web sémantique.

### Problème de l'adaptation linguistique

Les algorithmes d'annotation sémantique exploitant des ressources de désambiguïsation dérivées de corpus pour fonctionner, ils doivent théoriquement bénéficier d'une ressource pour chaque langue supportée.
Par exemple, un annotateur sémantique qui voudrait apposer des liens sémantiques dans un texte en français doit utiliser une ressource de sacs de mots élaborée depuis un corpus en français (puisque les calcul de similarité entre les différents candidats est mené d'après le poids de mots).
En pratique très peu d'annotateurs sémantiques sont réellement multilingues. La plupart sont conçus pour l'anglais (Spotlight, Open Calais, Wikimeta) parfois le français (Wikimeta). La majeure partie des systèmes propriétaires présentés comme multilingues ne réalisent pas de désambiguïsation sur les langues autres que l'anglais et produisent en conséquence un très fort taux d'erreur.

## Langages de l'annotation sémantique

Des standards de l'annotation sémantique des documents existent et ont été définis. Ces standards représentent les bases technologiques du Web sémantique (Garlatti et Prié, 2003).
Les trois standards principaux sont (Garlatti et Prié, 2003) :
* HTTP protocol ou le protocole http, il représente en effet un protocole servant la transmission ;
* Les langages HTML/XML ainsi que les feuilles de style qui sont importants et utiles pour présenter des résultats ;
* Le langage RDF qui est une abréviation de Ressource Description Framework. Ce langage est entre autres un standard qui sert à l'expression des métadonnées dans un premier temps et à l'échange de ces métadonnées dans un second temps. Les métadonnées sont présentées sous forme de triplets ou stockées dans des bases de données afin de les gérer d'une manière plus simple et plus efficace.
Parmi les principes de l'annotation sémantique définis précédemment, le stockage de ces dernières. En effet, le stockage en lui-même peut se faire de plusieurs façons différentes. Au début des annotations, le stockage se faisant dans le document annoté lui-même, ce qu'on appelle des balises ad hoc ou RDF. Il se fait également dans des URL (Uniform Ressource Locator) ou bien dans des bases de données spécifiques allouées dans des serveurs centralisés. Dans le dernier cas, les annotations sont généralement typées et prennent une forme textuelle dans la plupart des cas. Toutefois, on retrouve aujourd'hui un référentiel technique et méthodologique composé de plusieurs éléments. Ce référentiel représente donc une base concrète pour l'annotation sémantique et sur lequel l'annotation sémantique des documents peut se fonder. Nous citons dans ce qui suit, les méthodes et les outils principaux formant ce référentiel (Thabet et al., 2010):
* Les méthodologies de réalisation de schémas de métadonnées telles que les ontologies ou les thésaurus ;
* Les outils, les langages et les principes d'exploitation des métadonnées, de l'annotation et la présentation de ces dernières ;
* Les architectures permettant le stockage, les requêtes et la diffusion d'annotation ;
* Les techniques et les méthodes d'extraction d'information dans les documents et qui sont principalement la recherche de données textuelles dans les documents et l'utilisation des méthodes probabilistes et statistiques, ainsi que la complétion automatique des champs de métadonnées.
Différents langages sont utilisés pour représenter les connaissances les plus complexes. Ces langages sont adaptés au à cette complexité et au web également.

### Langage XML

C'est un langage dédié au web sémantique. Le langage XML, contrairement au langage HTML qui est très restrictif et figeant, est un langage de balisage.
D'une part, le langage HTML ne permet pas d'utiliser ses propres balises et est opté plus pour la présentation uniquement des données chose qui baisse l'efficacité de ce langage vis-à-vis les informations et ne permet donc pas d'exprimer les métadonnées.
D'une autre part, le langage XML quant à lui, il structure l'information présente dans un document par le moyen des balises ou même, il permet de créer ses propres balises. C'est ici où résident l'efficacité et la force du langage XML.
Ce langage vise à rendre standard la représentation des informations disponibles dans les documents afin de pouvoir les échanger mais d'une manière plus structurée et indépendamment de la nature et l'origine de plateformes logicielles ou machinales. Le XML représente donc le langage le plus adapté pour la définition des structurations des documents.

### Langage RDF

Le langage RDF est le langage dédié aux assertions et aux annotations. Il existe différentes relations entre les différents objets, selon les assertions pour exprimer les annotations à allouer aux ressources du web. C'est dans cette perspective que le langage RDF a été adopté par le W3C pour formaliser les représentations avec une syntaxe XML qui est préalablement un standard reconnu.
Le langage RDF s'agit bien d'un outil efficace pour apporter la sémantique à un document donné sans influencer ou se baser sur la structure de ce document. Les domaines d'applications ou la sémantique ne sont pas forcément inspectés par ce langage. Toutefois, ce langage fournit une description complète des données allouées dans les ressources du web.
Un ensemble de triplets : ressource, attribut et valeur forme les écrits du langage RDF. La valeur, dans ce cas, s'agit généralement d'une simple ressource ou une chaîne de caractère, qui elle-même est représentée par un autre triple qui peut être interprété. Cette conception fait du langage RDF un langage basé principalement sur les relations en utilisant une syntaxe XML. Plusieurs langages sont venus compléter ou apporter une extension pour le RDF.

### Langage RDFS

Le langage RDFS représente un des principaux langages dont l'objectif est d'apporter des extensions au langage RDF. Ces extensions concernent d'un point de vue très particulier les descriptions des ressources exploitées afin d'identifier les représentations.
Pour ce faire, le langage RDFS fonctionne sur la base des spécifications des classes pour faire des ressources déjà identifiées par ces classes des instances. C'est un mécanisme permettant de définir un modèle lexical basé sur le vocabulaire qui est généralement lié à des domaines applicatifs spécifiques.

### Langage RDFa

Le but principal du langage RDFa est d'être un langage complémentaire au langage RDF en apportant des informations en RDF à des documents HTML ou même des documents XHTML. Ce langage propose une syntaxe et des balises prédéfinies nommées généralement tags pour rune description des données en XHTML. Le langage RDFa permet lui aussi les échanges d'informations par les agents informatiques.

### Langage OWL

Le langage OWL reste jusqu'à parmi les langages les plus importants dans l'annotation sémantique des documents. Il est entre autres similaire au langage RDF car, lui aussi prend sa part avec la syntaxe proposée par le langage XML.
Le langage OWL basé sur RDF et XML à la fois, est mis en place ainsi pour pouvoir écrire des ontologies web. Il est dit un langage d'ontologies (Gueraich, 2012). D'une façon très intègre, le langage OWL propose des outils qui permettent de comparer les classes. Ces classes, telles qu'elles sont considérées dans le langage OWL, sont des identités, des équivalences, des symétries, des transitivités ou des disjonctions.
Ceci fait du langage OWL une offre particulière pour les machines notamment, car ces dernières vont avoir une capacité forte pour interpréter les documents d'une façon efficacement plus importante que celle des langages RDF et RDFS. Cette capacité vient de la sémantique formelle et structurée proposée par le langage OWL. On distingue trois langages différents du OWL, et qui sont :
* OWL lite : un langage qui retraduit les mécanismes du langage RDF pour des utilisateurs ayant besoin d'une classification simple avec la même sémantique que RFDS ;
* OWL LD : un langage du OWL qui reprend les constructeurs entiers d'OWL LITE mais convient davantage aux usagers cherchant à exprimer les informations d'une façon plus détaillée ;
* OWL FULL : un langage combinant entièrement les constructeurs d'OWL DL et de RDF.