Grammalecte  Check-in [79f51ff0f6]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 79f51ff0f6d98a5fa21f1626ec849480d6f6f087d838927d59e7b4b0328649b8
User & Date: olr on 2018-08-08 20:20:46
Other Links: branch diff | manifest | tags
Context
2018-08-10
11:25
[core][build][fr] merge token tags and sentence tags, immunity rework check-in: b08008a010 user: olr tags: build, core, fr, rg
2018-08-08
20:20
[fr] conversion: regex rules -> graph rules check-in: 79f51ff0f6 user: olr tags: fr, rg
2018-08-07
07:27
[fr] conversion: regex rules -> graph rules check-in: 9b089fd7db user: olr tags: fr, rg
Changes

Modified gc_lang/fr/modules/gce_analyseur.py from [7ecf93be16] to [780ea92640].

   105    105           return True
   106    106       if 1 < len(s) < 16 and s[0:1].islower() and (not s[1:].islower() or _zUnitNumbers.search(s)):
   107    107           return True
   108    108       return False
   109    109   
   110    110   
   111    111   #### Syntagmes
   112         -
   113         -_zEndOfNG1 = re.compile(" *$| +(?:, +|)(?:n(?:’|e |o(?:u?s|tre) )|l(?:’|e(?:urs?|s|) |a )|j(?:’|e )|m(?:’|es? |a |on )|t(?:’|es? |a |u )|s(?:’|es? |a )|c(?:’|e(?:t|tte|s|) )|ç(?:a |’)|ils? |vo(?:u?s|tre) )")
   114         -_zEndOfNG2 = re.compile(r" +(\w[\w-]+)")
   115         -_zEndOfNG3 = re.compile(r" *, +(\w[\w-]+)")
   116         -
   117         -def isEndOfNG (dDA, s, iOffset):
   118         -    "returns True if next word doesn’t belong to a noun group"
   119         -    if _zEndOfNG1.match(s):
   120         -        return True
   121         -    m = _zEndOfNG2.match(s)
   122         -    if m and morphex(dDA, (iOffset+m.start(1), m.group(1)), ":[VR]", ":[NAQP]"):
   123         -        return True
   124         -    m = _zEndOfNG3.match(s)
   125         -    if m and not morph(dDA, (iOffset+m.start(1), m.group(1)), ":[NA]", False):
   126         -        return True
   127         -    return False
   128         -
   129         -
   130         -_zNextIsNotCOD1 = re.compile(" *,")
   131         -_zNextIsNotCOD2 = re.compile(" +(?:[mtsnj](e +|’)|[nv]ous |tu |ils? |elles? )")
   132         -_zNextIsNotCOD3 = re.compile(r" +([a-zéèî][\w-]+)")
   133         -
   134         -def isNextNotCOD (dDA, s, iOffset):
   135         -    "returns True if next word is not a COD"
   136         -    if _zNextIsNotCOD1.match(s) or _zNextIsNotCOD2.match(s):
   137         -        return True
   138         -    m = _zNextIsNotCOD3.match(s)
   139         -    if m and morphex(dDA, (iOffset+m.start(1), m.group(1)), ":[123][sp]", ":[DM]"):
   140         -        return True
   141         -    return False
   142         -
   143    112   
   144    113   _zNextIsVerb1 = re.compile(" +[nmts](?:e |’)")
   145    114   _zNextIsVerb2 = re.compile(r" +(\w[\w-]+)")
   146    115   
   147    116   def isNextVerb (dDA, s, iOffset):
   148    117       "returns True if next word is a verb"
   149    118       if _zNextIsVerb1.match(s):

Modified gc_lang/fr/rules.grx from [c5dddc3072] to [52284b2f0c].

  3233   3233   
  3234   3234       [de|d’]  @:¬:[YD]
  3235   3235           <<- =>> exclude(\2, ":V")
  3236   3236   
  3237   3237       d’ [un|une]  *WORD
  3238   3238           <<- =>> exclude(\3, ":V")
  3239   3239   
  3240         -    [des|chaque|quelque|quelques|cet|cette|mon|ma|ta|sa|mes|au|aux|nos|vos]  *WORD
         3240  +    [des|chaque|quelque|quelques|cet|cette|mon|ma|ta|sa|mes|au|aux|nos|vos|aucun|aucune]  *WORD
  3241   3241           <<- =>> exclude(\2, ":V")
  3242   3242   
  3243   3243       de  [la|l’]  @:¬:Y
  3244   3244           <<- =>> exclude(\3, ":V")
  3245   3245   
  3246   3246       de [>telle|ce|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|notre|votre|plein|pleine]  *WORD
  3247   3247           <<- =>> exclude(\3, ":V")
................................................................................
  4733   4733   
  4734   4734   # par acquit de conscience
  4735   4735   __conf_acquit_acquis__
  4736   4736       par acquis de conscience
  4737   4737           <<- /conf/ -2>> acquit                          # Confusion. On écrit « par acquit de conscience ».
  4738   4738           <<- ~>> *
  4739   4739   
         4740  +TEST: par {{acquis}} de conscience
         4741  +TEST: tout ce qu’on fait par acquit de conscience
         4742  +
         4743  +
         4744  +# âge / age
         4745  +__conf_âge_age__
         4746  +    en bas age
         4747  +        <<- /conf/ -3>> âge                             # L’age est un élément de la charrue. Pour la durée d’existence, écrivez “âge”.
         4748  +
         4749  +    quel age /VCint
         4750  +        <<- /conf/ morphVC(\3, ">avoir") -2>> âge       # L’age est un élément de la charrue. Pour la durée d’existence, écrivez “âge”.
         4751  +
         4752  +    quel [es|est|étais|était|seras|sera|serais|serait] [mon|ton|son] age
         4753  +        <<- /conf/ -4>> âge                             # L’age est un élément de la charrue. Pour la durée d’existence, écrivez “âge”.
         4754  +
         4755  +    age [tendre|moyen|avancé]
         4756  +        <<- /conf/ -1>> âge                             # L’age est un élément de la charrue. Pour la durée d’existence, écrivez “âge”.
         4757  +
         4758  +    [bel|grand] age
         4759  +        <<- /conf/ -2>> âge                             # L’age est un élément de la charrue. Pour la durée d’existence, écrivez “âge”.
         4760  +
         4761  +TEST: des enfants morts en bas {{age}}.
         4762  +TEST: Quel {{age}} aura-t-il
         4763  +TEST: quel était ton {{age}} ?
         4764  +TEST: il est d’un {{age}} avancé.
         4765  +TEST: c’est le bel {{age}}.
         4766  +
  4740   4767   
  4741   4768   # aux dépens
  4742   4769   __conf_aux_dépens__
  4743   4770       au [dépend|dépends|dépens]
  4744   4771       aux [dépend|dépends]
  4745   4772           <<- /conf/ ->> aux dépens           # Locution prépositive : « aux dépens de ».|https://fr.wiktionary.org/wiki/aux_d%C3%A9pens_de
  4746   4773   
................................................................................
  4881   4908   TEST: à qui ce texte doit tant, à qui ce texte est dédié
  4882   4909   
  4883   4910   
  4884   4911   # ce à quoi
  4885   4912   __conf_ce_à_quoi_qui__
  4886   4913       se [à|a] [quoi|koi]
  4887   4914       ce a [quoi|koi]
         4915  +    ce à koi
  4888   4916           <<- /conf/ ->> ce à quoi                                # Confusion.|https://fr.wiktionary.org/wiki/ce_%C3%A0_quoi
  4889   4917   
  4890   4918   TEST: c’est {{se a quoi}} il pensait qui le minait.
  4891   4919   
  4892   4920   
  4893   4921   # ces / ses / c’est
  4894   4922   __conf_ces_ses_c_est__
................................................................................
  7908   7936       du [nord|sud] au [nord|sud]
  7909   7937       du tout au tout
  7910   7938       eh bien
  7911   7939       en \d\d+ [ans|années|mois|semaines|jours|heures|minutes|secondes]
  7912   7940       en [aparté|apparence|arrière|avance|avant|cachette|ceci|cela|clair|commun|conséquence|continu|contrepartie|définitive|détail|direct|douce|effet|émoi|filigrane|général|goguette|hâte|majorité|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|prime|privé|principe|priorité|public|réalité|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|théorie|trompe-l’œil|vain|vérité|ville|vitesse]
  7913   7941       en aucun cas
  7914   7942       en aucune [circonstance|façon|manière]
         7943  +    en bas âge
  7915   7944       en bon état
  7916   7945       en bonne [compagnie|posture|voie]
  7917   7946       en bonne et due forme
  7918   7947       en bonne santé ?[physique|mentale|psychique]¿
  7919   7948       en bout de course
  7920   7949       en cas [de|d’] [besoin|doute|urgence]
  7921   7950       en [chacun|chacune] [de|d’] [nous|vous|eux|elles]
................................................................................
  8771   8800       >arc à poulies
  8772   8801       >arme à feu
  8773   8802       >armée de l’air
  8774   8803       >armée terre
  8775   8804       >armer jusqu aux dents
  8776   8805       >arme de [poing|guerre]
  8777   8806       >arme de destruction massive
         8807  +    >appel au secours
  8778   8808       >attestation sur l’ honneur
  8779   8809       >attendre de pied ferme
  8780   8810       ayants droit
  8781   8811       >billet de *NUM [>euro|>dollar|>centime|>cent|>livre|>shilling]
  8782   8812       [>bisphénol|>bisphenol] A
  8783   8813       >blanche comme neige
  8784   8814       >blanche comme de la craie
................................................................................
  9240   9270   
  9241   9271   ## Seconde passe (il faut réorganiser tout le cycle de simplification)
  9242   9272   
  9243   9273   __purge_ponctuations__
  9244   9274       ,   ,
  9245   9275       (   )
  9246   9276       [   ]
         9277  +    {   }
  9247   9278       <   >
  9248   9279       [-|–|—]  [-|–|—]
  9249   9280           <<- ~>> *
  9250   9281   
  9251   9282       <start>  ,
  9252   9283           <<- ~2>> *
  9253   9284   
................................................................................
  9789   9820       ladite  *WORD
  9790   9821           <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> ledit                               # Accord de genre erroné : « \2 » est masculin.
  9791   9822           <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    # Accord de genre erroné : « \1 » est un déterminant féminin.
  9792   9823           <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    # Accord de nombre erroné : « \2 » devrait être au singulier.
  9793   9824   
  9794   9825   TEST: ladite {{passions}} l’avait conduit à sa perte.
  9795   9826   
         9827  +
         9828  +__gn_aucun_1m__
         9829  +    aucun  *WORD
         9830  +        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> aucune                              # Accord de genre erroné : « \2 » est féminin.
         9831  +        <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True)                    # Accord de genre erroné : « \1 » est un déterminant masculin.
         9832  +        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    # Accord de nombre erroné : « \2 » devrait être au singulier.
         9833  +
         9834  +TEST: aucun {{accords}} n’y changera rien.
         9835  +
         9836  +__gn_aucune_1m__
         9837  +    aucune  *WORD
         9838  +        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> aucun                               # Accord de genre erroné : « \2 » est masculin.
         9839  +        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    # Accord de genre erroné : « \1 » est un déterminant féminin.
         9840  +        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    # Accord de nombre erroné : « \2 » devrait être au singulier.
         9841  +
         9842  +TEST: aucune {{passions}} n’est digne qu’on meurt pour elle.
         9843  +
  9796   9844   
  9797   9845   __gn_un_1m__
  9798   9846       un  *WORD
  9799   9847           <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une                    # Accord de genre erroné : « \2 » est féminin.
  9800   9848           <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True)                    # Accord de genre erroné : « \1 » est un déterminant masculin.
  9801   9849           <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    # Accord de nombre erroné : « \2 » devrait être au singulier.
  9802   9850   
................................................................................
 11414  11462       en >bonnet >difforme
 11415  11463       en >bonne et [du|due|dus|dues] >forme
 11416  11464           <<- ->> en bonne et due forme                                   # Locution “en bonne et due forme” (invariable).|https://fr.wiktionary.org/wiki/en_bonne_et_due_forme
 11417  11465   
 11418  11466   TEST: une raclée {{en bonnes et dues formes}}
 11419  11467   TEST: remplir son formulaire en bonne et due forme, c’est le minimum pour espérer un retour positif.
 11420  11468   
        11469  +
        11470  +## s’en / c’en
        11471  +__conf_c_en_être__
        11472  +    s’ en  [es|est|sera|seras|étais|était] [fini|finie|finis|finit|terminé|terminés|terminée|terminées]
        11473  +        <<- /conf/ morph(<1, ":C|<start>") or value(<1, "|,|")
        11474  +        -1:2>> c’en                                         # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
        11475  +
        11476  +    s’ en  [es|est|sera|seras|étais|était] [assez|trop] [<end>|,|de|d’]
        11477  +        <<- /conf/ -1:2>> c’en                              # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
        11478  +
        11479  +    s’ en  [es|est|sera|seras|étais|était] @:A¬:[GVW]
        11480  +        <<- /conf/ morph(<1, ":C|<start>") or value(<1, "|,|")
        11481  +        -1:2>> c’en                                         # Confusion probable : “\2” est un adjectif. « C’en est… » équivaut à « ça, c’est… ».3|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
        11482  +
        11483  +TEST: c’en est fini d’eux, ils sont comme morts
        11484  +TEST: c’en est assez, ça suffit
        11485  +TEST: tout ça, {{s’en}} est fini.
        11486  +TEST: {{s’en}} est assez de ces foutaises.
        11487  +TEST: c’est tellement idiot, {{s’en}} est dérisoire…
        11488  +
 11421  11489   
 11422  11490   # en butte à / but / bute
 11423  11491   __conf_en_butte_à_au__
 11424  11492       en [>but|>bute]  [à|au|aux]
 11425  11493            <<- /conf/ -2>> butte                                          # Confusion. Écrivez « en butte \3 ».
 11426  11494   
 11427  11495   TEST: Et moi toujours en {{but}} à de nouveaux dangers
 11428  11496   
 11429  11497   
 11430  11498   # cane / canne (from LanguageTool)
 11431         -__conf_canne_à_de__
        11499  +__conf_canne_cane__
 11432  11500       >cane à [sucre|pêche|selfie]
 11433  11501       >cane [de|d’] [bambou|bois|combat|compagnon|compagnonnage|défense|golf|marche|Noël|ramonage)|>aveugle]
 11434  11502           <<- /conf/ -1>> =\1.replace("ane", "anne")                      # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
 11435  11503   
 11436  11504       [>alcool|>coup|>sucre|>sirop] de >cane
 11437  11505           <<- /conf/ -3>> canne                                           # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
 11438  11506   
 11439  11507       [>œuf|>filet] de >canne
 11440  11508           <<- /conf/ -3>> cane                                            # Confusion. La canne est un bâton ou un roseau. Pour la femelle du canard, écrivez “cane”.|https://fr.wiktionary.org/wiki/canne
 11441  11509   
 11442  11510       [>appuyer|>battre|>frapper|>lever|>marcher] [avec|sur] [les|des|ma|ta|sa|mes|tes|ses|cette|une] >cane
 11443  11511           <<- /conf/ -4>> =\4.replace("ane", "anne")                      # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
 11444         -
 11445  11512   
 11446  11513       >bec de >canne
 11447  11514       bec-de-canne
 11448  11515       becs-de-cannes
 11449  11516       bec-de-cannes
 11450  11517       becs-de-canne
 11451  11518           <<- /conf/ ->> bec-de-cane|becs-de-cane         # Confusion. Le bec-de-cane se somme ainsi à cause de la ressemblance avec le bec de l’animal.|https://fr.wiktionary.org/wiki/bec-de-cane
................................................................................
 12577  12644           <<- ~3:4>> *
 12578  12645   
 12579  12646       que l’ on
 12580  12647           <<- ~2>> *
 12581  12648   
 12582  12649   
 12583  12650   ### Simplification des groupes nominaux
 12584         -__purge_syntagmes_nominaux__
        12651  +__purge_pronoms__
 12585  12652       [aucun|aucune] [de|d’] ?entre¿ [nous|vous|eux|elles]
 12586  12653           <<- ~2:0>> *
 12587  12654   
 12588  12655       [aucun|aucune] des *WORD [ne|n’]
 12589  12656           <<- ~2:3>> *
 12590  12657   
 12591  12658       [aucun|aucune] des *WORD *WORD [ne|n’]
................................................................................
 12593  12660   
 12594  12661       beaucoup de [monde|temps]
 12595  12662           <<- ~2:3>> _
 12596  12663   
 12597  12664       [chacun|chacune] [de|d’] ?entre¿ [nous|vous|eux|elles]
 12598  12665           <<- ~2:0>> *
 12599  12666   
 12600         -
 12601         -    [le|la|l’|les|leur|ton|son|certains|certaines] *WORD *WORD
 12602         -        <<- morph(\2, ":[NA]", ":(?:[123]p|P|X|G)") and morph(\3, ":[NA]", ":(?:G|[123][sp]|P)") >>>
 12603         -        <<- morph(\3, ":N", ":A") and morph(\2, ":A", ":N") ~2>> *
 12604         -        <<- __else__ ~3>> *
 12605         -
 12606         -    [des|ce|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs|au|aux] *WORD *WORD
 12607         -        <<- morph(\3, ":[NA]", ":(?:G|[123][sp]|P)") >>>
 12608         -        <<- morph(\3, ":N", ":A") and morph(\2, ":A", ":N") ~2>> *
 12609         -        <<- __else__ ~3>> *
 12610         -
 12611         -    [de|d’]  [façon|manière]  ?non¿  @:A  et  ?non¿  @:A¬:[GM]
 12612         -    [de|d’]  [façon|manière]  ?non¿  @:A
 12613         -        <<- ~>> *
 12614         -
 12615         -    [de|d’]  @:[NA].*:s¬:Y  <end>
 12616         -    [de|d’]  @:[NA].*:s¬:Y  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12617         -    [de|d’]  @:[NA].*:s¬:Y  @:[VR]¬:[NAP]
 12618         -    [de|d’]  @:[NA].*:s¬:Y  , @¬:[NA]
 12619         -        <<- ~1:2>> *
 12620         -
 12621         -    [de|d’]  @:[NA].*:s¬:Y  @:[NA].*:s¬:(?:G|[123][sp]|O)   <end>
 12622         -    [de|d’]  @:[NA].*:s¬:Y  @:[NA].*:s¬:(?:G|[123][sp]|O)   ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12623         -    [de|d’]  @:[NA].*:s¬:Y  @:[NA].*:s¬:(?:G|[123][sp]|O)   @:[VR]¬:[NAP]
 12624         -    [de|d’]  @:[NA].*:s¬:Y  @:[NA].*:s¬:(?:G|[123][sp]|O)   , @¬:[NA]
 12625         -        <<- ~1:3>> *
 12626         -
 12627         -    en tant que >telle
 12628         -        <<- ~>> *
 12629         -
 12630         -    en [plein|pleine] @:[NA]  <end>
 12631         -    en [plein|pleine] @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12632         -    en [plein|pleine] @:[NA]  @:[VR]¬:[NAP]
 12633         -    en [plein|pleine] @:[NA]  , @¬:[NA]
 12634         -        <<- ~1:3>> *
 12635         -
 12636         -    fois que
 12637         -        <<- ~1>> _
 12638         -
 12639  12667       la plupart des *WORD <end>
 12640  12668       la plupart des *WORD ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12641  12669       la plupart des *WORD @:[VR]¬:[NAP]
 12642  12670       la plupart des *WORD , @¬:[NA]
 12643  12671           <<- ~3:4>> *
 12644  12672   
 12645  12673       la plupart des *WORD @:[NA].*:[pi]¬:(?:G|[123][sp]|O) <end>
................................................................................
 12669  12697       [un|une] de [nous|vous]
 12670  12698       [un|une] d’ [eux|elles]
 12671  12699       [un|une] d’ entre [nous|vous|eux|elles]
 12672  12700       [un|une] des [nôtres|vôtres]
 12673  12701           <<- ~2:0>> *
 12674  12702   
 12675  12703   
 12676         -__purge_après_prépositions__
 12677         -    [à|au|aux|avec|en|lors]  [de|d’]  [la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  <end>
 12678         -    [à|au|aux|avec|en|lors]  [de|d’]  [la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12679         -    [à|au|aux|avec|en|lors]  [de|d’]  [la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  @:[VR]¬:[NAP]
 12680         -    [à|au|aux|avec|en|lors]  [de|d’]  [la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  ,  @¬:[NA]
        12704  +__purge_syntagmes_nominaux__
        12705  +    [à|au|aux|avec|en|lors]  [de|d’]  [un|une|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  <end>
        12706  +    [à|au|aux|avec|en|lors]  [de|d’]  [un|une|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12707  +    [à|au|aux|avec|en|lors]  [de|d’]  [un|une|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  @:[VR]¬:[NAP]
        12708  +    [à|au|aux|avec|en|lors]  [de|d’]  [un|une|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  *WORD  ,  @¬:[NA]
 12681  12709           <<- ~1:4>> *
 12682  12710   
 12683  12711       [à|au|aux|avec|en|lors]  [des|du]  *WORD  <end>
 12684  12712       [à|au|aux|avec|en|lors]  [des|du]  *WORD  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12685  12713       [à|au|aux|avec|en|lors]  [des|du]  *WORD  @:[VR]¬:[NAP]
 12686  12714       [à|au|aux|avec|en|lors]  [des|du]  *WORD  , @¬:[NA]
 12687  12715           <<- ~1:3>> *
 12688  12716   
 12689         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour|au|aux]  @:[NAM]¬:[GY]  <end>
 12690         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour|au|aux]  @:[NAM]¬:[GY]  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12691         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour|au|aux]  @:[NAM]¬:[GY]  @:[VR]¬:[NAP]
 12692         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour|au|aux]  @:[NAM]¬:[GY]  , @¬:[NA]
        12717  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux]  @:[NAM]¬:[GY]  <end>
        12718  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux]  @:[NAM]¬:[GY]  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12719  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux]  @:[NAM]¬:[GY]  @:[VR]¬:[NAP]
        12720  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux]  @:[NAM]¬:[GY]  , @¬:[NA]
 12693  12721           <<- ~1:2>> *
 12694  12722   
 12695         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour] [le|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  <end>
 12696         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour] [le|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12697         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour] [le|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  @:[VR]¬:[NAP]
 12698         -    [à|avec|sur|sous|selon|contre|chez|dans|envers|par|pour] [le|la|l’|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  , @¬:[NA]
        12723  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur] [un|une|le|la|l’|les|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  <end>
        12724  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur] [un|une|le|la|l’|les|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12725  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur] [un|une|le|la|l’|les|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  @:[VR]¬:[NAP]
        12726  +    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur] [un|une|le|la|l’|les|leur|leurs|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|quelques|certains|certaines]  @:[NAM]¬:G  , @¬:[NA]
 12699  12727           <<- ~1:3>> *
 12700  12728   
 12701         -    [de|d’]  @:N¬:[GY]  <end>
 12702         -    [de|d’]  @:N¬:[GY]  ?,¿  [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12703         -    [de|d’]  @:N¬:[GY]  @:[VR]¬:[NAP]
 12704         -    [de|d’]  @:N¬:[GY]  , @¬:[NA]
        12729  +    [le|la|l’|les|leur|ton|son|certains|certaines] *WORD *WORD
        12730  +        <<- morph(\2, ":[NA]", ":(?:[123]p|P|X|G)") and morph(\3, ":[NA]", ":(?:G|[123][sp]|P)") >>>
        12731  +        <<- morph(\3, ":N", ":A") and morph(\2, ":A", ":N") ~2>> *
        12732  +        <<- __else__ ~3>> *
        12733  +
        12734  +    [des|ce|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs|au|aux] *WORD *WORD
        12735  +        <<- morph(\3, ":[NA]", ":(?:G|[123][sp]|P)") >>>
        12736  +        <<- morph(\3, ":N", ":A") and morph(\2, ":A", ":N") ~2>> *
        12737  +        <<- __else__ ~3>> *
        12738  +
        12739  +    [de|d’]  [façon|manière]  ?non¿  @:A  et  ?non¿  @:A¬:[GM]
        12740  +    [de|d’]  [façon|manière]  ?non¿  @:A
        12741  +        <<- ~>> *
        12742  +
        12743  +    [de|d’]  @:[NA].*:s¬:[YG]  <end>
        12744  +    [de|d’]  @:[NA].*:s¬:[YG]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12745  +    [de|d’]  @:[NA].*:s¬:[YG]  @:[VR]¬:[NAP]
        12746  +    [de|d’]  @:[NA].*:s¬:[YG]  , @¬:[NA]
 12705  12747           <<- not value(\2, "|autres|") ~1:2>> *
 12706  12748   
        12749  +    [de|d’]  @:[NA].*:s¬:[YG]  @:[NA].*:s¬:(?:G|[123][sp]|O)   <end>
        12750  +    [de|d’]  @:[NA].*:s¬:[YG]  @:[NA].*:s¬:(?:G|[123][sp]|O)   ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12751  +    [de|d’]  @:[NA].*:s¬:[YG]  @:[NA].*:s¬:(?:G|[123][sp]|O)   @:[VR]¬:[NAP]
        12752  +    [de|d’]  @:[NA].*:s¬:[YG]  @:[NA].*:s¬:(?:G|[123][sp]|O)   , @¬:[NA]
        12753  +        <<- ~1:3>> *
 12707  12754   
 12708         -__purge_autre__
 12709         -    [<start>|,] nul doute [que|qu’|qu]
 12710         -        <<- ~2:0>> *
        12755  +    [de|d’]  [un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  <end>
        12756  +    [de|d’]  [un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12757  +    [de|d’]  [un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  @:[VR]¬:[NAP]
        12758  +    [de|d’]  [un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  , @¬:[NA]
        12759  +        <<- ~1:3>> *
 12711  12760   
 12712         -    y compris
 12713         -        <<- not value(<1, "|j’|n’|tu|") ~>> *
        12761  +    de  [la|leur]  @:[NA]¬:Y  <end>
        12762  +    de  [la|leur]  @:[NA]¬:Y  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12763  +    de  [la|leur]  @:[NA]¬:Y  @:[VR]¬:[NAP]
        12764  +    de  [la|leur]  @:[NA]¬:Y  , @¬:[NA]
        12765  +        <<- ~1:3>> *
 12714  12766   
        12767  +    en [plein|pleine] @:[NA]  <end>
        12768  +    en [plein|pleine] @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
        12769  +    en [plein|pleine] @:[NA]  @:[VR]¬:[NAP]
        12770  +    en [plein|pleine] @:[NA]  , @¬:[NA]
        12771  +        <<- ~1:3>> *
 12715  12772   
 12716         -
 12717         -@@@@
 12718         -@@@@END_GRAPH                                                                                      _
 12719         -@@@@
 12720         -
 12721         -# isEndOfNG:
        12773  +#### isEndOfNG ####
 12722  12774   # <end>
 12723  12775   # @:[VR]¬:[NAP]
 12724  12776   # , @¬:[NA]
 12725  12777   # ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
 12726  12778   
 12727  12779   
 12728         -# de +
 12729         -__[i](p_de_vinfi)__
 12730         -    d(?:e |’)({infi}) @@$
 12731         -    <<- morphex(\1, ":V[123]_i", ">(?:devenir|rester|demeurer)/") and isNextNotCOD() ~>> *
 12732         -
 12733         -__[i](p_douter_que)__
 12734         -    (dout\w+)( ) *que?  @@0,*  <<- morph(\1, ">douter/", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> ,
 12735         -
 12736         -## de +
 12737         -__[i](p_de_pronom_nom)__
 12738         -    de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2})  @@$
 12739         -    <<- morph(\1, ":[NA]", False) and isEndOfNG() ~>> *
 12740         -__[i](p_de_la_leur_nom)__
 12741         -    de l(?:a|eur) +({w_2})  @@$
 12742         -    <<- morphex(\1, ":[NA]", ":Y") and isEndOfNG() ~>> *
 12743         -
 12744         -__[s](p_virgule_virgule2)__     , +, <<- ~>> *
 12745         -__[s](p_première_virgule2)__    ^ *, <<- ~>> *
 12746         -__[s](p_dernière_virgule2)__    , *$ <<- ~>> *
 12747         -__[s](p_tiret_tiret2)__         [—–-] +[—–-] <<- ~>> *
 12748         -__[s](p_parenthèses_vides2)__   [(] +[)] <<- ~>> *
 12749         -__[s](p_balise_vide2)__         [<] +[>] <<- ~>> *
 12750         -
        12780  +__purge_autre__
        12781  +    [de|d’]  @:V[123]_i.*:Y¬>(?:devenir|rester|demeurer)/  ,
        12782  +    [de|d’]  @:V[123]_i.*:Y¬>(?:devenir|rester|demeurer)/  [je|j’|tu|il|elle|on|ç’|c’|nous|vous|ils|elles|ne|n’|me|m’|te|t’|se|s’]
        12783  +    [de|d’]  @:V[123]_i.*:Y¬>(?:devenir|rester|demeurer)/  @:[123][sp]¬:[DM]
        12784  +        <<- ~1:2>> *
        12785  +
        12786  +    en tant que >telle
        12787  +        <<- ~>> *
        12788  +
        12789  +    fois que
        12790  +        <<- ~1>> _
        12791  +
        12792  +    [<start>|,] nul doute [que|qu’|qu]
        12793  +        <<- ~2:0>> *
        12794  +
        12795  +    y compris
        12796  +        <<- not value(<1, "|j’|n’|tu|il|on|") ~>> *
        12797  +
        12798  +    [me|te|se|nous|vous]  >douter  [que|qu’|qu]
        12799  +        <<- /3>> no_subj
        12800  +
        12801  +
        12802  +@@@@
        12803  +@@@@
        12804  +@@@@
        12805  +@@@@
        12806  +@@@@GRAPH: purge_ponctuations2                                                                     _
        12807  +@@@@
        12808  +@@@@
        12809  +@@@@
        12810  +@@@@
        12811  +
        12812  +__purge_ponctuations2__
        12813  +    ,   ,
        12814  +    (   )
        12815  +    [   ]
        12816  +    {   }
        12817  +    <   >
        12818  +    [-|–|—]  [-|–|—]
        12819  +        <<- ~>> *
        12820  +
        12821  +    <start>  ,
        12822  +        <<- ~2>> *
        12823  +
        12824  +    ,  <end>
        12825  +        <<- ~1>> *
 12751  12826   
 12752  12827   
 12753  12828   TEST: ils vont de manière non conventionnelle {{fêtée}} leur réussite.
 12754  12829   TEST: ils vont de manière absurde {{arrivé}} au résultat inverse à leurs espérances
 12755  12830   TEST: tandis que d’autres perçoivent le bon goût de la soupe.
 12756  12831   TEST: Je me doute bien que vous avez trouvé la réponse.
 12757  12832   TEST: Nous nous doutons bien qu’il y a une entourloupe derrière cette affaire.
 12758  12833   TEST: Notre but n’était pas de devenir célèbres.
 12759  12834   TEST: sans qu’on ait à le lui ordonner
 12760  12835   
 12761  12836   
        12837  +@@@@
        12838  +@@@@
        12839  +@@@@
        12840  +@@@@
        12841  +@@@@GRAPH: verbes1                                                                                 _
        12842  +@@@@
        12843  +@@@@
        12844  +@@@@
        12845  +@@@@
 12762  12846   
 12763  12847   
 12764  12848   !!!! OCR                                                                                          !!
 12765  12849   
 12766  12850   # Participes passés
 12767         -__[i]/ocr(ocr_être_participes_passés)__
 12768         -    ({etre}) +({w_2}es?) @@0,$
 12769         -    <<- morph(\1, ":V0e", False) >>>
 12770         -    <<- \2.endswith("e") and morphex(\2, ":V1.*:Ip.*:[13]s", ":(?:[GM]|A)") and not before(r"(?i)\belle +(?:ne +|n’|)$")
 12771         -    -2>> =suggVerbPpas(\2, ":m:s")                                                                  # Erreur de numérisation ?
 12772         -    <<- __else__ and \2.endswith("s") and morphex(\2, ":V1.*:Ip.*:2s", ":(?:[GM]|A)") and not before(r"(?i)\belles +(?:ne +|n’|)$")
 12773         -    -2>> =suggVerbPpas(\2, ":m:p")                                                                  # Erreur de numérisation ?
        12851  +__ocr_être_participe_passé__
        12852  +    >être  ~es?$
        12853  +        <<- /ocr/ not value(\1, "|êtres|") >>>
        12854  +        <<- /ocr/ \2.endswith("e") and morph(\2, ":V1.*:Ip.*:[13]s", ":[GMA]") and not before(r"(?i)\belle +(?:ne +|n’|)$")
        12855  +        -2>> =suggVerbPpas(\2, ":m:s")                                                              # Erreur de numérisation ?
        12856  +        <<- /ocr/ __else__ and \2.endswith("s") and morph(\2, ":V1.*:Ip.*:2s", ":[GMA]") and not before(r"(?i)\belles +(?:ne +|n’|)$")
        12857  +        -2>> =suggVerbPpas(\2, ":m:p")                                                              # Erreur de numérisation ?
 12774  12858   
 12775         -__[i]/ocr(ocr_avoir_participes_passés)__
 12776         -    ({avoir}) +({w_2}es?) @@0,$
 12777         -    <<- morph(\1, ":V0a", False) >>>
 12778         -    <<- \2.endswith("e") and morphex(\2, ":V1.*:Ip.*:[13]s", ":[GM]|>envie/")
 12779         -    -2>> =suggVerbPpas(\2, ":m:s")                                                                  # Erreur de numérisation ?
 12780         -    <<- __else__ and \2.endswith("s") and morphex(\2, ":V1.*:Ip.*:2s", ":[GM]")
 12781         -    -2>> =suggVerbPpas(\2, ":m:p")                                                                  # Erreur de numérisation ?
        12859  +__ocr_avoir_participe_passé__
        12860  +    >avoir  ~es?$
        12861  +        <<- /ocr/ not value(\1, "|avoirs|") >>>
        12862  +        <<- /ocr/ \2.endswith("e") and morph(\2, ":V1.*:Ip.*:[13]s", ":[GM]|>envie/")
        12863  +        -2>> =suggVerbPpas(\2, ":m:s")                                                              # Erreur de numérisation ?
        12864  +        <<- /ocr/ __else__ and \2.endswith("s") and morph(\2, ":V1.*:Ip.*:2s", ":[GM]")
        12865  +        -2>> =suggVerbPpas(\2, ":m:p")                                                              # Erreur de numérisation ?
 12782  12866   
 12783  12867   TEST: __ocr__ vous serez {{couche}} en terre.
 12784  12868   TEST: __ocr__ nous serons {{presses}} de monter à bord de ce train-ci.
 12785  12869   TEST: __ocr__ Elle était toujours persuadée que B. serait {{acquitte}}
 12786  12870   TEST: __ocr__ je reconnais que j’ai pas {{traîne}}
 12787  12871   TEST: __ocr__ elle est fauchée et a {{emprunte}} de l’argent
 12788  12872   TEST: __ocr__ Alors il lui est {{remonte}} dessus
................................................................................
 12797  12881   # TEST: __ocr__ vous êtes {{presses}} de monter à bord de ce train-ci.
 12798  12882   # Fonctionne avec nous serons, mais pas nous sommes (bug de JavaScript?)
 12799  12883   
 12800  12884   
 12801  12885   
 12802  12886   !!!! Confusions                                                                                   !!
 12803  12887   
 12804         -
 12805         -## s’en / c’en
 12806         -__[i]/conf(conf_c_en_être)__
 12807         -    (s’en) (?:n’|)(?:est|seras?|étai[ts]) +({w_2})  @@0,$
 12808         -    <<- re.search("(?i)^(?:fini|terminé)s?", \2) and morph(word(-1), ":C", False, True)
 12809         -    -1>> c’en
 12810         -    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
 12811         -    <<- re.search("(?i)^(?:assez|trop)$", \2) and (after("^ +d(?:e |’)") or isEnd())
 12812         -    -1>> c’en
 12813         -    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
 12814         -    <<- morphex(\2, ":A", ":[GVW]") and morph(word(-1), ":C", False, True)
 12815         -    -1>> c’en
 12816         -    # Confusion probable : “\2” est un adjectif. « C’en est… » équivaut à « ça, c’est… ».3|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
 12817         -
 12818         -TEST: c’en est fini d’eux, ils sont comme morts
 12819         -TEST: c’en est assez, ça suffit
 12820         -TEST: tout ça, {{s’en}} est fini.
 12821         -TEST: {{s’en}} est assez de ces foutaises.
 12822         -TEST: c’est tellement idiot, {{s’en}} est dérisoire…
 12823         -
 12824         -
 12825  12888   ## soit / soie / soi
 12826         -__[i]/conf(conf_aller_de_soi)__
 12827         -    ({aller}) +de (soi[tes])  @@0,$
 12828         -    <<- morph(\1, ">aller/", False) and not after(" soit ") -2>> soi                                # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi
        12889  +__conf_aller_de_soi__
        12890  +    >aller de [sois|>soie]
        12891  +        <<- /conf/ -3>> soi                                 # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi
        12892  +
        12893  +    >aller de soit
        12894  +        <<- /conf/ not after(" soit ") -3>> soi             # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi
 12829  12895   
 12830  12896   TEST: cela ne va pas de {{soit}}.
 12831  12897   
 12832  12898   
 12833  12899   
 12834  12900   !!!! Adverbes après verbe                                                                         !!
 12835  12901   
 12836  12902   # fort
 12837         -__[i]/sgpl(sgpl_verbe_fort)__
 12838         -    ({w_2}) +(forts)  @@0,$
 12839         -    <<- morphex(\1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/")
 12840         -        and not morph(word(1), ":A.*:[me]:[pi]", False)
 12841         -    -2>> fort                                               # Confusion probable. S’il s’agit ici de l’adverbe “fort” (équivalent de “fortement”), écrivez-le au singulier.
        12903  +__sgpl_verbe_fort__
        12904  +    forts
        12905  +        <<- morph(<1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/")
        12906  +            and not morph(>1, ":A.*:[me]:[pi]")
        12907  +        ->> fort                                                # Confusion probable. S’il s’agit ici de l’adverbe “fort” (équivalent de “fortement”), écrivez-le au singulier.
 12842  12908   
 12843  12909   TEST: ces emmerdeurs crient bien trop {{forts}}
 12844  12910   TEST: ces animaux paraissent forts, mais ils sont faibles.
 12845  12911   TEST: ils sont forts, ces gars-là.
 12846  12912   TEST: ils se croient forts.
 12847  12913   TEST: je les imagine forts et intelligents.
 12848  12914   TEST: elles les veulent forts et astucieux.
 12849  12915   TEST: les écarts ont été plus forts en une génération
 12850  12916   TEST: Avec le même nombre de bulletins, les xénophobes apparaîtront plus forts.
 12851  12917   
 12852  12918   
 12853  12919   # bien
 12854         -__[i]/sgpl(sgpl_bien)__
        12920  +__sgpl_verbe_bien__
 12855  12921       biens
 12856         -    <<- morphex(word(-1), ":V", ":D.*:p|:A.*:p", False) ->> bien                                    # Confusion probable. Ici, “bien” est un adverbe, donc invariable.
        12922  +        <<- morph(<1, ":V", ":D.*:p|:A.*:p") ->> bien           # Confusion probable. Ici, “bien” est un adverbe, donc invariable.
 12857  12923   
 12858  12924   TEST: Ils vont {{biens}}.
 12859  12925   TEST: Elles travaillaient vraiment {{biens}}.
 12860  12926   TEST: Il ne comprenait vraiment pas très {{biens}} ces principes de base.
 12861  12927   TEST: Il a de grands biens.
 12862  12928   TEST: Ce sont des biens de peu de valeur.
 12863  12929   
................................................................................
 12865  12931   
 12866  12932   !!
 12867  12933   !!
 12868  12934   !!!! Infinitif                                                                                    !!
 12869  12935   !!
 12870  12936   !!
 12871  12937   
        12938  +#### devoir / faire / falloir / pouvoir / savoir / vouloir
 12872  12939   
 12873         -__[i]/infi(infi_faire)__
 12874         -    (f(?:ai|[iî]|er|on)\w+) +({w_2}(?:ée?s?|ez))  @@0,$
 12875         -    <<- morph(\1, ">faire/", False) and not before(r"(?i)\b(?:en|[mtsldc]es?|[nv]ous|un) +$") and morphex(\2, ":V", ":M")
 12876         -        and not (re.search("(?i)^fait$", \1) and \2.endswith("é"))
 12877         -        and not (re.search("(?i)^faits$", \1) and \2.endswith("és"))
 12878         -    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
        12940  +__infi_faire_verbe__
        12941  +    >faire  ~(?:ée?s?|ez)$
        12942  +        <<- not value(<1, "|en|") and morph(\1, ":V") and morph(\2, ":V", ":[MG]")
        12943  +        -2>> =suggVerbInfi(\2)                                  # Après le verbe “faire”, ce verbe devrait être à l’infinitif.
 12879  12944   
 12880  12945   TEST: elle fit peu {{mangé}} les enfants
 12881         -TEST: fait pourtant avéré et corroboré par le même sondage.
 12882  12946   TEST: Tu fais {{décoloré}} tes cheveux ?
        12947  +TEST: quelqu’un fait {{passé}} ces gens en secret.
        12948  +TEST: il le fait {{pensé}} à son avenir.
        12949  +TEST: ce sont des faits constestés.
        12950  +TEST: c’est un fait reconnu.
        12951  +TEST: fait pourtant avéré et corroboré par le même sondage.
        12952  +TEST: ce fait rapporté par des témoins au-delà de tout soupçon n’est pas contestable.
        12953  +
        12954  +
        12955  +#__[i]/infi(infi_faire)__
        12956  +#    (f(?:ai|[iî]|er|on)\w+) +({w_2}(?:ée?s?|ez))  @@0,$
        12957  +#    <<- morph(\1, ">faire/", False) and not before(r"(?i)\b(?:en|[mtsldc]es?|[nv]ous|un) +$") and morphex(\2, ":V", ":M")
        12958  +#        and not (re.search("(?i)^fait$", \1) and \2.endswith("é"))
        12959  +#        and not (re.search("(?i)^faits$", \1) and \2.endswith("és"))
        12960  +#    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
        12961  +
        12962  +
        12963  +
        12964  +@@@@
        12965  +@@@@
        12966  +@@@@
        12967  +@@@@
        12968  +@@@@END_GRAPH                                                                                      _
        12969  +@@@@
        12970  +@@@@
        12971  +@@@@
        12972  +@@@@
 12883  12973   
 12884  12974   
 12885  12975   __[i]/infi(infi_vouloir)__
 12886  12976       (v[oe]u\w+) +({w_2}(?:ée?s?|ez))  @@0,$
 12887  12977       <<- morph(\1, ">vouloir/", False) and not before(r"(?i)\b(?:[mtsldc]es?|[nv]ous|un) +$") and morphex(\2, ":V", ":M")
 12888  12978           and not (re.search("(?i)^vouloir$", \1) and \2.endswith("é"))
 12889  12979           and not (re.search("(?i)^vouloirs$", \1) and \2.endswith("és"))