Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -694,11 +694,11 @@ <<- not morph(\1, ">(?:[mtscl]es|[nv]os|quels)/", False) -2>> , mais # Si « mais » est la conjonction de coordination, une virgule est souhaitable si elle introduit une nouvelle proposition.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3445 __[i>/virg(virgule_manquante_avant_donc)__ ({w_1})( donc)(?= (?:j[e’]|tu|ils?|elles?|on)\b) @@0,$ <<- not morph(\1, ":V", False) -2>> , donc - # Si « mais » est la conjonction de coordination, une virgule est souhaitable si elle introduit une nouvelle proposition.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3448 + # Si « donc » est la conjonction de coordination, une virgule est souhaitable si elle introduit une nouvelle proposition.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3448 TEST: Un chien, un chat{{ etc.}} ->> , etc. TEST: Je suis fatigué{{ car}} ils ont joué toute la nuit. ->> , car TEST: Je suis fatigué{{ mais}} il a joué toute la nuit. ->> , mais TEST: il l’a vu de ses propres yeux{{ donc}} il faut y croire. ->> , donc @@ -3240,62 +3240,13 @@ -2>> =suggSimil(\2, ":[NA]:[fe]:[pi]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: auxdites {{scelles}}, il ne prêta pas attention. -__[i]/conf(conf_de_la_vconj)__ de la +({w_2}) @@6 - <<- morphex(\1, ":[123][sp]", ":[NAQ]") >>> - <<- morphex(\1, ":V1.*:(?:Iq|Ip:2p)", ":1p") -1>> =suggVerbInfi(@) # Incohérence : mettez le verbe à l’infinitif (à moins qu’il y ait confusion avec un nom féminin). - <<- __else__ -1>> =suggSimil(\1, ":(?:[NA]:[fe]:[si])", False) # Incohérence : « \1 » est un verbe. - -TEST: les petits esprits de la {{pensait}} religieuse - - -TEST: pour les insulter au sortir du seul troquet dispensateur d’oubli liquide du coin -TEST: ce peut être un matériau à part entière pour alimenter discussions et délibérations. - - -__[i]/conf(conf_de_le_nom_ou_vconj)__ - (de le) ({w_2}) @@0,6 - <<- morphex(\2, ":[NAQ].*:[me]", ":[YG]") and \2[0].islower() -1>> du # Incohérence : « \2 » est un nom ou un adjectif. - <<- morph(\2, ":[123][sp]", False) -2>> =suggVerbInfi(\2) # Incohérence : « \2 » est une forme verbale conjuguée. - -TEST: {{de le}} vin ->> du -TEST: il n’est pas interdit de le {{pensait}} - - -__[i]/conf(conf_de_l_vconj)__ - de l’({w_2}) @@5 - <<- morphex(\1, ":[123][sp]", ":[NAQ]") -1>> =suggSimil(\1, ":[NA]:.:[si]", True) # Incohérence : « \1 » est une forme verbale conjuguée. - -TEST: de l’{{entra}} - - -__[i]/conf(conf_un_verbe)__ - (?> =suggSimil(\1, ":[NAQ]:[me]:[si]", True) # Incohérence : « \1 » est une forme verbale conjuguée. - -TEST: un {{maintient}} difficile. - - -__[i]/conf(conf_de_dès_par_vconj)__ - (?:d(?:e|ès)|par) ({w_2}) @@$ - <<- \1[0].islower() and morph(\1, ":V.*:[123][sp]") -1>> =suggSimil(\1, ":[NA]", True) # Incohérence : « \1 » est une forme verbale conjuguée. - -TEST: par {{bloque}} de données -TEST: il s’agit de {{mette}} en évidence. - - -__[i]/conf(conf_d_une_vconj)__ - d’(?:une? +|)({w_2}) @@$ - <<- \1[0].islower() and morphex(\1, ":V.*:[123][sp]", ":[GNA]") and not before(r"(?i)\b(?:plus|moins) +$") - -1>> =suggSimil(\1, ":[NA]", True) # Incohérence : « \1 » est une forme verbale conjuguée. - -TEST: d’une {{habille}} femme -TEST: plus d’un ont été traumatisés -TEST: plus d’une sont parties aussi vite qu’elles étaient venues + + + @@ -3339,53 +3290,94 @@ !! !!!! Confusions générales !! !! !! +__conf_un_verbe__ + un @:(?:Y|[123][sp])¬:[GNA] + <<- /conf/ not value(<1, "|dont|l’|d’|sauf|") and not before(r"(?i)\bun à +$") + -2>> =suggSimil(\2, ":[NAQ]:[me]:[si]", True) # Incohérence avec “\1” : “\2” est une forme verbale conjuguée. + +TEST: un {{maintient}} difficile. +TEST: quelqu’un arrive. + + +__conf_de_dès_par_vconj__ + [de|d’|dès|par] @:V.*:[123][sp]¬:[GNA] + <<- /conf/ not \2.istitle() -2>> =suggSimil(\2, ":[NA]", True) # Incohérence avec “\1” : “\2” est une forme verbale conjuguée. + + [d’|par] [un|une] @:V.*:[123][sp]¬:[GNA] + <<- /conf/ not \3.istitle() and not value(<1, "|plus|moins|") + -3>> =suggSimil(\3, ":[NA]", True) # Incohérence avec “\1\2” : “\3” est une forme verbale conjuguée. + + de l’ @:[123][sp]¬:[NAQ] + <<- /conf/ not \3.istitle() -3>> =suggSimil(\3, ":[NA]:.:[si]", True) # Incohérence avec “\1 \2” : “\3” est une forme verbale conjuguée. + + de le *WORD + <<- /conf/ morph(\3, ":[NAQ].*:[me]", ":[YG]") and not \3.istitle() -1:2>> du # Incohérence avec “\1 \2” : “\3” est un nom ou un adjectif. + <<- /conf/ morph(\3, ":[123][sp]") -3>> =suggVerbInfi(\3) # Incohérence avec “\1 \2” : “\3” est une forme verbale conjuguée. + + de la *WORD + <<- /conf/ morph(\3, ":[123][sp]", ":[NAQ]") and not \3.istitle() >>> + <<- morph(\3, ":V1.*:(?:Iq|Ip:2p)", ":1p") -3>> =suggVerbInfi(\3) # Incohérence avec “\1 \2” : mettez le verbe à l’infinitif (à moins qu’il y ait confusion avec un nom féminin). + <<- __else__ -3>> =suggSimil(\3, ":(?:[NA]:[fe]:[si])", False) # Incohérence avec “\1 \2” : “\3” est un verbe. + +TEST: les petits esprits de la {{pensait}} religieuse +TEST: {{de le}} vin ->> du +TEST: il n’est pas interdit de le {{pensait}} +TEST: de l’{{entra}} +TEST: par {{bloque}} de données +TEST: il s’agit de {{mette}} en évidence. +TEST: d’une {{habille}} femme +TEST: plus d’un ont été traumatisés +TEST: Plus d’une sont parties aussi vite qu’elles étaient venues +TEST: pour les insulter au sortir du seul troquet dispensateur d’oubli liquide du coin +TEST: ce peut être un matériau à part entière pour alimenter discussions et délibérations. + __conf_je_non_verbe__ je @:¬:(?:[123][sp]|O[onw]|X) <<- /conf/ not value(\2, "|soussigné|soussignée|") and not morph(<1, ":1s") - -2>> =suggSimil(\2, ":(?:1s|Oo)", False) # Incohérence avec « je » : « \2 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -2>> =suggSimil(\2, ":(?:1s|Oo)", False) # Incohérence avec “je” : “\2” devrait être un verbe, un pronom objet, un adverbe de négation, etc. je [le|la|l’|les|leur|lui|nous|vous] @:¬:(?:[123][sp]|O[onw]|X) - <<- /conf/ not morph(<1, ":1s") -3>> =suggSimil(\3, ":(?:1s|Oo)", False) # Incohérence avec « je » : « \3 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + <<- /conf/ not morph(<1, ":1s") -3>> =suggSimil(\3, ":(?:1s|Oo)", False) # Incohérence avec “je” : “\3” devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: Je {{travail}}. TEST: Je soussigné, M. X., déclare que… __conf_tu_non_verbe__ tu ?[le|la|l’|les|leur|lui|nous|vous]¿ (@:¬:(?:[123][sp]|O[onw]|X)) - <<- /conf/ not morph(<1, ":(?:2s|V0|R)") -1>> =suggSimil(\1, ":(?:2s|Oo)", False) # Incohérence avec « tu » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + <<- /conf/ not morph(<1, ":(?:2s|V0|R)") -1>> =suggSimil(\1, ":(?:2s|Oo)", False) # Incohérence avec “tu” : “\1” devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: tu {{croix}} que tu sais quelque chose, mais tu ne sais rien. TEST: tu la {{croix}} idiote ? TEST: Elles sont à tu et à toi. __conf_il_on_non_verbe__ [il|on] @:¬:(?:[123][sp]|O[onw]|X)|>ou/ <<- /conf/ not morph(<1, ":3s") and not value(<1, "|t’|") - -2>> =suggSimil(\2, ":(?:3s|Oo)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -2>> =suggSimil(\2, ":(?:3s|Oo)", False) # Incohérence avec “\1” : “\2” devrait être un verbe, un pronom objet, un adverbe de négation, etc. [il|on] [le|la|l’|les|leur|lui|nous|vous] @:¬:(?:[123][sp]|O[onw]|X) <<- /conf/ not morph(<1, ":3s") and not value(<1, "|t’|") - -3>> =suggSimil(\3, ":(?:3s|Oo)", False) # Incohérence avec « \1 » : « \3 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -3>> =suggSimil(\3, ":(?:3s|Oo)", False) # Incohérence avec “\1” : “\3” devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: il {{et}} parti. TEST: il nous {{et}} indispensable. __conf_ils_non_verbe__ ils @:¬:(?:[123][sp]|O[onw]|X)|>ou/ <<- /conf/ not morph(<1, ":3p") and not value(<1, "|t’|") - -2>> =suggSimil(\2, ":(?:3p|Oo)", False) # Incohérence avec « ils » : « \2 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -2>> =suggSimil(\2, ":(?:3p|Oo)", False) # Incohérence avec “ils” : “\2” devrait être un verbe, un pronom objet, un adverbe de négation, etc. ils [le|la|l’|les|leur|lui|nous|vous] @:¬:(?:[123][sp]|O[onw]|X) <<- /conf/ not morph(<1, ":3p") and not value(<1, "|t’|") - -3>> =suggSimil(\3, ":(?:3p|Oo)", False) # Incohérence avec « ils » : « \3 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -3>> =suggSimil(\3, ":(?:3p|Oo)", False) # Incohérence avec “ils” : “\3” devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: ils {{son}} du même bois. TEST: Ils {{étai}} partie au {{restaurent}} TEST: ils leur {{étai}} indifférent