OK
AJAX error!

Les forumsGrammalecteDésambiguïsateur multi-passes sans tokenisation

Désambiguïsateur multi-passes sans tokenisation

\o/
Eurêka !

Derrière ce titre barbare se cache l’idée que j’ai eue ce matin à mon réveil.

Lexique pour comprendre :
désambiguïsation : opération qui consiste à déterminer la nature grammaticale d’un mot dans son contexte.
tokenisation : opération qui consiste à découper un texte en tokens. Par exemple, “j’ai” est coupé en trois tokens “j”, ¨“’” et “ai”. C’est une approche très formaliste de la grammaire.
token : élément d’une phrase, c’est-à-dire un mot, une ponctuation, une apostrophe, un guillemet, etc.


Depuis quelque temps, je (ré)écris un article sur Grammalecte pour LinuxFR. Et comme j’en venais à comparer le fonctionnement de Grammalecte et de LanguageTool et à spéculer sur la manière de concevoir une désambiguïsation plus efficace pour Grammalecte, j’ai commencé à ruminer à nouveau ce sujet épineux. Et ce matin, au réveil, la solution a surgi à mon esprit.

Le problème, pensais-je, c’est que pour faire de la désambiguïsation, il faut “tokeniser”. Or, la “tokenisation”, c’est contraire à l’esprit de Grammalecte. Il n’y a pas de “tokens” dans Grammalecte. J’essayais de combiner l’approche de LanguageTool avec celle de Grammalecte, mais les solutions envisagées me semblaient lourdes, peu commodes et manquaient de souplesse. J’avais réfléchi à d’autres techniques, plus conformes à l’esprit de Grammalecte, comme établir une sorte de cartographie codée parallèle au texte, écrite par le préprocesseur de texte, mais c’était de la bidouille, ça manquait de lisibilité et d’élégance. Je tournais en rond parce que j’avais une mauvaise approche du problème.

La solution trouvée est bien plus simple, tout à fait dans l’esprit de ce que fait déjà Grammalecte, et surtout ne nécessite pas de “tokeniser” le texte. Je me demande pourquoi je n’y ai pas songé plus tôt (sans doute parce que le problème de la tokenisation m’aveuglait). Grosso modo, l’idée consiste à établir un index de balises dressé par un système de règles de balisage. Et cet index de balises sera consulté prioritairement par les fonctions d’analyse lexicale. Ce système de balisage, comme le préprocesseur de texte, sera multi-passes, il bénéficiera de ce que fait le préprocesseur de texte et le préprocesseur de texte pourra se servir du système de balisage.

Mais ça va prendre du temps à mettre en place, parce qu’il faut réorganiser le code et le mode d’écriture des règles pour faire ça proprement. À présent, je ne vais plus me soucier de m’éloigner de Lightproof (bon, je ne m’en souciais déjà plus beaucoup, en fait). Par ailleurs, pour être efficace, je vais devoir repenser tout l’étiquetage du lexique. Bref, ce n’est pas pour la prochaine version que ça viendra, mais à présent que j’ai une vision de ce qu’il faut faire, je vais avancer dans cette direction. Le désambiguïsateur arrivera avec la version 0.5.

Traduction en termes clairs : désambiguïser, c’est présentement, dans certains cas, difficile pour Grammalecte et coûteux, c’est pourquoi il se contente d’être très prudent sur bien des points, même si le préprocesseur de texte accomplit déjà un boulot énorme sur ce chapitre. La mise en place de ce système de désambiguïsation va rendre les choses bien plus sûres et moins vagues pour le correcteur. En bref, son pouvoir de détection des erreurs devrait être bien plus grand, parce qu’il y aura moins d’incertitudes.

La version 0.4.8 qui va sortir prochainement ne bénéficiera pas du tout de ce système, tout comme les versions 0.4.x suivantes, s’il y en a. (Cela dit, la version 0.4.8, en gestation depuis deux mois, me semble déjà significativement meilleure pour détecter certaines erreurs.)
le 04 mars 2015 à 12:36
Est-ce que par hasard "token" ne se dirait pas plutôt "lexème" en français ?
Je sais qu'en analyse et théorie de la compilation, on le traduit rarement - et surtout pas par "jeton" -, mais ici on est dans un contexte linguistique d'une langue vernaculaire.
Et "tokenisation" se dit "analyse lexicale", non ?
Yves
le 05 mars 2015 à 10:04
Non, la tokenisation consiste simplement à découper une phrase en éléments simples. L’analyse lexicale se fait après (ou avant). Par ailleurs, Grammalecte fait de l’analyse lexicale, mais ne fait pas de tokenisation.
Quant aux lexèmes, non, il s’agit plutôt des radicaux des mots. fr.wikipedia.org…
Pour “token”, on pourrait traduire par “unité lexicale”, mais peut-on considérer les ponctuations, les apostrophes, les guillemets et autres éléments divers comme des unités lexicales ? En cherchant, je découvre le terme “lexie”.

Cela dit, je vois que ces termes sont employés un peu à toutes les sauces :
fr.wikipedia.org…

Il semble que le terme français pour “tokenisation” soit simplement “segmentation” :
fr.wikipedia.org…
le 05 mars 2015 à 10:53

Notification par e-mail    1