Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -4915,26 +4915,10 @@ (?:ils|elles) l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":3p", False, False) ~1>> @ #__[i>__ [nmts]e l(?:es?|a)( ) @@$ <<- ~1>> @ #__[i]__ l(?:es?|a)( )({w_2}) @@*,$ <<- morph(\2, ":[123][sp]") ~1>> @ -### DPP: Désambiguïsation par distinction des mots qui sont à la fois (verbes conjugués ET (noms ET/OU adjectifs)) -# Cette distinction est nécessaire seulement pour les mots suivant un groupe nominal. -# Exemples : finis, donne(s), avance(s), bavarde(s) -__[i](p_astuce_désambiguïsation1)__ - (?telle ") - ~2>> ~ -__[i](p_astuce_désambiguïsation2)__ - (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$ - <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0) - ~2>> ~ -__[i](p_astuce_désambiguïsation3)__ - l(?:es? |a |’|eur ) *({w_2})( ) *({w_2}) @@w,**,$ - <<- isAmbiguousNAV(\3) and ( morphex(\1, ":[NAQ]", ":V0a") or (morphex(\1, ":[NAQ]", ":(?:3[sp]|V0a)") and isStart()) ) - ~2>> ~ - TEST: comme le signe évident d’une politique volontaire TEST: c’était le signe évident d’une politique volontaire TEST: ce que c’est : le signe évident d’une politique volontaire @@ -5891,10 +5875,11 @@ <<- __also__ and hasFemForm(\1) -1>> =switchGender(@) # Accord de genre erroné avec « \2 ». <<- morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s") and not apposition(\1, \2) and not (after_chk1(r"^ +et +(\w[\w-]+)", ":A") or after_chk1(r"^ *, +(\w[\w-]+)", ":A.*:[si]")) and (morphex(\2, ":N", ":[AQ]") or morph(word(-1), ":[VRBX]|>comme ", True, True)) -2>> =suggPlur(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. + <<- checkAgreement(\1, \2) =>> =exclude(\2, ":V") TEST: faire table rase des passions {{inutile}} ->> inutiles TEST: à bonne distance des {{chiens}} {{méchante}} TEST: des hommes {{attaquée}} TEST: des femmes {{agressé}} @@ -6883,11 +6868,11 @@ TEST: Aujourd’hui, n’en faites pas trop. # flamant rose __[i]/conf(conf_flamant_rose)__ - (flamands?)[~ ]+roses? @@0 <<- -1>> =\1.replace("and", "ant") # Confusion. Flamand = habitant des Flandres. Flamant = oiseau. + (flamands?) +roses? @@0 <<- -1>> =\1.replace("and", "ant") # Confusion. Flamand = habitant des Flandres. Flamant = oiseau. TEST: j’ai vu un {{flamand}} rose. # foi / fois @@ -9144,10 +9129,11 @@ __[i]/ppas(ppas_det_nom_avoir)__ (l(?:’|es? |a |eurs )|ce(?:s|tte|t|rtaine?s|) |des |quelques |[mts](?:es|on|a) |[nv]o(?:s|tre) ) *({w_2}) +(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2}) @@0,w,w,$ <<- not re.search("(?i)^(?:barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \4) and morph(word(-1), ">puisque? ", False, True) and morph(\3, ":V0a", False) and not \4.isupper() and morphex(\4, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])") + and not (\3 == "avions" and morph(\4, ":3[sp]", False)) -4>> =suggMasSing(@) # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais TEST: Les femmes lui avait {{conseillées}} de se taire. TEST: le mur avait {{était}} détruit @@ -9471,16 +9457,36 @@ !!! Processeur avant impératif !!! !!! __(p_n_importe_qui_quoi)__ n(’)importe quo?i @@1 <<- ~1>> ` -__> > -__> > -__> > -__> > -__(p_premier_ne_pro_per_obj5)__ ^ *n’(?:en |y |) <<- ~>> > -__(p_premier_ne_pro_per_obj6)__ ^ *ne (?:l’|) <<- ~>> > + + +__> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * +__> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * +__> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * +__> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * +__(p_premier_ne_pro_per_obj5)__ + ^( *n’(?:en |y |))({w_2}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * +__(p_premier_ne_pro_per_obj6)__ + ^( *ne (?:l’|))({w_2}) @@0,$ + <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)") + <<- ~1>> * !! !! @@ -9503,17 +9509,14 @@ # verbes du 1er et du 3ᵉ groupe en -e __[i]/imp(imp_vgroupe1)__ ^ *(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?)) @@$ <<- morphex(\1, ":V[13].*:Ip.*:2s", ":[GNAM]") -1>> =\1[:-1] # S’il s’agit d’un impératif, pas de “s”. -__[i]/imp(imp_ne_vgroupe1)__ - ^ *> +(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?)) @@$ - <<- morphex(\1, ":V[13].*:Ip.*:2s", ":G") - -1>> =\1[:-1] # S’il s’agit d’un impératif, pas de “s”. TEST: {{Apportes}} ton fric à cet homme. TEST: N’{{abandonnes}} pas si vite. +TEST: Ne {{demandes}} rien, tais-toi. TEST: Castres est une belle ville. TEST: Limoges aussi. __/imp(imp_allez1)__ @@ -9530,14 +9533,10 @@ ^ *(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?)) @@$ <<- morphex(\1, ":V[23].*:Ip.*:3s", ":[GNA]|>(?:devoir|suffire)") and analyse(\1[:-1]+"s", ":E:2s", False) and not (re.search("(?i)^vient$", \1) and after("^ +(?:l[ea]|se |s’)")) and not (re.search("(?i)^dit$", \1) and after("^ +[A-ZÉÈÂÎ]")) -1>> =\1[:-1]+"s" # S’il s’agit d’un impératif, la terminaison est “is”, non “it”. -__[i]/imp(imp_ne_vgroupe2_vgroupe3_t)__ - ^ *> +(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?)) @@$ - <<- morphex(\1, ":V[23].*:Ip.*:3s", ":G|>(?:devoir|suffire)") and analyse(\1[:-1]+"s", ":E:2s", False) - -1>> =\1[:-1]+"s" # S’il s’agit d’un impératif, la terminaison est “is”, non “it”. TEST: {{Finit}} ton assiette. TEST: Ne {{pourrit}} pas l’ambiance. TEST: Suffit de s’en servir. TEST: Et ne doit pas être rejeté dans les limbes. @@ -9548,36 +9547,29 @@ __[i]/imp(imp_vgroupe3_d)__ ^ *(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?)) @@$ <<- morphex(\1, ":V3.*:Ip.*:3s", ":[GNA]") and not (re.search("(?i)^répond$", \1) and after("^ +[A-ZÉÈÂÎ]")) -1>> \1s # S’il s’agit d’un impératif, ajoutez un “s”. -__[i]/imp(imp_ne_vgroupe3_d)__ - ^ *> +(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?)) @@$ - <<- morphex(\1, ":V3.*:Ip.*:3s", ":G") - -1>> \1s # S’il s’agit d’un impératif, ajoutez un “s”. TEST: {{Prend}} le chemin de droite. TEST: N’{{attend}} pas qu’elle vienne. TEST: — Pour ma part, répond P., je crois que tout va bien. # aller __[i]/imp(imp_va)__ - ^[ >]*(vas)(?! (?:tu|ils?|elles?|t-ils?|t-elles?)) @@$ + ^ *(vas)(?! (?:tu|ils?|elles?|t-ils?|t-elles?)) @@$ <<- -1>> va # S’il s’agit d’un impératif, pas de “s”. TEST: {{Vas}} lui mettre une branlée. # être __[i]/imp(imp_sois)__ ^ *(soit) +({w_2}) @@*,$ - <<- morphex(\2, ":A", ":G") and not after(r"\bsoit\b") + <<- morph(\1, ":V") or (morphex(\2, ":A", ":G") and not after(r"\bsoit\b")) -1>> sois # S’il s’agit d’un impératif, écrivez « sois ». -__[i]/imp(imp_ne_sois)__ - ^ *> +(soit) @@$ - <<- -1>> sois # S’il s’agit d’un impératif, écrivez « sois ». TEST: {{Soit}} cohérent avec toi-même. TEST: Ne {{soit}} pas con. @@ -9628,40 +9620,40 @@ !!!! Impératif: traits d’union manquants !! !! __[i]/imp(imp_union_moi_toi)__ - (?> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206 TEST: {{Apportez moi}} ce dictionnaire __[i]/imp(imp_union_nous_vous_lui_y)__ - (?> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne nous}} du café. __[i]/imp(imp_union_les)__ - (?> \1-les # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206 TEST: {{chante les}} avec conviction TEST: Prenez les 5 ou 6 revues __[i]/imp(imp_union_le_la_leur)__ - (?> \1-\2 # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206 TEST: {{Prends le}} avec toi. TEST: {{Dites leur}} que nous sommes là. @@ -10185,12 +10177,16 @@ TEST: nul homme ne {{sauras}} s’y prendre __[i]/conj(conj_un_une_des)__ (une? des {w_2}) +({w_1}) @@0,$ - <<- morphex(\2, ":V", ":(?:3s|P|G|Q)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) - -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. + <<- morphex(\2, ":V", ":(?:3s|P|G|Q)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) and not morph(\2, ":[NA].*:[pi]", False) + -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. + +TEST: un des ingénieurs {{vinrent}} nous dire quoi faire. +TEST: une des femmes présente ses résultats. + __[i]/conj(conj_un_une_des_pronom)__ (une? des {w_2}) +(?:qui +>? *|> +)({w_1}) @@0,$ <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. @@ -10208,26 +10204,47 @@ TEST: manger {{fais}} grossir. TEST: boire immodérément {{nuis}} à la santé __[i]/conj(conj_det_sing_nom)__ - (?>> + <<- not checkAgreement(\2, \3) + -3>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier. + <<- __else__ and isAmbiguousAndWrong(\2, \3, ":s", ":3s") + -3>> =suggVerb(@, ":3s", suggSing) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. +__[i]/conj(conj_det_sing_nom_confusion)__ + (?>> + <<- not checkAgreement(\2, \3) + -3>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier. + <<- __else__ and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", isStart()) + -3>> =suggVerb(@, ":3s", suggSing) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. +__[i]/conj(conj_det_sing_nom_qui)__ + (?> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier. __[i]/conj(conj_det_sing_nom_pronom)__ (? +({w_2}) @@0,w,$ - <<- not (re.search("(?i)^une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet) |la +moitié", \0) and morph(\3, ":3p", False)) - and morphex(word(-1), ":C", ":(?:Y|P)", True) and morph(\2, ":[NAQ].*:[si]", False) and morphex(\3, ":V", ":(?:3s|1p|P|Q|Y|3p!|G)") - and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni\b") + <<- not ( re.search("(?i)^(?:une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet) |la +moitié) ", \0) + and morph(\3, ":3p", False) ) + and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":V", ":(?:3s|1p|P|Q|Y|3p!|G)") and morphex(word(-1), ":C", ":(?:Y|P)", True) + and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni ") -3>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: La {{N.S.A.}} {{espionneras}} toujours tout le monde TEST: La suspicion envers les élus {{accroissaient}}… ->> accroissait TEST: Le chien n’{{es}} pas mort. TEST: Ce roman-là de Jean-Paul Sartre {{es}} passionnant. +TEST: Cette confusion qui {{donnent}} le tournis. TEST: La Corée {{peux}} gagner. TEST: La Corée ne {{pourras}} pas gagner. TEST: une hausse de 2 % {{satisfais}} tout le monde ->> satisfait TEST: L’homme y {{donnes}} TEST: Le chien y {{viens}} ->> vient @@ -10235,39 +10252,24 @@ TEST: La femme la {{prends}} ->> prend TEST: Le feu nous {{donnes}} chaud. TEST: tout le monde {{prends}} ses aises ->> prend TEST: J’aimerais aussi que mon problème {{sois}} réglé. ->> soit TEST: La proscription de nager {{pourraient}} nous porter préjudice à long terme ->> pourrait -TEST: L’hypothétique nouveau président -TEST: une majorité de garçons voient mal comment faire -TEST: un tas de choses pouvaient aller de travers. -TEST: un paquet de gens futés n’y ont vu que du feu. -TEST: La moitié d’entre elles voient leurs loyers diminuer depuis le début de l’année -TEST: Une partie de ces propositions étaient naïves - - -# confusions noms/adjectifs/verbes (voir règles DPP) -__[i]/conj(conj_det_nom_ambiguïté1)__ - (?> =suggVerb(@, ":3s", suggSing) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - -__[i]/conj(conj_det_nom_ambiguïté2)__ - (l(?:e(?:ur|) |a |’)) *({w_2})~ *({w_2}) @@0,w,$ - <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", isStart()) - and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b") - -3>> =suggVerb(@, ":3s", suggSing) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - TEST: mon chat {{sautes}} TEST: cette fille {{bouffes}} comme mille TEST: cette marchande {{marchandes}} TEST: la marchande {{marchandes}} TEST: la chatte {{finis}} TEST: le chat {{finis}} TEST: une crise {{violent}} TEST: un cri {{violes}} +TEST: L’hypothétique nouveau président +TEST: une majorité de garçons voient mal comment faire +TEST: un tas de choses pouvaient aller de travers. +TEST: un paquet de gens futés n’y ont vu que du feu. +TEST: La moitié d’entre elles voient leurs loyers diminuer depuis le début de l’année +TEST: Une partie de ces propositions étaient naïves ## 1pl __[i]/conj(conj_nous_pronom)__ ^ *nous +> +({w1}) @@$ @@ -10402,95 +10404,108 @@ TEST: certains {{prenne}} leur temps TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés. __[i]/conj(conj_det_plur_nom)__ - ([lcmts]es|[nv]os|leurs|quelques|certaine?s|plusieurs) +({w_2}) +(?:qui +|)(?!j’|c’)({w_2}) @@0,w,$ - <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Q|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) and not checkAgreement(\2, \3) - and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|ce(?:tte|t|) |[mts](?:on|a) ).+ entre .+ et ") ) + ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +({w_2}) @@0,w,$ + <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> + <<- not checkAgreement(\2, \3) + -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. + <<- __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p") + -3>> =suggVerb(@, ":3p", suggPlur) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. +__[i]/conj(conj_det_plur_nom_qui)__ + ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +qui +({w_2}) @@0,w,$ + <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. __[i]/conj(conj_det_plur_nom_pronom)__ - ([lcmts]es|[nv]os|leurs|quelques|certaine?s|plusieurs) +({w_2}) +(?:qui +|)> +({w_2}) @@0,w,$ + ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +(?:qui +|)> +({w_2}) @@0,w,$ + <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) + -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. + +TEST: Ses « chiens » {{coure}} sur ma pelouse. +TEST: mes filles {{passe}} ce matin +TEST: vos filles {{passes}} ce matin +TEST: ces travaux qui {{demande}} tant d’efforts. +TEST: vos questions ne {{réclame}} aucune réflexion. +TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler. + + +__[i]/conj(conj_det_plur_nom_confusion)__ + (les|certaine?s|plusieurs) +({w_2}) +({w_2}) @@0,w,$ + <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> + <<- not checkAgreement(\2, \3) + -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. + <<- __else__ and (\1 == "les" or \1 == "Les") and isVeryAmbiguousAndWrong(\2, \3, ":p", ":3p", isStart()) + -3>> =suggVerb(@, ":3p", suggPlur) # Accord avec « les \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. + <<- __else__ and (\1 == "certains" or \1 == "Certains") and isVeryAmbiguousAndWrong(\2, \3, ":m:p", ":3p", isStart()) + -3>> =suggVerb(@, ":3p", suggMasPlur) # Accord avec « certains \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. + <<- __else__ and (\1 == "certaines" or \1 == "Certaines") and isVeryAmbiguousAndWrong(\2, \3, ":f:p", ":3p", isStart()) + -3>> =suggVerb(@, ":3p", suggFemPlur) # Accord avec « certaines \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. +__[i]/conj(conj_det_plur_nom_qui_confusion)__ + (les|certaine?s|plusieurs) +({w_2}) +qui +({w_2}) @@0,w,$ + <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Q|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) + -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. +__[i]/conj(conj_det_plur_nom_pronom_confusion)__ + (les|certaine?s|plusieurs) +({w_2}) +(?:qui +|)> +({w_2}) @@0,w,$ <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True) - and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|ce(?:tte|t|) |[mts](?:on|a) ).+ entre .+ et ") ) + and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) -3>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: Les abstentions {{est}} présumée manifester un défaut d’opinion marquée TEST: Les cours de culture générale nous {{apporte}} de l’ouverture d’esprit. TEST: Les hommes ne le lui {{pardonnes}} pas. TEST: Les infirmières à mi-temps ne {{travaille}} pas dans cette aile. TEST: les données, en quantité plus que suffisante, {{indique}} que… -TEST: Ses « chiens » {{coure}} sur ma pelouse. TEST: Les hommes comme celui-là {{mange}} comme deux. TEST: les récompenses distribuées à parts égales {{était}}… TEST: Les États-Unis d’Amérique se {{compose}} de 50 états. TEST: Les enfants en {{manges}}. TEST: Les ombres la {{donnes}} TEST: Les grands hommes politiques TEST: les charmantes petites mines de toutes les jeunes filles TEST: Les pauvres petites dames sont folles TEST: Les entrepreneurs ont {{cherchaient}} la reconnaissance sociale -TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler. TEST: l’écart entre les riches et les pauvres n’était pas si grand. +TEST: les grands {{danse}} +TEST: les filles {{passes}} ce matin +TEST: les marchands {{marche}} +TEST: les marchands {{plie}} +TEST: certaines demandes qui {{donne}} le tournis. +TEST: plusieurs pressions qui ne {{donne}} pas les résultats attendus. +TEST: les marchands {{paye}} +TEST: les marchands {{marchande}} +TEST: les marchandes {{paie}} +TEST: les marchandes {{marchande}} +TEST: les chattes {{finis}} +TEST: les chattes {{manges}} +TEST: les chattes {{danse}} +TEST: certains hommes {{marchandes}} sans cesse +TEST: certaines femmes {{danse}} beaucoup -__[i]/conj(conj_des_nom)__ - ^ *des +({w_2}) +(?:> +|)({w_2}) @@w,$ +__[i]/conj(conj_des_nom1)__ + ^ *des +({w_2}) +({w_2}) @@w,$ + <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q|A.*:[pi])") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True) >>> + <<- not morph(\2, ":[NA]", False) -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel. + <<- __else__ and not checkAgreement(\1, \2) -2>> =suggVerb(@, ":3p", suggPlur) # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel. +__[i]/conj(conj_des_nom2)__ + ^ *des +({w_2}) +> +({w_2}) @@w,$ <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q)") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True) -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel. __[i]/conj(conj_des_nom_qui)__ ^ *des +({w_2}) +qui +(?:> +|)({w_2}) @@w,$ <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G)") -2>> =suggVerb(@, ":3p") # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: Des hommes {{arrive}}. +TEST: Des femmes ne {{demande}} rien. TEST: des femmes qui {{conduise}} la marche du monde. - - -# confusions noms/adjectifs/verbes (voir règles DPP) -__[i]/conj(conj_det_plur_nom_ambiguïté)__ - ([cmts]es|[nv]os|leurs|quelques|plusieurs) +({w_2})~ *({w_2}) @@0,w,$ - <<- morphex(word(-1), ":C", ":[YP]", True) and isAmbiguousAndWrong(\2, \3, ":p", ":3p") - -3>> =suggVerb(@, ":3p", suggPlur) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - -TEST: mes filles {{passe}} ce matin -TEST: vos filles {{passes}} ce matin - - -__[i]/conj(conj_les_nom_ambiguïté)__ - les +({w_2})~ *({w_2}) @@w,$ - <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":p", ":3p", isStart()) - -2>> =suggVerb(@, ":3p", suggPlur) # Accord avec « les \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - -TEST: les grands {{danse}} -TEST: les filles {{passes}} ce matin -TEST: les marchands {{marche}} -TEST: les marchands {{plie}} -TEST: les marchands {{paye}} -TEST: les marchands {{marchande}} -TEST: les marchandes {{paie}} -TEST: les marchandes {{marchande}} -TEST: les chattes {{finis}} -TEST: les chattes {{manges}} -TEST: les chattes {{danse}} - - -__[i]/conj(conj_certains_nom_ambiguïté)__ - certains +({w_2})~ *({w_2}) @@w,$ - <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":m:p", ":3p", isStart()) - -2>> =suggVerb(@, ":3p", suggMasPlur) # Accord avec « certains \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - -TEST: certains hommes {{marchandes}} sans cesse - - -__[i]/conj(conj_certaines_nom_ambiguïté)__ - certaines +({w_2})~ *({w_2}) @@w,$ - <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":f:p", ":3p", isStart()) - -2>> =suggVerb(@, ":3p", suggFemPlur) # Accord avec « certaines \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - -TEST: certaines femmes {{danse}} beaucoup - ## Quel(le) que soit / quel(le)s que soient # singulier