Réseau sémantique

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Exemple de réseau sémantique (incomplet)

Un réseau sémantique est un graphe marqué destiné à la représentation des connaissances.

Dans les années 60, Quillian et Collins s'en sont d'abord servis 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[modifier | modifier le code]

Réseau taxinomique[modifier | modifier le code]

Un tel réseau sémantique emploie deux types de nœuds :

  • les nœuds étiquetés par des constantes de concepts (représentant des catégories taxonomiques - cf rectangles jaunes et roses sur l'image) ;
  • les nœuds étiquetés par des constantes d'objets (représentant des instanciations des concepts ou des propriétés des concepts - cf rectangles verts biseautés et bleus oblongs sur l'image),

et au moins trois types d'arcs connectant les nœuds :

  • les arcs d'agrégation (appelés aussi liens 'est1' (is a) - cf liens orange sur l'image),
  • les arcs de composition (appelés aussi liens 'a' (has a) - cf liens mauves sur l'image),
  • les arcs d'instanciation (appelés aussi : liens 'sorteDe' (is a kind of) - cf liens verts sur l'image).

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[modifier | modifier le code]

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[modifier | modifier le code]

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 marronier derrière la maison" : sa représentation sera formé d'un nœud $001 et des arcs ($001 est1 marronier), ($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 age 28), (Marie age 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[modifier | modifier le code]

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[modifier | modifier le code]

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 demie-sœur d'un oncle maternel, et donc la question des nombreuses relations secondaires déductibles des relations primaires renseignées.

Réseau dynamique[modifier | modifier le code]

À 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[modifier | modifier le code]

En Lisp, on utilisera les listes associatives. On peut par exemple créer un réseau à 3 objets :

(setq canari '((est1 oiseau)(couleur jaune)(taille petit))
      pingouin '((est1 oiseau)(mouvt nage))
      oiseau '((est1 vertébré)(avec ailes)(reproduction ovipare))
)

La fonction assoc appliquée à canari permet d'extraire la valeur associée à une clé : ainsi

(assoc 'couleur canari) → (couleur jaune).

En Prolog, on aurait :

% création du réseau
def(canari, [[est1, oiseau], [couleur, jaune], [taille, petit]]].
def(pingouin, [[est1, oiseau], [mouvt, nage]]).
def(oiseau, [[est1, vertébré], [avec, ailes], [reproduction, ovipare]]).
% extracteur
assoc(Objet, Clé, Valeur) :- def(Objet, Prop), dans(Prop, Clé, Valeur).
dans([[X, Y]|Z], Clé, Valeur) :- Clé = X, Valeur is Y ; dans(Z, Clé, Valeur).
% 
? assoc(canari, couleur, C).
C= jaune.

Voir aussi[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

  • W.A. Woods, What's in a Link: Foundations for Semantic Networks, Bolt, Beranek and Newman, 1975
  • R. Jackendoff, Semantic Structures, The MIT Press, Cambridge Mass, 1990
  • J.F. Sowa, Semantic Networks, in Stuart C Shapiro. Encyclopedia of Artificial Intelligence, 1987.

Liens externes[modifier | modifier le code]

Notes et références[modifier | modifier le code]