# Réseau sémantique

Un réseau sémantique est un graphe marqué destiné à la représentation des connaissances, qui représente des relations sémantiques entre concepts. Le graphe est orienté ou non orienté. Ses sommets représentent les concepts, et les liens entre les sommets (nœuds) représentent les relations sémantiques, reliant les champs lexicaux.
Un réseau sémantique peut être instancié, par exemple,dans une base de données orientée graphes ou un schéma conceptuel. Les réseaux sémantiques normalisés sont exprimés sous forme de triplets RDF.

## Histoire

La première utilisation connue, au IIIe siècle, est un commentaire du philosophe grec Porphyre sur les catégories d'Aristote.
En psychologie, dans les années 1960, Quillian et Collins s'en sont d'abord servi pour modéliser l'usage des taxonomies dans la mémoire sémantique.
Ces réseaux ont ensuite été employés par exemple pour gérer des thésaurus, pour modéliser la signification d'un texte, ou en robotique pour modéliser les états d'un système en vue d'élaborer des plans d'action.

## Exemples
### Réseau taxonomique

Un tel réseau sémantique emploie des nœuds et des arcs de types différents.

#### Nœuds

Deux types de nœuds sont utilisés :
* nœuds étiquetés par des constantes de concepts : le libellé représente des catégories taxonomiques ;
* nœuds étiquetés par des constantes d'objets : le libellé représente des instanciations des concepts ou des propriétés des concepts (comme le montrent les rectangles verts biseautés et bleus oblongs sur l'image ci-dessus),

#### Arcs

Au moins trois types d'arcs connectent les nœuds :
* arcs d'agrégation, appelés également liens "est1"/"is a",
* arcs de composition, appelés également liens "a"/"has a",
* arcs d'instanciation, appelés également liens "sorteDe"/"is a kind of".
Il peut y avoir d'autres liens spécifiques. Par exemple, pour exploiter un thésaurus, on ajoute aux liens hiérarchiques des liens transversaux synonymes et associé à, qui éviteront des silences (réponses potentielles non trouvées).

#### Exploitation

On associe à une question des chemins spécifiques dans le réseau, par exemple par propagation de marqueurs, chemins dont l'interprétation fournit la réponse.
Pour déterminer si un objet, représenté par un nœud A, est membre d'un ensemble, représenté par un nœud B, il faut suivre tous les arcs allant de A vers le haut (arc 'est1' et arcs 'sorteDe') pour voir si on rencontre le nœud B.
    Notons (départ lien arrivée) un arc du réseau sémantique. Alors, (Médor est1 chien) puis (chien sorteDe quadrupède) forment un chemin (Médor (est1) chien (sorteDe) quadrupède), qu'on assimilera à un lien virtuel (Médor est1 quadrupède) : Médor étant un chien, on dit qu'il hérite de cette catégorie la propriété d'être un quadrupède.
Afin de déterminer la valeur de la propriété P d'un objet représenté par le nœud A, on suit les arcs allant de A vers le haut (comme précédemment) jusqu'à ce que l'on trouve un nœud ayant cette propriété P (arc de fonction).
    À la question (Kiki mouvt ?) la suite (Kiki est1 merle), (merle sorteDe oiseau), (oiseau mouvt vole) mène à (Kiki mouvt vole) (principe d'héritage).
    À la question (Lola mouvt ?),
   * la suite (Lola est1 autruche), (autruche sorteDe oiseau), et (oiseau mouvt vole) entraîne (Lola mouvt vole). L'héritage engendre ici un bruit (réponse fausse), car l'héritage n'est sûr que pour les propriétés génériques de l'oiseau (ici, a des plumes ou sorteDe ovipare) et seulement heuristique pour les propriétés typiques (comme mouvt vole).
   * si le réseau a maintenant un arc (autruche mouvt course), en s'arrêtant à ce premier arc mouvt on obtient (Lola mouvt course). La priorité des propriétés spécifiques sur les propriétés génériques ou typiques, ou priorité aux propriétés les plus locales, permet ainsi de gérer les exceptions au principe d'héritage.

### Signification d'un texte

On garde l'idée d'arcs signifiant une relation binaire entre point de départ et point d'arrivée.
On adopte des noms cachés :
* pour les entités définies par des périphrases ;
    Par exemple, appelons $001 « le grand marronnier derrière la maison » : sa représentation sera formée d'un nœud $001 et des arcs ($001 est1 marronnier), ($001 taille grand), ($001 derrière maison).
* pour rendre compte des relations n-aires.
    Ainsi « Jean a prêté le livre de Pierre à Marie » devient (Jean prête $070)($070 est1 livre)($070 prop Pierre)($070 dest Marie), où $070 est l'objet du prêt.
On recourt éventuellement à des réseaux partitionnés, dans lesquels un nœud désigne maintenant un (sous-) réseau sémantique isolé.
* « Jean croit que Pierre est plus âgé que Marie » prendra la forme (Jean croit $R17), où $R17 contient les croyances de Jean, du style (Pierre age $R17.1), (Marie age $R17.2), ($R17.1 > $R17.2), par opposition à la situation réelle, par exemple (Pierre âge 28), (Marie âge 29).
* la description d'un arbre au fil des saisons pourra prendre la forme d'un sous-réseau par saison ;
* éventuellement, pour la résolution de problèmes par raffinements successifs.

#### Exploitation

Les questions sont ramenées à un réseau sémantique contenant des variables explicites, qui serviront à formuler la réponse, et des variables muettes ne servant qu'à exprimer la structure de la question. Ainsi, « Où habite le fiancé de Marie ? » devient (*1 habite ?1)(*1 fiancéA Marie), où ?1 représente le nom-de-lieu cherché, et *1 le nom-du-fiancé, intermédiaire nécessaire non-demandé.
On cherche alors si le graphe-question est un sous-graphe du réseau, en tenant compte des héritages et exceptions.

#### Difficultés

Citons d'abord le foisonnement du vocabulaire : si Schank pense pouvoir se contenter de 14 verbes génériques, le français comporte 8000 verbes… en recommandant d'éviter les répétitions.
Et aussi la question des connaissances générales, de bon sens, pragmatiques… Par exemple, coder et exploiter un réseau généalogique doit pouvoir affronter la question de la demi-sœur d'un oncle maternel, et donc la question des nombreuses relations secondaires déductibles des relations primaires renseignées.

### Réseau dynamique

À ces réseaux, on applique, outre les questions qui ne les modifient pas, des opérateurs liant ou déliant des (listes d') arcs pour simuler des actions. Ces opérateurs sont définis sous une forme générale « si condition lier liste1 délier liste2 ».

## Réalisation

Il est possible de réaliser un réseau sémantique selon plusieurs logiques, par exemple :
* identification de cooccurrences dans un texte, menant à un réseau de termes liés par leurs cooccurrences.
* passage d'une liste de termes et de leurs caractéristiques associées, à un réseau de ces termes où une liaison est formée entre deux termes s'ils ont des caractéristiques similaires. La similarité cosinus est une des mesures de similarité couramment employée dans ce cas d'usage.
La mise en œuvre de ces logiques peut se faire en utilisant des logiciels de création de réseaux sémantiques, ou par une approche programmatique.

### Exemple dans le langage Lisp

En Lisp, on utilisera les listes associatives. On peut par exemple créer un réseau à trois objets :
La fonction assoc appliquée à canari permet d'extraire la valeur associée à une clé : ainsi

### Exemple dans le langage Prolog

En Prolog, on aurait :