Grammalecte, correcteur grammatical [2]

134
8
juin
2017
Bureautique

Grammalecte est un correcteur grammatical écrit en Python et en JavaScript, dédié à la langue française, disponible pour LibreOffice, Firefox, Thunderbird, ainsi que comme programme autonome, via une interface en ligne de commande ou un serveur. Par ailleurs, d’aimables contributeurs ont apporté leur pierre à l’édifice en concevant des greffons pour Vim et Emacs.

Grammalecte lance une deuxième campagne de financement pour améliorer la correction grammaticale et faire évoluer les intégrations aux navigateurs Web.

Logo de Grammalecte

Cet article est très long. Plutôt que répéter ce qui a déjà été dit, je vais présumer que vous avez un souvenir à peu près clair du billet précédent sur ce sujet. Cela dit, même sans ça, ce que je vais dire devrait être intelligible.

Sommaire

Ce qui a été fait

Séparation du correcteur d’avec Hunspell et LibreOffice

C’était le prérequis à l’indépendance du logiciel, et c’est la première chose qui a été faite. Au lieu de consulter Hunspell, le correcteur orthographique, pour connaître l’étiquetage grammatical des mots, Grammalecte interroge dorénavant son propre dictionnaire indexable. Il s’agit d’un graphe de mots contenant toutes les formes graphiques que peuvent avoir les mots français : les pluriels, les formes féminines et masculines, et les conjugaisons.

Graphe de mots

Le graphe contient 500 966 entrées, avec 140 caractères différents, 901 codes de suffixation, 6 066 étiquettes grammaticales, et est composé de 110 796 nœuds et 236 744 arcs (liens qui vont d’un nœud à un autre). Tout ça est compressé sous forme d’un dictionnaire binaire indexable pesant environ 1,25 Mio (le fichier texte non compressé pèse environ 18,6 Mio). Mais le principal avantage de ce dernier n’est pas sa petite taille, c’est qu’on peut le parcourir très rapidement et l’interroger sans avoir à le décompresser. Il peut fournir deux sortes d’informations : un mot est‐il présent dans le dictionnaire et, si oui, quelle est sa nature grammaticale.

Grâce à cela, Grammalecte peut fonctionner de manière autonome.

Extension pour Firefox & Thunderbird

Le correcteur a été entièrement réécrit en JavaScript avec une interface pour Firefox, qui s’appuie principalement sur l’API SDK de haut niveau et quelques fonctionnalités de bas niveau. L’interface est faite en HTML/CSS.

L’API de Thunderbird étant complètement différente de celle de Firefox, cette extension est une autre réécriture en JavaScript de l’extension, hormis le cœur du moteur grammatical, bien sûr. L’interface est bâtie avec l’ancienne technologie XUL encore en vigueur sur Thunderbird. La documentation concernant Thunderbird étant en partie tombée en déshérence (liens cassés, pages manquantes, sections disparues, sites Web à l’abandon ou évaporés), j’ai parfois fait emploi de techniques trouvées dans d’autres extensions, mais ça ne concerne qu’une minorité de problèmes, et je me suis contenté autant que possible de suivre ce qui était documenté. Le fonctionnement de l’extension est assez similaire à celle pour Firefox. Votre texte est analysé dans un panneau annexe. En revanche, contrairement à Firefox, les erreurs sont listées en dessous du paragraphe analysé. Hormis cela, tout est relativement semblable, sauf l’allure générale de l’extension, qui fait plus vieux jeu, parce que XUL est d’une conception plus ancienne.

La mauvaise nouvelle, pour Firefox, c’est qu’il faudrait déjà refaire l’interface. Quand j’ai commencé le codage de l’extension, Mozilla préparait une nouvelle API pour les extensions, appelée WebExtension, qui était alors en version alpha. C’est la quatrième API pour Firefox, les trois autres étant XUL, Bootstrapped et le SDK (haut niveau et bas niveau). Il était dit que ces trois API deviendraient obsolètes d’ici quelques années, sauf le SDK de haut niveau, et qu’il fallait utiliser ça en attendant que l’API WebExtension fût finalisée. C’est donc ce que j’ai fait. Grammalecte pour Firefox est sorti à peu près au même moment que WebExtension. Quelques mois plus tard, les trois autres API ont été déclarées obsolètes, y compris le SDK de haut niveau, contrairement à ce qui avait été annoncé, et toutes les trois seront supprimées en novembre prochain avec Firefox 57.

Graphe de mots

C’est vraiment très irritant, mais l’on n’y peut pas grand‐chose. Ceci découle probablement de la volonté de Mozilla de réécrire tout le cœur de Firefox. Ce qui n’apporte pas que de mauvaises choses, puisque, par exemple, j’ai constaté que le correcteur grammatical fonctionnait plus de deux fois plus vite à partir de Firefox 55…

Le cœur de l’extension, le moteur grammatical, n’est pas à reprogrammer, il ne s’agit « que » de l’enrobage, l’interfaçage… J’ignore si ça réclamera beaucoup de travail, je ne m’y suis pas encore intéressé. L’un des autres soucis, c’est que même si WebExtension est dorénavant le modèle d’extensions conseillé, il semble qu’il ne permette pas encore autant de choses que les API précédentes. Cette API est toujours en développement, Mozilla travaillant encore à étendre les possibilités offertes.

En ce qui concerne Thunderbird, je n’ai rien vu passer… et j’ignore si nous sommes à la veille d’une révolution surprise qui va tout casser.

Mozilla n’a pas encore vérifié le code de l’extension pour Thunderbird : la liste d’attente est très longue. Heureusement, contrairement à Firefox il est possible d’installer une extension non vérifiée et non signée. Il n’y a aucun risque de confidentialité. Le correcteur n’envoie aucune donnée en ligne, absolument rien. Ce que vous écrivez n’est pas transmis, tout se passe sur votre ordinateur.

Pour ceux que ça intéresse de tester, je viens de publier la version 0.5.17 :

  • pour Firefox (il faut un Firefox capable d’installer les extensions non signées) ;
  • pour Thunderbird (Thunderbird peut installer les extensions non signées).

Captures d’écran

Boîtes de dialogue « À propos » :
À propos

Correcteur grammatical :
Formateur de texte

Conjugueur :
Formateur de texte

Formateur de texte :
Formateur de texte

Options grammaticales et orthographiques :
Options Firefox
Options Thunderbird

Interface en ligne de commande :
CLI : interface en ligne de commande

Révision du moteur interne du correcteur

Désambiguïsation

Dans la précédente dépêche, je vous avais expliqué que Grammalecte ne possédait pas de processus de désambiguïsation permettant d’étiqueter les mots en fonction du contexte. Par exemple, un mot comme « porte » peut être un verbe ou un nom féminin, et il est utile, lors de l’analyse d’une phrase, d’avoir procédé si possible à la désambiguïsation de sa nature grammaticale, afin que les règles de contrôle n’aient pas à se poser la question à chaque fois.

Comme expliqué lors de la campagne de financement précédente, Grammalecte intègre désormais des fonctions de désambiguïsation capables d’étiqueter et baliser le texte. Ce désambiguïsateur fonctionne d’une manière similaire aux règles de contrôle et au processeur de texte. Une expression rationnelle déclenche une action de désambiguïsation si elle remplit la condition requise, de sorte que toutes les règles suivantes bénéficient d’un étiquetage plus précis. Il y a trois types d’actions de désambiguïsation : la sélection (qui ne retient que les étiquettes conformes à une expression rationnelle), le filtre (qui supprime les étiquettes grammaticales non conformes), l’étiquetage (qui impose une ou plusieurs étiquettes, quelles que soient celles que le mot possède alors).

Règles multi‐actions

Dans le précédent billet, je vous avais expliqué que Grammalecte fonctionnait selon une succession de passes, dont chacune était précédée d’une transformation du texte par ce que j’appelais le « préprocesseur de texte ». Ce qui permettait de simplifier peu à peu le texte pour faciliter le contrôle des règles grammaticales qui suivaient.

Pour simplifier, cela fonctionnait ainsi :

  1. Passe 1 (paragraphe par paragraphe) :
    • règles du préprocesseur de texte ;
    • règles de contrôle.
  2. Passe 2 (phrase par phrase) :
    • règles du préprocesseur de texte ;
    • règles de contrôle.
  3. Passe 3 (phrase par phrase) :
    • règles du préprocesseur de texte ;
    • règles de contrôle.
  4. etc.

Dans ce système, chaque règle ne pouvait faire qu’une seule chose (comme dans LanguageTool), et seulement si la condition qui contrôlait sa mise en œuvre était remplie.

Peu de temps après le début de la campagne de financement, il m’est apparu qu’il serait souhaitable de rendre plus souple ce fonctionnement. Il n’était pas prévu au programme de toucher à cela, mais j’ai préféré m’atteler tout de suite à cette tâche plutôt que de regretter plus tard de ne pas l’avoir fait. Donc, à présent, au lieu d’une succession de passes alternant transformation du texte et contrôle de la grammaire, nous sommes revenus à simplement deux passes (une pour le contrôle du paragraphe, une pour le contrôle des phrases), mais chaque règle peut dorénavant tout faire et peut accomplir autant d’actions qu’on le souhaite, chaque action se déclenchant si la condition qui y est attachée est remplie.

Donc, une règle peut dorénavant opérer plusieurs actions de contrôle, plusieurs actions de réécriture et plusieurs actions de désambiguïsation.
Au commencement, je pensais que cette modification du fonctionnement n’aurait que peu de conséquences, car elle n’était pensée que pour me faciliter la tâche dans certains cas épineux, puis il m’est apparu que ça changeait en fait de si nombreuses choses que la transition de l’ancien modèle vers le nouveau n’est toujours pas achevée à ce jour. Ça n’a pas d’importance puisque ça fonctionne aussi bien qu’auparavant, mais la souplesse de ce fonctionnement apporte tellement d’avantages que je suis loin d’en avoir profité encore pleinement.
Cela dit, depuis que Grammalecte fonctionne ainsi, des dizaines de règles complexes ont déjà été fusionnées, et cela a simplifié grandement le déroulement de nombreuses opérations.

Prenons un exemple simple. Auparavant, si vous écriviez « les ordinateur », il fallait deux règles de contrôle pour souligner « les » et suggérer « le », et souligner « ordinateur » et suggérer « ordinateurs ». À présent, une seule règle permet de faire les deux choses d’un coup.

Autre exemple. Mettons que nous rencontrons la graphie « militant(e)s ». Une même règle va permettre de faire trois choses :

  • suggérer d’écrire ceci autrement (« militants et militantes », « militantes et militants », « militant·e·s ») ;
  • étiqueter ce mot inexistant dans le dictionnaire comme « nom ou adjectif épicène pluriel » ;
  • réécrire le mot en interne pour ôter les parenthèses gênantes.

Détection des erreurs

De nombreuses règles de contrôle ont été ajoutées… notamment concernant la détection de confusions concernant les mots grammaticaux. La dernière version du correcteur (v0.5.17) contient 21 actions de désambiguïsation, 687 actions du processeur de texte, 1 437 actions de contrôle ; ces actions sont réparties dans 1 939 règles.

À titre de comparatif, la version 0.4.10, qui suivait l’ancienne logique, contenait 540 règles de transformation de texte et 933 règles de contrôle, chacune n’effectuant qu’une seule action.

Ces chiffres ne sont pas nécessairement très évocateurs, parce que rien ne comptabilise les modifications du fonctionnement des règles qui sont les plus nombreuses, ne serait‐ce, par exemple, que sur les méthodes pour faire des suggestions.

En fait, le potentiel du correcteur est encore sous‐exploité, malgré les innombrables améliorations apportées ici et là. Je n’avais pas assez insisté sur ce point lors du dernier journal, alors je vais le répéter encore une fois : les détails sont ce qui réclame le plus de temps, car il faut songer que les possibilités d’erreurs avoisinent l’infini et que les possibilités de faire des faux positifs sont aussi nombreuses. Dans les faits, améliorer le correcteur grammatical, c’est s’occuper sans cesse de micro‐problématiques. Je réécris ici ce que j’ai dit la dernière fois : « Écrire des règles, c’est assez rapide ; détecter les faux positifs, c’est beaucoup plus long ; ceux‐ci ont tendance à survenir là où l’on s’y attend le moins. C’est ce qui est le plus exigeant : maintenir un ensemble de règles, améliorer l’existant, tester, trouver de nouvelles possibilités. Lorsqu’on s’occupe d’un correcteur grammatical, on passe surtout son temps à peaufiner des détails, à ajuster le fonctionnement de l’existant, à arrondir les angles. Oubliez l’idée de concevoir l’algorithme ultime qui saura gérer tous les cas. Même quand on est à peu près sûr d’écrire une petite règle tranquille qui ne générera aucun faux positif, la réalité va très probablement nous rappeler à l’ordre et nous obliger à slalomer sur ce qui paraissait au commencement comme une belle ligne droite. S’occuper de correction grammaticale, c’est marcher sur un chemin pavé d’embûches subtiles. »

C’est pourquoi l’évolution du correcteur se fait pas à pas, en évitant autant que possible les modifications radicales.

Le correcteur fonctionne beaucoup mieux depuis que toutes ces améliorations ont été faites, et j’espère que c’est sensible pour vous, car il m’est difficile de juger si ces améliorations sont visibles pour les utilisateurs.

Parmi toutes les nouveautés apportées, il y a notamment :

  • beaucoup de règles pour détecter des confusions entre les mots homonymes (comme ce, se et ceux) ;
  • beaucoup d’améliorations pour gérer les cas particuliers, clarifier le texte interne et augmenter le taux de détection ;
  • toujours moins de faux positifs ;
  • une option pour détecter les erreurs de reconnaissance optique de caractères bien plus développée (désactivée par défaut) ;
  • beaucoup de règles de contrôle ont été améliorées.

Le moteur de suggestions

L’amélioration des suggestions est l’un des points qui ont le plus progressé depuis le précédent journal, grâce aux règles multi‐actions qui ont permis de rendre plus systématiques la possibilité de faire deux suggestions différentes lors de la constatation d’un désaccord de genre, de nombre ou de conjugaison ; mais aussi surtout grâce à la création d’une table de correspondance phonétique à partir de laquelle Grammalecte peut choisir des mots à suggérer en fonction de leur nature grammaticale.

La table de correspondance phonétique est un simple fichier qu’il est facile de compléter, c’est une succession de mots homonymes, comme :

  • appareil, appareils, appareille, appareilles, appareillent ;
  • mec, mecs, Mecque ;
  • pouce, pouces, pousse, pousses, poussent ;
  • tête, têtes, tète, tètes, tètent.

À partir de cette liste, Grammalecte construit un mini‐dictionnaire avec toutes les natures grammaticales possibles de chaque mot. Puis, au besoin, on peut demander, par exemple, de trouver un mot semblable à « tète » en spécifiant les natures grammaticales acceptables (via une expression rationnelle). Il y a aussi quelques propositions de substitutions automatisées, pas toujours opportunes, ce point reste à améliorer.

Si ça vous intéresse, cette table est consultable ici.

Cette table phonétique ne résout pas tous les problèmes, mais permet dans bien des cas de faire des suggestions de mots sans rapport grammatical avec le terme erroné. Avant cela, le correcteur se contentait de signaler l’erreur, mais ne pouvait rien suggérer. Quelques exemples :

  • « Il appareil demain. » → appareille ;
  • « La mec. » → Le | Mecque ;
  • « Une goulet » → Un | goulée ;
  • « Il pouce le bouchon trop loin. » → pousse ;
  • « J’en ai marre de ces tètes de nœud. → têtes ;
  • « Ils ne son pas idiot. » → sont.

Notez que le moteur de suggestions ne propose des mots ayant une autre racine que lorsqu’il constate une anomalie (si un verbe prend la place de ce qui devrait être un nom, par exemple) ou s’il constate une erreur de genre. S’il y a seulement une erreur de pluriel, il se contente de faire une correction de nombre. Mais il serait aussi possible dans ces cas‐là de suggérer des mots différents. Par exemple « Des homme » → hommes | ohms | heaumes.

Ça m’a semblé superflu de proposer de telles corrections, mais si vous jugez ça utile, dites‐le‐moi.

Modifications diverses

  • l’écriture des règles a été modifiée, il est plus aisé de gérer la casse et les marges des motifs des expressions rationnelles ;
  • les règles sont regroupées par option, afin de pouvoir ajouter des règles optionnelles sans gréver les performances (l’option de reconnaissance optique de caractères, par exemple) ;
  • il est possible d’utiliser pour chaque action des opérateurs logiques (__also__ et __else__) pour écrire des conditions tenant compte du résultat de la condition de l’action précédente ;
  • toutes les règles ont été nommées, afin de satisfaire aux nécessités du greffon pour Vim (désactivation paramétrable de règles spécifiques) ;
  • tout le processus de construction a été revu et des tests ont été intégrés pour éviter certaines erreurs d’écriture des règles ;
  • des marque‐pages pour s’y retrouver dans la liste des règles, qui commence à devenir très, très longue (fonctionnalité ajoutée hier).

Capture d’écran

Voici à quoi ressemble le fichier des règles (sous SublimeText) :
Règles de Grammalecte dans SublimeText

Tests unitaires

Auparavant, la situation sur ce point était très mauvaise, puisqu’il n’y avait aucun test unitaire sur le correcteur, seulement des tests « manuels », c’est‐à‐dire un fichier texte que j’ouvrais de temps en temps avec Writer pour vérifier que le moteur fonctionnait comme prévu. Mais c’était loin d’être exhaustif et facile à mettre en œuvre, puisque je vérifiais « à l’œil » si à chaque ligne le correcteur trouvait bien l’erreur qu’il était censé trouver. Pénible et lent au possible.

À présent, à chaque modification, il est possible lors de la construction de tester si rien n’est cassé. Plus de 6 200 tests sont lancés (dont 2 000 repris chez LanguageTool), et chaque règle de détection doit être testée au moins une fois.

Malgré cela, les tests ne sont pas encore exhaustifs (à bien y songer, il n’est sans doute pas possible d’être exhaustif), mais la situation s’améliore indubitablement, et peu à peu le socle du correcteur devient de plus en plus solide. Grâce à cela, de nombreuses erreurs dans le fonctionnement du correcteur ont été détectées et corrigées.

Beaucoup de ces tests sont là pour vérifier qu’une règle fonctionne correctement, mais une grande partie d’entre eux existent pour éviter les faux positifs constatés lors des versions précédentes. Ce sont les tests les plus nombreux, parce que les faux positifs sont légion et qu’il est très fréquent d’en provoquer de nouveaux, quelle que soit la prudence avec laquelle on écrit les règles. Pour les éviter autant que possible, quelques textes courts ont été inclus dans les tests de Grammalecte :

  • Le Horla, de Guy de Maupassant ;
  • Le double assassinat dans la rue Morgue, d’Edgar Poe ;
  • Les vers dorés, de Pythagore ;
  • L’épître du feu philosophique, de Jean Pontanus.

Avoir écrit l’extension pour Firefox présente par ailleurs un avantage considérable pour consolider la correction grammaticale : c’est beaucoup plus facile de mettre le correcteur à l’épreuve. Presque tous les jours, je lance des analyses grammaticales sur de nombreux articles de journaux et de blogs divers ; ça me permet de repérer et corriger des faux positifs, ainsi que de nouveaux mots à ajouter au dictionnaire. Auparavant, je faisais des copier‐coller dans Writer, ce qui était bien moins commode et bien plus long.

Ces tests sont faits en Python et en JavaScript. Les deux moteurs les passent tous et fonctionnent de la même manière. Cela dit, il n’est pas malgré cela pas possible de garantir (pour l’instant) que le moteur en JavaScript fonctionne aussi bien qu’en Python.

JavaScript, mon amour Hiroshima

JavaScript

Passer de Python à JavaScript n’a pas été de tout repos. Et si le projet a pris du retard, ce n’est pas tellement, comme je le craignais, à cause de la difficulté de concevoir une extension pour Firefox et Thunderbird. Ce point fut plus facile que je ne le pensais, tout simplement parce que la documentation de Firefox et celle Thunderbird, quoique cette dernière soit en déshérence, sont mieux tenues et plus complètes que celle pour LibreOffice… et surtout l’API est plus simple à utiliser… Quoique… l’API de bas niveau est tout aussi compliquée, de mon point de vue… Mais comme on peut s’en passer… Bref.

La syntaxe de JavaScript ne m’a pas posé de problème. J’ai utilisé toutes les nouvelles possibilités offertes par la norme ES6 : for … of, les générateurs, les paramètres par défaut, les paramètres du reste, la décomposition, les fonctions fléchées, Map, Set, les classes, let et const, et même depuis peu les nouvelles commandes async et await. Avec tout ça, JavaScript est un langage pas aussi horrible que je l’avais craint, même assez agréable parfois… En même temps, comme je démarrais un projet à zéro, je n’ai pas eu à me coltiner toutes les bizarreries possibles de ce langage. J’ai évité toute forme de syntaxe tord‐neurones.

Ce qui m’a compliqué la vie, c’est plutôt l’écosystème de JavaScript, sa difficulté à déboguer, son comportement étrange, les incohérences et sa bibliothèque standard pauvre.

Difficulté à déboguer

Ni Firefox, ni Thunderbird (ni LibreOffice d’ailleurs) ne signalent quoi que ce soit s’il y a une erreur de syntaxe dans le code. Ça ne fonctionne tout simplement pas, et c’est tout. C’est assez pénible en Python, mais c’est bien pire en JavaScript où il est fréquent d’oublier une virgule ou un point-virgule quelque part. En outre, les messages d’erreur de JavaScript sont longs et souvent abscons, sans compter que selon le contexte d’exécution dans Firefox/Thunderbird, les messages d’erreur sont parfois encore plus imprécis, voire inexistants (le module XYZ plante, mais débrouillez-vous pour le reste, car aucune info ne sera fournie, comme où et pourquoi). Je ne vais pas rentrer dans les détails, parce que j’ai maintenant oublié la plupart d’entre eux… mais à mon avis, Mozilla ferait des heureux en améliorant les rapports d’erreur.

Inutile de s’étendre sur le comportement erratique de JavaScript et son typage faible, cela a déjà été fait par tellement de monde… Quand on vient de Python, il est facile de tomber dans tous les pièges que ce langage tend, dans lesquels même les plus experts chutent encore de temps en temps, j’imagine. La traque aux “undefined” semblant sortir de nulle part m’a particulièrement marqué.

La bibliothèque standard

La bibliothèque standard est, en restant poli, très mauvaise, notamment parce qu’elle est très incomplète, mais aussi assez peu cohérente, me semble‐t‐il. Dans beaucoup de cas, ce n’est pas bien grave, il suffit d’ajouter les fonctions dont on a besoin et c’est ce que j’ai fait, mais on se demande quand même pourquoi cette bibliothèque standard est si pauvre ou si mal foutue. Avec toute la hype autour de ce langage, c’est vraiment très étonnant.

Prenons le cas des expressions rationnelles, parce que la nullité de l’objet Regexp est navrante… et parce que c’est ce qui est le plus utile à Grammalecte :

problème 1 : pas de lookbehind assertions

Les lookbehind assertions permettent de regarder ce qui précède un motif. OK, c’est pénible, mais on peut compenser avec quelques efforts.

problème 2 : les classes de métacaractères ne comprennent que l’ASCII.

Les classes de métacaractères comme \w et \b, ne comprennent que l’ASCII.
Oui, l’ASCII ! Ce qui donne (vous pouvez essayer dans l’ardoise de Firefox) :

/^\w+$/.test("étonnant")  ==> false
/\bvite\b/.test("évite")  ==> true

Inutile de vous précipiter sur votre calendrier, nous sommes bien en 2017, et non en 1997. JavaScript est, paraît‐il, un langage moderne, mais seulement quand on n’y regarde pas de trop près.

Heureusement, il est facile de compenser l’absence d’un \w fonctionnel par [a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯ] (du moins, ce sont les plages de caractères que j’ai retenues, on pourrait en ajouter bien d’autres). Ce qui rend les expressions rationnelles un peu plus piquantes à lire…

Quant à \b, eh bien, on peut essayer de compenser avec des lookahead assertions et des lookbehind assertions. Seulement, voilà, ces dernières n’existent pas en JavaScript. Mais en magouillant, on peut simuler ça. Du moins dans presque tous les cas utiles. Tant pis pour les autres… on priera de ne pas tomber sur un caractère non ASCII.

Problème 3 : pas de position des groupes capturés

Les groupes capturés n’indiquent pas leur position. Ça, c’était vraiment la mauvaise surprise. Avant de proposer la campagne de financement, j’avais vérifié ce que JavaScript pouvait faire avec les expressions rationnelles, mais je n’avais pas vu que ce point manquait à l’appel, tout simplement parce que je n’avais pas imaginé que JavaScript serait incapable de fournir cette indication.

De quoi s’agit‐il au juste ? C’est très simple. Quand vous écrivez une expression rationnelle avec des groupes de capture, comme (\w+) (\w+) (\w+), Python vous renvoie les groupes capturés (ce qui est entre parenthèses) avec leur position dans le motif global. JavaScript ne renvoie que le contenu des groupes capturés, mais pas leur position. Débrouillez‐vous pour savoir où ça se trouve, et c’est bien plus épineux que vous pourriez le supposer, si, par exemple, vous capturez des mots comme « a », « le » ou « la », ou si vous capturez des groupes qui ne sont pas des mots entiers.

Ce point seul m’a fait perdre beaucoup de temps, sans compter que ce fut un cauchemar à déboguer. J’ai même cru pendant quelques jours que tout le projet allait tomber à l’eau à cause de ça.

Car, à ce moment du développement, alors même que je bataillais pour rendre le moteur fonctionnel, j’ai pris conscience que l’exécution du code en JavaScript était environ douze fois plus lente qu’en Python, au point que lorsqu’on lançait la correction grammaticale, Firefox se figeait pendant de longues secondes… C’était évidemment inacceptable.

Il était donc hors de question de ralentir encore l’exécution du code en essayant de calculer la bonne position des erreurs dans les motifs détectés (pour rappel, il y a des milliers d’expressions rationnelles dans Grammalecte). Du coup, j’ai oublié cette idée et procédé autrement : la position des groupes capturés est signalée dans le fichier des règles de grammaire. Cela rend le processus d’écriture des règles un peu plus brouillon, mais c’est assez simple pour être acceptable. Et ça ne ralentit pas le moteur outre mesure.

Ensuite, pour éviter que Firefox ne se fige, le cœur du correcteur grammatical, c’est‐à‐dire la vérification du texte, s’exécute dans un processus séparé… Et, bonne surprise, il s’avère que dans ce processus — inexplicablement, sans rien changer au code — le correcteur fonctionne vingt fois plus rapidement que dans le processus principal de Firefox, même quand ce dernier ne fait rien du tout !…

Un écosystème incohérent

Selon les contextes et l’application, les choses fonctionnent différemment et ça donne la désagréable impression de bâtir sur du sable. On ne sait pas toujours bien ce qui préexiste aux scripts qu’on conçoit. Notamment, il n’y a toujours pas de moyen conventionnel simple pour importer un module (ES6 en parle, mais aucun navigateur n’a encore implémenté ça).

Parfois, require existe par défaut. On peut faire :

const { Cu } = require("chrome");
const tabs = require("sdk/tabs");

Dans d’autres cas, require n’existe pas par défaut, donc :

importScripts("resource://gre/modules/workers/require.js");
const gce = require("resource://grammalecte/fr/gc_engine.js");

Ou bien encore dans un autre contexte, il faut faire :

const Cu = Components.utils;
const { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});

Parfois, on importe Components.utils (Cu) grâce à require. Parfois, on importe require à partir de Components.utils (Cu) ou bien d’autre chose.
On peut aussi importer des modules via XUL ou le HTML, avec des espaces de noms partagés. Il y a aussi les déclarations de ressources dans un manifeste. Bref, tout ça est contre‐intuitif au possible.

Cela dit, alors que j’écrivais ce texte, je découvre que import et export arrivent enfin dans les navigateurs ! On va peut‐être en finir avec tout ça bientôt.

Mais, ça résoudra pas tout. Comme je l’ai dit, selon les applications et les contextes, certains objets ou fonctions existent ou n’existent pas. Dans Firefox, on peut appeler directement XMLHttpRequest(), mais pas dans Thunderbird. Pour ce dernier, il « suffit » donc de faire :

let { Cc, Ci } = require("chrome");
let xRequest = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
xRequest.QueryInterface(Ci.nsIXMLHttpRequest);

Même pour faire un print, il n’y a pas de solution uniforme. Là encore, selon le contexte, il y a : console.log(), Service.console.logStringMessage() ou dump() ou que sais‐je encore. Il y a des contextes où rien de tout ça ne fonctionne.

Une dernière étrangeté : pour compenser la pauvreté des objets standard, j’ai ajouté des fonctions personnelles à String, Regexp et Map. Mais ce qui est curieux, c’est que dans Firefox, il faut que ces nouvelles fonctions soient déclarées dans le module où les objets sont instanciés… tandis que dans Thunderbird, il faut que ces nouvelles fonctions soient déclarées dans le module où ces fonctions sont utilisées. C’est pourtant le même moteur JavaScript.

J’arrête ici de lister les incohérences, on n’en finirait pas.

Chaque problème n’est pas dramatique en soi, mais l’accumulation de ces contretemps finit par rendre la programmation en JavaScript vraiment casse‐pieds par moments.

Et, là, on ne parle que de Mozilla. C’est encore différent ailleurs, puisque l’implémentation des nouvelles fonctionnalités du langage n’avance pas au même rythme selon les moteurs.

En résumé, JavaScript, c’est le bordel et on se demande pourquoi c’est si incohérent. À mon avis, ce qui manque particulièrement à ce langage, c’est une implémentation standard avec un comportement logique et uniforme, des rapports d’erreurs plus clairs et une bibliothèque par défaut mieux faite et plus complète. On perd un temps considérable avec ces histoires.

Je ne voulais pas particulièrement écrire un long chapitre sur ce langage, mais ça fait déjà pas mal…

De Writer à Firefox (ou de la littérature au Web) : le choc culturel

L’un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris, bien que j’avais conscience que les textes du Web n’égalaient pas en qualité et normativité ceux sur lesquels j’avais travaillé sur LibreOffice, c’est combien l’écrit sur le Web est chaotique et exubérant, et foisonne de néologismes, d’anglicismes, de noms propres (compagnies, marques, produits, people), de sigles, de codes divers, de vocabulaire technique, de smileys, d’erreurs de syntaxe ou de formatage, sans compter les habituelles erreurs typographiques, orthographiques et grammaticales… Si bien que même lorsque Grammalecte commençait à fonctionner comme il le devait sur Firefox, il m’est vite apparu que c’était difficilement utilisable en l’état, et qu’il fallait revoir son fonctionnement pour éviter trop de signalements intempestifs, pour éviter que tous les textes soient barbouillés de toutes les couleurs. Pourtant, je n’avais pas fait faire les premières armes du correcteur sur les logorrhées de Facebook, mais sur des textes d’acteurs « sérieux », comme les journaux et les blogs grand public ou plus confidentiels, mais a priori bien tenus. Quelle déconvenue !… Entre le charabia, les hashtags et autres bidules, le formatage indigent et la novlangue du Web, Grammalecte tirait tout le temps la gueule, et il a fallu revoir beaucoup de choses pour que le correcteur se comporte moins comme un casse‐pieds permanent. J’ai passé un temps considérable à cette adaptation culturelle. J’ai fait passer au correcteur des centaines de textes tirés de blogs et de journaux. J’ai corrigé des tas de faux positifs et j’ai ajouté des centaines de mots dans le dictionnaire. Et beaucoup d’entre vous trouvent sans doute le correcteur encore trop rigide. À vous de me le dire, j’ai eu très peu de retour sur ce point…

Quoi qu’il en soit, pour s’acclimater à Internet, il a fallu assouplir grandement la politique d’intégration des néologismes, des anglicismes, des marques, améliorer l’analyseur lexical pour ignorer des tas de trucs. Par exemple, si l’on peut se passer du verbe « tweeter » quand on ne s’occupe que de LibreOffice, sur le Web, non, ce ne peut être compris des utilisateurs. Trop fréquent. Idem pour pas mal de marques et d’autres néologismes très courants.

Cela dit, je suis toujours réticent à ajouter trop de nouveautés et de bizarreries, les noms de produits sont toujours interdits (tant pis pour les Freebox, les iBidule, et autres gadgets dans l’air du temps…), et je me suis arrêté au moment où j’ai estimé que j’avais suffisamment assoupli les choses… Faites‐moi part de votre avis, en bien ou en mal. Il reste sans doute encore des rugosités à polir.

Lexique du correcteur

La graphie d’un mot français ne permet pas de déterminer sa nature. Un mot finissant par « -ent » peut être un nom, un adjectif, un adverbe ou la forme conjuguée d’un verbe. C’est pourquoi un correcteur grammatical ne peut souvent pas grand‐chose sans un lexique étiqueté référençant tous les mots d’une langue. Cet étiquetage, c’est la base de la connaissance du correcteur.

Ce lexique est généré à partir du dictionnaire orthographique pour Hunspell.

Quelques données sur le dictionnaire :

  • plus de 82 300 entrées (+ 5 300 depuis le précédent journal) ;
  • toutes les entrées sont grammaticalement étiquetées ;
  • environ 20 % d’entre elles sont sémantiquement étiquetées (médecine, informatique, botanique, etc.), mais cet étiquetage ne sert pas encore.

Améliorer la base lexicale et son étiquetage, c’est l’une des tâches les plus importantes de la conception d’un correcteur grammatical. Tout le travail sur le dictionnaire se fait sur Dicollecte, où sont collectées les propositions des utilisateurs.

C’est toujours perfectible

Beaucoup de choses ont été faites, parfois plus que ce qui était demandé, parfois le strict minimum. Évidemment, beaucoup de choses sont encore améliorables, c’est le propre des projets informatiques. Un correcteur grammatical, ce n’est jamais fini.

Si j’ai oublié de mentionner quelque chose d’important, n’hésitez pas à m’en faire part.

Malheureusement pour certains, je n’ai pas réécrit le correcteur en OCaml, Haskell, Lisp, Cobol… [insérez ici votre langage à la mode favori]. Firefox et Thunderbird s’obstinent à ne comprendre que le JavaScript, LibreOffice le Python, le Basic et le Java. C’est barbare ou vintage si on est indulgent, mais c’est ainsi. :-)

Pour l’instant, attendu que Mozilla n’a toujours pas implémenté l’interface de programmation qui permettra de souligner les erreurs directement dans les zones de texte, la correction se fait dans un panneau annexe. Mais, dès que cette interface sera disponible, c’est bien sûr ainsi que les corrections se feront. Au cas où ceci intéresserait quelqu’un parmi vous, sachez qu’il existe une prime pour la réalisation de cette tâche sur Bountysource.

Il existe également une prime pour apporter la colorisation des erreurs dans LibreOffice. Idéalement, j’aimerais qu’on passe des vaguelettes bleues à peine visibles à des traits pleins, épais et colorés. Par exemple :

Exemple des soulignements possibles

L’un des problèmes qui m’ennuie assez en ce moment, c’est que la validation des extensions proposées sur le site de Mozilla est devenue vraiment longue depuis le début de l’année. Les contrôleurs sont probablement submergés de nouvelles extensions à cause du passage obligatoire à WebExtension. Du coup, la version 0.5.16 n’est pas encore validée. La version 0.5.17 n’a pas encore été proposée, attendu que toute nouvelle version nous ramène en fin de liste d’attente.

L’avenir

Améliorer la correction grammaticale

Après le passage délicat que constituait la désimbrication de Grammalecte de LibreOffice, je vais dorénavant me concentrer sur l’amélioration du correcteur lui‐même. Avec toutes les nouvelles fonctionnalités apportées dernièrement, il est possible de faire bien mieux que ce qu’on a maintenant.

Pour l’instant, le désambiguïsateur, quoique déjà fort utile, est particulièrement sous‐utilisé, pas parce qu’il est difficile d’emploi, mais parce que cette affaire est vraiment plus délicate que je ne l’avais supposé de prime abord, et aussi parce que le processeur de texte fait en vérité déjà beaucoup de travail sur ce point (cf. le journal précédent)… Encore une fois, le diable est dans les détails, les détails, les détails…
En revanche, il m’apparaît de plus en plus évident qu’il serait utile d’adjoindre au désambiguïsateur un système d’annotation du texte, parce que tout ne dépend pas de la désambiguïsation grammaticale, et qu’il est souvent appréciable de connaître le contexte.

Le fait que les règles puissent lancer plusieurs actions va permettre de faire des examens plus complets sur des détails pour l’instant ignorés, notamment sur le contrôle des locutions adverbiales ou les syntagmes nominaux les plus fréquents. Rien de difficile à première vue. Juste un travail de tâcheron qui demande du temps.

L’autre point central à mettre en œuvre, c’est la fusion et le réajustement des règles existantes. Le fait que les règles peuvent dorénavant appliquer autant d’actions que voulu change grandement la donne. Par exemple, je vous avais expliqué dans le précédent journal que la vérification des verbes se faisait après avoir vérifié tout le reste. À présent, même s’il est encore utile de fonctionner ainsi dans bon nombre de cas, il serait appréciable de fusionner certaines de ces vérifications avec le désambiguïsateur qui, lui, est surtout utilisé dans les premières phases de traitement.
Ce travail de fusion et de réajustement des règles ne présente pas de difficultés particulières, c’est surtout une question de stratégie globale qui ne nécessite cependant qu’un travail minutieux et attentif, plutôt ennuyeux et probablement un peu répétitif. Une fois de plus, avec plusieurs centaines de règles concernées, ça ne peut pas se faire en un tour de main.

Autre objectif : bétonner les tests, bétonner les tests, bétonner les tests. Parce que c’est possible et que c’est indispensable pour éviter les bogues inattendus que la correction grammaticale peut susciter. Mais il faudra aussi consolider radicalement les tests par l’ajout systématique des erreurs les plus fréquentes.

Améliorer les suggestions… Un casse‐tête qui s’est beaucoup amélioré ces derniers temps, mais il faudrait quand même réussir à filtrer les absurdités que le correcteur sort parfois. Son défaut est d’être un peu trop ingénieux par moments… mais bon, ça peut faire rire. :-)

Parmi les suggestions, il y a particulièrement les suggestions orthographiques. Pour le moment, dans Firefox et Thunderbird, Grammalecte utilise Hunspell pour avoir des suggestions orthographiques, même s’il n’a plus besoin de lui pour savoir si un mot est présent dans le dictionnaire et récupérer les données grammaticales. Il serait utile d’adjoindre un module de suggestion orthographique en parcourant le graphe de mots à la recherche de possibles mots correspondant suffisamment à la graphie inconnue. Un domaine de recherche à part entière. À mon avis, il serait utile d’implémenter une suggestion basée sur des substitutions phonétiques.

Plus loin, plus fort ?

Ce n’est qu’une idée, pour l’instant mal formée et un peu extravagante, mais je réfléchis à la possibilité de bâtir un graphe de la grammaire française comme il a été possible de bâtir un graphe de l’ensemble des mots du français. La différence, c’est que la totalité des mots français recensés peuvent s’écrire selon un graphe acyclique, avec un début et une fin connus, tandis que si on schématise la grammaire française les boucles et les récurrences sont possibles, les embranchements innombrables, les fantaisies ne sont pas rares, la longueur de la chaîne de tokens est théoriquement sans limite… Et on ne parle là que de phrases faites avec une grammaire correcte. Comment gérer les erreurs rencontrées ? Faut‐il les intégrer dans ce même graphe en créant des branches d’erreur ?
C’est une pensée embryonnaire qui n’aboutira peut‐être à rien d’utile, mais si l’on trouve un moyen de bâtir ce graphe, il devrait être possible de gérer des cas très complexes. Ça nous permettrait de sortir du schéma [motif potentiel d’erreur → condition d’erreur → suggestions → message d’erreur] qu’on peut heureusement combiner avec diverses magouilles plus ou moins subtiles élaborées avec le processeur de texte et le désambiguïsateur.

Ce qui est sûr, c’est que le tokeniseur va prendre une place une place plus importante dans la nouvelle stratégie pour gérer la complexité.

Créer une extension pour Chrome

Pas grand‐chose de spécial à dire sur ce sujet. Il est à espérer que produire l’extension pour Chrome prenne un temps raisonnablement court, attendu que Mozilla a essayé de faire en sorte que la nouvelle API soit proche de celle de Chrome. Mais dans l’univers de JavaScript, y a‐t‐il quelque chose de stable et bien pensé ? Ce serait une bonne surprise. J’ironise et je médis, mais c’est un peu mérité, n’est‐ce pas ?
Quoi qu’il en soit, même si ça se fait plus rapidement qu’attendu – il n’est pas interdit de rêver –, le temps prévu à cette tâche sera utilisé pour renforcer le correcteur, ce ne sera donc pas perdu. En plus, moins je fais de JavaScript, plus je suis heureux… C’est donc avec bonheur que je me livrerai à une tâche plus essentielle que deviner ce que peut vouloir me dire le débogueur de Chrome.

Outils annexes

L’amélioration du lexicographe (qui donne des informations sur les mots) et l’assistant lexical (permettant l’ajout simplifié de mots au lexique) ont pour but de revisiter la manière d’améliorer la base lexicale, dont Dicollecte, le site Web existant pour cette tâche, commence à se faire vieux. J’espère inciter les utilisateurs à participer à la conception de la base en rendant l’interface plus simple et plus séduisante, et surtout directement accessible dans son logiciel. Ça a l’air insignifiant, mais c’est une question essentielle.

Le détecteur de répétitions est proposé parce que c’est un outil qui intéresse potentiellement beaucoup les écrivains soucieux de varier leur vocabulaire.

Le mot de la fin

Bon sang ! Difficile de rendre une campagne de financement attrayante quand on parle de grammaire. Au final, on veut juste de petits liserés sous les mots erronés et un menu contextuel qui explique pourquoi c’est faux et qui suggère quelque chose de crédible. Rien de palpitant à la réflexion. On peut espérer susciter l’intérêt des technophiles en parlant de l’arrière‐cuisine et du système de tuyauterie, mais j’avais déjà presque tout dit la première fois, je ne peux que rendre compte de ce qui a été fait et amélioré.

Si la première campagne vous a satisfait, si vous jugez que la correction grammaticale est trop importante pour être négligée et qu’il faut en finir avec la maltraitance de la langue française, si vous voulez peser sur les priorités du correcteur grammatical ou ajouter des mots spécifiques ordinairement interdits dans le dictionnaire, je vous invite à consulter la page de financement participatif sur Ulule.

  • # Il y a un mais !

    Posté par . Évalué à 8 (+6/-0).

    Très bonne dépêche, un grand merci !
    Mais j'éprouve un sentiment partagé entre la peur et l'envie de rire (sans me moquer) quand un logiciel de correction grammaticale me montre ça :
    verbe aller

    Soit on m'a menti soit le verbe aller est le seul verbe finissant par 'er' à l'infinitif qui est du troisième groupe car sa conjugaison a la première personne du singulier, au présent de l'indicatif de fini pas par 'e' (je vais)

    d'ailleurs pour me rassurer je viens d'interroger Mr Alain Terre nette et il viens de me rassurer :
    http://la-conjugaison.nouvelobs.com/du/verbe/aller.php
    http://conjugaison.lemonde.fr/conjugaison/troisieme-groupe/aller/

    Une petite erreur de moins dans Grammalecte 😂

    microsoft just gives you windows, Linux gives you whole house

    • [^] # Re: Il y a un mais !

      Posté par (page perso) . Évalué à 5 (+3/-0).

      Soit on m'a menti soit le verbe aller est le seul verbe finissant par 'er' à l'infinitif qui est du troisième groupe car sa conjugaison a la première personne du singulier, au présent de l'indicatif de fini pas par 'e' (je vais)

      C'est surtout que le verbe aller est totalement irrégulier.
      Il va, il alla… On voit bien que la racine n'est pas toujours utilisée.

      • [^] # Re: Il y a un mais !

        Posté par . Évalué à 10 (+10/-0).

        C'est le genre de bizarrerie qui arrive lorsqu'on fusionne trois verbes latins différents dans un seul verbe français:

        • eo, ire (aller) : J'irai, …
        • vado, vadere (s'avancer): Tu vas, …
        • ambulo, ambulare (marcher): Nous allons, …
    • [^] # Re: Il y a un mais !

      Posté par . Évalué à 8 (+7/-0).

      Ce n’est pas une erreur de ma part. C’est délibérément que j’ai classé “aller” dans le premier groupe. J’avoue que je ne suis plus sûr des raisons précises, car la décision fut prise il y a si longtemps… depuis le début en fait. Si j’ai bonne mémoire, c’est la forme de son participe passé qui m’a poussé à cette décision, pour éviter certaines confusions du correcteur.
      C’est le seul verbe qui a subi une classification non standard si ça peut vous rassurer. Il faudrait que je vérifie si ça a toujours du sens.

      • [^] # Re: Il y a un mais !

        Posté par . Évalué à 2 (+2/-0).

        Ce n’est pas une erreur de ma part. C’est délibérément que j’ai classé “aller” dans le premier groupe.

        Donc, grammalecte est un correcteur grammaticale pour lequel l'auteur a fait des choix délibérés en matière de grammaire ?

        • [^] # Re: Il y a un mais !

          Posté par . Évalué à 8 (+6/-0).

          Absolument. La grammaire et l’orthographe sont des questions moins unanimes qu’on le pense en général. Si vous avez Le bon usage de Grevisse, qui est la référence la plus complète en matière de français, vous trouverez des exemples où les grammairiens hésitent, ne sont pas d’accord, des tas de citations où les auteurs décident de passer outre certaines règles, au point que ça devient du coup tolérable. La langue pullule de contradictions.

          Cela dit, mes choix consistent surtout à placer un curseur de tolérance sur les faux positifs. C’est surtout le potentiel du correcteur qui dicte les choix.

          Quant au choix de placer “aller” dans le premier groupe, ça me paraît être sans importance. Il y a d’autres verbes irréguliers dans le premier groupe.

          • [^] # Re: Il y a un mais !

            Posté par . Évalué à 3 (+1/-0). Dernière modification le 09/06/17 à 10:43.

            Tiens d'ailleurs pendant que je 'tiens' un balèze en Français j'ai une question qui me traumatise depuis des années :

            "Un sot portait dans un seau le sceau du saint père, le sot fît un saut et les trois (sot|sceau|seau) tombèrent"

            Comment écrit on "les trois so" ?

            microsoft just gives you windows, Linux gives you whole house

            • [^] # Re: Il y a un mais !

              Posté par (page perso) . Évalué à 4 (+2/-0).

              Comment écrit on "les trois so" ?

              Phonétiquement ?

              "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

              • [^] # Re: Il y a un mais !

                Posté par . Évalué à 1 (+0/-1).

                Du coup c'est aussi ma conclusion après de multiples nuits blanches et séjours en HP.
                Mais j'aimerais tout de même avoir l'avis d'Olivier car il semble avoir un niveau en langue Française 'sensiblement' plus élevé que le mien :-)

                microsoft just gives you windows, Linux gives you whole house

                • [^] # Re: Il y a un mais !

                  Posté par . Évalué à 10 (+9/-0).

                  Hmm… Moi, je contournerais la difficulté en escamotant le problème. :)

                  Un sot portait dans un seau le sceau du saint père, le sot fît un saut et les trois tombèrent

            • [^] # Re: Il y a un mais !

              Posté par . Évalué à 8 (+8/-1).

              Si tu dis les trois machins, ça n'implique pas que les machins soient de même type ? Si tu portais un microscope, une tasse et un couteau, tu ne pourrais pas dire autre chose que les trois objets, ou un truc du genre. Je ne pense pas que tu puisses passer outre cette règle simplement parce qu'ils sont homonymes.

              • [^] # Re: Il y a un mais !

                Posté par (page perso) . Évalué à 2 (+0/-0).

                La grammaire n'est pas une règle gratuite, elle sert à la compréhension. Tu peux donc, oralement, dire « les 3 so » puisque c'est parfaitement compréhensible.

                "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

          • [^] # Re: Il y a un mais !

            Posté par . Évalué à 10 (+11/-0).

            Quant au choix de placer “aller” dans le premier groupe, ça me paraît être sans importance.

            Je ne suis pas d’accord, ça a une importance. Imaginons qu’élève utilise grammalecte, il cherche le groupe de aller et se trompe dans son exercice.

            Je comprend que d’un point de vu développement ce soit plus simple ainsi. Mais du coup tu as les participes passé qui sont bon (régulier par rapport au groupe), mais pas la conjugaison. Ne serait-il pas mieux, de mettre le verbe dans le bon groupe ? Serait-se compliqué d’avoir une information « publique » affichable et une information « interne » à fin d’optimisation ? (Je ne suis pas sûr que la confusion possible ne pose pas plus de problème)

            Pour le reste, je me joins à la masse pour te dire merci pour ton logiciel.

      • [^] # Re: Il y a un mais !

        Posté par . Évalué à 5 (+4/-0).

        Ce n’est pas une erreur de ma part. C’est délibérément que j’ai classé “aller” dans le premier groupe.

        doit-on en déduire que si quelque chose est délibéré alors forcément ce n'est pas une erreur ?

        -- 7x7=42… c'est une erreur mon petit Olivier
        -- mais non madame, c'est délibéré, j'aime bien 42

        (c'est juste une plaisanterie, pas une critique)

        • [^] # Re: Il y a un mais !

          Posté par . Évalué à 5 (+3/-0).

          doit-on en déduire que si quelque chose est délibéré alors forcément ce n'est pas une erreur ?

          Heureusement qu’on ne parle pas de maths. J’aurais forcément tort. :)

          Cette discussion m’a poussé à fouiller ma mémoire, et j’ai vérifié mes archives. Et dans celles-ci j’ai retrouvé dans un CD de 2009 les premiers fichiers de genèse du dictionnaire qui ont été conçus de 2008. À l’époque, j’avais déjà étiqueté “aller” comme un verbe du premier groupe. La décision est donc antérieure à l’existence de Grammalecte.

          Mais pourquoi donc? Pour autant que je sache, la classification de “aller” est arbitraire, basée sur le fait qu’il est irrégulier.

          Or, quand j’ai écrit les règles de conjugaison de tous les verbes du français (ça m’a pris des mois), rien ne m’a fait autant pester que les verbes du premier groupe, dont la régularité est une vue l’esprit, complètement infirmée par les faits. Le premier groupe est rempli d’irrégularités. Pour preuve, le nombre de lignes nécessaires pour la conjugaison des verbes par groupe:
          — 1ᵉʳ groupe: 5349 lignes,
          — 2ᵉ groupe: 393 lignes,
          — 3ᵉ groupe: 4728 lignes.

          Ces chiffres sont un peu approximatifs, parce qu’il y a quelques commentaires et des lignes vides, mais l’ordre d’idée est correct. Bref, il n’y a que le 2ᵉ groupe qui est régulier.

          “Aller” a plus de similitudes avec les verbes du premier groupe qu’avec ceux du troisième, où il est le seul de sa catégorie. C’est pourquoi il m’a semblé bien plus cohérent de le mettre dans le premier groupe.

          Jusqu’à présent, je n’ai pas trouvé de sources fiables sur la classification des verbes, juste des gens qui répètent ce qu’ils ont entendu ou lu. Mais pourquoi, est-ce ainsi? Je ne sais pas. (Si vous avez des sources, je suis preneur.)

          Enfin, la classification des verbes n’a aucune incidence sur la grammaire et n’indique rien sur leur usage.

          C’est pourquoi, en 2010, quand j’ai commencé le correcteur grammatical, je me suis à nouveau posé la question du choix de mettre “aller” dans le premier groupe, et ça m’a paru cohérent et logique de confirmer le choix initial.

          • [^] # Re: Il y a un mais !

            Posté par (page perso) . Évalué à 5 (+6/-3).

            Mais pourquoi donc? Pour autant que je sache, la classification de “aller” est arbitraire, basée sur le fait qu’il est irrégulier.

            C'est justement pas arbitraire du tout, c'est bien son caractère totalement irrégulier (il n'est pas un peu irrégulier mais totalement irrégulier, son radical n'est pas constant du tout) qui le rend particulier et le relégue dans le dernier groupe qui est celui des irréguliers.

            Or, quand j’ai écrit les règles de conjugaison de tous les verbes du français (ça m’a pris des mois), rien ne m’a fait autant pester que les verbes du premier groupe, dont la régularité est une vue l’esprit, complètement infirmée par les faits. Le premier groupe est rempli d’irrégularités. Pour preuve, le nombre de lignes nécessaires pour la conjugaison des verbes par groupe:

            Tu te fourvoies.
            Comparer le nombre de lignes brutes n'a pas d'intérêt si tu ne pondères pas le poids des différents groupes. Le 1er groupe c'est près de 90% des verbes de la langue française. Donc avec autant de verbes tu as probablement plus de règles que les autres, mais rapporté au nombre de verbes des dits groupes, tu verras que le 3e groupe brille par son irrégularité manifeste.

            Note par ailleurs que les irrégularités du 1er groupes suivent une certaine… régularité.

            Car en fait la quasi-totalité des exceptions du premier groupes sont pour conserver une cohérence dans le son lors de la conjugaison. Car le radical ne bouge pas.

            Exemple typique d'irrégularité que tu as du entrer : je mange, nous mang*eons. Tu as dû ajouter le e ici pour que le son soit cohérent.
            De même pour je finance, nous finan
            ç*ons où le c reçoit une cédille pour la même raison. Mais cela est finalement assez régulier dans l'ensemble.

            Cela n'a rien à voir avec la conjugaison du verbe avoir, être ou aller où le radical de l'infinitif disparaît régulièrement (les rendant méconnaissables si tu ne le sais pas). Ce sont des irrégularités qui pour le coup ne sont justifiées par aucune règle autre que le poids historique de la langue.

            “Aller” a plus de similitudes avec les verbes du premier groupe qu’avec ceux du troisième, où il est le seul de sa catégorie. C’est pourquoi il m’a semblé bien plus cohérent de le mettre dans le premier groupe.

            Pas du tout. Le 3e groupe est un groupe inclassable, tu as tout et n'importe quoi dedans (trouve une similitude entre aller, avoir, pouvoir et être, il n'y en a pas). Le 1er groupe est justement régulier pour la grande partie. Le verbe aller ne respecte pas les critères du premier groupe, il a sa propre logique donc il est mis dehors. C'est logique.

            Jusqu’à présent, je n’ai pas trouvé de sources fiables sur la classification des verbes, juste des gens qui répètent ce qu’ils ont entendu ou lu. Mais pourquoi, est-ce ainsi? Je ne sais pas. (Si vous avez des sources, je suis preneur.)

            Le Bescherelle et l'Éducation Nationale me semblent bien placés comme sources.
            Mais je suis gentil, je suis allé chercher auprès de la référence absolu, l'Académie Française : http://www.academie-francaise.fr/questions-de-langue#8_strong-em-aller-quel-groupe-de-verbes-em-strong

            On peut reprocher bien des choses à cette académie, mais je pense qu'ici elle peut te faire comprendre que ton raisonnement sur la question est erroné.

            Enfin, la classification des verbes n’a aucune incidence sur la grammaire et n’indique rien sur leur usage.

            Oui et non.
            C'est important pour la conjugaison, c'est même essentiel. Et la conjugaison a un impact sur la grammaire. Si tu te trompes dans la conjugaison du verbe, tu n'identifierais pas correctement le temps et donc de la grammaire autour de ce temps (par exemple le subjonctif).

            • [^] # Re: Il y a un mais !

              Posté par . Évalué à 6 (+4/-0). Dernière modification le 09/06/17 à 14:02.

              Le 1er groupe c'est près de 90% des verbes de la langue française.

              Ce n’est pas le nombre qui fait la complexité.

              Car le radical ne bouge pas.

              Transformation de l’accentuation, ajout d’accent, ou parfois doublement éventuel de consonnes, transformation de y en i plus ou moins aléatoire, les c qui prennent des cédilles, envoyer qui est anormalement formé, etc. La réforme a changé beaucoup de choses sur les accents.

              Il y a quelques régularités dans la transformation des radicaux. Mais si tu dois mémoriser les verbes où les consonnes sont doublées, c’est précisément parce qu’il n’y a pas de règle stricte.

              Par ailleurs, même dans le 3ᵉ groupe, il y a aussi des régularités. En fait, on aurait pu faire une classification plus précise. Tout ça pour dire qu’il y a une grosse part d’arbitraire dans tout ça.

              Mais je suis gentil, je suis allé chercher auprès de la référence absolu, l'Académie Française

              Des sources comme ça, j’en ai déjà pas mal. :)
              C’est l’origine de la décision qui m’intéresse.

              (Tiens, l’Académie met envoyer dans le 3ᵉ groupe, contrairement à tous les autres.)

              Ce ne sera pas la première fois qu’on ignore ce que dit l’Académie. Par exemple, sur la féminisation des titres et fonctions (les autres pays francophones n’ont pas forcément les mêmes points de vue).

              • [^] # Re: Il y a un mais !

                Posté par (page perso) . Évalué à 2 (+5/-5).

                Ce n’est pas le nombre qui fait la complexité.

                Non, mais tu ne peux pas comparer les exceptions de chaque groupe sans tenir compte de leur taille. Le fait que la quasi totalité des verbes français est dans le premier groupe avec à peine plus de lignes d'exceptions que le 3e groupe (pour ton programme) montre que les verbes du dit groupe sont plus réguliers que le 3e et de très loin.

                Transformation de l’accentuation, ajout d’accent, ou parfois doublement éventuel de consonnes, transformation de y en i plus ou moins aléatoire, les c qui prennent des cédilles

                Qui sont, pour l'ensemble, plutôt réguliers comme transformations. Un apprenant du français peut très facilement conjuguer sans erreurs n'importe quel verbe du 1er groupe avec les règles génériques autour de cette conjugaison. Pour aller, c’est du par cœur.

                envoyer qui est anormalement formé, etc

                Note que comme tu l'as relevé, l'Académie le place aussi dans le 3e groupe pour la même raison que aller.

                Par ailleurs, même dans le 3ᵉ groupe, il y a aussi des régularités.

                Ouais enfin créer un groupe pour une dizaine de verbes ce n'est pas très pertinent. Il faut que la classification reste assez grossière pour être exploitable.

                C’est l’origine de la décision qui m’intéresse.

                Tu veux quoi, un arrêté royal de François Ier ?
                N'oublie pas que le français reste une langue avec un historique important dont pour uniformiser les usages on a conçu l'Académie Française pour rationaliser cet historique. Forcément il y a eu de l'arbitraire pour tenter de coller au mieux à la réalité du terrain tout en ayant un minimum d'exceptions (ce qui peut faire rire étant donné la quantité d'exceptions dont bénéficient notre langue).

                L'Académie Française justifie cela par l'irrégularité des verbes aller et envoyer en souhaitant que le 1er et 2e groupes soient des groupes réguliers (avec des règles en leur sein bien entendus). Cela me semble être suffisant.

                Ce ne sera pas la première fois qu’on ignore ce que dit l’Académie. Par exemple, sur la féminisation des titres et fonctions (les autres pays francophones n’ont pas forcément les mêmes points de vue).

                Si l'Académie a des torts et peut se montrer rigide sur certains points, cela reste malgré tout une source fiable dans l'ensemble pour savoir comment manier le français. Et son travail autour de notre langue reste aussi pertinente même si tout n'est pas à accepter bêtement, dans ce cas ci je trouve leur position logique et raisonnable.

                En tout cas tu es la première personne / source depuis longtemps qui soutient que aller est du premier groupe. Cela me paraît déraisonnable que tu persistes ainsi. Ta position n'a selon moi pas de véritable justification en plus d'aller à contre courant de la quasi-totalité des leçons de grammaires de notre langue.

                • [^] # Re: Il y a un mais !

                  Posté par . Évalué à 9 (+7/-0).

                  Tu veux quoi, un arrêté royal de François Ier ?

                  Je comprends parfaitement qu’on ne soit pas d’accord avec moi. Je ne l’exige pas. Ça ne m’importe pas beaucoup, à vrai dire. Si mes explications ne satisfont pas, qu’il en soit ainsi. J’aurais essayé.
                  Deux personnes ne feront pas le même dictionnaire, et je crois avoir récemment lu que les comités de dictionnaire se “querellent” aussi pour juger de l’acceptable et de l’inacceptable. Ce n’est pas pour rien que les dictionnaires contredisent les autres parfois, voire se contredisent eux-mêmes de temps en temps.
                  En revanche, je n’aime pas les injonctions (qui aime ça?) qui exige mon accord comme si je manquais de cervelle. Tu essaies de me vendre une pseudo-régularité comme une régularité.
                  Pour ma part, je juge discutable la classification, et quand ça sort de nulle part sans explication crédible, je me demande qui, quoi, pourquoi, s’il y a une meilleure explication que « c’est comme ça ». Ce n’est pas un tampon royal qui m’importe, c’est de remonter comment on a pu prendre une décision aussi discutable…

                  il y a eu de l'arbitraire

                  Voilà. L’Académie ou quiconque a fait ça aurait pu y mettre d’autres verbes du premier groupe, comme ceux où la seule mémoire permet de juger du nombre de consonnes à mettre. Qu’importe. On peut batailler sans fin sur ça.

                  Le Bescherelle et bien d’autres disent qu’envoyer est du premier groupe, l’Académie du troisième. Ce n’est pas la première contradiction, pas la dernière.

                  tout n'est pas à accepter bêtement

                  Là, on est bien d’accord. Il se trouve qu’avec aller, je contredis des choix faits par d’autres. OK. Pour l’instant, c’est ainsi. Je vais y réfléchir à nouveau, mais à tête reposée, plus tard donc.

                  • [^] # Re: Il y a un mais !

                    Posté par . Évalué à 2 (+0/-0).

                    Pour ma part, je juge discutable la classification, et quand ça sort de nulle part sans explication crédible

                    En fait pour moi (de mémoire) la raison est celle que j'ai écrite dans mon premier message, comme les verbes du premier groupe sont défini (il me semble) par : finissant par 'er' à l'infinitif et finissant par 'e' a la première personne du singulier au présent de l'indicatif. Tout verbe ne satisfaisant pas ces conditions n'est pas du 1e groupe ce qui est le cas du verbe aller. Mais je n'irai pas m'aventurer sur la pente glissante de l'argumentation, car je suis à des lustres d'avoir les compétences pour ça. :-)

                    microsoft just gives you windows, Linux gives you whole house

                    • [^] # Re: Il y a un mais !

                      Posté par . Évalué à 10 (+8/-0).

                      Mais je n'irai pas m'aventurer sur la pente glissante de l'argumentation, car je suis à des lustres d'avoir les compétences pour ça.

                      Je ne pense pas que ce soit une question de compétence. :) Pour ma part, je ne me souviens plus avec certitude des raisons avancées par les profs. L’irrégularité, je pense…

                      J’ai sorti un papier et un stylo, puis j’ai examiné les éléments.

                      Commençons par regarder les graphies du verbe “aller”. Nous avons :

                      Infinitif :

                      1 graphie conforme à ce qu’on trouve dans le 1ᵉʳ groupe (aller)

                      Participe passés :

                      4 graphies conformes au 1ᵉʳ groupe (allé, allée…)

                      Présent :

                      2 graphies conformes au 1ᵉʳ groupe (allons, allez)
                      4 graphies irrégulières (vais, vas, va, vont)

                      Passé simple :

                      6 graphies conformes au 1ᵉʳ groupe (allai, alla, allâmes, allèrent…)

                      Imparfait :

                      6 graphies conformes au 1ᵉʳ groupe (allais, allait, alliez, allaient…)

                      Futur :

                      6 graphies irrégulières (irai, ira, irez, iront…)

                      Conditionnel :

                      6 graphies irrégulières (irais, irait, iriez, iraient…)

                      Subjonctif présent :

                      2 graphies conformes au 1ᵉʳ groupe (allions, alliez)
                      4 graphies très proches de celles du 1ᵉʳ groupe (aille, aillent…)

                      Subjonctif passé :

                      6 graphies conformes au 1ᵉʳ groupe (allasse, allât, allassiez, allassent…)

                      Impératif :

                      2 graphies conformes au 1ᵉʳ groupe (allons, allez)
                      1 graphie irrégulière (va)

                      Total :
                      — 29 graphies conformes au 1ᵉʳ groupe,
                      — 4 graphies très proches de celles du 1ᵉʳ groupe,
                      — 17 graphies irrégulières.

                      Examinons à présent ce qu’on trouve dans le 3ᵉ groupe. Malgré les irrégularités, il comporte beaucoup de graphies récurrentes. Le 3ᵉ groupe se divise grosso modo en ces catégories :
                      — verbes en -tenir (tenir, appartenir, soutenir, obtenir…),
                      — verbes en -venir (venir, contrevenir, survenir, devenir…),
                      — verbes en -ir (sentir, partir, sortir, mentir, servir, courir, conquérir…),
                      — verbes en -uire (luire, bruire, cuire, éconduire, réduire, instruire…)
                      — verbes en -aire (faire, satisfaire, défaire, distraire, extraire, plaire…)
                      — verbes en -ire (lire, dire, écrire, proscrire, élire…)
                      — verbes en -eindre (peindre, éteindre, feindre, geindre, joindre…)
                      — verbes en -oudre (absoudre, dissoudre, résoudre, coudre, moudre…)
                      — verbes en -dre (prendre, tendre, fendre, pendre, rendre, fondre, mordre…),
                      — verbes en -pre (rompre, corrompre…),
                      — verbes en -ttre (battre, mettre, permettre, transmettre…),
                      — verbes en -vre (suivre, poursuivre, vivre…),
                      — verbes en -ure (reclure, occlure, conclure, exclure…),
                      — verbes en -aître (apparaître, paître, connaître, disparaître, naître…),
                      — verbes en -oître (croître, accroître…),
                      — verbes en -oire (croire, boire…),
                      — verbes en -oir (pouvoir, vouloir, devoir, voir, surseoir, pleuvoir, savoir…),
                      — verbes en -ore (clore, éclore…),
                      et quelques verbes du même acabit, ainsi que vaincre.

                      Quelle proximité y a-t-il entre aller et tous ces verbes? Aucune. Zéro. Même les graphies irrégulières sont plutôt éloignées de ça.

                      Pour la mécanique interne du correcteur, aller va certainement rester un verbe du 1ᵉʳ groupe.

                      Quant aux indications du conjugueur… Je suis dubitatif. Cela aiderait-il les utilisateurs (élève ou non) de classer aller dans les verbes du 3ᵉ groupe? L’Académie peut bien dire ce qu’elle veut, ce n’est d’aucune aide pour mémoriser comment aller se conjugue, puisque ce verbe est sans parenté quelconque avec ceux du 3ᵉ groupe. Alors, oui, c’est ce qui a toujours été dit, mais quelle pertinence cela a-t-il?

                      • [^] # Re: Il y a un mais !

                        Posté par (page perso) . Évalué à 5 (+5/-2).

                        Examinons à présent ce qu’on trouve dans le 3ᵉ groupe. Malgré les irrégularités, il comporte beaucoup de graphies récurrentes. Le 3ᵉ groupe se divise grosso modo en ces catégories :

                        Comme tu peux le voir, tes sous-3e groupe sont assez restreints, malgré leur régularité et proximité entre eux, ils ne sont pas classés. Il n'y en a pas assez.

                        Quelle proximité y a-t-il entre aller et tous ces verbes? Aucune. Zéro. Même les graphies irrégulières sont plutôt éloignées de ça.

                        Tu trouves que le verbe être et peindre se conjuguent pareil ? Qu'ils sont semblables ? Non plus.

                        Le problème j'ai l'impression c'est que tu vois vraiment le 3e groupe comme un groupement logique alors que c'est juste un groupe poubelle où vont se réfugier tous les verbes irréguliers de notre langue.

                        Pas besoin d'une proximité entre aller et peindre, c'est l'écart avec la conjugaison du 1er et du second groupe qui est déterminant. Et tu l'as montré toi même, le taux de régularité du verbe aller n'est que de 58%. C'est trop peu. Heureusement que des verbes comme ça il y en a peu. Surtout où les changements ne sont pas régulières, les différents radicaux utilisés n'ont pas particulièrement de sens et de cohérence.

                        Cela aiderait-il les utilisateurs (élève ou non) de classer aller dans les verbes du 3ᵉ groupe?

                        Bah au moins quand tu dis que aller est du 3e groupe, tu sais qu'il est irrégulier et piégeux. Tu sais il y a des étrangers qui apprennent notre langue bizarre aussi et ce genre de choses aide.

                        L’Académie peut bien dire ce qu’elle veut, ce n’est d’aucune aide pour mémoriser comment aller se conjugue

                        Non, mais on sait au moins que d'utiliser les formes habituelles du premier groupe n'est pas possible très souvent.

                        Alors, oui, c’est ce qui a toujours été dit, mais quelle pertinence cela a-t-il?

                        Nos illustres ancêtres ont trouvé bien de catégoriser les verbes par proximité pour y avoir des régularités, ainsi sont nés le 1er et le second groupe, le reste est mis au rebut dans le dernier. Cela me paraît être une justification amplement suffisante et si la quasi-totalité des grammairiens n'ont pas remis en cause ce point-ci (ce qui est plutôt rare sur ce genre de choses), je pense que de remettre en question sous prétexte que aller se conjugue proprement dans 58% des cas montre un certain manque d'humilité.

                        Je ne pense pas que tu sois cons (contrairement à ce que tu sous-entends), mais quand même, tu as l'explication, tu vois qu'il y a un consensus sur la question et tu balayes cela d'un revers de main en te demandant si cela est justifié alors que cela l'est.

                        La question est plutôt, pourquoi aller devrait être du premier groupe qui cherche une régularité et que la forme de aller est très irrégulière (que 58% de compatibilité, et les incompatibilités changent presque tous le radical) ? Car il se termine en er ? Cela me paraît léger et sans grande importance (cela ne t'aide pas à conjuguer aller correctement, cela peut même t'induire en erreur).

                        • [^] # Re: Il y a un mais !

                          Posté par . Évalué à 2 (+1/-0).

                          À l'école primaire on m'avait appris que "Aller" était du 1er groupe mais ça m'a toujours choqué car le verbe est quand même pas mal irrégulier pour un verbe sensé être du 1er groupe.
                          Le Bescherelle lui le classe apparemment dans le 3ème actuellement.

                • [^] # Re: Il y a un mais !

                  Posté par . Évalué à 5 (+3/-0).

                  Fil intéressant sur la classification des verbes, en particulier celle du verbe « aller ». Le sujet dont on parle dans ce journal étant la grammaire, j'ai choisi de répondre à ce commentaire en particulier car j'y ai détecté une erreur fréquente qui passe inaperçue auprès de grammalecte. Je commencerai donc ma réponse par une petite digression, bien que je te rejoigne entièrement sur la classification de « aller » dans le troisième groupe (ainsi que sur celle de « envoyer » dans le troisième également).

                  Voici la faute :

                  N'oublie pas que le français reste une langue avec un historique important dont pour uniformiser les usages on a conçu l'Académie Française pour rationaliser cet historique.

                  un mauvais usage du pronom relatif « dont », pourtant bien utilisé dans la phrase qui suit :

                  ce qui peut faire rire étant donné la quantité d'exceptions dont bénéficient notre langue

                  même si ici le verbe est mal conjugué, son sujet étant « notre langue » qui est singulier. ;-)

                  Le pronom relatif « dont » introduit un groupe nominal objet, normalement introduit par la préposition « de », lorsque celui est placé avant le groupe verbal. La deuxième utilisation (celle qui est correcte) correspondant à : « notre langue bénéficie de quantité d'exceptions ». Une telle construction est souvent utilisée pour élaborer un groupe nominal sujet afin d'éviter l'usage d'une subordonnée relative (introduite par « qui »). Exemples :

                  • notre langue bénéficie de quantité d'exceptions qui peuvent faire rire.
                  • la quantité d'exceptions dont bénéficie notre langue peuvent faire rire.

                  Revenons maintenant à la classification du verbe « aller ». Olivier a écrit dans un de ces commentaires :

                  Pour ma part, je juge discutable la classification, et quand ça sort de nulle part sans explication crédible, je me demande qui, quoi, pourquoi, s’il y a une meilleure explication que « c’est comme ça ».

                  et pourtant tu lui as donné le principe déterminant la classification dans le premier groupe : verbe dont l'infinitif est en « er » dont (:-P1) le radical ne subit pas d'altération lors de sa conjugaison. On peut toujours vouloir choisir un autre principe de classification (chacun est libre de choisir les principes qu'il veut après tout), mais qualifier celui-ci d'explication qui sort de nulle part est un peu fort de café, me semble-t-il.

                  En ce qui concerne le verbe « aller », son radical subit une transformation dans plusieurs temps ce qui le disqualifie (selon ce principe) pour appartenir au premier groupe. Exemples : je vais, tu vas, il va, ils vont, j'irai, tu iras, il ira, nous irons, vous irez, ils iront…

                  Les soient disantes irrégularités du premier groupe ne concernent jamais une altération du radical, mais des adaptations de la terminaison pour des raisons de sonorité comme le « e » dans « nous mangeons » ou le « ç » dans « nous lançons ».

                  Pour ce qui est du verbe « renvoyer », la stricte parenté de conjugaison avec le verbe « voir » (en dehors du participe passé dérivé en conformité avec sa terminaison en « er ») me semble être un bon principe pour le classifier dans le troisième groupe. Prendre, par exemple, son comportement au futur (où le radical est altéré) :

                  • j’enverrai
                  • tu enverras
                  • il enverra
                  • nous enverrons
                  • vous enverrez
                  • ils enverront

                  et le comparer à celui d'un verbe du premier groupe avec la même terminaison comme « louvoyer » :

                  • je louvoierai
                  • tu louvoieras
                  • il louvoiera
                  • nous louvoierons
                  • vous louvoierez
                  • ils louvoieront

                  Pour répondre au principe d'Olivier qui invoquait le nombre de règles dont se sert grammalecte entre le premier et le troisième groupe. D'une manière générale, comme je l'avais déjà dit dans ton autre dépêche, je considère que les problèmes algorithmiques liés à la correction grammaticale sont analogues à ceux que l'on rencontre dans la vérification et l'inférence de types dans l'écriture de compilateur de langages de programmation. Je salue la performance de ton logiciel ainsi que ton travail mais, si les expressions régulières sont fort utiles pour de l'analyse lexicale, le choix de construire un moteur entier d'analyse grammaticale autour des expressions régulières est déjà, en soi, une option discutable2. Mais si, de plus, tu te fondes sur un tel choix pour justifier ta classification des verbes alors là je ne peux absolument plus te suivre; et il y a peu de chance que tu arrives à faire des émules chez les grammairiens (ce que je ne suis pas, mais je n'en ai jamais lu un qui classifiait « aller » dans le premier groupe).


                  1. il s'agit ici d'un autre usage du pronom « dont » qui introduit un sous-ensemble d'un groupe nominal. 

                  2. Voir, par exemple, l'approche des grammaires catégoriques et la façon dont leur algorithme vérifie la bonne formation de la phrase en anglais : « the bad boy made that mess ». 

                  Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                  • [^] # Re: Il y a un mais !

                    Posté par . Évalué à 5 (+3/-0).

                    le premier groupe : verbe dont l'infinitif est en « er » dont (:-P1) le radical ne subit pas d'altération lors de sa conjugaison

                    On n’est déjà pas d’accord ça. Les radicaux du 1ᵉʳ sont souvent modifiés. Sinon je n’aurais pas eu besoin d’autant de règles pour gérer ça.
                    La réforme de 1990 elle-même opère des transformations sur ces radicaux, un changement de la norme d’accentuation. Par exemple: célébrerais devient célèbrerait: https://fr.wiktionary.org/wiki/c%C3%A9l%C3%A9brerait
                    Même sans la réforme, plein de verbes fonctionnent ainsi: peler devient pèle, semer devient sème, etc.
                    La transformation d’un c en ç, d’un y en i, c’est aussi une modification du radical.

                    Vous ne me croyez apparemment pas. Donc voici les verbes irréguliers en -er selon le Robert:
                    Verbes irréguliers en -er selon Le Robert

                    Ils ont aussi décidé d’y mettre les verbes qui engendrent des sonorités inhabituelles, comme épier, à cause des formes comme épiions. C’est plus discutable, mais ce n’est pas le sujet.

                    Par ailleurs, le Bescherelle, le Larousse et bien d’autres (ici, ici, ici, ici, ici) considèrent envoyer comme un verbe du premier groupe.

                    Bref, comme je l’ai dit, en grammaire, l’unanimité n’a pas encore été trouvée.

                    les expressions régulières sont fort utiles pour de l'analyse lexicale, le choix de construire un moteur entier d'analyse grammaticale autour des expressions régulières est déjà, en soi, une option discutable2.

                    Ce qui est discutable, ce n’est pas de bâtir autour d’expressions régulières. Ce qui est discutable, c’est de ne se baser que sur ça. J’en conviens, mais je suis parti d’une base existante qui avait fait ce choix, et il y a aussi des avantages. Je finirai par utiliser une autre approche, sans abandonner la première.
                    Car la tokenisation pose des tas de problèmes, tellement que LanguageTool a suivi il y a peu le chemin de Grammalecte en faisant de la reconnaissance d’erreurs par expressions régulières, mais je crois que c’est beaucoup limité que ce que je peux faire. Je me souviens par exemple que jusqu’à récemment, LT ne pouvait pas examiner des formes comme “pouvait-vous”. Je ne sais pas si le problème a été résolu.

                    tu te fondes sur un tel choix pour justifier ta classification des verbes alors là je ne peux absolument plus te suivre

                    J’ai déjà dit que j’avais fait ce choix avant de concevoir le correcteur. Mais je l’ai effectivement confirmé pour des raisons pratiques. J’ai deux raisons de suivre cette logique, pas une seule.

                    • [^] # Re: Il y a un mais !

                      Posté par (page perso) . Évalué à 6 (+4/-0).

                      La réforme de 1990 elle-même opère des transformations sur ces radicaux, un changement de la norme d’accentuation. Par exemple: célébrerais devient célèbrerait: https://fr.wiktionary.org/wiki/c%C3%A9l%C3%A9brerait
                      Même sans la réforme, plein de verbes fonctionnent ainsi: peler devient pèle, semer devient sème, etc.
                      La transformation d’un c en ç, d’un y en i, c’est aussi une modification du radical.
                      Vous ne me croyez apparemment pas. Donc voici les verbes irréguliers en -er selon le Robert:

                      C'est là où nous ne sommes pas d'accord.
                      Tu sembles considérer que c et ç sont des lettre indépendantes. Alors qu'en fait ç est un allographe de c, un graphène dérivé ou en terme informatique un objet fille de la classe mère c.

                      Tu peux voir cette interprétation de deux façons. Déjà quand on apprend l'alphabet français aux enfants, on ne cite que les 26 lettres de base provenant du latin. Pas de ligature, ni de lettres diacritées. Ce qui n'est pas le cas dans d'autres langues comme le finnois où la lettre ö est bien dans l'alphabet enseigné standard (au même titre que la lettre o) et sont donc à ce titre considérées comme distinctes (le ö étant à la fin de l'alphabet, le o étant en position standard dans l'alphabet latin).

                      L'ordre alphabétique n'est pas affecté par ces signes supplémentaires.
                      Par exemple l'ordre alphabétique suivant est celui de référence en français : Eau, Élément, Élever, Envoyer, ordre qu'on retrouve dans les dictionnaires également.

                      Du coup considérer ces substitutions pour raisons de sonorités comme une altération du radical n'est pas vraiment cohérent avec la considération qu'on porte à ces symboles.

                      Note après que personnellement je vois une différence entre un changement mineur d'un radical (changer un y en i) et un changement majeur (va, irai, allé). N'importe qui peut faire le lien entre eux dans le premier cas, dans le second cas c'est impossible de le faire instinctivement.

                      Par ailleurs, le Bescherelle, le Larousse et bien d’autres (ici, ici, ici, ici, ici) considèrent envoyer comme un verbe du premier groupe.

                      Pour le coup je suis plutôt de l'école de l'Académie française (pour une fois que son point de vue suit une certaine cohérence, c'est à souligner).
                      C'est tout le problème d'une standardisation d'une langue à postériori, sa construction n'ayant pas suivi forcément une cohérence initiale.

                      Bref, comme je l’ai dit, en grammaire, l’unanimité n’a pas encore été trouvée.

                      Pour envoyer en effet, pour aller il a été trouvé (entre l'Éducation Nationale, la totalité des livres de grammaires que j'ai pu lire, l'Académie française) cela commence à ressembler à un consensus.

                      J’ai déjà dit que j’avais fait ce choix avant de concevoir le correcteur. Mais je l’ai effectivement confirmé pour des raisons pratiques. J’ai deux raisons de suivre cette logique, pas une seule.

                      Que de manière interne tu exploites aller comme du premier groupe car cela te simplifie la tâche est une chose (en informatique c'est courant de procéder à ce genre de choses) mais tu le présentes aussi à l'utilisateur comme tel ce qui n'est, selon la littérature sur le sujet, pas correct.

                      Note qu'après j'apprécie grandement ton travail sur ce programme que j'utilise à l'occasion (rarement pour les commentaires, je ne trouves pas cela pratique de faire des allers/retours avec l'extension), ne crois pas que je souhaite de basher gratuitement. ;)

                      • [^] # Re: Il y a un mais !

                        Posté par . Évalué à 2 (+1/-1).

                        ne crois pas que je souhaite de basher gratuitement

                        Je ne le crois pas. Mais je ne vais pas discuter sans fin non plus, ça ne mène rien.

                        tu exploites aller comme du premier groupe car cela te simplifie la tâche est une chose

                        Non. La logique qui consiste à étiqueter V1 (1ᵉʳ groupe) en interne, elle se base avant toute chose sur l’infinitif et le participe passé. C’est commode de faire ainsi.

                        Mais ce n’est pas la logique interne qui dicte le choix dans le conjugueur et le lexicographe. Je n’ai qu’à mettre un if et la question est réglée. Ce n’est rien.

                        Seulement voilà, les raisons de mettre aller dans le 3ᵉ groupe me semblent futiles et contradictoires avec les faits.

                        Le 1ᵉʳ groupe contient des tas de verbes irréguliers dont le radical est modifié. C’est pourquoi, à mes yeux, le verbe aller y a sa place, comme tous les autres. Par ailleurs, comme il n’y a aucun lien quelconque entre aller et les verbes du 3ᵉ groupe (qui n’est pas un groupe «poubelle»), je ne vois pas de raison probante de l’y mettre. C’est tout.

                        Dans le fond, je ne crois pas que vous contesteriez cette décision si l’Académie classait elle aussi “aller” dans le 1ᵉʳ groupe. Je pense que vous cherchez à justifier un « c’est comme ça » établi par une habitude qui, à mon avis, n’a pas été beaucoup réfléchie.

                    • [^] # Re: Il y a un mais !

                      Posté par . Évalué à 6 (+4/-0).

                      On n’est déjà pas d’accord ça. Les radicaux du 1ᵉʳ sont souvent modifiés. Sinon je n’aurais pas eu besoin d’autant de règles pour gérer ça.

                      C'est effectivement là que nous ne sommes pas d'accord : il ne s'agit pas là pour moi de ce que j'entendais par altération du radical.

                      Dans tes exemples, on trouve d'abord les verbes en « -ger » et « -cer » qui n'altère pas le radical mais rajoute un « e » entre le « g » et le « a » ou le « o » de la terminaison pour conserver le phonème « ge » dans le premier cas, et transforme le « c » en « ç » pour conserver le phonème « ce » dans le second. Ces deux situations relèvent de l'orthographe lexicale et de la correspondance grapho-phonique de ces deux consonnes selon la voyelle qui les suit (cf p.14 du programme de primaire).

                      Pour d'autres cas, le radical n'est pas altéré : sa voyelle « e » subie différentes accentuations, mais c'est toujours la même voyelle et le même radical. Ce qu'il y a, avec l'accentuation de cette voyelle, c'est qu'elle peut se signifier aussi bien par un accent graphique que par un doublement de la consonne qui la suit dans le cas de l'accent aigu et des consonnes « l » et « t » (on écrit, par exemple, « elle » et non « éle »). Là ce sont, à nouveau, certaines règles étranges de la correspondance graphico-phonique qui sont à l'origine de cette subdivison du premier groupe.

                      Enfin il reste le cas des verbes en « -oyer » pour lesquelles le recours au « y » dans la graphie intervient pour la liaison phonétique entre les phonèmes « oi » et « er » (comme pour « noyais ») mais qui est substitué par un « i » lorsque la liaison n'est pas nécessaire (comme pour « noierait »). Connaissant peu l'histoire de notre langue, je ne saurai dire d'où vient un tel usage du « y ».

                      En revanche, le verbe « aller » subit une totale altération du radical. Otachron en a donné la raison : il emprunte trois radicaux distincts issus de trois verbes latins différents (WTF !). Pour le cas des verbes « renvoyer » et « envoyer », je n'ai aucune idée de la raison de la disparition du phonème « oi » dans son radical à certain temps contrairement au verbe comme « noyer ».

                      On pourrait toujours rajouter un quatrième groupe des verbes tordus, seuls de leur espèce, plutôt que de les ranger dans le troisième groupe, mais le seul rapport que je leur vois avec les autres verbes du premier groupe reste leur terminaison en « -er » et non les principes de leur conjugaison.

                      Bref, comme je l’ai dit, en grammaire, l’unanimité n’a pas encore été trouvée.

                      Il y a peu de chance qu'elle le soit un jour. Quand notre langue sera morte ?

                      Pour le reste, ce n'est pas d'une grande importance (quoique ?); j'aurais pas mal de choses à dire mais je n'ai pas le temps d'écrire un long commentaire. Pour faire court, l'analyse lexical et les informations du dictionnaire permettent de passer de la phrase :

                      • le chat mange la souris

                      à une situation du genre :

                      • (le : art. m. sg.) (chat : nm. sg.) (mange : vb. tr.) (la : art. f. sg.) (souris : nf. sg.)

                      dans laquelle chaque mot reçoit son type grammatical (ou ses types possibles en cas d'homonymie), et ensuite les règles de la grammaire française permettent de montrer que la construction syntaxique est grammaticalement correcte et a le type d'une phrase. C'est dans cette phase qu'interviennent les problématiques algorithmiques liées à l'inférence et à la vérification de type.

                      Traiter cette phase à la manière des compilateurs permettrait, par exemple, dans le cas d'une telle phrase :

                      • les moldus et les cracmols ne maîtrisent pas l'art de la legilimancie

                      d'inférer que les mots « moldu », « cracmol » et « legilimancie » doivent être des noms communs quand bien même ils ne se trouveraient pas dans le dictionnaire (raisonnement que tout lecteur de cette phrase, connaissant la grammaire française, fait de lui-même). Ce qui pourrait offrir la possibilité de suggérer l'ajout de ces mots avec ces catégories au dictionnaire, quand l'ajout de mot sera possible. ;-)

                      Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

                • [^] # Re: Il y a un mais !

                  Posté par . Évalué à 3 (+2/-0).

                  Salut Renault, bravo pour ta connaissance de la langue française. Sans vouloir provoquer ton courroux, peut être est-ce le biais du débat écrit, mais tu apparais ici comme un Grammaire Warrior (mais le débat est de qualité). En laissant les armes de côtés, ça me semblerait utile que tu aides Olivier dans son projet, en acceptant quelques irrégularités de sa part ;-) (c’est un juste encouragement).

                  • [^] # Re: Il y a un mais !

                    Posté par (page perso) . Évalué à 9 (+6/-0).

                    Globalement la « tendance officielle du moment » si je puis dire, c'est 3e groupe, même si il n'en a pas toujours été ainsi.

                    • [^] # Re: Il y a un mais !

                      Posté par . Évalué à 2 (+0/-0).

                      Il est fréquent que être et avoir soient considérés hors groupe, comme verbes auxiliaires. C’est d’ailleurs aussi mon choix.

                      Je constate que le Grevisse ne mentionne pas les groupes que nous connaissons. Peut-être parce que c’est belge?

                      Il est mentionné “quatre” classes de conjugaisons :
                      — 1ʳᵉ classe, les verbe en -er, comme aimer,
                      — 2ᵉ classe A, les verbes en -ir, comme finir,
                      — 2ᵉ classe B, les verbes en -ir, comme sentir,
                      — 3ᵉ classe, les verbes en -oir, comme recevoir,
                      — 4ᵉ classe, les verbe en -re, comme rendre.

                      Il est précisé en note de bas de page que c’est une longue tradition de répartir les verbes dans ces “quatre” classes, que les grammairiens se sont longtemps querellés sur les critères de classement des verbes, et qu’à force de disputes, beaucoup préfèrent s’en tenir à ces “quatre” classes traditionnelles.

                      • [^] # Re: Il y a un mais !

                        Posté par (page perso) . Évalué à 2 (+1/-0).

                        Des petites recherches ici et sur les classifications des verbes par des chercheurs en linguistique (je ne sais pas qui sont les grammairiens, les profs de français ? les puristes qui ont une vision normative de la langue ? les académiciens ?) qui travaillent à l'étude du français, montre la très grande diversité existante dans les regroupements des verbes à l'écrit (on pourrait discuter de l'oral aussi, mais ce n'est pas l'objet de Grammalecte).

                        • On peut classer les verbes sur des critères sémantiques, j'imagine que ça permettrait de mieux gérer les prépositions qui suivent possiblement ou non un verbe, de même suggérer des erreurs, notamment aux apprenants du français.
                        • On peut classer les verbes sur des critères morphologiques (la conjugaison), ce qu'on fait lorsqu'on parle des trois groupes de verbes. Bah, si on a recenser l'intégralité des 7000 et quelques verbes officiels du français, ça peut être utile. Après, y a toujours le problème de la créativité et des néologismes, mais un coup de dictionnaire dynamique et hop hop.
                        • On peut classer les verbes sur des critères étymologiques (comme le classement en quatre groupes de verbe). D'un point de vue grammatical, je ne vois pas trop l'intérêt, mais pour l'analyse du discours, pourquoi pas. Antidote le fait d'ailleurs.
                        • On peut classer les verbes sur des critères syntaxiques. Bo, j'aime pas les approches syntaxiques, les linguistiques ayant des approches grammatico-logiques ne font que ça. Cette approche peut sûrement aussi filtrer facilement un certain nombre d'erreurs, mais pour faire des trucs complexes, il faut un étiquetage complexe.
                        • On peut faire du bourrinage en n-grams et liste blanche, ça c'est une approche qui serait marrante à tester en se basant sur les corpus massifs du français. Ca serait un peu normatif à priori, vu que les tournures qui ne seraient pas dans le corpus serait considérées comme erronées, mais combiné avec d'autres approches grammaticales, on pourrait éviter de nombreux positifs-faux et faux-positifs.

                        Après, en faisant plusieurs passes, on doit pouvoir mélanger les résultats pour arriver à quelque chose de sympa.

                        • [^] # Re: Il y a un mais !

                          Posté par . Évalué à 0 (+1/-1).

                          Dans la pratique, je ne me réfère jamais à quelque classement que ce soit ; la conjugaison, l’orthographe, la syntaxe ou la grammaire sont affaires de pratique et de logique plutôt que de règles.

                          Le plus simple serait sans doute de ne pas afficher de classement. Après tout, Grammalecte est « une aide à l’écriture du français sans parasiter l’attention des utilisateurs. »

  • # MERCI !!

    Posté par (page perso) . Évalué à 6 (+5/-0).

    Vraiment merci, je ne connaissais pas l’extension Firefox et je viens de l’installer elle est vraiment magnifique !

    Je n’ai pas encore eu le temps de lire l’article mais la partie « comment ça fonctionne » semble à lire.

    Merci encore pour ce très bon programme fait par des passionnés j’en suis sur.

  • # Merci

    Posté par (page perso) . Évalué à 3 (+4/-0).

    Très bonne news! merci beaucoup. Quel travail!
    Petite correction : le lien de téléchargement version 0.5.17 pointe sur un 404 (https://dicollecte.org/grammalecte/telechargement.php au lieu de https://dicollecte.org/grammalecte/telecharger.php)

  • # Super boulot !

    Posté par (page perso) . Évalué à 10 (+12/-0).

    Salut,

    déjà bravo pour ce super boulot, j'utilise Grammalecte de temps en temps (par exemple en relecture de longues dépêches, notamment avec le greffon Vim), et c'est un super outil.
    La dépêche a beau parler de grammaire, elle m'a paru très intéressante (et a dû te prendre un temps fou à écrire).

    J'ai quelques questions/remarques:

    1. Sur un plan pratique, tu maintiens désormais 2 moteurs (Python et Javascript) si j'ai bien compris, même 3 vu que Firefox et Thunderbird ont un moteur différent. C'est gérable sur le long terme ? Il n'y a pas un risque d'abandon de la version Python ?
    2. Comment est-il possible d'utiliser Grammalecte depuis un logiciel tiers, au hasard en Python ? Comme une bibliothèque ? La dernière campagne parlait d'un mode serveur si mes souvenirs sont bons, est-ce la façon de faire ? Peut-on trouver de la documentation sur le sujet ?
    3. Question liée à la précédence : il y a-t-il moyen d'utiliser des fonctions internes, je pense en particulier à la possibilité de retrouver la forme canonique d'un mot ? Ça pourrait m'être très utile.
    4. Pour ma part je préférerais avoir un mode strict qui refuse les néologismes et autres bizarreries sur le web justement (pour choisir moi même ce que je souhaite garder ou non), est-ce qu'il serait possible de faire un mode plus ou moins laxiste (une sorte de liste déroulante avec un niveau de ce qui est accepté) ?

    Encore bravo et merci pour ce projet.

    • [^] # Re: Super boulot !

      Posté par . Évalué à 10 (+11/-0).

      Sur un plan pratique, tu maintiens désormais 2 moteurs (Python et Javascript) si j'ai bien compris, même 3 vu que Firefox et Thunderbird ont un moteur différent. C'est gérable sur le long terme ? Il n'y a pas un risque d'abandon de la version Python ?

      Deux moteurs: un en Python, un JavaScript.
      Quatre interfaces: Firefox, Thunderbird, LibreOffice, texte.

      Le moteur JS n’est pas standardisé, parce qu’il fait appel à des spécificités de Firefox. Mais avec le temps, quand JS sera un langage mature, ça devrait aller mieux.

      Si la charge devenait trop lourde, ce n’est certainement pas la version Python qui en pâtirait. C’est la version de référence. LibreOffice reste mon chouchou. :)

      Comment est-il possible d'utiliser Grammalecte depuis un logiciel tiers, au hasard en Python ? Comme une bibliothèque ? La dernière campagne parlait d'un mode serveur si mes souvenirs sont bons, est-ce la façon de faire ? Peut-on trouver de la documentation sur le sujet ?

      C’est utilisable en Python. Mais la doc est plus que rudimentaire, voire inexistante. Je vais travailler à ça pendant la campagne. L’API est encore de bas niveau pour des tas de raisons, mais j’envisage de simplifier ça aussi.

      Question liée à la précédence : il y a-t-il moyen d'utiliser des fonctions internes, je pense en particulier à la possibilité de retrouver la forme canonique d'un mot ? Ça pourrait m'être très utile.

      Le dictionnaire binaire indexable peut fournir les lemmes de tous les mots, ainsi que leur nature grammaticale. Le lexicographe se sert de ça:
      Lexicographe

      Pour ma part je préférerais avoir un mode strict qui refuse les néologismes et autres bizarreries sur le web justement (pour choisir moi même ce que je souhaite garder ou non), est-ce qu'il serait possible de faire un mode plus ou moins laxiste (une sorte de liste déroulante avec un niveau de ce qui est accepté) ?

      Malheureusement, les dictionnaires n’acceptent que 2 possibilités: un mot est présent ou absent. Bref, c’est compliqué, et même si c’était faisable, ce serait un travail de titan.

      Je vais faire un questionnaire sur l’avenir du dictionnaire plus tard, pour recueillir les avis.

      • [^] # Re: Super boulot !

        Posté par . Évalué à 3 (+1/-0). Dernière modification le 08/06/17 à 21:34.

        Malheureusement, les dictionnaires n’acceptent que 2 possibilités: un mot est présent ou absent. Bref, c’est compliqué, et même si c’était faisable, ce serait un travail de titan.

        Je ne connais pas l'architecture interne de ton moteur, mais pour la présence des mots ne peux tu pas avoir deux dictionnaires (disons D1 et D2) puis, suivant une option, tu testes la présence du mot dans D1 ou bien dans un des dico de la liste [D1; D2] ? Cela demanderait trop de changement de code que le test de présence se fasse sur une liste plutôt qu'un dico fixe donné ?

        Sinon, merci pour ton logiciel que je l'utilise régulièrement via l'extension de firefox. Je vais voir pour participer à la campagne.

        Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

        • [^] # Re: Super boulot !

          Posté par . Évalué à 6 (+4/-0).

          Je ne connais pas l'architecture interne de ton moteur, mais pour la présence des mots ne peux tu pas avoir deux dictionnaires (disons D1 et D2) puis, suivant une option, tu testes la présence du mot dans D1 ou bien dans un des dico de la liste [D1; D2] ? Cela demanderait trop de changement de code que le test de présence se fasse sur une liste plutôt qu'un dico fixe donné ?

          On pourrait bien sûr faire ça, même si rien n’est prévu pour ça à l’heure actuelle. Ce ne serait pas très difficile. J’ai envisagé de le faire, mais pour ceux qui veulent l’anglais avec le français.

          Le problème de cette solution, c’est que tu multiplies le temps d’examen de chaque mot par le nombre de dictionnaires que tu as. Pour chaque mot, tu lances la recherche à partir de zéro dans un graphe de mots. Très coûteux en ressources donc.

          L’autre problème est culturel. Vouloir refuser « les néologismes et autres bizarreries », c’est une chose; se mettre d’accord sur la place du curseur sur ces questions en est une autre. Les gens sont très divisés sur l’acceptable et l’inacceptable… Il suffit de voir tout le barouf sur “ognon”… “Ognon”, c’est un sacrilège. “Fake news”, non. Ou l’inverse. Ça dépend des personnes.

          Je prends un exemple. De nos jours, presque tout le monde ou presque écrit “décrédibiliser”… Pourtant, il existait un mot plus court que tout le monde semble avoir oublié en quelques années: “discréditer”. À mes yeux, “décrédibiliser” est néologisme superflu. Mais ça a fini par rentrer dans les dictionnaires. Ai-je eu tort de céder?

          • [^] # Re: Super boulot !

            Posté par . Évalué à 6 (+4/-0).

            Le problème de cette solution, c’est que tu multiplies le temps d’examen de chaque mot par le nombre de dictionnaires que tu as. Pour chaque mot, tu lances la recherche à partir de zéro dans un graphe de mots. Très coûteux en ressources donc.

            J'ai pensé aux problèmes de complexité après avoir posté mon message, mais n'y a-t-il pas non plus moyen de le résoudre en utilisant autre chose qu'une liste de dictionnaires ? Ton dictionnaire a apparemment un format binaire indexable de ton propre cru qui exige une phase de compilation. Dans ton moteur tu le charges en mémoire ou tu vas lire le dictionnaire sur le disque ? Peux-tu envisager une fusion-compilation de plusieurs dictionnaires (à la volée en fonction d'une option) avant d'entamer l'analyse proprement dite ?

            Je pose ces questions car, au-delà des néologismes et autres bizarreries, se joue la possibilité pour l'utilisateur de personnaliser son dictionnaire en fonction de ses besoins.

            L’autre problème est culturel. Vouloir refuser « les néologismes et autres bizarreries », c’est une chose; se mettre d’accord sur la place du curseur sur ces questions en est une autre. Les gens sont très divisés sur l’acceptable et l’inacceptable… Il suffit de voir tout le barouf sur “ognon”… “Ognon”, c’est un sacrilège. “Fake news”, non. Ou l’inverse. Ça dépend des personnes.

            Je prends un exemple. De nos jours, presque tout le monde ou presque écrit “décrédibiliser”… Pourtant, il existait un mot plus court que tout le monde semble avoir oublié en quelques années: “discréditer”. À mes yeux, “décrédibiliser” est néologisme superflu. Mais ça a fini par rentrer dans les dictionnaires. Ai-je eu tort de céder?

            D'où mes questions sur la possibilité d'intégrer la gestion de plusieurs dictionnaires, et les adaptations nécessaires à apporter au code. Pour l'instant, tu te retrouves à devoir arbitrer un consensus pour tous les utilisateurs, là où avec la gestion de dictionnaires multiples chacun arbitrera pour lui-même car, comme tu le dis, sur ces questions « ça dépend des personnes ».

            Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

            • [^] # Re: Super boulot !

              Posté par . Évalué à 6 (+4/-0).

              Dans ton moteur tu le charges en mémoire ou tu vas lire le dictionnaire sur le disque ?

              Le fichier est lu et mis en mémoire. Ce sont des données figées. Le graphe de mots est une structure binaire parcourue avec des opérateurs logiques.

              Peux-tu envisager une fusion-compilation de plusieurs dictionnaires (à la volée en fonction d'une option) avant d'entamer l'analyse proprement dite ?

              Avec du temps, tout est envisageable. Pour l’instant, la compilation des données se fait à la création de l’extension, et je le fais uniquement lors des mises à jour du dictionnaire. Ça prend une minute sur ma machine. Donc, oui, on pourrait fusionner des dictionnaires, s’ils suivent le schéma suivant:

              flexion lemme étiquettes

              Il faut que les étiquettes concordent, sous peine d’égarer le correcteur grammatical. Il ne faut pas fusionner n’importe quoi, comme le dico français et anglais. Les étiquettes ne sont différentes.

              se joue la possibilité pour l'utilisateur de personnaliser son dictionnaire en fonction de ses besoins

              Oui, ça fait partie des buts à long terme. Si tu as lu la campagne de financement, tu as dû voir qu’il y est fait mention de pouvoir mieux gérer le lexique. Il est vrai que je n’ai pas parlé de personnalisation de son dico, j’aurais pu, j’aurais peut-être dû, mais j’ai préféré éviter de trop promettre. Je n’y ai pas beaucoup réfléchi en fait.

              Pour l’instant, c’est quand même possible, mais il faut que tu récupères les sources, tu édites le fichier French.lex dans le dossier lexicons, tu ajoutes ce que tu veux et tu recompiles. La compilation est rapide. En quelques minutes, voire moins, c’est plié.

              la gestion de dictionnaires multiples chacun arbitrera pour lui-même car, comme tu le dis, sur ces questions « ça dépend des personnes ».

              Oui, c’est une idée que j’aurais dû creuser. Je vais y réfléchir. Bizarrement, j’avais classé la personnalisation dans les idées logistiques à remettre à beaucoup plus tard, mais ça mérite que je pèse à nouveau la question…

        • [^] # Re: Super boulot !

          Posté par . Évalué à 3 (+2/-0).

          Concernant un dictionnaire alternatif, est-il possible d'ajouter des mots au dictionnaire d'Open Office ? C'est-à-dire un dictionnaire personnel avec les mots spécifiques à notre domaine d'activité.

          Cette signature est publiée sous licence WTFPL

      • [^] # Re: Super boulot !

        Posté par (page perso) . Évalué à 6 (+4/-0).

        Si la version de base est écrite en Python, pour le (les) version JavaScript est-ce que tu ne gagnerais pas du temps à utiliser brython au moins pour le moteur et à ne faire que les interfaces ?

        • [^] # Re: Super boulot !

          Posté par . Évalué à 3 (+1/-0). Dernière modification le 12/06/17 à 08:41.

          Je ne connaissais pas Brython, donc je n’ai pas d’avis sur la question pour l’instant. :)

          J’ai essayé l’éditeur en ligne et je ne comprends pas ce que je lis.
          Le code que j’exécute avec [Exécuter], il est lancé avec l’interpréteur Python ou JavaScript?

          Quand je clique sur [> JavaScript], ça me renvoie systématiquement une erreur.

          Par ailleurs, qu’en est-il des performances? Quelle la vitesse par rapport au script Python originel?

          Grammalecte sollicite beaucoup de ressources, et s’exécute dans un processus séparé pour ne pas figer le navigateur.

      • [^] # Re: Super boulot !

        Posté par . Évalué à 3 (+2/-0).

        Malheureusement, les dictionnaires n’acceptent que 2 possibilités: un mot est présent ou absent. Bref, c’est compliqué, et même si c’était faisable, ce serait un travail de titan.

        En ayant plusieurs dictionnaires, et en n'en chargeant qu'un sous-ensemble, cela ne permettrait-il pas de résoudre ce problème ? (par exemple un dico général, un dico web, un dico nom propre, un dico technique, …)

        bépo powered

  • # Javascript

    Posté par (page perso) . Évalué à 9 (+7/-0).

    Je suis en train, pour ma boite, de reconstruire une grammaire JS/ES6 pour des fins d'analyse du code, et je comprend de quoi tu parles quand tu évoques tes difficultés avec JS.
    Pour avoir fait ce travail de reconstruction grammatical sur d'autres langages, j'ai jamais vu une grammaire aussi foireuse : bourré d'exceptions, des expressions qui deviennent des statements, et vice-versa…

    JS est un langage puissant, mais vraiment trop laxiste : on peut vite faire n'importe quoi.
    Quand à typer correctement ce qu'on code, bon courage…

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

    • [^] # Re: Javascript

      Posté par (page perso) . Évalué à 10 (+11/-0).

      j'ai jamais vu une grammaire aussi foireuse : bourré d'exceptions, des expressions qui deviennent des statements, et vice-versa…

      À un moment j'ai cru que tu parlais du français :)

  • # synergie pour (notamment) étiquetage sémantique

    Posté par . Évalué à 3 (+2/-0).

    Bravo pour ce travail très impressionnant, je vais volontiers participer à la campagne !

    Est-ce que tu as déjà des synergies avec le Wiktionnaire ?
    Je pense par exemple à ton étiquetage sémantique qui doit être assez fourni dans ce projet (bien que cela nécessite un petit peu de reformatage).

    Je te recontacterai certainement sur dicollecte, ton calcul d'indice de fréquence m'intéresse pour un projet personnel (liste de fréquence des mots d'Opensubtitle).

    A bientôt

    • [^] # Re: synergie pour (notamment) étiquetage sémantique

      Posté par . Évalué à 6 (+5/-0).

      Wiktionnaire fait partie des dictionnaires de référence qu’on consulte souvent, mais nous n’avons pas de synergie. Malheureusement, leur formatage ne permet guère une récupération utile et nos étiquettes diffèrent, ainsi que notre politique d’intégration. Encore que pour les étiquettes sémantiques, je n’ai pas essayé.

      ton calcul d'indice de fréquence m'intéresse pour un projet personnel

      OK, je viens de corriger un bug de longue date sur ce point.
      Cela dit, nos données de calcul souffrent de lacunes:
      — Google Books et Wikisource ne contiennent pas les textes les plus récents,
      — Wikipédia contient des mots plus récents, mais peu de vocabulaire oral.

      Dans les deux cas, les données sont tellement massives que je tronque les résultats en équeutant la longue traîne pour la taille des fichiers soit raisonnable (malgré cela, ces fichiers de données pèsent plus de 90 % du projet Grammalecte).

      • [^] # Re: synergie pour (notamment) étiquetage sémantique

        Posté par . Évalué à 7 (+6/-0).

        Concernant le formatage du Wiktionnaire, cela risque de change à moyen terme. L'idée serait de se rapprocher d'une base de donnée (avec tous ses avantages) : https://www.wikidata.org/wiki/Wikidata:Wiktionary/fr

      • [^] # Re: synergie pour (notamment) étiquetage sémantique

        Posté par . Évalué à 5 (+4/-0).

        L’extraction de données depuis le Wiktionnaire n'est pas aisée, mais des gens travaillent là dessus et construisent une base de donnée RDF à partir d'une extraction du Wiktionnaire pour une vingtaine de langues, dont le français. Elle est bien fournie et mise à jour régulièrement. Cela pourra certainement t’intéresser malgré les différences que tu listes. Cette base de données s’appelle DBnary et à mon sens elle mérite d'être plus connue. C'est l'équivalent de DBpedia pour le Wiktionnaire pour celles et ceux qui connaissent.

        http://kaiko.getalp.org/about-dbnary/

        On peut interroger cette base directement depuis le site, en formulant des requêtes SPARQL.

        En principe, l’extraction des formes fléchies du français avec les informations grammaticales associées est faite dans DBnary. Ces informations ne sont peut-être pas dans la base de données principale parce que ces données sont grosses et ça ralentit beaucoup l'extraction et ça demande plus de mémoire. Si c'est le cas, il est normalement possible de recréer la base avec la bonne option activée. N'hésite pas à contacter cette équipe si tu as des remarques ou des besoins spécifiques.

        Sinon, dans la dépêche :

        « n’est‐ce pa ? » → « pas »

        « Ce point fut plus facile que je ne le pensais, tout simplement parce que la documentation de Firefox et celle Thunderbird, quoique cette dernière soit en déshérence, sont mieux tenues et complètes que celle pour LibreOffice » → « plus complètes » ?

        Bel écrit en tout cas, c‘est très intéressant.

        • [^] # Re: synergie pour (notamment) étiquetage sémantique

          Posté par . Évalué à 2 (+1/-0).

          Merci pour l’info.

          « n’est‐ce pa ? » → « pas »

          Je plaide l’innocence. Le mot est complet dans mon brouillon. En revanche, comme j’ai tendance à ne pas forcément mettre d’espace avant les ponctuations sur les écrits destinés au Web, je pense qu’un des correcteurs a effacé le “s” par mégarde en ajoutant l’espace.

          mieux tenues et complètes que celle pour LibreOffice » → « plus complètes » ?

          Oui, en effet. Cette fois, l’erreur vient bien de moi.

          • [^] # Re: synergie pour (notamment) étiquetage sémantique

            Posté par (page perso) . Évalué à 4 (+1/-0).

            Corrigé, merci.

            • [^] # Re: synergie pour (notamment) étiquetage sémantique

              Posté par . Évalué à 2 (+0/-0).

              Une autre petite coquille:

              va prendre une place une place plus importante

              Répétition superflue de "une place".

              Il y a tout de même peu d'erreurs vu la taille du texte. Bravo !

              Et un énorme Bravo ! pour ton travail sur Grammalecte et Dicollecte. Tu t'es attaqué à un travail difficile et parfois très subjectif. J'admire ta ténacité !

              (Hum j'ai toujours prononcé "tenacité", mais le correcteur orthographique me propose "ténacité". C'est grave docteur?)

              • [^] # Re: synergie pour (notamment) étiquetage sémantique

                Posté par . Évalué à 3 (+1/-0).

                Et sinon je ne peux que t'encourager à rajouter des tests unitaires à chaque fois que tu touches le code, aussi bien pour les cas positifs (oui il faut suggérer une correction) que les cas négatifs (il faut éviter de suggérer cette correction dans ce cas particulier). Les tests unitaires te protègent de la régression à tout jamais!
                Les grosses zones d'ombre, sont les cas auxquels tu n'as pas pensé en écrivant la règle. Ça arrive plus souvent qu'on ne le voudrait. Lorsque tu tombes sur un de ces cas, tu l'ajoutes à ta suite de tests et hop! C'est fini!

                • [^] # Re: synergie pour (notamment) étiquetage sémantique

                  Posté par . Évalué à 2 (+0/-0).

                  Je suis d’accord.

                  Les tests unitaires ont beaucoup apporté à la stabilité du correcteur. Tout faux positif corrigé est l’objet d’un nouveau test pour l’empêcher de revenir (c’est ce qui est le plus testé). Toutes les règles de contrôle sont testées au moins une fois (mais c’est encore perfectible).

                  Ce qui est encore très lacunaire, ce sont les tests de suggestions. C’est encore assez mouvant et sujet à amélioration, donc chaque changement provoque des réactions sur les tests faits. Du coup, en attendant que les suggestions soient plus stables, c’est peu testé.

  • # Dictionnaire hunspell

    Posté par (page perso) . Évalué à 3 (+1/-0). Dernière modification le 08/06/17 à 15:13.

    Merci beaucoup pour la dépêche qui m'a fait replonger dans le monde des dictionnaires.

    Je découvre à cette occasion que le dictionnaire hunspell fourni par dicolecte a perdu de sa consistance à l'occasion de la version 1.6

    Voici par exemple la sortie de l'analyse du mot glace avec le dictionnaire 5.2 :

    $ hunspell -m -d  fr
    glace
    glace  st:glace po:nom is:fem is:sg
    glace  st:glacer po:v1_it_q_?? po:impe po:2sg
    glace  st:glacer po:v1_it_q_?? po:ipre po:spre po:1sg po:3sg

    En décodant les termes, on découvre que glace peut s'employer comme :

    • Un nom féminin singulier
    • Un verbe conjugué avec la 2nde personne du singulier au présent de l'impératif
    • Un verbe conjugué avec la 1ère ou la 3ème personne du singulier au présent de l'indicatif

    Avec la nouvelle version du dictionnaire nous avons :

    $ hunspell -m -d  fr-toutesvariantes
    glace
    glace  st:glace
    glace  st:glacer fl:a0
    • Un nom
    • Un verbe

    C'est une perte d'information ! Est-ce que vous êtes lié avec les décisions de dicolecte ? (vous partagez le domaine…)

    • [^] # Re: Dictionnaire hunspell

      Posté par . Évalué à 6 (+5/-0).

      Est-ce que vous êtes lié avec les décisions de dicolecte ? (vous partagez le domaine…)

      Oui, c’est moi qui gère ça.
      En effet, depuis la version 6, les dictionnaires pour Hunspell n’intègrent plus les données grammaticales, tout simplement parce que ça ne sert plus à rien pour LibreOffice, Firefox et Thunderbird.
      J’ignorais qu’il existait des gens pour se servir de ces données directement via Hunspell.

      Donc, je peux reproduire les dicos pour Hunspell avec ces étiquettes si vous le souhaitez.

      Ou vous pouvez jeter un coup d’œil à l’interface en ligne de commande de Grammalecte (cli.py).
      Avec le point d’interrogation, vous pouvez demander la nature grammaticale d’une liste de mots.
      Comme ça:
      CLI

      En plus, vous n’avez pas besoin d’apprendre les codes grammaticaux, ils sont traduits pour vous. :)

      • [^] # Re: Dictionnaire hunspell

        Posté par (page perso) . Évalué à 5 (+3/-0).

        À la lecture du post sur le forum, je comprend que ça soit une charge de travail pour toi et que tu n'ai pas décidé de maintenir tout ça (en plus si tu es seul à tenir la charge)…

        D'un autre côté, passer par hunspell permet passer par libhunspell directement avec le programme, ce qui simplifie l'utilisation du dictionnaire dans d'autres outils.

        Ce qui me gêne vraiment, c'est que la page de téléchargement du site ne propose pas de retrouver les anciennes versions, tout ce travail est perdu !

        • [^] # Re: Dictionnaire hunspell

          Posté par . Évalué à 5 (+3/-0).

          Je peux fournir le dictionnaire Hunspell avec les étiquettes grammaticales. C’est même l’option par défaut de genèse des dictionnaires. Ce n’est pas un souci.
          Je vais le faire bientôt.

      • [^] # Re: Dictionnaire hunspell

        Posté par . Évalué à 2 (+1/-0).

        Erf moi j'avais fondé ma lemmatisation sur cette information de hunspell (j'utilise Polyglot qui fournit l'étiquetage sémantique mais pas la lemmatisation) je pensais même à contribuer ça a polyglot (quand bien testé).
        Du coup ce serait mieux que je cherche la partie de code python qui fait ça dans Grammalecte ?

        Je vois que ton code n'est pas découpé en packages et j'ai l'impression que même la version javascript et python sont tous ensemble. Tu comptes un peu découper tout ça a un moment donné ? (pour favoriser la réutilisation).

  • # Un très bon retour sur le projet

    Posté par . Évalué à 6 (+5/-0).

    Merci pour avoir pris le temps d'écrire cette dépêche, elle est très instructive et c'est un beau retour de développement.

  • # Javascript et analyse de code

    Posté par . Évalué à 2 (+1/-0).

    Il me semble qu'il existe des analyseurs statiques de code pour javascript. Je ne sais pas ce que ça vaut mais c'est le genre d'outils qui est souvent pratique pour découvrir des erreurs de syntaxe et autres bizarreries dans le code. En particulier quand les outils de débogage pour le langage / l'environnement sont très faibles.

  • # Emacs et latex?

    Posté par . Évalué à 3 (+2/-0).

    Ça me semble formidable!

    Je chercherais quelque chose capable d'analyser mes cours/exercices/TP que je tape en latex sous emacs… est-ce que quelque chose de ce type existe?

    • [^] # Re: Emacs et latex?

      Posté par . Évalué à 2 (+1/-0).

      Je n’utilise pas Emacs, je n’ai pas testé le module Flycheck.
      En ce qui concerne LaTeX, que je n’utilise pas non plus, il y a pour l’instant quelques règles pouvant traiter les balises LaTeX, mais je ne sais pas si l’auteur du module Flycheck a pensé à activer l’option “latex”.

      Pour l’instant, il n’y que trois règles. Tout ce qui correspond à quelques motifs est effacé en interne pour la correction. Les motifs sont :

      \\[a-z]+
      
      \\[,;/\\]
      
      \{(?:abstract|align|cases|center|description|enumerate|equation|figure|flush(?:left|right)|gather|minipage|multline|quot(?:ation|e)|SaveVerbatim|table|tabular|thebibliography|[vV]erbatim|verse|wrapfigure)\}
      

      Il faudrait qu’un utilisateur de LaTeX se penche sur la question.

    • [^] # Re: Emacs et latex?

      Posté par . Évalué à 2 (+1/-0).

      OpenDetex permet de charger un projet LaTeX et de retirer toutes les commandes même si ce n'est pas toujours très heureux (avec \label, \ref ou \hyphenation par exemple). Ça permet d'avoir un fichier texte à passer à Grammalecte.

      @Olivier : je n'ai pas trouvé d'option en ligne de commande pour passer un dictionnaire local, comme avec Aspell par exemple. Est-ce possible ? Ce serait pour éviter de faire tilter le correcteur orthographique sur chaque mot de jargon, nom de logiciel, acronyme technologique, etc.

      • [^] # Re: Emacs et latex?

        Posté par . Évalué à 2 (+0/-0).

        Non, pour l’instant, ce n’est pas possible. Grammalecte utilise un format de dictionnaire binaire indexable de son propre cru. Il faudrait donc recompiler votre dictionnaire selon le format de Grammalecte, et prévoir d’ajouter une option pour adjoindre un dictionnaire annexe.

      • [^] # Re: Emacs et latex?

        Posté par . Évalué à 0 (+0/-0).

        J'imagine que c'est ce que TexStudio doit utiliser, mais je me trompe peut-être. La correction orthographique fonctionne bien. Je n'utilise pas de correction grammaticale par contre, donc je ne saurais vous en dire plus.

        C'est peut-être une piste à creuser.

    • [^] # Re: Emacs et latex?

      Posté par . Évalué à 1 (+1/-0).

      J'utilise parfois le module Grammalecte adapté pour flycheck (là bas) et ça fonctionne assez bien sur emacs avec org-mode (il indique juste les erreurs mais ne les corrige pas).
      Malheureusement ça ne fonctionne pas avec Auctex.

      Pour le moment, pour corriger mes documents latex je me passe du correcteur grammatical et je me contente simplement de hunspell, soit via flyspell pour une correction en cours de frappe, soit au coup par coup sur une zone sélectionnée. Ça déblaie déjà pas mal, en particulier les fautes de frappe, mais effectivement pour la grammaire ça manque.

  • # Super projet

    Posté par (page perso) . Évalué à 6 (+3/-0).

    Merci pour ce correcteur (et pour cette dépêche). J'ai testé sur divers journaux LinuxFr et ça marche vraiment bien.
    Ça laisse quand même passer des trucs. Par exemple dans ce journal la phrase "On peut se dire que c'est anti-constitutionnelle" n'est pas jugée fautive.

    • [^] # Re: Super projet

      Posté par . Évalué à 5 (+4/-0).

      Le mot “anti-constitutionnelle” n’est pas dans le dictionnaire. Il l’est seulement dans sa forme soudée. Inexistant, donc non étiqueté, donc pas de grammaire vérifiable. Avec la graphie soudée, ça marche. Quant au dictionnaire orthographique, il ne signale rien par prudence: si les deux mots d’un mot composé existent, il ne signale rien lui non plus.

  • # bien que + subjonctif ?

    Posté par (page perso) . Évalué à 4 (+2/-0).

    bien que j’avais

    bien que j'eusse, plutôt non ? (l'ami de Mickey), subjonctif imparfait que l'on retrouve sur le parfait http://sensmotdire.gnunux.info/avoir.html

    grammalecte le signale, j'imagine ? (faudrait tester)

    • [^] # Re: bien que + subjonctif ?

      Posté par . Évalué à 7 (+5/-0).

      Oui, exact.

      Et étonnant non, Grammalecte ne signale rien sur ce point. Je pensais qu’il y avait une règle pour ça, mais non. Je viens de vérifier dans les archives si j’ai un jour créé une règle concernant ce point et l’ai supprimée par la suite, mais non. Il me semblait pourtant l’avoir faite… (Parfois, je suis persuadé d’avoir fait une chose qui n’a pas été faite.)

      Ou bien je l’ai faite, puis je l’ai supprimée aussitôt. Car il faut quand même être prudent, on peut aussi écrire aussi:

      Je me doute bien que vous avez trouvé la réponse.
      Nous pensions bien qu’il y avait une entourloupe derrière cette affaire.
      Je sens bien que je suis couché et que je dors… (Le Horla)
      Que va-t-il faire de son bien ? Bien qu’il a hérité de son oncle, notez bien.
      Il sait bien qu’il reviendra.

      Je m’y mets.

  • # très utile

    Posté par . Évalué à 3 (+4/-1).

    Merci pour m'avoir fait découvrir ce projet, je vais en faire sa publicité maintenant.

    python ou javascript, difficile question, j'aimerais vraiment qu'un projet comme brython décolle enfin.

  • # Bravo !

    Posté par . Évalué à 5 (+5/-0).

    Chapeau bas ! C'est un sacré boulot de créer un correcteur grammatical français. Ce n'est pas pour rien qu'ils sont rares et vendus si cher.

    Félicitation pour le boulot accompli.

  • # Bravo !

    Posté par (page perso) . Évalué à 4 (+3/-0).

    Ce projet est formidable. Ancien lettré passé au code, je perçois la complexité de ton travail et la richesse des connaissances qu'il exige. Je suis pleinement admiratif. Mille fois bravo !

  • # GVim et curly underlines to highlight errors

    Posté par . Évalué à 1 (+0/-0).

    Bonjour,

    Je viens d'installer Grammalecte pour Vim et tout fonctionne bien sauf que dans GVim l'affichage ne se fait pas avec les "curly underlines" alors que si j'utilise le correcteur orthographique de Vim j'ai bien les "curly underlines".
    Une idée de où ça se configure ?

  • # Problème d'accord

    Posté par . Évalué à 2 (+1/-0).

    Sur cette phrase Grammalecte détecte bien l'erreur d'accord

    Les tests de la version commence demain.

    Mais pas sur celle-ci

    Les tests de la version 3 commence demain.

  • # et/est

    Posté par . Évalué à 1 (+0/-0).

    Des phrases comme celles ci-dessous ne sont pas signalées par grammalecte.

    Voici une banane est une pomme.
    Je mange une banane est une pomme.

    je ne sais pas s'il est possible de faire une règle.

    • [^] # Re: et/est

      Posté par . Évalué à 3 (+1/-0).

      Une règle ne va pas suffire. :) Mais oui, il y a des cas gérables. Grammalecte a fait des progrès sur ces erreurs syntaxiques, mais le chemin est encore long.

  • # accord

    Posté par . Évalué à 1 (+1/-0).

    s/les formes féminines et masculines/les formes féminine et masculine/

    Je suppose que ce genre d'accord fautif ne peut pas être détecté par Grammalecte, puisqu'il ne sait pas qu'il n'y a qu'une seule "forme masculine" et une seule "forme féminine".

    Idem pour "les gouvernements espagnols et mexicains ont signé le traité". Je suppose qu'il ne voit pas l'accord fautif (les formes correctes étant "espagnol" et "mexicain"). Il est vrai que c'est compliqué puisque on écrit :

    "Les pays ibériques et scandinaves ont signé le traité."

    et

    "Les gouvernements espagnol et mexicain ont signé le traité."

    L'accord dépend fortement du contexte (une seule forme masculine, un seul gouvernement espagnol, plusieurs pays scandinaves).

    • [^] # Re: accord

      Posté par . Évalué à 3 (+1/-0).

      Oui, Grammalecte n’essaie même pas encore de corriger ce genre de choses.

  • # homophones

    Posté par . Évalué à 1 (+1/-0).

    J'ai jeté un coup d'œil à la page http://212.47.254.152:8080/artifact/049b9b49d362389e . J'ai compris de quoi il s'agissait en regardant les premières lignes, et je me suis dit que cette page devait être gigantesque, étant donné le nombre d'homophones de la langue française que j'imaginais, et en fait, non, pas tant que ça… Pourtant, il me semble que la liste est quasi complète (je ne sais pas comment on contribue, mais je suggère ici l'ajout de "lissée / lycée / etc.").

    • [^] # Re: homophones

      Posté par . Évalué à 4 (+2/-0).

      je suggère ici l'ajout de "lissée / lycée / etc."

      Bien vu. Corrigé.

      il me semble que la liste est quasi complète

      C’est ce que je me dis souvent, mais je trouve régulièrement de nouvelles homophonies.

      • [^] # Re: homophones

        Posté par (page perso) . Évalué à 3 (+0/-0). Dernière modification le 11/06/17 à 11:46.

        Question naïve : comparer la phonétique (des mots en provenance du Wiktionary par exemple ne serait pas suffisant pour collecter les homophonies ? (phonétique exacte ou « approchée » vu que par exemple \ɛ̃\ ou \œ̃\ sont parfois confondus)

        • [^] # Re: homophones

          Posté par . Évalué à 2 (+0/-0).

          La proximité phonétique n’est pas requise.

          Wiktionary

          Le problème des wikis, c’est que leur format n’est vraiment pas commode à exploiter. Si quelqu’un s’y colle, je suis preneur, c’est peut-être plus simple maintenant qu’autrefois. Mais oui, idéalement, ça pourrait servir.

      • [^] # Re: homophones

        Posté par . Évalué à 1 (+1/-0).

        Autres suggestions :

        • ajouter "poins" (verbe poindre) à "point points poing poings"
        • mission / missions (verbe mettre)

        Dans cette liste, il n'y a pas de distinction entre é et è ? poignée (pwaɲe) / poignet (pwaɲɛ)

        • [^] # Re: homophones

          Posté par . Évalué à 2 (+0/-0).

          Merci pour les suggestions.

          Dans cette liste, il n'y a pas de distinction entre é et è ? poignée (pwaɲe) / poignet (pwaɲɛ)

          Non, on fait dans l’homophonie grossière. Les accents sont parfois prononcés différemment d’une région à l’autre. On associe même rail avec raye. J’envisage même d’y mettre des graphies semblables, comme darde et dard.

          • [^] # Re: homophones

            Posté par . Évalué à 1 (+1/-0).

            • très / trait

            • épi / épies / épient / épie

            • [^] # Re: homophones

              Posté par . Évalué à 2 (+0/-0).

              Fichier mis à jour. Merci.

              • [^] # Re: homophones

                Posté par . Évalué à 1 (+1/-0).

                Bonsoir,

                J'aimerai participer à l'ajout d'homophone dans phonet_simil.txt… mais comment cela fonctionne-t-il ??? un petit texte explicatif ? un lien ?

                geai geais jet jets j'ai j'aie
                filaire filèrent
                hun un
                hune une
                pommier paumier
                pomme paume
                chaume chôme
                cache cash
                mot mho (ancienne unité de mesure, inverse de l'ohm)
                minet miné
                chut chute
                rom rhum Rome
                faine fêne
                ces ses sais sait saie
                ballade balade
                amour (masculin) amours (féminin)

                • [^] # Re: homophones

                  Posté par . Évalué à 2 (+0/-0).

                  Merci.

                  comment cela fonctionne-t-il ??? un petit texte explicatif ? un lien ?

                  Dans ce fichier, on liste sur une ligne les mots qui ont une prononciation similaire, mais seulement ceux qui ont des lemmes différents. Par exemple, inutile de lister ronger, rongeait, rongé, rongez, etc. puisque ce sont tous des mots dérivés du lemme ronger.

                  Cette liste est utile pour le moteur de suggestions du correcteur.

                  Il n’est pas nécessaire de comprendre comment ça fonctionne en fait. Par la suite, lors de la compilation des données, cette liste est rassemblée en un dictionnaire qui pointe vers une liste d’ensembles, et les étiquettes grammaticales sont rassemblées pour qu’on puisse filtrer à la demande.

  • # un des

    Posté par . Évalué à 1 (+1/-0).

    Je suppose que Grammalecte a été utilisé pour vérifier la grammaire de l'article :) Si c'est le cas, il reste une forme grammaticale qui n'a pas été corrigée : "un des [nom] qui + [verbe au pluriel]".

    Elle est d'abord écrite correctement : "un des points qui ont le plus progressé"

    Plus loin, dans la phrase :

    "un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris"

    l'accord est fait dans un premier temps ("auxquels") puis le verbe "avoir" est resté au singulier alors qu'il devrait être au pluriel.

    Et pour finir :

    "L’un des problèmes qui m’ennuie assez" ("qui m'ennuient").

    Je ne sais pas si ce genre de choses est facile à détecter pour Grammalecte.

    • [^] # Re: un des

      Posté par (page perso) . Évalué à 6 (+3/-0).

      Grammalecte a été utilisé en modération en tout cas (je ne sais pas s'il a été utilisé en rédaction, mais vu l'auteur on peut le supposer).

      Quelques pointeurs sur la question "un des [nom] qui + verbe" :

      • Office québécois de la langue française «  l’accord du verbe se fait au singulier ou au pluriel, selon le sens. L’accord se fait le plus souvent au pluriel si on veut insister sur la pluralité, ce qui est le cas le plus fréquent; qui remplace alors le nom ou le pronom pluriel qui le précède. »
      • un blog « Il est à noter que l'usage privilégie (abusivement) le pluriel, alors que c'est le sens qui doit régir l'accord, comme le confirment dans une belle unanimité Bescherelle, Girodet, Hanse et Thomas. »
      • etudes-litteraires.com « Lorsqu’il s’agit d’accorder un verbe ou un participe passé avec 'un des, un de', on doit distinguer suivant le sens ou l’intention, bien que l’accord se fasse usuellement avec le pluriel »
      • question-orthographe.fr : « L’accord se fait selon le sens ou l’intention au pluriel ou au singulier , mais c’est plutôt le pluriel qui l’emporte. »
      • [^] # Re: un des

        Posté par . Évalué à 0 (+0/-0).

        Il me semble que, dans la phrase "un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris", les verbes "réfléchir" et "avoir", séparés par une conjonction de coordination, ont respectivement le même complément et le même sujet ("points" ou "un des points", au choix), et s'accordent donc soit tous les deux au pluriel, soit tous les deux au singulier, mais je peux me tromper…

        Je pense que, là, nous avons perdu Grammalecte…

        • [^] # Re: un des

          Posté par . Évalué à 3 (+1/-0). Dernière modification le 11/06/17 à 13:54.

          Dans tous les cas, réfléchi reste au singulier, parce que un des points n’est pas COD mais COI. On réfléchit à quelque chose. On écrirait pareillement: ces points auxquels j’ai réfléchi.

          Et c’est bien un seul point qui m’a surpris. Ici, il n’y a ni COD ni COI. Un des points est le sujet. Surprendre doit ici s’accorder avec “me”.

          En revanche, il faudrait écrire auquel à la place de auxquels.

          • [^] # Re: un des

            Posté par . Évalué à 1 (+1/-0).

            Désolé, je me suis mal exprimé : je parlais de l'accord de "auxquels"/"auquel" et du verbe avoir "a"/"ont".

            Et je persiste à dire que la seule forme grammaticalement correcte est :

            "L’un des points auxquels je n’avais pas beaucoup réfléchi et qui m’ont le plus surpris"

            En effet, si on écrit, pour simplifier, "un des points qui m'[avoir] surpris est le fait de…", le sujet du verbe "avoir" est "des points" (on écrit donc "ont") et le sujet du verbe "être" est "un des points qui m'ont surpris" (singulier). Le pronom "qui" se rapportent à "points".

            Idem pour :"L’un des problèmes qui m’[ennuyer] est le fait de …" ; le sujet du verbe "ennuyer" est "des problèmes" (donc on écrit "ennuient") et le sujet de "est" est "L'un des problèmes qui m'ennuient" (singulier). Le pronom "qui" se rapportent à "problèmes".

            Je comprends qu'on puisse écrire : "C'est un des élèves qui est venu" ou "C'est un des élèves qui sont venus". Dans le premier cas, on imagine qu'il y a des professeurs et des élèves, et que, parmi le groupe formé des élèves et des professeurs, c'est un élève qui est venu ("un des élèves"). Dans la deuxième phrase, il y a un groupe d'élèves et parmi ces élèves, on parle de celui qui est venu parmi tous les élèves (le pronom "qui" se rapporte à "élèves"). D'autre part, je vois mal comment on peut défendre la forme "Pierre est un des élèves qui est venu", qui est semblable aux formes que vous défendez.

            • [^] # Re: un des

              Posté par . Évalué à 4 (+2/-0).

              En effet, si on écrit, pour simplifier, "un des points qui m'[avoir] surpris est le fait de…", le sujet du verbe "avoir" est "des points" (on écrit donc "ont") et le sujet du verbe "être" est "un des points qui m'ont surpris" (singulier). Le pronom "qui" se rapportent à "points".

              Ça peut aussi être “un”, comme l’attestent les liens de Benoît. Dans le premier, vous avez l’exemple: « un des chercheurs qui a été honoré pour ses travaux »…

              je vois mal comment on peut défendre la forme "Pierre est un des élèves qui est venu", qui est semblable aux formes que vous défendez.

              J’ai écrit : « L’un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris ». Ça ne me paraît pas semblable à la forme que vous évoquez. Il n’y a pas de « Pierre est » ou quoi que ce soit de similaire dans ma phrase.

              Ce que j’ai voulu dire exactement, c’est : « le point, parmi tous ceux que j’ai dû traiter, auquel je n’avais pas beaucoup réfléchi et qui m’a le plus surpris, c’est blablabla. »

              • [^] # Re: un des

                Posté par . Évalué à 1 (+1/-0).

                Il me semble que, dans l'immense majorité des cas (pour ne pas dire toujours), quand une personne dit : "La sécurité est un des thèmes qui a été abordé", elle est influencée par la présence de "un", singulier, et accorde le verbe au singulier, alors que le pronom "qui" se rapporte à "des thèmes". On devrait donc dire : "La sécurité est un des thèmes qui ont été abordés".

                Quand je dis : le groupe A = "les thèmes", alors un élément du groupe A est "un des thèmes".

                Quand je dis : le groupe B = "les thèmes qui ont été abordés", alors, sur la même construction, un élément du groupe B est "un des thèmes qui ont été abordés".

                Je ne pense pas que l'argument "j'ai utilisé le singulier parce que j'ai voulu parler de ce thème en particulier" tienne la route, sinon on écrirait simplement "la sécurité est un thème qui a été abordé" ou, à la limite : "La sécurité est un des thèmes, qui a été abordé" (notez la virgule), qui me parait maladroit ; on dirait plutôt "La sécurité est un des thèmes et il a été abordé" ou quelque chose de proche.

                Dans l'exemple limite : "La sécurité est un des thèmes, qui a été abordé" (apposition ?), la virgule change tout. "Qui" se rapporte cette fois-ci a "un des thèmes" (singulier). Sans la virgule, dans la phrase "La sécurité est un des thèmes qui [avoir été abordé]", le pronom "qui" se rapporte à "des thèmes" et se conjugue au pluriel ("La sécurité est un des thèmes qui ont été abordés").

                Voici ce qu'en disait Claude Hagège

                • [^] # Re: un des

                  Posté par . Évalué à 3 (+1/-0). Dernière modification le 13/06/17 à 01:41.

                  Voici ce qu’en dit le Bon Usage de Grevisse (la plus grosse référence en matière de grammaire). Je résume :
                  — l’accord au singulier est possible si le sens permet qu’on remplace “un” par “celui” (c’est bien ce sens que j’ai voulu donné à ma phrase) ;
                  — il est cependant remarqué que, même sans ce sens logique, l’accord au singulier est souvent fait (citations à l’appui) ;
                  — il est également mentionné que la construction au singulier était courante jusqu’au XVIIIᵉ siècle (et au-delà).

                  Voici ce qu'en disait Claude Hagège

                  Comme il le dit lui-même : « les évolutions se font plus en fonction des sens plus que des formes ».

                  Dans ses exemples, il mélange deux cas : « un des [noms] qui » et « un de ceux qui ». Deux cas à mes yeux différents, mais qu’importe, le Grevisse signale aussi qu’il y a des exemples d’accord au singulier avec « un de ceux qui ».

      • [^] # Re: un des

        Posté par . Évalué à 3 (+1/-0). Dernière modification le 12/06/17 à 09:59.

        Liens intéressants mais aucun ne fournit, ou plutôt n'explique, le principe qui va régir la bonne formation grammaticale des phrases avec ce type de construction.

        Tentons la chose ! L'article « de » prend deux groupes (ou syntagmes) nominaux et forme un groupe nominal; exemples : la sœur de ma mère, un de ceux j'ai vu, le premier de la liste… On peut le voir comme un opérateur binaire infixe, et le groupe nominal produit hérite du genre et du nombre du paramètre de gauche; féminin singulier, masculin singulier et masculin singulier pour les exemples précédents.

        Viens maintenant la question de l'analyse d'une telle construction lorsqu'apparaît une subordonnée relative : à qui se réfère le pronom relatif « qui » ou « que » ? Il peut aussi bien se référer au groupe complet « x de y » que faire partie de la construction du groupe nominal qui constitue l'argument de droite de l'article « de ».

        Prenons, en exemple, la phrase du journal qui à soulever la question : « un des points auxquels je n’avais pas beaucoup réfléchi et qui m’a le plus surpris »; elle est grammaticalement erronée, mais peut donner naissance à celle-ci en supprimant le « et » :

        • un des (points auxquels je n’avais pas beaucoup réfléchi) qui m’a le plus surpris

        Ici, le groupe « points auxquels je n'avais pas beaucoup réfléchi » est bien formé (le verbe ne s'accorde pas, le syntagme « points » étant un COI). Ce groupe étant au pluriel l'article est mis à sa forme plurielle ( « de » devient « des »). Ensuite le sujet de l'auxiliaire avoir est le pronom relatif « qui » qui se réfère au syntagme nominal complet formé par la construction « un des … » : il est donc masculin singulier, et l'auxiliaire est bien conjugué.

        En revanche, la proposition de lecteur devrait se décomposer ainsi :

        • un des (points auxquels je n’avais pas beaucoup réfléchis et qui m’ont le plus surpris)

        ici, la subordonnée relative fait partie de la construction du syntagme nominal qui joue le rôle du second argument de l'article « de ». Le pronom relatif « qui » se réfère aux « points », le sujet est donc pluriel et l'auxiliaire est bien conjugué.

        Voilà les raisons pour lesquelles l'accord dépendra de ce que veut exprimer l'auteur. Selon le contexte dans lequel est employé la construction, il y a deux sujets possibles dont le choix dépend de la pensée à exprimer. D'où les trois constructions possibles suivantes :

        • un des (points auxquels je n’avais pas beaucoup réfléchis et qui m’ont le plus surpris)
        • un des (points auxquels je n’avais pas beaucoup réfléchi) qui m’a le plus surpris
        • (un des points) auquel je n’avais pas beaucoup réfléchi et qui m’a le plus surpris

        il semblerait que ce soit la dernière que voulait exprimer Olivier.

        Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

    • [^] # Re: un des

      Posté par . Évalué à 4 (+2/-0).

      un des [nom] qui + [verbe au pluriel].

      En fait, on accorde selon le sens désiré.
      Il est systématique avec un de ceux qui [verbe au pluriel] et Grammalecte analyse ces cas-là.

      Je ne sais pas si ce genre de choses est facile à détecter pour Grammalecte.

      Malheureusement, on ne peut connaître le sens que veulent faire passer les gens.

      L’un des problèmes qui m’ennuie assez

      Ici, on pourrait effectivement croire qu’il y a une erreur, mais en fait, j’euphémise… de tous les problèmes, celui-ci m’ennuie beaucoup.

      • [^] # Re: un des

        Posté par . Évalué à 1 (+1/-0).

        Encore une question sur les capacités de Grammalecte (promis, je l'installe dès demain…). Apparemment, dans l'article, il a laissé passer :

        "Si la première campagne vous a satisfait" ("satisfaits")

        L'accord du participe passé est-il difficile à traiter, en général ? surtout lorsque le complément précède le verbe… J'imagine que Grammalecte peut difficilement savoir si le pronom "vous" correspond au pluriel ou au singulier. On peut par exemple tout aussi bien écrire : "Monsieur, si la première campagne vous a satisfait, etc." et : "Messieurs, si la première campagne vous a satisfaits, etc."

        • [^] # Re: un des

          Posté par . Évalué à 4 (+2/-0).

          Si la première campagne vous a satisfait

          Cette fois, il y a effectivement une erreur. Il faut mettre un “s”.
          Et vous avez raison, impossible de savoir qui est vous, si c’est un vous de politesse ou non. Le correcteur ignore complètement ce cas-là.

          En revanche, Grammalecte détectera l’erreur si vous écrivez: « Si la première campagne les a satisfait. »

          L'accord du participe passé est-il difficile à traiter, en général ?

          Oui, difficile. Par exemple, pour les COD qui précèdent le «que» d’une proposition.

          Avec, par exemple, les verbes que j’ai conjugué, Grammalecte voit l’erreur, mais si le COD est placé bien plus loin, Grammalecte va se tromper ou ne rien voir.

          Par exemple, avec les ennemis de la république que nous avons enfermés, Grammalecte se trompe: il veut enfermer la république.

  • # Grammalecte pour Word ? Français littéraire ou "web" ?

    Posté par . Évalué à 4 (+4/-0). Dernière modification le 14/06/17 à 13:31.

    Merci beaucoup infiniment. À la fois pour ce travail titanesque (ou “sysiphien” ? ;-)) et pour cette dépêche, passionnante, à l’instar de ta dépêche précédente. J’avais participé à ta première campagne, non pour l’extension Firefox (je n’utilise pas ce dernier), mais pour soutenir ton travail ; et aussi pour l’indépendance du moteur, dégagé de l’environnement de LibreOffice (même si c’est là que je l’utilise). Ce moteur peut-il servir facilement à générer d’autres extensions ? Penses-tu te pencher dans le futur sur la création d’une extension pour Word ? En effet, j’aimerais pouvoir conseiller Grammalecte aux connaissances qui utilisent cette suite, je pense d’ailleurs que Grammalecte, si disponible sous Word, aurait un impact certain dans le monde windowsien : du peu que je l’ai utilisé, j’ai vu que le correcteur de Word n’arrive pas à la cheville de ton logiciel.

    Sinon, je suis d’accord avec les intervenants qui demandent deux niveaux de correction (littéraire et web). En effet, quand je soumets des textes à Grammalecte, ils sont censés être écrits dans un français respectant les règles en vigueur (Académie, Grévisse) et ça m’embêterait que les néologismes et les formes douteuses ne soient pas détectés. En fait, la distinction me semble assez nette : sur Libreoffice, le correcteur devrait respecter un français littéraire, et sur Firefox, un français “web”.

    De la même manière que nous avons accès dans les configurations à l’ancienne ou à la nouvelle orthographe, n’y aurait-il pas possibilité de choisir « Français étendu (avec néologismes) » ?

    • [^] # Re: Grammalecte pour Word ? Français littéraire ou "web" ?

      Posté par . Évalué à 3 (+1/-0).

      Ce moteur peut-il servir facilement à générer d’autres extensions ?

      Il faudrait faire un peu de nettoyage, mais on pourrait faire des extensions pour d’autres langues. Pas trop de boulot à faire pour Python, je pense, mais pour JavaScript, ce serait plus compliqué, attendu que rien n’est prêt pour ça.
      Enfin, il faudrait quand même écrire des règles pour ces autres langues et c’est déjà en soi beaucoup de travail.

      Penses-tu te pencher dans le futur sur la création d’une extension pour Word ?

      Non. Je ne sais même pas si on peut faire des extensions pour Word. Google n’a pas l’air de savoir de quoi je parle…

      De la même manière que nous avons accès dans les configurations à l’ancienne ou à la nouvelle orthographe, n’y aurait-il pas possibilité de choisir « Français étendu (avec néologismes) » ?

      Avec beaucoup de temps et d’argent, tout est possible. Mais il n’y déjà pas grand-monde pour travailler sur le lexique… alors…
      Avez-vous une idée du temps qu’il a fallu pour gérer la réforme, quelques milliers de graphies “seulement”?

  • # J'en connais un qui a oublié d'utilisé grammalecte

    Posté par . Évalué à 1 (+0/-0). Dernière modification le 14/06/17 à 13:52.

    Super dépêche, merci :)

    Par contre j'ai trouvé une faute, ça m'a bien fait rire : « les faux positifs sont légion*s* ».

    EDIT : En fait j'ai l'impression que grammalecte ne le détecte pas.

    bépo powered

  • # j'arrive pas sur Ulule

    Posté par . Évalué à 2 (+0/-0).

    salut, alors ça fait 10 jours que je n'arrive pas à valider mon valider mon paiement sur Ulule. Dsl ! ("vos informations bancaires n'ont pas été envoyées correctement par votre navigateur", Firefox 43, quelques extensions).

    • [^] # Re: j'arrive pas sur Ulule

      Posté par . Évalué à 3 (+1/-0).

      Moi aussi, j’ai souvent des problèmes avec mon Firefox ultra-customisé quand je veux payer quelque chose. Le mieux que j’ai trouvé, c’est d’avoir un navigateur alternatif nu pour passer ces obstacles fâcheux. (Et encore, même comme ça, il arrive que ça ne fonctionne pas…)

    • [^] # Re: j'arrive pas sur Ulule

      Posté par (page perso) . Évalué à 1 (+0/-0).

      J'ai ce problème uniquement sur Ulule : sous Firefox ça ne marche pas, il me faut systématiquement utiliser un autre navigateur (par exemple Chrome).

  • # Ressources utiles

    Posté par . Évalué à 9 (+7/-0).

    Bonjour Olivier,

    Ces derniers jours, suite à ta dépêche, j'ai fait quelques recherches pour savoir ce qui se faisait dans le monde du TALN, et je suis tombé sur le site de l'équipe sémagramme. C'est un laboratoire affilié INRIA-LORIA qui travaille sur des modèles, méthodes et outils pour l'analyse sémantique des énoncés et discours en langue naturelle, le tout basé sur la logique.

    Parmi leurs ressources, on trouve le site deep-sequoia qui contient un riche corpus de phrases en français avec annotations grammaticales sous licence LGPL-LR. Cela pourra sans doute t'être utile pour tester ton correcteur et repérer les bonnes formations qui lui échappent.

    Ils ont aussi développé un outil Grew (testable en ligne) d'analyse syntaxique de phrase en français. Sa sortie ressemble à ceci :

    ennemis

    moldus

    Comme grammalecte il semble vouloir enfermer la république, mais il gère les mots absents du lexique et identifie leur catégorie grammaticale.

    Sur le wiki dédié à leur ancien outil léopar, ils expliquent le principe à la base de la construction de leur arbre d'analyse. Cela te donnera peut être des idées.

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

    • [^] # Re: Ressources utiles

      Posté par . Évalué à 5 (+3/-0). Dernière modification le 19/06/17 à 11:56.

      J'ai un peu joué avec Grew et son fonctionnement n'est pas identique à celui de leur ancien outil leopar et ne s'inscrit pas de la même manière dans la chaîne de traitement.

      Il se situe en aval de l'étiqueteur morphosyntaxique et calcul l'arbre de dépendances selon un technique de réécriture de graphes (d'où son nom Grew pour Graph Rewriting) décrite dans cet article (en anglais) permettant l'écriture d'une grammaire de façon modulaire et d'effectuer des analyses partielles. L'étiquetage des mots est, quant à lui, effectué par le logiciel MElt. C'est ce dernier qui arrive à gérer les mots absents du lexiques (comme « moldus » dans mon exemple précédent) et, étant écrit en perl et python, ce dernier pourrait peut être t'intéresser.

      À la base de MElt, il y a le lexique lefff (lexique des formes fléchies du français) développé initialement au sein de l'ancienne équipe ALPAGE (Analyse Linguistique Profonde À Grande Échelle). Il est disponible sous deux formes :

      • lexique intensionnel, qui décrit pour chaque entrée lexicale son lemme (forme canonique + table de flexion) et des informations de syntaxe profonde (cadre de sous-catégorisation en fonctions syntaxiques profondes et réalisations possibles + constructions/reformulations/diathèses admissibles)
      • lexique extensionnel, compilé automatiquement à partir du lexique intensionnel ; ce processus de génération comporte une phase de flexion, en fonction de la classe morphologique associée à l’entrée intensionnelle, puis une phase de construction de la structure syntaxique associée à chacune des formes fléchie obtenues (les informations syntaxiques variant d’une forme à une autre, en particulier pour les formes infinitives et participiales, et en fonction de chaque construction associée à l'entrée).

      et fût constitué par des méthodes tant automatisées que manuelles. Son auteur principal, Benoît Sagot, le présente dans cet article (en anglais). À la lecture de l'article, j'ai appris l'existence d'un phénomène bien connu des linguistes et qu'ils nomment sandhi d'après les grammairiens indiens. C'est ce phénomène qui est à l'origine de la discussion que nous avons eue sur la subdivision des verbes du premier groupe :

      • ajout du « e » entre le « g » et le « a » ou le « o », ou transformation du « c » en « ç » ;
      • accentuation du « e » ou doublement des consonnes « l » et « t » ;
      • transformation du « y » en « i ».

      C'est l'occasion de rectifier une légère erreur que j'avais commise alors : le doublement de la consonne correspond à un accent grave et non aigu (le suffixe -ette se prononce comme -ète et non -éte). Ce genre de changement dans la graphie renvoie à des raisons phonétiques appelées euphonie et ne sont pas propres, en français, à la conjugaison des verbes. Dans la version intentionnelle du lefff, on trouve par exemple ces règles :

      <letterclass name="aou" letters="a à â ä o ô ö u û ü ù"/>
      <letterclass name="ou" letters="o ô ö u û ü ù"/>
      <sandhi source="g_[:aou:]" target="ge_[:aou:]"/>
      <sandhi source="[:ou:]y_es$" target="[:ou:]i_es$"/>
      <sandhi source="et_2e$" target="ett_e$"/>

      Pour installer l'outil MElt, il faut suivre les instructions sur sa page mais le traditionnel ./configure ; make ; make install ne fonctionnera pas de suite. Le script ./configure génère une cible pour la documentation dans le dossier /doc mais il manque un fichier latex pour le faire fonctionner; il faudra simplement éditer le fichier make du répertoire en question et ensuite tout fonctionne. Il faudra de plus installer les bibliothèques Perl pour la gestion de sqlite et la bibliothèque numpy pour Python. Puis dans un shell :

      echo "les moldus et les cracmols" | MElt -L -t
      les/DET/le moldus/NC/*moldu et/CC/et les/DET/le cracmols/NC/*cracmol

      Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

    • [^] # Re: Ressources utiles

      Posté par . Évalué à 2 (+0/-0).

      Merci pour les liens.

      Sequoia sera sans doute utile en effet.

      Grew est intéressant, mais ça ne peut pas servir tel quel: c’est du Ocaml et rien n’est apparemment prévu pour Windows.

      La première chose que je lui ai donnée, c’est une aberration grammaticale comme on peut en voir, pas une jolie phrase bien formée. Parce que le boulot de Grammalecte, ce n’est pas de sortir une analyse de texte décrivant à quoi correspond les éléments, mais de détecter les anomalies. J’imagine que Grew part du principe qu’une phrase est (à peu près) correctement formée et que les erreurs potentielles sont des raretés. En cas d’aberration, ça envoie juste une analyse brute des mots, mais on ne peut pas le lui reprocher, ce n’est pas ce pour quoi ça a été fait.

      Grammalecte dispose aussi à présent d’un moyen d’étiqueter les mots absents du dictionnaire, mais c’est une fonctionnalité encore peu utilisée.

      • [^] # Re: Ressources utiles

        Posté par . Évalué à 4 (+2/-0). Dernière modification le 22/06/17 à 22:35.

        Merci pour les liens.

        De rien.

        Grew est intéressant, mais ça ne peut pas servir tel quel: c’est du Ocaml et rien n’est apparemment prévu pour Windows.

        C'est pas tant le logiciel Grew en lui-même que je voulais signaler, mais sa méthode d'analyse grammaticale. Sinon du code OCaml ça se compile sous Windows, ou mieux, ça se transcompile en javascript via js_of_ocaml (c'est comme ça que l'on peut tester OCaml dans son navigateur avec la boucle REPL compilée en javascript).

        Ce que fait Grew c'est de la réécriture de graphe (en) pour, par exemple, produire une analyse en grammaire de dépendance (en) dans la lignée des travaux de Lucien Tesnière. En réalité c'est un moteur qui prend en entrée un système de réécriture (une grammaire pour le français dans notre cas) comme Hunspell prend un dictionnaire. L'intérêt étant de pouvoir développer sa grammaire à part de façon modulaire.

        Je fais par exemple :

        $ echo "le chat mange la souris" | MElt -L -t > chat.melt
        $ grew -grs ~/src/POStoSSQ/grs/surf_synt_main.grs -seq full -gr chat.melt
        

        pour analyser la phrase le chat mange la souris, la grammaire du français se trouvant dans le fichier surf_synt_main.grs.

        Il y a d'autres formalismes comme les TAG, ou grammaire d'arbres adjoints, qui sont très répandues et qui utilisent des métagrammaires pour leur mise au point à la manière du logiciel FRMG.

        Toutes ces grammaires fonctionnent comme ton DAG (graphe orienté acyclique) pour le lexique, sauf qu'elles reconnaissent des langages légèrement sensibles au contexte (et non seulement des langages réguliers). Il y a des cycles dans le graphe, et l'opération d'adjonction dans les TAG permet de formaliser certains phénomènes récursifs des langues naturelles, comme dans la phrase Quel cadeau crois-tu que Jean offre à Marie ? :

        grammaire

        J’imagine que Grew part du principe qu’une phrase est (à peu près) correctement formée et que les erreurs potentielles sont des raretés. En cas d’aberration, ça envoie juste une analyse brute des mots, mais on ne peut pas le lui reprocher, ce n’est pas ce pour quoi ça a été fait.

        Non, Grew (comme FRMG) produit une analyse partielle si la phrase n'est pas reconnue par la grammaire. À l'inverse, l'ancien logiciel leopar fonctionnait comme un dictionnaire : l'entrée était reconnue ou non par la grammaire, dans ce dernier cas elle était tout simplement rejetée. Néanmoins, l'un comme l'autre ne fonctionne pas comme un correcteur orthographique (ou plutôt grammaticale) et ne propose pas une solution pour rendre l'entrée conforme à la grammaire. Il faudrait rajouter, pour cela, un autre traitement en aval du leur pour essayer de comprendre quelle peut être la source du problème (traitement qui est propre à un correcteur grammaticale comme l'est grammalecte), en tirant partie du travail d'analyse de la phase précédente.

        Pour ma part, j'ai un faible pour le formalisme des MCG (grammaires minimalistes catégorielles) parce qu'il s'inscrit, de manière large, dans le cadre de la correspondance de Curry-Howard (ou correspondance preuve-programme) à la base du lambda-calcul statiquement typé, c'est-à-dire la programmation fonctionnelle avec typage statique comme Haskell, OCaml ou Coq. Et dans ce formalisme, on voit clairement la correspondance entre analyse grammaticale et typage statique avec inférence de type comme je l'ai déjà souligné précédemment. :-)

        Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

  • # campagne au ralenti

    Posté par . Évalué à 1 (+0/-0).

    En attendant, la campagne Ulule progresse mais pas très vite, je trouve…

    A part en parler autour de soi (et faire un don, bien sûr), que peut-on faire d'autre ?

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.