# Analyse sémantique

L'analyse sémantique d'un message est la phase de son analyse qui en établit la signification en utilisant le sens des éléments (mots) du texte, par opposition aux analyses lexicales ou grammaticales qui décomposent le message à l'aide d'un lexique ou d'une grammaire.

## Linguistique

Dans le cadre de l'analyse sémantique, le fait que deux mots s'écrivent de la même manière ne signifie pas forcément qu'ils ont le même sens : les homonymes sont polysémiques.
Par exemple, du point de vue morpho-syntaxique, le mot « vienne » peut prendre un sens différent dans des phrases comme « qu'il vienne ici » (dans ce cas c'est le verbe « venir ») et dans d'autres comme « aller en vacances à Vienne » (ici c'est un nom propre). Du point de vue sémantique, le même mot « vienne », peut correspondre à la ville de « Vienne », qui existe en Autriche et en France, ainsi qu'au département de la Vienne (il faudrait dire « dans la Vienne »), etc. Il y a une multitude de mots ambigus dans toutes les langues, ce qui peut créer des incompréhensions. On estime qu'environ un mot sur deux, privé de son contexte est ambigu dans les langues indo-européennes. Mais dans la perspective de la sémantique interprétative, ces exemples posent de faux problèmes car, en situation de communication réelle, n'importe quel locuteur compétent en français saura faire la différence en contexte entre les mots « Vienne » et « vienne ». Outre le V majuscule à l'écrit, les instructions contextuelles permettent de comprendre qu'il ne s'agit pas des mêmes mots. Dans les deux exemples donnés plus haut, la seule logique grammaticale permet de comprendre que « vienne » est un verbe, tandis que « Vienne » est un toponyme. C'est pourquoi la question du sens, et donc de la description sémantique, ne peuvent se poser à l'échelle du mot, mais seulement à l'échelle d'une séquence, souvent de plusieurs phrases, appelée « période ».
Il est donc fondamental d'analyser le sens des mots pour comprendre ce qu'on dit (ou bien ce que les autres disent). C'est une opération humaine que nous effectuons tous les jours, sans forcément en être conscient, qui pose de nombreux problèmes pour l'analyse automatique sur ordinateurs. En particulier dans les moteurs de recherche, les logiciels de traduction et les correcteurs orthographiques, les résultats contiennent de nombreuses erreurs.

## Informatique

En compilation, l'analyse sémantique est la phase intervenant après l'analyse syntaxique et avant la génération de code. Elle effectue les vérifications nécessaires à la sémantique du langage de programmation considéré, ajoute des informations à l'arbre syntaxique abstrait et construit la table des symboles. Les vérifications réalisées par cette analyse sont :
* La résolution des noms. Le compilateur construit la table des symboles en associant les étiquettes (ou labels) trouvées avec les identificateurs des variables, fonctions, types, et signale une erreur dans les cas où ce n'est pas possible. Par exemple pour deux variables portant le même nom et se trouvant dans le même bloc, il y a ambiguïté, et donc une erreur de programmation ;
* La vérification des types. Le compilateur vérifie la compatibilité des types dans les instructions et expressions. Par exemple, si une fonction est initialisée avec 2 paramètres entiers, une erreur se produit si on essaye de passer un nombre différent de paramètres ou si les paramètres passés ne sont pas de type entiers. Lors d'une affectation, l'analyseur vérifie la compatibilité entre les 2 types, ainsi que la possible conversion implicite nécessaire ;
* L'affectation définitive, nécessitant que les variables locales soient initialisées avant d'être utilisées. Certains langages considèrent que cette non-affectation initiale est une erreur de compilation (Java), alors que les autres ne spécifient rien ou génèrent un avertissement (comme gcc pour le C).