Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1650,49 +1650,65 @@ # # //////////////////////////////////////// DÉSAMBIGUÏSATEUR //////////////////////////////////////// # # mots grammaticaux -__[i]__ dans - <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":P") +__[i](d_dans)__ + dans + <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":R") # verbe -__[i]__ ne +(?:l(?:es? |eurs? |ui |a |’)|[nv]ous |)({w_1}) @@$ +__[i](d_ne_verbe)__ + ne +(?:l(?:es? |eurs? |ui |a |’)|[nv]ous |)({w_1}) @@$ <<- not morph(\1, ":(?:O[sp]|X)", False) =>> select(\1, ":V") -__[i]__ [nmts]’(?:en +|y +|)({w_1}) @@$ +__[i](d_n_m_t_s_verbe)__ + [nmts]’(?:en +|y +|)({w_1}) @@$ <<- not morph(\1, ":X", False) =>> select(\1, ":V") -__[i]__ [mts]e +(?:l(?:es? +|a +|’)|)({w_2}) @@$ +__[i](d_me_te_se_verbe)__ + [mts]e +(?:l(?:es? +|a +|’)|)({w_2}) @@$ <<- =>> select(\1, ":V") -__[i]__ j’(?:en +|y +|)({w_1}) @@$ +__[i](d_je_verbe)__ + j’(?:en +|y +|)({w_1}) @@$ <<- =>> select(\1, ":[123][sp]") -__[i]__ (?:je|ils?|on) +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$ +__[i](d_je_il_ils_on_verbe)__ + (?:je|ils?|on) +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$ <<- not morph(\1, ":(?:Oo|X)", False) =>> select(\1, ":[123][sp]") -__[i]__ tu +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$ +__[i](d_tu_verbe)__ + tu +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$ <<- morph(word(-1), ":Cs", False, True) and not morph(\1, ":(?:Oo|X)", False) =>> select(\1, ":[123][sp]") -__[s]__ ([A-ZÉÈ]{w_1}) +({w_1}) @@0,$ +__[s](d_nom_propre_verbe)__ + ([A-ZÉÈ]{w_1}) +({w_1}) @@0,$ <<- morph(\1, ":M") and \2.islower() and morphex(\2, ":[123][sg]", ":Q") and morph(\2, ":N", False) and morph(word(-1), ":Cs", False, True) =>> select(\2, ":[123][sp]") -__[i]__ (?:que?|combien|pourquoi) +(?:en +|y +)({w_3}) @@$ +__[i](d_que_combien_pourquoi_en_y_verbe)__ + (?:que?|combien|pourquoi) +(?:en +|y +|)({w_3}) @@$ <<- =>> exclude(\1, ":E") - # groupe nominal -__[i]__ aucun +({w_4}) @@$ +__[i](d_aucun_non_verbe)__ + aucun +({w_4}) @@$ <<- morph(\1, ":[NA].*:[me]", False) =>> exclude(\1, ":V") -__[i]__ d(?:e +|’)({w_1}) @@$ +__[i](d_de_non_verbe)__ + d(?:e +|’)({w_1}) @@$ <<- not morph(\1, ":[YD]", False) =>> exclude(\1, ":V") -__[i]__ d’une? ({w_1}) @@$ +__[i](d_d_un_une_non_verbe)__ + d’une? ({w_1}) @@$ <<- =>> exclude(\1, ":V") -__[i]__ (?:des|chaque|quelques?|cet(?:te|)|m(?:on|a)|[ts]a|aux?) +({w_1}) @@$ +__[i](d_déterminant_non_verbe)__ + (?:des|chaque|quelques?|cet(?:te|)|m(?:on|a)|[ts]a|aux?) +({w_1}) @@$ <<- =>> exclude(\1, ":V") -__[i]__ de l(?:a |’)({w_2}) @@6 +__[i](d_de_la_non_verbe)__ + de l(?:a |’)({w_2}) @@6 <<- not morph(\1, ":Y", False) =>> exclude(\1, ":V") -__[i]__ de (?:tel(?:le|)s?|ce(?:tte|t|s)|[ts](?:a|es)|m(?:on|a|es)|[nv]o(?:tre|s)|plein) +({w_2}) @@$ +__[i](d_de_pronom_non_verbe)__ + de (?:tel(?:le|)s?|ce(?:tte|t|s)|[ts](?:a|es)|m(?:on|a|es)|[nv]o(?:tre|s)|plein) +({w_2}) @@$ <<- =>> exclude(\1, ":V") -__[i]__ par +({w_3}) @@$ +__[i](d_par_non_verbe)__ + par +({w_3}) @@$ <<- =>> exclude(\1, ":V[123]") -__[i]__ très +({w_2}) @@$ +__[i](d_très_non_verbe)__ + très +({w_2}) @@$ <<- =>> exclude(\1, ":[123][sp]") TEST: il s’agit d’{{un}} {{anagramme}} TEST: nul ne sait qui arriva à ce pauvre Paul surpris par la pluie. @@ -3673,11 +3689,11 @@ TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants. #### Pronoms -__[i]__ m’enfin <<- ~>> * +__[i](p_m_enfin)__ m’enfin <<- ~>> * __[i]/conf(conf_j_y_en_qqch)__ (j’(?:en +|y +|))({w_1}) @@0,$ <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])") -2>> =suggSimil(\2, ":1s") # Incohérence avec « \1 » : « \2 » devrait être un verbe. @@ -4139,11 +4155,11 @@ __[i]__ que (?:je le veuille|tu le veuilles|vous le vouliez|nous le voulions) ou non <<- ~>> * __[i]__ qu (?:à cela ne tienne|(?:(?:il|elle|on) le veuille|(?:ils|elles) le veuillent) ou non) <<- ~>> * __[i]__ quel qu en soit le (?:moyen|prix|risque(?: financier|)|danger) <<- ~>> * __[i]__ quelle qu en soit la (?:cause|raison) <<- ~>> * __[i]__ quelque(?: (?:part|temps)|s fois) <<- ~>> * -__[i]__ quelques (?:instants|secondes|minutes|heures|jours|semaines|mois|années|siècles|millénaires|trimestres|semestres) (?:auparavant|plus (?:tard|tôt)) <<- ~>> * +__[i]__ quelques (?:instants|secondes|minutes|heures|jours|semaines|mois|années|décennies|siècles|millénaires|trimestres|semestres) (?:auparavant|plus (?:tard|tôt)) <<- ~>> * __[i]__ qui plus est <<- ~>> * __[i]__ qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> * __[i]__ quoi qu il (?:(?:arriv|en co[ûu]t)(?:e|ât)|adv(?:ienne|înt)) <<- ~>> * __[i]__ sans (?:grande|grosse) difficulté(?: apparente| aucune| financière| majeure| particulière|) <<- ~>> * __[i]__ sans (?:ambages|arrêt|au(?:cun doute|tre forme de procès)|cesse|commune mesure|conteste|coup férir|crier gare|difficulté(?: apparente| aucune| financière| majeure| particulière|)|dire mot|doute|encombres?|états d’âme|fin|foi,? ni loi|l’ombre d’un doute|le (?:faire exprès|vouloir)|mot dire|nul doute|queue ni tête|raison apparente|relâche|(?:grand |)succès|trêve|(?:pour autant |)y (?:prendre g(?:arde|o[ûu]t)|faire attention|parvenir|réussir|réfléchir|songer|penser)|faire de vagues|s’en (?:rendre compte|apercevoir)|l’aide de personne) <<- ~>> * @@ -4436,77 +4452,92 @@ <<- morph(\1, ":[NAQ]", False) and morph(\3, ":W", False) and morph(\4, ":[AQ]", False) ~2>> * __[i]__ complètement <<- not morph(word(-1), ":D", False, True) ~>> * __[i]__ (\w+ment)(?: parlant|) @@0 <<- morph(\1, ":W\\b") ~>> * # couleurs invariables -__[i]__ ({w_2}) +((?:beige|blanc|bleu|brun|châtain|cyan|gris|jaune|magenta|marron|orange|pourpre|rose|rouge|vert|violet) (?:clair|fluo|foncé|irisé|pâle|pastel|sombre|vif|tendre)) @@0,$ +__[i](p_couleurs_invariables)__ + ({w_2}) +((?:beige|blanc|bleu|brun|châtain|cyan|gris|jaune|magenta|marron|orange|pourpre|rose|rouge|vert|violet) (?:clair|fluo|foncé|irisé|pâle|pastel|sombre|vif|tendre)) @@0,$ <<- morph(\1, ":[NAQ]", False) ~2>> * -# locutions adjectivales & couleurs -__[i]__ ({w_2}) +(bas(?: de gamme|se consommation)|bon (?:enfant|marché|teint|chic,? bon genre)|cl(?:é|ef) en mains?|dernier cri|fleur bleue|grand (?:public|luxe)|grandeur nature|haut(?: de gamme|e résolution)|longue (?:distance|portée|durée)|meilleur marché|numéro (?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf)|onze|douze|treize|quatorze|quinze|seize|vingt)|plein cadre|top secret|vieux jeu|open source|Créative Commons|pur jus|terre à terre|bleu (?:ciel|marine|saphir|turquoise)|vert (?:émeraude|olive|pomme)|rouge (?:brique|rubis|sang)|jaune sable|blond platine|gris (?:acier|anthracite|perle)|noir (?:d(?:’encre|e jais)|et blanc)) +# locutions adjectivales, nominales & couleurs +__[i](p_locutions_adj_nom_et_couleurs)__ + ({w_2}) +(bas(?: de gamme|se consommation)|bon (?:enfant|marché|teint|chic,? bon genre)|cl(?:é|ef) en mains?|dernier cri|fleur bleue|grand (?:public|luxe)|grandeur nature|haut(?: de gamme|e résolution)|longue (?:distance|portée|durée)|meilleur marché|numéro (?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf)|onze|douze|treize|quatorze|quinze|seize|vingt)|plein cadre|top secret|vieux jeu|open source|Créative Commons|pur jus|terre à terre|bleu (?:ciel|marine|saphir|turquoise)|vert (?:émeraude|olive|pomme)|rouge (?:brique|rubis|sang)|jaune sable|blond platine|gris (?:acier|anthracite|perle)|noir (?:d(?:’encre|e jais)|et blanc)) @@0,$ <<- morph(\1, ":(?:N|A|Q|V0e)", False) ~2>> * # tous / tout / toute / toutes -__[i]__ (tout) (?:le|cet?|[mts]on) @@0 <<- ~1>> * -__[i]__ (toute) (?:la|cette|[mts]a) @@0 <<- ~1>> * -__[i]__ (tou(?:te|)s) (?:[ldscsmt]es) @@0 <<- ~1>> * +__[i](p_tout_déterminant_masculin)__ (tout) (?:le|cet?|[mts]on) @@0 <<- ~1>> * +__[i](p_toute_déterminant_féminin)__ (toute) (?:la|cette|[mts]a) @@0 <<- ~1>> * +__[i](p_tous_toutes_déterminant_pluriel)__ (tou(?:te|)s) (?:[ldscsmt]es|[nv]os) @@0 <<- ~1>> * ## 1 mot -__[i]__ ai(?:lleurs|nsi) <<- ~>> * -__[i]__ al(?:entour|ors) <<- ~>> * -__[i]__ au(?:jourd’hui|paravant) <<- ~>> * -__[i]__ bientôt <<- ~>> * -__[i]__ ce(?:pendant|rtes) <<- ~>> * -__[i]__ ci-desso?us <<- ~>> * -__[i]__ de(?:bout|rechef) <<- ~>> * -__[i]__ (depuis), @@0 <<- ~1>> * -__[i]__ dé(?:jà|sormais) <<- ~>> * -__[i]__ do(?:nc|rénavant) <<- ~>> * -__[i]__ en(?:fin|suite|core) <<- ~>> * -__[i]__ guère <<- ~>> * -__[i]__ jadis <<- ~>> * -__[i]__ jamais <<- not before(r"(?i)\bne +$") ~>> * -__[i]__ lo(?:in|ngtemps) <<- ~>> * -__[i]__ mouais <<- ~>> * -__[i]__ n(?:aguère|éanmoins) <<- ~>> * -__[i]__ par(?:fois|tout) <<- ~>> * -__[i]__ p(?:eut-être|lutôt|ourtant|resque|rimo) <<- ~>> * -__[i]__ quelquefois <<- ~>> * -__[i]__ sou(?:dain|vent) <<- ~>> * -__[i]__ tou(?:jours|tefois) <<- ~>> * -__[i]__ secondo <<- ~>> * -__[i]__ sur(?:-le-champ|tout) <<- ~>> * -__[i]__ t(?:ôt|ard|antôt|ertio) <<- ~>> * -__[i]__ très <<- ~>> * -__[i]__ vite <<- ~>> * -__[i]__ volontiers <<- ~>> * +__[i](p_ailleurs_ainsi)__ ai(?:lleurs|nsi) <<- ~>> * +__[i](p_alentour_alors)__ al(?:entour|ors) <<- ~>> * +__[i](p_aujourdhui_auparavant)__ au(?:jourd’hui|paravant) <<- ~>> * +__[i](p_bientôt)__ bientôt <<- ~>> * +__[i](p_cependant_certes)__ ce(?:pendant|rtes) <<- ~>> * +__[i](p_ci_dessus_dessous)__ ci-desso?us <<- ~>> * +__[i](p_debout_derechef)__ de(?:bout|rechef) <<- ~>> * +__[i](p_depuis)__ (depuis), @@0 <<- ~1>> * +__[i](p_déjà_désormais)__ dé(?:jà|sormais) <<- ~>> * +__[i](p_donc_dorénavant)__ do(?:nc|rénavant) <<- ~>> * +__[i](p_enfin_ensuite_encore)__ en(?:fin|suite|core) <<- ~>> * +__[i](p_guère)__ guère <<- ~>> * +__[i](p_jadis)__ jadis <<- ~>> * +__[i](p_jamais)__ jamais <<- not before(r"(?i)\bne +$") ~>> * +__[i](p_loin_longtemps)__ lo(?:in|ngtemps) <<- ~>> * +__[i](p_mouais)__ mouais <<- ~>> * +__[i](p_naguère)__ n(?:aguère|éanmoins) <<- ~>> * +__[i](p_parfois_partout)__ par(?:fois|tout) <<- ~>> * +__[i](p_presque_primo)__ pr(?:esque|imo) <<- ~>> * +__[i](p_peut_être_plutôt_pourtant)__ p(?:eut-être|lutôt|ourtant) <<- ~>> * +__[i](p_quelquefois)__ quelquefois <<- ~>> * +__[i](p_soudain_souvent)__ sou(?:dain|vent) <<- ~>> * +__[i](p_toujours_toutefois)__ tou(?:jours|tefois) <<- ~>> * +__[i](p_secondo)__ secondo <<- ~>> * +__[i](p_sur_le_champ_surtout)__ sur(?:-le-champ|tout) <<- ~>> * +__[i](p_tôt_tard_tantôt_tertio_très)__ t(?:ôt|ard|antôt|ertio|rès) <<- ~>> * +__[i](p_vite)__ vite <<- ~>> * +__[i](p_volontiers)__ volontiers <<- ~>> * # après -__[i]__ au fur et à mesure <<- ~>> * -____ , +(?:oui|non|entre autres), <<- ~>> * -____ , +, <<- ~>> * -____ ^ *, <<- ~>> * -____ , *$ <<- ~>> * -____ [—–-] +[—–-] <<- ~>> * -____ [<] +[>] <<- ~>> * -____ [(] +[)] <<- ~>> * +__[i](p_au_fur_et_à_mesure)__ au fur et à mesure <<- ~>> * +__(p_oui_non_entre_autres)__ , +(?:oui|non|entre autres), <<- ~>> * +__(p_virgule_virgule)__ , +, <<- ~>> * +__(p_première_virgule)__ ^ *, <<- ~>> * +__(p_dernière_virgule)__ , *$ <<- ~>> * +__(p_tiret_tiret)__ [—–-] +[—–-] <<- ~>> * +__(p_parenthèses_vides)__ [(] +[)] <<- ~>> * +__(p_balise_vide)__ [<] +[>] <<- ~>> * + # Seconde passe (il faut réorganiser tout le cycle de simplification) -__[i]__ (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * -__[i]__ (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> * -__[i]__ (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> * -__[i]__ (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * -__[i]__ (de ce (?:seul |)fait) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * -__[i]__ (dès les premiers (?:jours|mois|ans|siècles|trimestres|semestres)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * -__[i]__ (dès les premières (?:années|semaines|minutes|secondes|heures|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * -__[i]__ (en (?:certaines|quelques|plusieurs|de multiples) occasions) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * -__[i]__ (entre autres choses) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * -__[i]__ ((?:quelques|plusieurs|de +nombreuses) (?:secondes|minutes|heures|journées|semaines|années|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * -__[i]__ ((?:quelques|plusieurs|de +nombreux) (?:instants|moments|jours|mois|ans|siècles)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * -__[i]__ (un (?:instant|moment)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * +__[i](p_à_nos_yeux)__ + (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * +__[i](p_chaque_année_semaine_journée_décennie)__ + (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> * +__[i](p_chaque_an_jour_mois)__ + (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> * +__[i](p_dans_l_ensemble)__ + (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * +__[i](p_de_ce_seul_fait)__ + (de ce (?:seul |)fait) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * +__[i](p_dès_les_premiers_jours_mois_ans)__ + (dès les premiers (?:jours|mois|ans|siècles|trimestres|semestres)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * +__[i](p_dès_les_premières_années_heures_minutes)__ + (dès les premières (?:années|semaines|minutes|secondes|heures|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * +__[i](p_en_certaines_plusieurs_occasions)__ + (en (?:certaines|quelques|plusieurs|de multiples) occasions) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * +__[i](p_entre_autres_choses)__ + (entre autres choses) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * +__[i](p_quelques_minutes_heures_années_plus_tard)__ + ((?:quelques|plusieurs|de +nombreuses) (?:secondes|minutes|heures|journées|semaines|années|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> * +__[i](p_quelques_instants_jours_siècles)__ + ((?:quelques|plusieurs|de +nombreux) (?:instants|moments|jours|mois|ans|siècles)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> * +__[i](p_un_moment_instant)__ + (un (?:instant|moment)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> * TEST: pourquoi faire compliqué quand on peut faire simple TEST: Pour ceux et celles qui étaient présents à la cérémonie TEST: les pires vilénies suite au mauvais vote du peuple @@ -4556,30 +4587,39 @@ # <<- morph(\1, ":V0a", False) and morphex(\1, ":Q", ":G") # =>> exclude(\2, ":A") ### Désambiguïsation par séparation de le/la/les avec la suite s’il s’agit de COD dans les syntagmes verbaux +__[i>(p_astuce_je_le_la_les)__ + je l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":1s", False, False) ~1>> @ +__[i>(p_astuce_tu_le_la_les)__ + tu l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":2s", False, False) ~1>> @ +__[i>(p_astuce_il_elle_on_le_la_les)__ + (?:il|elle|on) l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":3s", False, False) ~1>> @ +__[i>(p_astuce_nous_le_la_les)__ + nous l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":1p", False, False) ~1>> @ +__[i>(p_astuce_vous_le_la_les)__ + vous l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":2p", False, False) ~1>> @ +__[i>(p_astuce_ils_elles_le_la_les)__ + (?:ils|elles) l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":3p", False, False) ~1>> @ #__[i>__ [nmts]e l(?:es?|a)( ) @@$ <<- ~1>> @ -__[i>__ je l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":1s", False, False) ~1>> @ -__[i>__ tu l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":2s", False, False) ~1>> @ -__[i>__ (?:il|elle|on) l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":3s", False, False) ~1>> @ -__[i>__ nous l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":1p", False, False) ~1>> @ -__[i>__ vous l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":2p", False, False) ~1>> @ -__[i>__ (?:ils|elles) l(?:es?|a)( ) @@$ <<- not morph(word(-1), ":3p", False, False) ~1>> @ #__[i]__ l(?:es?|a)( )({w_2}) @@*,$ <<- morph(\2, ":[123][sp]") ~1>> @ ### DPP: Désambiguïsation par distinction des mots qui sont à la fois (verbes conjugués ET (noms ET/OU adjectifs)) # Cette distinction est nécessaire seulement pour les mots suivant un groupe nominal. # Exemples : finis, donne(s), avance(s), bavarde(s) -__[i]__ (?telle ") ~2>> ~ -__[i]__ (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$ +__[i](p_astuce_désambiguïsation2)__ + (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$ <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0) ~2>> ~ -__[i]__ l(?:es? |a |’|eur ) *({w_2})( ) *({w_2}) @@w,**,$ +__[i](p_astuce_désambiguïsation3)__ + l(?:es? |a |’|eur ) *({w_2})( ) *({w_2}) @@w,**,$ <<- isAmbiguousNAV(\3) and ( morphex(\1, ":[NAQ]", ":V0a") or (morphex(\1, ":[NAQ]", ":(?:3[sp]|V0a)") and not word(-1)) ) ~2>> ~ TEST: comme le signe évident d’une politique volontaire TEST: c’était le signe évident d’une politique volontaire @@ -7731,49 +7771,61 @@ __[i]__ chacune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> * __[i]__ l’une? (de [nv]ous|des [nv]ôtres|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> * __[i]__ la plupart (des {w_2}) @@11 <<- ~1>> * # groupe déjà partiellement simplifié (selon les règles de la passe 3) -__[i]__ (?:a(?:ux?|vec)|à|en) +d(?:e +(?:la |l’|leurs? |ce(?:s|tte|t|) |[nv]o(?:s|tre) |[mts](?:a|on) |quelques? |certaine?s? )|es? |u ) *({w2}) @@$ - <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> * - -## y compris (pas terrible, mais cas difficile) -__[i]__ y compris <<- not before(r"(?i)\b(?:[jn]’|tu )$") ~>> * - -## eux/nous/vous tous -- elles toutes -__[i]__ [nv]ous (tou(?:te|)s) qui @@5 <<- ~1>> * -__[i]__ eux (tous) qui @@4 <<- ~1>> * -__[i]__ elles (toutes) qui @@6 <<- ~1>> * - -## groupe avec préposition -__[i]__ (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)|aux?) +({w_2}) @@$ - <<- morphex(\1, ":[NAQ]", ":[GY]") and isEndOfNG() - ~>> * -__[i]__ (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)) +(?:les? |la |l’|de(?:s| la|) |ce[st]? |cette |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques ) *({w_2}) @@$ - <<- morph(\1, ":[NAQ]", False) and isEndOfNG() - ~>> * -__[i]__ lors d(?:’|e(?:s| la|) |u ) *({w_2}) @@$ - <<- morph(\1, ":[NAQ]", False) and isEndOfNG() - ~>> * - -__[i]__ nul doute qu <<- not word(-1) ~>> * -__[i]__ (dout\w+)( ) *que? @@0,* <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> , - -## de + -__[i]__ d(?:e +|’)(?!autres)({w_2}) @@$ - <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> * -__[i]__ de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2}) @@$ - <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> * -__[i]__ de l(?:a|eur) +({w_2}) @@$ - <<- morphex(\1, ":[NAQ]", ":Y") and isEndOfNG() ~>> * - -__[s]__ , +, <<- ~>> * -__[s]__ ^ *, <<- ~>> * -__[s]__ , *$ <<- ~>> * -__[s]__ [—–-] +[—–-] <<- ~>> * -__[s]__ [<] +[>] <<- ~>> * -__[s]__ [(] +[)] <<- ~>> * +__[i](p_groupes_déjà_simplifiés)__ + (?:a(?:ux?|vec)|à|en) +d(?:e +(?:la |l’|leurs? |ce(?:s|tte|t|) |[nv]o(?:s|tre) |[mts](?:a|on) |quelques? |certaine?s? )|es? |u ) *({w2}) @@$ + <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> * + +## y compris (pas terrible, mais cas difficile) +__[i](p_y_compris)__ + y compris <<- not before(r"(?i)\b(?:[jn]’|tu )$") ~>> * + +## eux/nous/vous tous -- elles toutes +__[i](p_nous_vous_tous_toutes_qui)__ [nv]ous (tou(?:te|)s) qui @@5 <<- ~1>> * +__[i](p_eux_tous_qui)__ eux (tous) qui @@4 <<- ~1>> * +__[i](p_elles_toutes_qui)__ elles (toutes) qui @@6 <<- ~1>> * + +## groupe avec préposition +__[i](p_préposition_nom)__ + (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)|aux?) +({w_2}) @@$ + <<- morphex(\1, ":[NAQ]", ":[GY]") and isEndOfNG() + ~>> * +__[i](p_préposition_déterminant_nom)__ + (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)) +(?:les? |la |l’|de(?:s| la|) |ce[st]? |cette |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques ) *({w_2}) @@$ + <<- morph(\1, ":[NAQ]", False) and isEndOfNG() + ~>> * +__[i](p_lors_de_du_nom)__ + lors d(?:’|e(?:s| la|) |u ) *({w_2}) @@$ + <<- morph(\1, ":[NAQ]", False) and isEndOfNG() + ~>> * + +## doute que +__[i](p_nul_doute_que)__ + nul doute qu <<- not word(-1) ~>> * +__[i](p_douter_que)__ + (dout\w+)( ) *que? @@0,* <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> , + +## de + +__[i](p_de_nom)__ + d(?:e +|’)(?!autres)({w_2}) @@$ + <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> * +__[i](p_de_pronom_nom)__ + de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2}) @@$ + <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> * +__[i](p_de_la_leur_nom)__ + de l(?:a|eur) +({w_2}) @@$ + <<- morphex(\1, ":[NAQ]", ":Y") and isEndOfNG() ~>> * + +__[s](p_virgule_virgule2)__ , +, <<- ~>> * +__[s](p_première_virgule2)__ ^ *, <<- ~>> * +__[s](p_dernière_virgule2)__ , *$ <<- ~>> * +__[s](p_tiret_tiret2)__ [—–-] +[—–-] <<- ~>> * +__[s](p_parenthèses_vides2)__ [(] +[)] <<- ~>> * +__[s](p_balise_vide2)__ [<] +[>] <<- ~>> * + TEST: tandis que d’autres perçoivent le bon goût de la soupe. TEST: Je me doute bien que vous avez trouvé la réponse. TEST: Nous nous doutons bien qu’il y a une entourloupe derrière cette affaire. @@ -8987,17 +9039,17 @@ # # //////////////////////////////////////// PRÉPROCESSEUR //////////////////////////////////////// # -____ n(’)importe quo?i @@1 <<- ~1>> ` -__> > -__> > -__> > -__> > -____ ^ *n’(?:en |y |) <<- ~>> > -____ ^ *ne (?:l’|) <<- ~>> > +__(p_n_importe_qui_quoi)__ n(’)importe quo?i @@1 <<- ~1>> ` +__> > +__> > +__> > +__> > +__(p_premier_ne_pro_per_obj5)__ ^ *n’(?:en |y |) <<- ~>> > +__(p_premier_ne_pro_per_obj6)__ ^ *ne (?:l’|) <<- ~>> > # # //////////////////////////////////////// RÈGLES DE CONTRÔLE //////////////////////////////////////// # @@ -9245,48 +9297,48 @@ # //////////////////////////////////////// PRÉPROCESSEUR //////////////////////////////////////// # Destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”. # # Brainfuck (ici, prudence !) -__[i]__ ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> > -__[i]__ ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> > -__[i]__ [mts]e +l(?:a|es?) <<- ~>> > -__[i]__ [nmsl]’(?:en|y) <<- ~>> > -__[i]__ l(?:a|es?) +(?:lui|en) <<- ~>> > -__[i]__ lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> > -__[i]__ leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> > -__[i]__ (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> > -__[i]__ (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$ +__[i](p_pro_per_obj01)__ ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> > +__[i](p_pro_per_obj02)__ ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> > +__[i](p_pro_per_obj03)__ [mts]e +l(?:a|es?) <<- ~>> > +__[i](p_pro_per_obj04)__ [nmsl]’(?:en|y) <<- ~>> > +__[i](p_pro_per_obj05)__ l(?:a|es?) +(?:lui|en) <<- ~>> > +__[i](p_pro_per_obj06)__ lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> > +__[i](p_pro_per_obj07)__ leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> > +__[i](p_pro_per_obj08)__ (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> > +__[i](p_pro_per_obj09)__ (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$ <<- \1 == "le" and not morph(\2, ":N.*:[me]:[si]") ~1>> > <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> > <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> > -__[i]__ (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> > -__[i]__ ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> > -__[i]__ (?> > -__[i]__ (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> > -__[i]__ (?> > -__[i]__ (?> > -__[i]__ ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> > -__[i]__ (?> > -__[i]__ (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> > -__[i]__ (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> > -__[i]__ (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > -__[i]__ (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > -__[s]__ [lL]’a <<- ~>> > a -__[i]__ (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> > -__[i]__ (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> > -__[i]__ (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> > -__[i]__ (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> > -__[i]__ (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~1>> > -__[i]__ (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> > -__[i]__ (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > -__[i]__ (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > -__[i>__ ne [mtsl]’ <<- ~>> > -__[i>__ [mts]e +l’ <<- ~>> > -__[i>__ [nm]’ <<- ~>> > -__[i]__ [nmts]e <<- ~>> > -____ > +> <<- ~>> > +__[i](p_pro_per_obj10)__ (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> > +__[i](p_pro_per_obj11)__ ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> > +__[i](p_pro_per_obj12)__ (?> > +__[i](p_pro_per_obj13)__ (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> > +__[i](p_pro_per_obj14)__ (?> > +__[i](p_pro_per_obj15)__ (?> > +__[i](p_pro_per_obj16)__ ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> > +__[i](p_pro_per_obj17)__ (?> > +__[i](p_pro_per_obj18)__ (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> > +__[i](p_pro_per_obj19)__ (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> > +__[i](p_pro_per_obj20)__ (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > +__[i](p_pro_per_obj21)__ (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> > +__[s](p_pro_per_obj22)__ [lL]’a <<- ~>> > a +__[i](p_pro_per_obj23)__ (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> > +__[i](p_pro_per_obj24)__ (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> > +__[i](p_pro_per_obj25)__ (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> > +__[i](p_pro_per_obj26)__ (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> > +__[i](p_pro_per_obj27)__ (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~1>> > +__[i](p_pro_per_obj28)__ (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> > +__[i](p_pro_per_obj29)__ (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > +__[i](p_pro_per_obj30)__ (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> > +__[i>(p_pro_per_obj31)__ ne [mtsl]’ <<- ~>> > +__[i>(p_pro_per_obj32)__ [mts]e +l’ <<- ~>> > +__[i>(p_pro_per_obj33)__ [nm]’ <<- ~>> > +__[i](p_pro_per_obj34)__ [nmts]e <<- ~>> > +__(p_pro_per_obj35)__ > +> <<- ~>> > # Fin du Brainfuck # # //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////