Le lexique de JSreal est un fichier JavaScript indépendant de JSreal qui contient de l'information sur plusieurs mots dans une structure JSON. JSreal peut fonctionner sans lexique, mais son usage de tout mot comportant une caractéristique inhabituelle devient alors naïf, limité aux règles de base de flexion et de linéarisation.
Il a été converti automatiquement à partir du lexique équivalent, lui en format XML, de SimpleNLG-EnFr, un réalisateur de texte en Java. Ce lexique comprend environ 4 000 entrées dont:
Voici un extrait de lex-fr.js:
lex = {<br/>"compter":{c:"V"},<br/>"oeil":{c:"N",g:"m",p:"yeux"},<br/>"son":{c:"D",fs:"sa",p:"ses",l:"son",po:1},{c:"N",g:"m",p:"sons"}<br/>}
Chaque ligne du lexique est composée d'une clé unique correspondant au lemme du mot et de ses traits caractéristiques reconnus. Trouver un mot dans le lexique implique donc de chercher sa forme de base, comme dans un dictionnaire physique. Chacun des traits est représenté par une brève étiquette (comme "c") à laquelle est associée une valeur (comme "V"). La liste complète de traits est disponible traits|en annexe_.
Les mots de lexique donnés en exemple montrent certaines particularités.
En pratique, l'usager n'accède jamais directement au lexique.
Si un mot ne comporte pas d'irrégularités, il est possible de l'utiliser normalement même s'il ne se trouve pas dans le lexique grâce aux règles de flexion connues de JSreal.
Quant aux mots comportant trop d'irrégularités pour les règles grammaticales de base, il existe deux manières de les concilier. La première repose sur une manipulation directe du lexique avec la méthode add
et offre le plus de puissance:
lex.add("sanglier", {c:'N',g:'m'})
La méthode add
permet aussi d'ajouter des caractéristique à une entrée existante:
L'autre manière d'utiliser un mot inconnu, plus simple, est d'en spécifier les caractéristiques comme s'il s'agissait de traits grammaticaux. Par exemple, le lexique n'inclut pas le nom "Morgan" et le présumera masculin par défaut:
Si "Morgan" n'est utilisé qu'une fois, il n'est pas nécessaire de le définir avec add,
mais il faut rester prudent:
Certains mots ont des caractéristiques variables dont l'ajout au lexique serait mal avisé; il convient alors de les assigner comme des traits grammaticaux. Par exemple, "terminer" n'est pas copule et n'accorde donc pas son complément avec son sujet:
Spécifier "terminer" copule n'affectera pas son entrée lexicale mais permettra l'accord désiré.