Overview
Comment: | [build][core] new function: suggAgree() [fr] ajustements et nouvelles règles |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr | core | build |
Files: | files | file ages | folders |
SHA3-256: |
101d54de7e204acb691acbf4484121d9 |
User & Date: | olr on 2021-01-07 18:22:03 |
Other Links: | manifest | tags |
Context
2021-01-07
| ||
18:36 | [core][js] fix variable name check-in: fb8117df84 user: olr tags: core, trunk | |
18:22 | [build][core] new function: suggAgree() [fr] ajustements et nouvelles règles check-in: 101d54de7e user: olr tags: build, core, fr, trunk | |
13:48 | [cli] clear text beginning by TEST: check-in: b5ba52c145 user: olr tags: cli, trunk | |
Changes
Modified compile_rules_graph.py from [0195f7a15c] to [82cd1181fb].
38
39
40
41
42
43
44
45
46
47
48
49
50
51
..
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
sCode = sCode.replace("__also__", "bCondMemo") sCode = sCode.replace("__else__", "not bCondMemo") sCode = sCode.replace("sContext", "_sAppContext") sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode) sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\bmorph2[(][\\](\d+)", 'g_morph2(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bmorph2[(][\\]-(\d+)", 'g_morph2(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode) # next token ................................................................................ sCode = re.sub(r"\bspace[(](>1)", 'g_space(lToken[nLastToken+1], g_token(lToken, nLastToken+2)', sCode) # next token sCode = re.sub(r"\bspace[(](<1)", 'g_space(lToken[nTokenOffset], lToken[nTokenOffset+1]', sCode) # previous token sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode) sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before(sCode) sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode) # after(sCode) sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before0(sCode) sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence0[lToken[nLastToken]["nEnd"]:], ', sCode) # after0(sCode) sCode = re.sub(r"\bagreement[(]\\(\d+), *\\(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\bagreement[(]\\(\d+), *\\-(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode) sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode) sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode) sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode) return sCode |
>
>
>
>
<
<
|
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
..
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
sCode = sCode.replace("__also__", "bCondMemo") sCode = sCode.replace("__else__", "not bCondMemo") sCode = sCode.replace("sContext", "_sAppContext") sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(select|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nTokenOffset+\\3]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\](\d+), *[\\]-(\d+)", 'g_\\1(lToken[nTokenOffset+\\2], lToken[nLastToken-\\3+1]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\](\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nTokenOffset+\\3]', sCode) sCode = re.sub(r"\b(agreement|suggAgree)[(][\\]-(\d+), *[\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], lToken[nLastToken-\\3+1]', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode) sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\bmorph2[(][\\](\d+)", 'g_morph2(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\bmorph2[(][\\]-(\d+)", 'g_morph2(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\b(morph0?|tag|meta|value|info)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode) # next token ................................................................................ sCode = re.sub(r"\bspace[(](>1)", 'g_space(lToken[nLastToken+1], g_token(lToken, nLastToken+2)', sCode) # next token sCode = re.sub(r"\bspace[(](<1)", 'g_space(lToken[nTokenOffset], lToken[nTokenOffset+1]', sCode) # previous token sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode) sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before(sCode) sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode) # after(sCode) sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode) # before0(sCode) sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence0[lToken[nLastToken]["nEnd"]:], ', sCode) # after0(sCode) sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode) sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode) sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode) sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode) return sCode |
Modified gc_lang/fr/modules-js/cregex.js from [63b1a41c99] to [f6f0552c5d].
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
var cregex = { ///// Lemme _zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"), ///// Masculin / féminin / singulier / pluriel _zGender: new RegExp(":[mfe]"), _zNumber: new RegExp(":[spi]"), ///// Nom et adjectif _zNA: new RegExp(":[NA]"), //// nombre _zNAs: new RegExp(":[NA].*:s"), _zNAp: new RegExp(":[NA].*:p"), ................................................................................ return sGender; }, getNumber: function (lMorph) { // returns number of word (':s', ':p', ':i' or empty string). let sNumber = ""; for (let sMorph of lMorph) { let m = this._zNumber.exec(sWord); if (m) { if (!sNumber) { sNumber = m[0]; } else if (sNumber != m[0]) { return ":i"; } } } return sNumber; }, // NOTE : isWhat (lMorph) returns true if lMorph contains nothing else than What // mbWhat (lMorph) returns true if lMorph contains What at least once //// isXXX = it’s certain isNom: function (lMorph) { |
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
var cregex = { ///// Lemme _zLemma: new RegExp(">([a-zà-öø-ÿ0-9Ā-ʯ][a-zà-öø-ÿ0-9Ā-ʯ-]+)"), ///// Masculin / féminin / singulier / pluriel _zGender: new RegExp(":[mfe]"), _zNumber: new RegExp(":[spi]"), _zGenderNumber: new RegExp(":[mfe]:[spi]"), ///// Nom et adjectif _zNA: new RegExp(":[NA]"), //// nombre _zNAs: new RegExp(":[NA].*:s"), _zNAp: new RegExp(":[NA].*:p"), ................................................................................ return sGender; }, getNumber: function (lMorph) { // returns number of word (':s', ':p', ':i' or empty string). let sNumber = ""; for (let sMorph of lMorph) { let m = this._zNumber.exec(sMorph); if (m) { if (!sNumber) { sNumber = m[0]; } else if (sNumber != m[0]) { return ":i"; } } } return sNumber; }, getGenderNumber: function (lMorph) { // returns tuple (gender, number) of word: (':m', ':f', ':e' or empty string) and (':s', ':p', ':i' or empty string) let sGender = ""; let sNumber = ""; for (let sMorph of lMorph) { let m = this._zGenderNumber.exec(sMorph); if (m) { let sGenderx = m[0].slice(0,2); let sNumberx = m[0].slice(2,4); if (!sGender) { sGender = sGenderx; } else if (sGender != sGenderx) { sGenderx = ":e"; } if (!sNumber) { sNumber = sNumberx; } else if (sNumber != sNumberx) { sNumberx = ":i"; } } } return [sGender, sNumber]; }, // NOTE : isWhat (lMorph) returns true if lMorph contains nothing else than What // mbWhat (lMorph) returns true if lMorph contains What at least once //// isXXX = it’s certain isNom: function (lMorph) { |
Modified gc_lang/fr/modules-js/gce_suggestions.js from [e41e56dec1] to [8fe9942358].
450 451 452 453 454 455 456 457 458 459 460 461 462 463 |
} aSugg.delete(""); if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function hasFemForm (sFlex) { for (let sStem of gc_engine.oSpellChecker.getLemma(sFlex)) { if (mfsp.isMasForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q3")) { return true; } } |
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 |
} aSugg.delete(""); if (aSugg.size > 0) { return Array.from(aSugg).join("|"); } return ""; } function g_suggAgree (dTokenDst, dTokenSrc) { // returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc> let lMorphSrc = oTokenSrc.hasOwnProperty("lMorph") ? oTokenSrc["lMorph"] : gc_engine.oSpellChecker.getMorph(oTokenSrc["sValue"]); if (lMorphSrc.length === 0) { return ""; } let [sGender, sNumber] = cregex.getGenderNumber(lMorphSrc); if (sGender == ":m") { if (sNumber == ":s") { return suggMasSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggMasPlur(dTokenDst["sValue"]); } return suggMasSing(dTokenDst["sValue"]); } else if (sGender == ":f") { if (sNumber == ":s") { return suggFemSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggFemPlur(dTokenDst["sValue"]); } return suggFemSing(dTokenDst["sValue"]); } else if (sGender == ":e") { if (sNumber == ":s") { return suggSing(dTokenDst["sValue"]); } else if (sNumber == ":p") { return suggPlur(dTokenDst["sValue"]); } return dTokenDst["sValue"]; } return ""; } function hasFemForm (sFlex) { for (let sStem of gc_engine.oSpellChecker.getLemma(sFlex)) { if (mfsp.isMasForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q3")) { return true; } } |
Modified gc_lang/fr/modules/cregex.py from [552bd47629] to [cca55d14bc].
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#### Lemme
Lemma = re.compile(r"^>(\w[\w-]*)")
#### Analyses
Gender = re.compile(":[mfe]")
Number = re.compile(":[spi]")
#### Nom et adjectif
NA = re.compile(":[NA]")
## nombre
NAs = re.compile(":[NA].*:s")
NAp = re.compile(":[NA].*:p")
................................................................................
m = Number.search(sMorph)
if m:
if not sNumber:
sNumber = m.group(0)
elif sNumber != m.group(0):
return ":i"
return sNumber
# NOTE : isWhat (lMorph) returns True if lMorph contains nothing else than What
# mbWhat (lMorph) returns True if lMorph contains What at least once
## isXXX = it’s certain
def isNom (lMorph):
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
#### Lemme Lemma = re.compile(r"^>(\w[\w-]*)") #### Analyses Gender = re.compile(":[mfe]") Number = re.compile(":[spi]") GenderNumber = re.compile(":[mfe]:[spi]") #### Nom et adjectif NA = re.compile(":[NA]") ## nombre NAs = re.compile(":[NA].*:s") NAp = re.compile(":[NA].*:p") ................................................................................ m = Number.search(sMorph) if m: if not sNumber: sNumber = m.group(0) elif sNumber != m.group(0): return ":i" return sNumber def getGenderNumber (lMorph): "returns tuple (gender, number) of word: (':m', ':f', ':e' or empty string) and (':s', ':p', ':i' or empty string)" sGender = "" sNumber = "" for sMorph in lMorph: m = GenderNumber.search(sMorph) if m: sGenderx = m.group(0)[0:2] sNumberx = m.group(0)[2:4] if not sGender: sGender = sGenderx elif sGender != sGenderx: sGender = ":e" if not sNumber: sNumber = sNumberx elif sNumber != sNumberx: sNumber = ":i" return sGender, sNumber # NOTE : isWhat (lMorph) returns True if lMorph contains nothing else than What # mbWhat (lMorph) returns True if lMorph contains What at least once ## isXXX = it’s certain def isNom (lMorph): |
Modified gc_lang/fr/modules/gce_suggestions.py from [5245c9f027] to [cfe989f25d].
339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
for e in phonet.selectSimil(sFlex, ":f:[pi]"): aSugg.add(e) aSugg.discard("") if aSugg: return "|".join(aSugg) return "" def hasFemForm (sFlex): "return True if there is a feminine form of <sFlex>" for sStem in _oSpellChecker.getLemma(sFlex): if mfsp.isMasForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q3"): return True if phonet.hasSimil(sFlex, ":f"): |
> > > > > > > > > > > > > > > > > > > > > > > > > > > |
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 |
for e in phonet.selectSimil(sFlex, ":f:[pi]"): aSugg.add(e) aSugg.discard("") if aSugg: return "|".join(aSugg) return "" def g_suggAgree (dTokenDst, dTokenSrc): "returns suggestions for <dTokenDst> that matches agreement with <dTokenSrc>" lMorphSrc = dTokenSrc["lMorph"] if "lMorph" in dTokenSrc else _oSpellChecker.getMorph(dTokenSrc["sValue"]) if not lMorphSrc: return "" sGender, sNumber = cr.getGenderNumber(lMorphSrc) if sGender == ":m": if sNumber == ":s": return suggMasSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggMasPlur(dTokenDst["sValue"]) return suggMasSing(dTokenDst["sValue"]) elif sGender == ":f": if sNumber == ":s": return suggFemSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggFemPlur(dTokenDst["sValue"]) return suggFemSing(dTokenDst["sValue"]) elif sGender == ":e": if sNumber == ":s": return suggSing(dTokenDst["sValue"]) elif sNumber == ":p": return suggPlur(dTokenDst["sValue"]) return dTokenDst["sValue"] return "" def hasFemForm (sFlex): "return True if there is a feminine form of <sFlex>" for sStem in _oSpellChecker.getLemma(sFlex): if mfsp.isMasForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q3"): return True if phonet.hasSimil(sFlex, ":f"): |
Modified gc_lang/fr/rules.grx from [74ea4b8074] to [a21f7c40a2].
7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 ..... 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 ..... 16290 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 ..... 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 ..... 18242 18243 18244 18245 18246 18247 18248 18249 18250 18251 18252 18253 18254 18255 ..... 18974 18975 18976 18977 18978 18979 18980 18981 18982 18983 18984 18985 18986 18987 ..... 24851 24852 24853 24854 24855 24856 24857 24858 24859 24860 24861 24862 24863 24864 24865 24866 24867 24868 24869 24870 24871 24872 24873 24874 24875 24876 24877 24878 ..... 24925 24926 24927 24928 24929 24930 24931 24932 24933 24934 24935 24936 24937 24938 ..... 26261 26262 26263 26264 26265 26266 26267 26268 26269 26270 26271 26272 26273 26274 26275 26276 ..... 26294 26295 26296 26297 26298 26299 26300 26301 26302 26303 26304 26305 26306 26307 26308 ..... 26311 26312 26313 26314 26315 26316 26317 26318 26319 26320 26321 26322 26323 26324 26325 ..... 26657 26658 26659 26660 26661 26662 26663 26664 26665 26666 26667 26668 26669 26670 26671 26672 26673 ..... 27951 27952 27953 27954 27955 27956 27957 27958 27959 27960 27961 27962 27963 27964 27965 27966 27967 27968 27969 27970 27971 27972 27973 27974 27975 27976 27977 27978 27979 27980 27981 27982 27983 27984 27985 27986 27987 27988 27989 27990 27991 27992 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 28016 28017 28018 28019 28020 28021 28022 28023 28024 28025 28026 28027 28028 28029 28030 28031 28032 28033 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 ..... 29709 29710 29711 29712 29713 29714 29715 29716 29717 29718 29719 29720 29721 29722 |
TEST: Le mari répète à l’envi qu’il a découvert la France à travers les mots de sa femme. TEST: Il reste de nombreux militants sincères à la FI. __conf_de_vconj__ [de|d’] @:[123][sp]¬:[GNA] <<- /conf/ not \2.istitle() and not \2.isupper() and not value(\2, "|jure|") and not tag(\2, "eg1mot") -2>> =suggSimil(\2, ":[NA]", True) && Incohérence avec « \1 » : “\2” est une forme verbale conjuguée. TEST: il s’agit de {{mette}} en évidence. [de|d’] [l’|leur] @:[123][sp]¬:[GNAQ] <<- /conf/ not \3.istitle() and not \3.isupper() -3>> =suggSimil(\3, ":[NA]:.:[si]", True) && Incohérence avec « \1 \2 » : “\3” est une forme verbale conjuguée. TEST: de l’{{arrivait}} TEST: la production d’électricité par des énergies renouvelables aurait encore augmenté de 7 %, selon les calculs de l’AIE ................................................................................ autour [de|d’] [ce|mon|ton|son|notre|votre|leur] [coup|coût|cout] la bride au [coup|coût|cout] la bride autour du [coup|coût|cout] la bride sur le [coup|coût|cout] <<- /conf/ --1>> cou && Confusion probable. Le coût est le prix d’une chose. Le coup est ce qui frappe. Le cou est la partie joignant le tronc à la tête.|https://fr.wiktionary.org/wiki/cou [>cou|>coût|>cout] [au-dessous|en-dessous] [de|d’] la ceinture [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>crayon|>dé|>dent|>déprime|>éponge|>feu|>froid|fil|>filet|>folie|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hachette|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>menton|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>semonce|>sonnette|>sifflet|>soleil|>sonde|>sort|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux] [>cou|>coût|>cout] d’ [>arrêt|>éclat|>épée|>état|>épaule|œil|oeil|>estoc] [>cou|>coût|>cout] du sort [>cou|>coût|>cout] [dur+s] >cou d’ envoi <<- /conf/ -1>> coup|coups && Confusion probable. Le coût est le prix d’une chose. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, écrivez “coup”. violence du [>cou|>coût|>cout] ................................................................................ ci-dessus chaque chose en son temps chose promise ?,¿ chose due comme [de|d’] juste comme bon [me|te|lui|leur|nous|vous] semble comme ci ?,¿ comme ça comme cul et chemise comme [frappé+ses] par la foudre comme gage [de|d’] bonne foi comme n’importe où ?ailleurs¿ comme par [enchantement|magie] comme par un fait exprès comme pas deux comme peau [de|d’] chagrin comme prévu comme promis comme qui dirait comme si [de|d’] rien n’ était comme sur des roulettes comme un lion en cage comme une lettre à la poste contrairement aux apparences contre mauvaise fortune ?,¿ bon cœur contre nature contre toute [attente|vraisemblance] contre vents et marées contre [mon|ton|son|notre|votre|leur] gré ................................................................................ pour ça [vaut|valait] pourtant presque primo quand bien même quand bon [me|te|lui|nous|vous|leur] [semble|semblera|semblait] quant à [ça|cela|ceci] [que|qu’] [ça|ceci|cela] [me|te|lui|leur|nous|vous] plaise ou non [que|qu’] je [le|l’] veuille ou non [que|qu’] tu [le|l’] veuilles ou non qu’ [il|elle|on|iel] [le|l’] veuille ou non [que|qu’] vous [le|l’] vouliez ou non [que|qu’] nous [le|l’] voulions ou non qu’ [ils|elles|iels] [le|l’] veuillent ou non qu’ à cela ne tienne quel qu’ en soit [le|l’] [moyen|prix|danger] quel qu’ en soit [le|l’] risque ?[économique|financier|légal|juridique|militaire]¿ quelle qu’ en soit la [cause|raison] quelque peu ?[de|d’]¿ quelque part qui plus est quoi qu’ il [arrive|arrivât|advienne|advînt] ................................................................................ >résidence d’ [été|hiver] >responsable qualité [>resto|>restau] u >retour à la case départ >retour à la normale >retour [de|d’] [bâton|flamme] >retour en arrière >revue [de|d’] presse >rivière à sec >robe [de|d’] [chambre|soirée] >robe du soir >robe sans >manche >roi [de|d’] [carreau|cœur|pique|trèfle] >roman à [>sensation|suspense] ................................................................................ complètement <<- not morph(<1, ":D.*:m") ~>> * ~.ment$ ?[parlant|pas]¿ <<- morph(\1, ":W", ":(?:3p|N)") ~>> * @@@@ @@@@ @@@@ @@@@ @@@@GRAPH: intergraphe12a|ig12a _ ................................................................................ !! !! !!!! Groupe nominal (sans déterminant) !! !! !! ## Sans article __gn_start_2m__ <start> @:[NA]¬* @:[NA]¬* <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3) && Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) && Accord de genre erroné avec « \3 ». <<- /gn/ ((morph(\2, ":s", "*") and morph(\3, ":p", "*")) or (morph(\2, ":p", "*") and morph(\3, ":s", "*"))) and not apposition(\2, \3) -3>> =switchPlural(\3) && Accord de nombre erroné avec « \2 ». <<- /gn/ __also__ -2>> =switchPlural(\2) && Accord de nombre erroné avec « \3 ». TEST: {{serrurière}} {{intelligent}}. TEST: {{serrurier}} {{intelligente}}. TEST: {{Femmes}} {{mariée}} TEST: {{hommes}} {{marié}} __gn_start_3m__ <start> @:[NA]¬* @:[NA]¬* @:[NA]¬* <<- /gn/ morph(\2, ":p") and morph(\3, ":[pi]") and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. <<- /gn/ morph(\2, ":i") and morph(\3, ":p") and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. <<- /gn/ morph(\2, ":s") and morph(\3, ":[si]") and morph(\4, ":p", ":[si]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. ................................................................................ TEST: {{petite}} et {{grande}} homme ->> petit|||grand TEST: {{bel}} et {{grand}} nation ->> belle|||grande TEST: {{stupides}} et {{intellectuels}} psychologue ->> stupide|||intellectuel TEST: {{petite}} et {{grande}} hommes ->> petits|||grands TEST: {{bel}} et {{grand}} nations ->> belles|||grandes TEST: {{stupide}} et {{intellectuel}} psychologues ->> stupides|||intellectuels ## Prépositions __gn_pfx_en_2m__ en @:[NA]¬* @:[NA]¬* <<- /gn/ ( (morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*")) ) and not apposition(\2, \3) -3>> =switchGender(\3) && Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) && Accord de genre erroné avec « \3 ». ................................................................................ __infi_commencer_finir_par__ [>commencer|>finir] par ?[le|l’|la|leur|les]¿ @:V¬:[NGMY] [>commencer|>finir] par [nous|vous|lui] @:V¬:[GMY] <<- /infi/ not \-1[0:1].isupper() --1>> =suggVerbInfi(\3) && Après « commencer/finir par », le verbe devrait être à l’infinitif. TEST: commence par {{mangé}} le poulet. TEST: enfin la petite finit par {{pleuré}} à chaudes larmes. TEST: sa tournée, elle la finit par Rodez. #### Infinitif après “de” __infi_de_verbe__ [un|une] [de|d’] [perdu+ses] ?,¿ dix [de|d’] [retrouvé+ses] ................................................................................ [de|d’] [me|m’|te|t’|se|s’] [le|la|l’|les|en|y] @:V¬:Y [de|d’] [nous|vous] [le|la|l’|les|en|y] @:V¬:[YP] [de|d’] [le|la|l’|les] [lui|leur|en|y] @:V¬:Y [de|d’] leur en @:V¬:Y [de|d’] lui en @:V¬:[YP] <<- /infi/ --1>> =suggVerbInfi(\-1) && Après “de”, le verbe devrait être à l’infinitif. [de|d’] @:V1.*:(?:Q|Ip.*:2p)¬:N <<- /infi/ not \2[0:1].isupper() and not morph(<1, ">(?:en|passer|qualifier)/") and not morph(\2, ">(?:fieffer|sacrer)/") and not tag(<1, "_rien_") and not before("(?i)(?:quelqu(?:e chose|’une?)|qu’y a-t-il |\\b(?:l(?:es?|a)|nous|vous|me|te|se) trait|personne|points? +$|autant +$|ça +|rien d(?:e |’)|rien(?: +[a-zéèêâîûù]+|) +$)") and not tagbefore(\1, "_ceque_") -2>> =suggVerbInfi(\2) && Le verbe devrait être à l’infinitif. TEST: d’en {{parlé}} sans cesse ->> parler TEST: cela suffit de les {{aimait}} ->> aimer ................................................................................ TEST: je suis certain d’en {{choque}} plusieurs. ->> choquer TEST: elle était capable de la {{trouvait}} où qu’elle soit. ->> trouver TEST: de me le {{facturez}} ->> facturer TEST: suffit de {{la}} {{finit}} ->> là|||finir TEST: Il s’agit de me {{donnait}} tout ça. ->> donner TEST: j’étais incapable de m’{{orientait}} dans la bonne direction. ->> orienter TEST: ils étaient susceptibles de m’y {{trouvaient}} ->> trouver TEST: sa façon de {{nettoyez}} était inefficace. ->> nettoyer TEST: elle a délibérément omis de les {{inclurent}}. ->> inclure TEST: d’{{mangé}} je ne suis pas capable ->> manger TEST: elles n’ont rien touché de souillé TEST: elle s’engage de ne les lui donner qu’en dernier recours. TEST: l’idée consiste de la lui donner sans contrepartie et voir ce qu’il en fera. TEST: de leur plus grand fils, ils attendent beaucoup. TEST: de n’importe quelle manière ................................................................................ TEST: il faut croire que vous {{mangé}} ne nous nourrirait guère ->> manger|mangez TEST: Sommes-nous désespérés à ce point ? TEST: Vous d’habitude si réservée. __infi_y_verbe!3__ y ~ée?s?$ <<- /infi/ morph(\2, ":V", ":[123][sp]") -2>> _ && Le verbe ne devrait pas être un participe passé. TEST: y {{mangée}} était un supplice TEST: j’y crée une nouvelle maison. #### Infinitif directement après verbe __infi_devoir!5__ ................................................................................ TEST: En outre, les grosses institutions comme l’Éducation Nationale ne développent pas forcément en interne TEST: Le mieux serait de le faire glisser __tag_locutions_verbales_d_état__ ## verbes d’état [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] <<- /1>> _VE_ /_VCint_ <<- morph(\1, ":V[0-3]e") /1>> _VEI_ ## locutions verbales d’état >avoir [été|semblé|paru] >avoir [cru|imaginé|pensé|pu|su|voulu] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] >avoir [besoin|crainte|envie|horreur|peur] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] >avoir l’ [envie|exigence|illusion|impression|intention] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] >avoir le [désir|sentiment] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] >avoir la ?ferme¿ [intention|volonté] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] [>être|>sembler|>demeurer|>paraître|>paraitre] [loin|près] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] [>être|>sembler] [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] [>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ avoir [été|semblé|paru] [>arriver|>continuer|>commencer|>parvenir|>renoncer|>réussir|>travailler] à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] [>cesser|>continuer|>craindre|>demander|>exiger|>redouter|>rêver|>refuser|>risquer|>venir] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] [>être|>sembler|>paraître|>paraitre|>devenir|>redevenir|>rester|>demeurer] [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] || [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] <<- /1>> _LVED_ <<- />> _LVE_ <<- /-1>> _LVEF_ /_VCint_ [été|semblé|paru] /_VCint_ [cru|imaginé|pensé|pu|su|voulu] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] /_VCint_ [besoin|crainte|envie|horreur|peur] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] /_VCint_ l’ [envie|exigence|illusion|impression|intention] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] /_VCint_ le [désir|sentiment] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] /_VCint_ la ?ferme¿ [intention|volonté] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] <<- morphVC(\1, ">avoir/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [loin|près] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre] <<- morphVC(\1, ">(?:être|sembler|demeurer|para[îi]tre)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] <<- morphVC(\1, ">(?:être|sembler)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] <<- morphVC(\1, ">(?:aller|adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] /_VCint_ ?[en|y]¿ avoir [été|semblé|paru] <<- morphVC(\1, ">(?:adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] <<- morphVC(\1, ">(?:arriver|commencer|continuer|parvenir|renoncer|réussir|travailler)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] <<- morphVC(\1, ">(?:cesser|continuer|craindre|demander|exiger|redouter|rêver|refuser|risquer|venir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre] <<- morphVC(\1, ":V[0-3]e") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ ## locutions verbales d’état pronominales ................................................................................ TEST: iel semble être {{ignore}} TEST: ouais, on adore avoir été {{persécute}} par ces enfoirés TEST: nous préférions être restés {{chagrinait}} par cette perte TEST: on déclare avoir été {{choque}} par ces nouvelles TEST: ils semblent être redevenus {{élut}} TEST: elles aiment avoir paru {{murent}} __ppas_être_confusion__ ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ --1>> =suggVerbPpas(\-1) && Après “ne \2 être”, il faut un participe passé. avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ not value(<1, "|l’|") and not tagbefore(\1, "_que_") --1>> =suggVerbPpas(\-1) && Après le verbe “être”, il faut un participe passé. |
| > | > > > > < > > > > > > > > > > > < > > > > > > > > > > > > > > > > | | | | > > > > > > > > > > > > > | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > |
7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 ..... 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 ..... 16291 16292 16293 16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 16308 16309 16310 16311 16312 16313 16314 16315 16316 16317 16318 16319 ..... 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 16861 16862 16863 16864 16865 16866 16867 16868 ..... 18254 18255 18256 18257 18258 18259 18260 18261 18262 18263 18264 18265 18266 18267 18268 ..... 18987 18988 18989 18990 18991 18992 18993 18994 18995 18996 18997 18998 18999 19000 19001 19002 ..... 24866 24867 24868 24869 24870 24871 24872 24873 24874 24875 24876 24877 24878 24879 24880 24881 24882 24883 24884 24885 24886 24887 24888 24889 24890 24891 24892 24893 24894 24895 24896 24897 24898 24899 24900 24901 24902 24903 24904 24905 24906 24907 24908 ..... 24955 24956 24957 24958 24959 24960 24961 24962 24963 24964 24965 24966 24967 24968 24969 24970 24971 24972 24973 24974 24975 24976 24977 24978 24979 24980 24981 ..... 26304 26305 26306 26307 26308 26309 26310 26311 26312 26313 26314 26315 26316 26317 26318 26319 ..... 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 ..... 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 ..... 26699 26700 26701 26702 26703 26704 26705 26706 26707 26708 26709 26710 26711 26712 26713 26714 26715 ..... 27993 27994 27995 27996 27997 27998 27999 28000 28001 28002 28003 28004 28005 28006 28007 28008 28009 28010 28011 28012 28013 28014 28015 28016 28017 28018 28019 28020 28021 28022 28023 28024 28025 28026 28027 28028 28029 28030 28031 28032 28033 28034 28035 28036 28037 28038 28039 28040 28041 28042 28043 28044 28045 28046 28047 28048 28049 28050 28051 28052 28053 28054 28055 28056 28057 28058 28059 28060 28061 28062 28063 28064 28065 28066 28067 28068 28069 28070 28071 28072 28073 28074 28075 28076 28077 28078 28079 28080 28081 28082 28083 28084 28085 28086 ..... 29751 29752 29753 29754 29755 29756 29757 29758 29759 29760 29761 29762 29763 29764 29765 29766 29767 29768 29769 29770 29771 29772 29773 29774 29775 29776 29777 29778 29779 |
TEST: Le mari répète à l’envi qu’il a découvert la France à travers les mots de sa femme. TEST: Il reste de nombreux militants sincères à la FI. __conf_de_vconj__ [de|d’] @:[123][sp]¬:[GNA] <<- /conf/ not \2.istitle() and not \2.isupper() and not value(\2, "|jure|") and not tag(\2, "eg1mot") -2>> =suggSimil(\2, ":[NA]", True)+"|"+suggVerbInfi(\2) && Incohérence avec « \1 » : “\2” est une forme verbale conjuguée. TEST: il s’agit de {{mette}} en évidence. TEST: sa façon de {{nettoyez}} était inefficace. ->> nettoyer|nettoyant [de|d’] [l’|leur] @:[123][sp]¬:[GNAQ] <<- /conf/ not \3.istitle() and not \3.isupper() -3>> =suggSimil(\3, ":[NA]:.:[si]", True) && Incohérence avec « \1 \2 » : “\3” est une forme verbale conjuguée. TEST: de l’{{arrivait}} TEST: la production d’électricité par des énergies renouvelables aurait encore augmenté de 7 %, selon les calculs de l’AIE ................................................................................ autour [de|d’] [ce|mon|ton|son|notre|votre|leur] [coup|coût|cout] la bride au [coup|coût|cout] la bride autour du [coup|coût|cout] la bride sur le [coup|coût|cout] <<- /conf/ --1>> cou && Confusion probable. Le coût est le prix d’une chose. Le coup est ce qui frappe. Le cou est la partie joignant le tronc à la tête.|https://fr.wiktionary.org/wiki/cou [>cou|>coût|>cout] [au-dessous|en-dessous] [de|d’] la ceinture [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>crayon|>dé|>dent|>déprime|>éponge|>feu|>froid|fil|>filet|>folie|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hachette|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>menton|monté+s|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>semonce|>sonnette|>sifflet|>soleil|>sonde|>sort|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux] [>cou|>coût|>cout] d’ [>arrêt|>éclat|>épée|>état|>épaule|œil|oeil|>estoc] [>cou|>coût|>cout] du sort [>cou|>coût|>cout] [dur+s] >cou d’ envoi <<- /conf/ -1>> coup|coups && Confusion probable. Le coût est le prix d’une chose. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, écrivez “coup”. violence du [>cou|>coût|>cout] ................................................................................ ci-dessus chaque chose en son temps chose promise ?,¿ chose due comme [de|d’] juste comme bon [me|te|lui|leur|nous|vous] semble comme ci ?,¿ comme ça comme cul et chemise comme des fétus [de|d’] paille comme [frappé+ses] par la foudre comme gage [de|d’] bonne foi comme n’importe où ?ailleurs¿ comme par [enchantement|magie] comme par un fait exprès comme pas deux comme peau [de|d’] chagrin comme prévu comme promis comme qui dirait comme si [de|d’] rien n’ était comme sur des roulettes comme un lion en cage comme un fétu [de|d’] paille comme une lettre à la poste contrairement aux apparences contre mauvaise fortune ?,¿ bon cœur contre nature contre toute [attente|vraisemblance] contre vents et marées contre [mon|ton|son|notre|votre|leur] gré ................................................................................ pour ça [vaut|valait] pourtant presque primo quand bien même quand bon [me|te|lui|nous|vous|leur] [semble|semblera|semblait] quant à [ça|cela|ceci] qu’ à cela ne tienne [que|qu’] [ça|ceci|cela] [me|te|lui|leur|nous|vous] plaise ou non ## [que|qu’] je [le|l’] veuille ou non [que|qu’] tu [le|l’] veuilles ou non qu’ [il|elle|on|iel] [le|l’] veuille ou non [que|qu’] vous [le|l’] vouliez ou non [que|qu’] nous [le|l’] voulions ou non qu’ [ils|elles|iels] [le|l’] veuillent ou non ## [que|qu’] [je|j’] m’ en réjouisse ou que [je|j’] le déplore [que|qu’] tu t’ en réjouisses ou que tu le déplores qu’ [il|elle|iel|on] s’ en réjouisse ou qu’ [il|elle|iel|on] le déplore [que|qu’] nous nous en réjouissions ou que nous le déplorions [que|qu’] vous vous en réjouissez ou que vous le déploriez qu’ [ils|elles|iels] s’ en réjouissent ou qu’ [ils|elles|iels] le déplorent ## quel qu’ en soit [le|l’] [moyen|prix|danger] quel qu’ en soit [le|l’] risque ?[économique|financier|légal|juridique|militaire]¿ quelle qu’ en soit la [cause|raison] quelque peu ?[de|d’]¿ quelque part qui plus est quoi qu’ il [arrive|arrivât|advienne|advînt] ................................................................................ >résidence d’ [été|hiver] >responsable qualité [>resto|>restau] u >retour à la case départ >retour à la normale >retour [de|d’] [bâton|flamme] >retour en arrière revers [de|d’] fortune >revue [de|d’] presse >rivière à sec >robe [de|d’] [chambre|soirée] >robe du soir >robe sans >manche >roi [de|d’] [carreau|cœur|pique|trèfle] >roman à [>sensation|suspense] ................................................................................ complètement <<- not morph(<1, ":D.*:m") ~>> * ~.ment$ ?[parlant|pas]¿ <<- morph(\1, ":W", ":(?:3p|N)") ~>> * , *WORD et $:W¬* , <<- morph(\2, ":W", "*") ~>> * @@@@ @@@@ @@@@ @@@@ @@@@GRAPH: intergraphe12a|ig12a _ ................................................................................ !! !! !!!! Groupe nominal (sans déterminant) !! !! !! __gn_start_prn_1m__ <start> $:M1 ?,¿ @:[NA]¬:([ISKYPEGW]|e:[si]) <<- /gn/ morph(\2, ":M1.*:m", ":[fe]") and morph(\-1, ":[NA]", ":[me]:[si]") --1>> =suggMasSing(\-1) && Cet adjectif n’est pas accordé avec le prénom masculin “\2”. <<- /gn/ __else__ and morph(\2, ":M1.*:f", ":[me]") and morph(\-1, ":[NA]", ":[fe]:[si]") --1>> =suggFemSing(\-1) && Cet adjectif n’est pas accordé avec le prénom féminin “\2”. TEST: Patrick {{partie}} à la boulangerie depuis une heure. ->> parti TEST: Antonina, {{oublié}} par ses parents chez leur grand-mère ->> oubliée TEST: Pauline, {{surnuméraires}} parmi les employés de cette boîte ->> surnuméraire TEST: Ahmed, {{psychologues}} à l’hôpital de Strasbourg ->> psychologue TEST: il fronça les sourcils, inquiet pour son avenir TEST: elles préservaient ce secret, conscientes du danger. __gn_start_2m__ <start> @:[NA]¬* @:[NA]¬* <<- /gn/ ((morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3) && Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) && Accord de genre erroné avec « \3 ». <<- /gn/ ((morph(\2, ":s", "*") and morph(\3, ":p", "*")) or (morph(\2, ":p", "*") and morph(\3, ":s", "*"))) and not apposition(\2, \3) -3>> =switchPlural(\3) && Accord de nombre erroné avec « \2 ». <<- /gn/ __also__ -2>> =switchPlural(\2) && Accord de nombre erroné avec « \3 ». TEST: {{serrurière}} {{intelligent}}. ->> serrurier|||intelligente TEST: {{serrurier}} {{intelligente}}. ->> serrurière|||intelligent TEST: {{Femmes}} {{mariée}} ->> Femme|||mariées TEST: {{hommes}} {{marié}} ->> homme|||mariés __gn_start_3m__ <start> @:[NA]¬* @:[NA]¬* @:[NA]¬* <<- /gn/ morph(\2, ":p") and morph(\3, ":[pi]") and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. <<- /gn/ morph(\2, ":i") and morph(\3, ":p") and morph(\4, ":s", ":[pi]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. <<- /gn/ morph(\2, ":s") and morph(\3, ":[si]") and morph(\4, ":p", ":[si]") and \4.islower() -4>> =switchPlural(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. ................................................................................ TEST: {{petite}} et {{grande}} homme ->> petit|||grand TEST: {{bel}} et {{grand}} nation ->> belle|||grande TEST: {{stupides}} et {{intellectuels}} psychologue ->> stupide|||intellectuel TEST: {{petite}} et {{grande}} hommes ->> petits|||grands TEST: {{bel}} et {{grand}} nations ->> belles|||grandes TEST: {{stupide}} et {{intellectuel}} psychologues ->> stupides|||intellectuels __gn_2m_et__ [<start>|,|(] *WORD et @:A¬:[ISKYPEGW]|;C [<end>|,|)] <<- /gn/ morph(\2, ":A", ":[ISKYPEGW]|;C") and not agreement(\2, \4, False) -2>> =suggAgree(\2, \4) && Cet adjectif n’est pas accordé avec l’adjectif “\4”. <<- /gn/ __also__ -4>> =suggAgree(\4, \2) && Cet adjectif n’est pas accordé avec l’adjectif “\4”. TEST: cette femme, {{grande}} et {{intelligent}} ->> grand|||intelligente TEST: cet homme, {{curieuse}} et {{affligé}} ->> curieux|||affligée TEST: ces personnes, {{étrangères}} et {{passionnée}} ->> étrangère|||passionnées TEST: des portes, {{grands}} et {{folles}} ->> grandes|||fous TEST: ils marchaient ensemble, ingénieurs et patron, vers leur dernière heure, ignorants du danger. TEST: nous roulions lentement vers cette maison, inquiets et apeurés. ## Prépositions __gn_pfx_en_2m__ en @:[NA]¬* @:[NA]¬* <<- /gn/ ( (morph(\2, ":m", "*") and morph(\3, ":f", "*")) or (morph(\2, ":f", "*") and morph(\3, ":m", "*")) ) and not apposition(\2, \3) -3>> =switchGender(\3) && Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) && Accord de genre erroné avec « \3 ». ................................................................................ __infi_commencer_finir_par__ [>commencer|>finir] par ?[le|l’|la|leur|les]¿ @:V¬:[NGMY] [>commencer|>finir] par [nous|vous|lui] @:V¬:[GMY] <<- /infi/ not \-1[0:1].isupper() --1>> =suggVerbInfi(\3) && Après « commencer/finir par », le verbe devrait être à l’infinitif. TEST: commence par {{mangé}} le poulet. ->> manger TEST: enfin la petite finit par {{pleuré}} à chaudes larmes. ->> pleurer TEST: sa tournée, elle la finit par Rodez. #### Infinitif après “de” __infi_de_verbe__ [un|une] [de|d’] [perdu+ses] ?,¿ dix [de|d’] [retrouvé+ses] ................................................................................ [de|d’] [me|m’|te|t’|se|s’] [le|la|l’|les|en|y] @:V¬:Y [de|d’] [nous|vous] [le|la|l’|les|en|y] @:V¬:[YP] [de|d’] [le|la|l’|les] [lui|leur|en|y] @:V¬:Y [de|d’] leur en @:V¬:Y [de|d’] lui en @:V¬:[YP] <<- /infi/ --1>> =suggVerbInfi(\-1) && Après “de”, le verbe devrait être à l’infinitif. [de|d’] @:V1.*:Q¬:N <<- /infi/ not \2[0:1].isupper() and not morph(<1, ">(?:en|passer|qualifier)/") and not morph(\2, ">(?:fieffer|sacrer)/") and not tag(<1, "_rien_") and not before("(?i)(?:quelqu(?:e chose|’une?)|qu’y a-t-il |\\b(?:l(?:es?|a)|nous|vous|me|te|se) trait|personne|points? +$|autant +$|ça +|rien d(?:e |’)|rien(?: +[a-zéèêâîûù]+|) +$)") and not tagbefore(\1, "_ceque_") -2>> =suggVerbInfi(\2) && Le verbe devrait être à l’infinitif. TEST: d’en {{parlé}} sans cesse ->> parler TEST: cela suffit de les {{aimait}} ->> aimer ................................................................................ TEST: je suis certain d’en {{choque}} plusieurs. ->> choquer TEST: elle était capable de la {{trouvait}} où qu’elle soit. ->> trouver TEST: de me le {{facturez}} ->> facturer TEST: suffit de {{la}} {{finit}} ->> là|||finir TEST: Il s’agit de me {{donnait}} tout ça. ->> donner TEST: j’étais incapable de m’{{orientait}} dans la bonne direction. ->> orienter TEST: ils étaient susceptibles de m’y {{trouvaient}} ->> trouver TEST: elle a délibérément omis de les {{inclurent}}. ->> inclure TEST: d’{{mangé}} je ne suis pas capable ->> manger TEST: elles n’ont rien touché de souillé TEST: elle s’engage de ne les lui donner qu’en dernier recours. TEST: l’idée consiste de la lui donner sans contrepartie et voir ce qu’il en fera. TEST: de leur plus grand fils, ils attendent beaucoup. TEST: de n’importe quelle manière ................................................................................ TEST: il faut croire que vous {{mangé}} ne nous nourrirait guère ->> manger|mangez TEST: Sommes-nous désespérés à ce point ? TEST: Vous d’habitude si réservée. __infi_y_verbe!3__ y ~ée?s?$ <<- /infi/ \1.islower() and morph(\2, ":V", ":[123][sp]") -2>> =suggVerbInfi(\2) && Le verbe ne devrait pas être un participe passé. TEST: y {{mangée}} était un supplice ->> manger TEST: j’y crée une nouvelle maison. #### Infinitif directement après verbe __infi_devoir!5__ ................................................................................ TEST: En outre, les grosses institutions comme l’Éducation Nationale ne développent pas forcément en interne TEST: Le mieux serait de le faire glisser __tag_locutions_verbales_d_état__ ## verbes d’état [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre|>apparaître|>apparaitre] <<- /1>> _VE_ /_VCint_ <<- morph(\1, ":V[0-3]e") /1>> _VEI_ ## locutions verbales d’état >avoir [été|semblé|paru] >avoir [cru|imaginé|pensé|pu|su|voulu] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] >avoir [besoin|crainte|envie|horreur|peur] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] >avoir l’ [envie|exigence|illusion|impression|intention] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] >avoir le [désir|sentiment] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] >avoir la ?ferme¿ [intention|volonté] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] [>être|>sembler|>demeurer|>paraître|>apparaître|>apparaitre] [loin|près] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|apparaître|apparaitre] [>être|>sembler] [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] [>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses|apparu+ses] [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || ?[en|y]¿ avoir [été|semblé|paru] [>arriver|>continuer|>commencer|>parvenir|>renoncer|>réussir|>travailler] à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] [>cesser|>continuer|>craindre|>demander|>exiger|>redouter|>rêver|>refuser|>risquer|>venir] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre|>apparaître|>apparaitre] [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] || [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] <<- /1>> _LVED_ <<- />> _LVE_ <<- /-1>> _LVEF_ /_VCint_ [été|semblé|paru] /_VCint_ [cru|imaginé|pensé|pu|su|voulu] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] /_VCint_ [besoin|crainte|envie|horreur|peur] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] /_VCint_ l’ [envie|exigence|illusion|impression|intention] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] /_VCint_ le [désir|sentiment] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] /_VCint_ la ?ferme¿ [intention|volonté] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ">avoir/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [loin|près] [de|d’] [être|sembler|devenir|rester|demeurer|redevenir|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ">(?:être|sembler|demeurer|para[i]tre|appara[i]tre)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] <<- morphVC(\1, ">(?:être|sembler)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ">(?:aller|adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ ?[en|y]¿ être [devenu+ses|redevenu+ses|resté+ses|demeuré+ses] /_VCint_ ?[en|y]¿ avoir [été|semblé|paru] <<- morphVC(\1, ">(?:adorer|affirmer|aimer|croire|déclarer|désirer|détester|devoir|dire|estimer|imaginer|para[îi]tre|penser|pouvoir|préférer|risquer|savoir|sembler|souhaiter|vouloir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ à ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ">(?:arriver|commencer|continuer|parvenir|renoncer|réussir|travailler)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ">(?:cesser|continuer|craindre|demander|exiger|redouter|rêver|refuser|risquer|venir)/") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ /_VCint_ [>content|>conscient|>heureux|>inquiet|>malheureux|>susceptible] [de|d’] ?[ne|n’]¿ ?[en|y]¿ [être|sembler|devenir|redevenir|rester|demeurer|paraître|paraitre|apparaître|apparaitre] <<- morphVC(\1, ":V[0-3]e") >>> <<- /1>> _LVEID_ <<- />> _LVEI_ <<- /-1>> _LVEIF_ ## locutions verbales d’état pronominales ................................................................................ TEST: iel semble être {{ignore}} TEST: ouais, on adore avoir été {{persécute}} par ces enfoirés TEST: nous préférions être restés {{chagrinait}} par cette perte TEST: on déclare avoir été {{choque}} par ces nouvelles TEST: ils semblent être redevenus {{élut}} TEST: elles aiment avoir paru {{murent}} __ppas_fin_loc_verb_état_adj_et_adj__ [/_VE_|/_VEI_|/_LVEF_|/_LVEIF_|/_VEP_|/_LVEPF_|/_LVEPIF_] *WORD et @:A¬:[ISKYPEGW]|;C <<- /ppas/ morph(\2, ":[AQ]", ":G|;C") and not agreement(\2, \-1, False) --1>> =suggAgree(\-1, \2) && Cet adjectif n’est pas accordé avec l’adjectif “\2”. TEST: il est furieux et {{curieuse}} ->> curieux TEST: tu es sot et {{ignorants}} ->> ignorant TEST: elle est belle et {{intelligent}} ->> intelligente TEST: elle sut apparaître grande et {{humbles}} à la fois ->> humble TEST: ils devenaient forts et {{humble}} ->> humbles TEST: ils crurent avoir été trompés et {{volé}} ->> volés TEST: elles déclareront être restées calmes et {{attentive}} ->> attentives TEST: nous imaginons devenir riches et {{connu}} ->> connus __ppas_être_confusion__ ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ --1>> =suggVerbPpas(\-1) && Après “ne \2 être”, il faut un participe passé. avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ not value(<1, "|l’|") and not tagbefore(\1, "_que_") --1>> =suggVerbPpas(\-1) && Après le verbe “être”, il faut un participe passé. |