Index: gc_lang/fr/modules/conj.py ================================================================== --- gc_lang/fr/modules/conj.py +++ gc_lang/fr/modules/conj.py @@ -53,17 +53,18 @@ if sVerb not in _dVerb: return None return _lVtyp[_dVerb[sVerb][0]] -def getSimil (sWord, sMorph, sFilter=None): +def getSimil (sWord, sMorph, bSubst=False): if ":V" not in sMorph: return set() sInfi = sMorph[1:sMorph.find(" ")] tTags = _getTags(sInfi) aSugg = set() - if ":Q" in sMorph or ":Y" in sMorph: + #if ":Q" in sMorph or ":Y" in sMorph: + if not bSubst: # we suggest conjugated forms if ":V1" in sMorph: aSugg.add(sInfi) aSugg.add(_getConjWithTags(sInfi, tTags, ":Ip", ":3s")) aSugg.add(_getConjWithTags(sInfi, tTags, ":Ip", ":2p")) @@ -93,12 +94,10 @@ aSugg.add(_getConjWithTags(sInfi, tTags, ":PQ", ":Q4")) aSugg.discard("") # if there is only one past participle (epi inv), unreliable. if len(aSugg) == 1: aSugg.clear() - if ":V1" in sMorph: - aSugg.add(sInfi) return aSugg def getConjSimilInfiV1 (sInfi): if sInfi not in _dVerb: Index: gc_lang/fr/modules/gce_suggestions.py ================================================================== --- gc_lang/fr/modules/gce_suggestions.py +++ gc_lang/fr/modules/gce_suggestions.py @@ -371,18 +371,17 @@ def hasSimil (sWord, sPattern=None): return phonet.hasSimil(sWord, sPattern) -def suggSimil (sWord, sPattern=None): +def suggSimil (sWord, sPattern=None, bSubst=False): "return list of words phonetically similar to sWord and whom POS is matching sPattern" # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before aSugg = phonet.selectSimil(sWord, sPattern) for sMorph in _dAnalyses.get(sWord, []): - for e in conj.getSimil(sWord, sMorph, sPattern): - aSugg.add(e) - #aSugg = aSugg.union(conj.getSimil(sWord, sMorph)) + aSugg.update(conj.getSimil(sWord, sMorph, bSubst)) + break if aSugg: return "|".join(aSugg) return "" Index: gc_lang/fr/modules/phonet.py ================================================================== --- gc_lang/fr/modules/phonet.py +++ gc_lang/fr/modules/phonet.py @@ -37,14 +37,14 @@ return _lSet[_dWord[sWord]] return [] def selectSimil (sWord, sPattern): - "return list of words phonetically similar to sWord and whom POS is matching sPattern" + "return a set of words phonetically similar to sWord and whom POS is matching sPattern" if not sPattern: return set(getSimil(sWord)) aSelect = set() for sSimil in getSimil(sWord): for sMorph in _dMorph.get(sSimil, []): if re.search(sPattern, sMorph): aSelect.add(sSimil) return aSelect Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -2503,24 +2503,24 @@ ### incohérences globales (attention à la casse du 2e mot, car beaucoup de sigles peuvent tromper) __[s](incohérences_globales1)__ ([clmtsCLMTS]es|[nvNV]os) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on) @@0,$ - <<- -2>> =suggSimil(\2, ":[NA].*:[pi]") # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + <<- -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. __[s](incohérences_globales2)__ ([cC]e(?:tte|t|)|[mtsMTS]a|[mM]on) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on) @@0,$ - <<- -2>> =suggSimil(\2, ":[NA].*:[si]") # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + <<- -2>> =suggSimil(\2, ":[NA].*:[si]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. TEST: {{Ces}} {{cette}} canaille qui nous a donné tant de fil à retordre. TEST: Mon {{il}} est une merveille. __[s](incohérence_globale_au_qqch)__ ([aA]u) ({w2}) @@0,$ <<- not \2.isupper() >>> <<- morph(\2, ">(?:[cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on|parce) ", False) - -2>> =suggSimil(\2, ":[NA].*:[si]") # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + -2>> =suggSimil(\2, ":[NA].*:[si]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. <<- __else__ and morph(\2, ">quelle ", False) ->> auquel|auxquels|auxquelles # Incohérence. Soudez les deux mots.|https://fr.wiktionary.org/wiki/auquel <<- __else__ and \2 == "combien" and morph(word(1), ":[AY]", False) -1>> ô # Incohérence probable.|https://fr.wiktionary.org/wiki/%C3%B4_combien TEST: au {{nos}} enfants. TEST: {{Au quel}} faut-il s’adresser ? @@ -2529,11 +2529,11 @@ __[s](incohérence_globale_aux_qqch)__ ([aA]ux) ({w2}) @@0,$ <<- not \2.isupper() >>> <<- morph(\2, ">(?:[cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on|parce) ", False) - -2>> =suggSimil(\2, ":[NA].*:[pi]") # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. <<- __else__ and morph(\2, ">quelle ", False) ->> auxquels|auxquelles # Incohérence. Soudez les deux mots.|https://fr.wiktionary.org/wiki/auquel <<- __else__ and \2 == "combien" and morph(word(1), ":[AY]", False) -1>> ô # Incohérence probable.|https://fr.wiktionary.org/wiki/%C3%B4_combien TEST: ils jouent aux {{des}}. TEST: {{Aux quels}} a-t-il adressé sa requête. ? @@ -2540,12 +2540,12 @@ TEST: Des individus {{aux}} combien sensibles aux usages. __[s](incohérences_globales3)__ ([dD]es) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on) @@0,$ - <<- -2>> =suggSimil(\2, ":[NA].*:[pi]") # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. - <<- -1>> de # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + <<- -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. + <<- -1>> de # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. TEST: je ne sais {{des}} {{ses}} choses. @@ -2865,29 +2865,29 @@ TEST: {{en n’}}{{envoient}} que peu. __[i]/conf(conf_malgré_le_la_les)__ malgré l(?:es? +|a +|’)({w_3}) @@$ - <<- morphex(\1, ":", ":[GNAWM]") -1>> =suggSimil(\1, ":[NA]") # Incohérence : après “malgré”, on devrait trouver un groupe nominal. + <<- morphex(\1, ":", ":[GNAWM]") -1>> =suggSimil(\1, ":[NA]", True) # Incohérence : après “malgré”, on devrait trouver un groupe nominal. TEST: malgré l’{{arrête}} qui interdisait le port __[i]/conf(conf_ma_ta_cette_verbe)__ ([mt]a|cette) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() - -2>> =suggSimil(\2, ":[NA]:[fe]:[si]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:[fe]:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: Cette {{pèle}} est trop fragile. __[i]/conf(conf_sa_verbe)__ (sa) ({w_2}) @@0,3 <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":N.*:[fe]|:[AW]") and \2[0].islower() or \2 == "va" -1>> ça # Confusion : « \2 » est un verbe. Exemples : sa jambe, ça vient. <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and hasSimil(\2) - -2>> =suggSimil(\2, ":[NA]:[fe]:[si]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:[fe]:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: {{sa}} devient difficile. TEST: il me tendit {{sa}} {{pèche}}. @@ -2898,67 +2898,67 @@ __[i]/conf(conf_du_cet_au_verbe)__ (du|cet|au) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and not (\2 == "sortir" and re.search(r"(?i)au", \1)) - -2>> =suggSimil(\2, ":[NA]:[me]:[si]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:[me]:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: cet {{plaît}} est infectée. __[i]/conf(conf_ce_verbe)__ (ce) +(?!faire|peut)({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]:.:[si]|:V0e.*:3[sp]|>devoir") and \2[0].islower() and hasSimil(\2) - -2>> =suggSimil(\2, ":[NA]:[me]:[si]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:[me]:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: {{ce}} {{rappelle}} n’en finit pas. __[i]/conf(conf_mon_verbe)__ (mon) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() - -2>> =suggSimil(\2, ":[NA]:.:[si]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:.:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: mon {{rackette}} n’a pas porté les fruits espérés. TEST: Belle qui tient mon vit captif entre tes doigts. __[i]/conf(conf_ton_son_verbe)__ [st]on ({w_2}) @@4 <<- morph(\1, ":V.*:(?:Y|[123][sp])") and \1[0].islower() and isStart() - -1>> =suggSimil(\1, ":[NA]:[me]:[si]") # Incohérence : « \1 » est un verbe. + -1>> =suggSimil(\1, ":[NA]:[me]:[si]", True) # Incohérence : « \1 » est un verbe. TEST: ton {{recèle}} a été dévoilé __[i]/conf(conf_det_plur_verbe)__ ([dcmts]es|quelques|aux|[nv]os) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and not re.search(r"(?i)^quelques? soi(?:ent|t|s)\b", \0) - -2>> =suggSimil(\2, ":[NA]:.:[pi]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:.:[pi]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: la crainte des {{attentas}} fait feu de tout bois. __[i]/conf(conf_auxdits_verbe)__ (auxdits) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() - -2>> =suggSimil(\2, ":[NA]:[me]:[pi]") # Incohérence avec « \1 » : « \2 » est un verbe. + -2>> =suggSimil(\2, ":[NA]:[me]:[pi]", True) # Incohérence avec « \1 » : « \2 » est un verbe. TEST: elle se rendit auxdits {{jardinais}} __[i]/conf(conf_auxdites_verbe)__ (auxdites) +({w_2}) @@0,$ <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() - -2>> =suggSimil(\2, ":[NA]:[fe]:[pi]") # Incohérence avec « \1 » : « \2 » est un verbe. + -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]") - -1>> =suggSimil(\1, ":(?:[NA]:[fe]:[si])") # Incohérence : « \1 » est un verbe. + -1>> =suggSimil(\1, ":(?:[NA]:[fe]:[si])", True) # 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 @@ -2966,78 +2966,78 @@ __[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>> =suggSimil(\2, ":Y") # Incohérence : « \2 » est une forme verbale conjuguée. + <<- 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])") # Incohérence : « \1 » est une forme verbale conjuguée. + <<- 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]") # Incohérence : « \1 » est une forme verbale conjuguée. + -1>> =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]") # Incohérence : « \1 » est une forme verbale conjuguée. + <<- \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]") # Incohérence : « \1 » est une forme verbale conjuguée. + -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 __[i]/conf(conf_il_on_pas_verbe)__ (?> =suggSimil(\1, ":(?:3s|Oo)") # Incohérence : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -1>> =suggSimil(\1, ":(?:3s|Oo)", False) # Incohérence : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: il {{et}} parti. __[i]/conf(conf_ils_pas_verbe)__ (?> =suggSimil(\1, ":(?:3p|Oo)") # Incohérence avec « ils » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -1>> =suggSimil(\1, ":(?:3p|Oo)", False) # Incohérence avec « ils » : « \1 » 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}} __[i]/conf(conf_je_pas_verbe)__ je (?!soussigné)(?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$ <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)") and morphex(word(-1), ":", ":1s", True) - -1>> =suggSimil(\1, ":(?:1s|Oo)") # Incohérence avec « je » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -1>> =suggSimil(\1, ":(?:1s|Oo)", False) # Incohérence avec « je » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. TEST: Je {{travail}}. __[i]/conf(conf_tu_pas_verbe)__ tu (?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$ <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)") and morphex(word(-1), ":", ":(?:2s|V0e)", True) - -1>> =suggSimil(\1, ":(?:2s|Oo)") # Incohérence avec « tu » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc. + -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: elles seules peuvent s’en sortir. @@ -3064,11 +3064,11 @@ # # Incohérence avec « très » : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe. __[i]/conf(conf_très_verbe)__ très +(?!envie)({w_2}) @@$ - <<- morphex(\1, ":(?:Y|[123][sp])", ":[AQW]") -1>> =suggSimil(\1, ":[AW]") # Incohérence avec « très » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe. + <<- morphex(\1, ":(?:Y|[123][sp])", ":[AQW]") -1>> =suggSimil(\1, ":[AW]", True) # Incohérence avec « très » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe. TEST: Il est très {{cite}}. TEST: très {{suivit}} par ce détective TEST: il était très {{habille}} @@ -3109,11 +3109,11 @@ __[i]/conf(conf_si_vconj)__ si +({w2}) @@$ <<- morphex(\1, ":[123][sp]", ":[GNAQWMT]") and morphex(word(1), ":", ":D", True) - -1>> =suggSimil(\1, ":[AWGT]") # Incohérence avec « si » : « \1 » ne devrait pas être une forme verbale conjuguée. + -1>> =suggSimil(\1, ":[AWGT]", True) # Incohérence avec « si » : « \1 » ne devrait pas être une forme verbale conjuguée. TEST: Ces gens sont si {{prit}} par leur travail qu’ils en oublient de vivre. TEST: Ça ira mieux demain, surtout si émerge une demande forte de la part des consommateurs. @@ -4045,44 +4045,44 @@ __[i](p_m_enfin)__ m’enfin <<- ~>> * __[i]/conf(conf_j_y_en_qqch)__ (j’(?:en +|y +|))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])") - -2>> =suggSimil(\2, ":1s") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":1s", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_ne_qqch)__ (n(?:e +|’))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)|>(?:[lmtsn]|surtout|guère|presque|même|tout|parfois|vraiment|réellement) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet. + -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet. __[i]/conf(conf_n_y_en_qqch)__ (n’(?:en|y)) ({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_ne_pronom_qqch)__ (ne (?:l(?:es? +|eur +|a +|’)|[nv]ous))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_me_te_se_qqch)__ ([mts]e +(?:les? |la |l’|))(?!voi(?:là|ci))({w_1}) @@0,$ <<- not re.search("(?i)^se que?", \0) and morphex(\2, ":", ":(?:[123][sp]|Y|P|Oo)|>[lmts] ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet. + -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet. __[i]/conf(conf_m_t_s_y_en_qqch)__ ([mts]’(?:en|y)) (?!voilà)({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|Oo)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_m_s_qqch)__ ([ms]’)({w_1}) @@0,2 <<- morphex(\2, ":", ":(?:[123][sp]|Y|P)|>(?:en|y|ils?) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_t_qqch)__ (t’)({w_1}) @@0,2 <<- morphex(\2, ":", ":(?:[123][sp]|Y|P)|>(?:en|y|ils?|elles?) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2) - -2>> =suggSimil(\2, ":(?:[123][sp]|Y)") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. __[i]/conf(conf_c_ç_qqch)__ ([cç]’)({w_1}) @@0,2 <<- morphex(\2, ":", ":[123][sp]|>(?:en|y|que?) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|dire)$", \2) - -2>> =suggSimil(\2, ":3s") # Incohérence avec « \1 » : « \2 » devrait être un verbe. + -2>> =suggSimil(\2, ":3s", False) # Incohérence avec « \1 » : « \2 » devrait être un verbe. TEST: ne l’{{oubli}} pas TEST: elle ne la {{croix}} pas TEST: ils me les {{laissés}}. TEST: ne {{pensée}} rien, jamais @@ -5309,11 +5309,11 @@ TEST: ce que c’est : le signe évident d’une politique volontaire TEST: On aura carte blanche. TEST: La seule façon de redonner sens à des notions… TEST: Les longues tresses que j’ai pris l’habitude de porter depuis quelque temps et qu’il faut cinq heures pour parfaire. TEST: Il est pieds nus. -TEST: des dossiers secrets {{défense}} +TEST: des dossiers secrets défense # # //////////////////////////////////////// RÈGLES DE CONTRÔLE //////////////////////////////////////// # @@ -11462,31 +11462,31 @@ __[i]/inte(inte_je)__ ({w1})-je @@0 <<- morphex(\1, ":V", ":1[sśŝ]") -1>> =suggVerb(@, ":1ś") # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. - <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":1[sśŝ]") # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. + <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":1[sśŝ]", False) # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier. TEST: {{Vas}}-je ->> Vais TEST: {{Prit}}-je ->> Pris TEST: {{prix}}-je le temps d’y parvenir ? Oui. __[i]/inte(inte_tu)__ ({w1})-tu @@0 <<- morphex(\1, ":V", ":[ISK].*:2s") -1>> =suggVerb(@, ":2s") # Forme interrogative. « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. - <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":2s") # Forme interrogative : « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. + <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":2s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 2ᵉ personne du singulier. TEST: {{Peut}}-tu ->> Peux TEST: {{peu}}-tu revenir chez moi ? __[i]/inte(inte_il_elle_on)__ ({w1})-(?:t-|)(il|elle|on) @@0,$ <<- morphex(\1, ":V", ":3s") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. <<- \1 != "t" and (not \1.endswith("oilà") or \2 != "il") and morphex(\1, ":", ":V") - -1>> =suggSimil(\1, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. + -1>> =suggSimil(\1, ":3s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier. <<- not \2.endswith(("n", "N")) and morphex(\1, ":3p", ":3s") -2>> \2s # Forme interrogative : accordez “\2” avec le verbe à la 3ᵉ personne du pluriel. TEST: {{Peux}}-il ->> Peut TEST: {{Attaques}}-t-on ->> Attaque TEST: {{Prends}}-elle ->> Prend @@ -11496,11 +11496,11 @@ __[s]/inte(inte_ce)__ ({w_2})-([cs]e) @@0,$ <<- morphex(\1, ":V", ":(?:3s|V0e.*:3p)") -1>> =suggVerb(@, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 - <<- morphex(\1, ":", ":V") -1>> =suggSimil(\1, ":3s") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 + <<- morphex(\1, ":", ":V") -1>> =suggSimil(\1, ":3s", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 <<- \2 == "se" -2>> ce # Forme interrogative. Confusion.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4132 TEST: était-{{se}} cela, la vérité ineffable ? TEST: {{étai}}-ce notre destinée de souffrir ? TEST: étaient-{{se}} ces hommes-là qui allaient nous guider dans les montagnes ? @@ -11509,20 +11509,20 @@ __[i]/inte(inte_nous)__ ({w1})-nous @@0 <<- morphex(\1, ":V", ":(?:1p|E:2[sp])") -1>> =suggVerb(@, ":1p") # Forme interrogative ou impérative incorrecte. - <<- morphex(\1, ":", ":V|>chez ") -1>> =suggSimil(\1, ":1p") # Forme interrogative ou impérative incorrecte. + <<- morphex(\1, ":", ":V|>chez ") -1>> =suggSimil(\1, ":1p", False) # Forme interrogative ou impérative incorrecte. TEST: {{Prendront}}-nous ->> Prendrons TEST: {{Attendront}}-nous le train ->> Attendrons __[i]/inte(inte_vous)__ ({w1})-vous @@0 <<- morphex(\1, ":V", ":2p") -1>> =suggVerb(@, ":2p") # Forme interrogative ou impérative incorrecte. - <<- not morph(\1, ":V|>chez ", False) -1>> =suggSimil(\1, ":2p") # Forme interrogative ou impérative incorrecte. + <<- not morph(\1, ":V|>chez ", False) -1>> =suggSimil(\1, ":2p", False) # Forme interrogative ou impérative incorrecte. TEST: {{Attaquait}}-vous ->> Attaquiez TEST: Elle a de nombreux rendez-vous ce matin. TEST: êtes-vous là ? @@ -11530,11 +11530,11 @@ __[i]/inte(inte_ils_elles)__ ({w1})-(?:ils|elles) @@0 <<- morphex(\1, ":V", ":3p") and spell(\1) -1>> =suggVerb(@, ":3p") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel. <<- \1 != "t" and not morph(\1, ":V", False) and spell(\1) - -1>> =suggSimil(\1, ":3p") # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel. + -1>> =suggSimil(\1, ":3p", False) # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel. TEST: {{attaquant}}-ils ->> attaquent TEST: {{prendrons}}-elles un verre avec moi ?