1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
|
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
|
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
+
-
+
|
#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# épuration des signes inutiles et quelques simplifications
#
# fin de phrase
__<s>__ [.?!:;…][ .?!… »”")]*$ <<- ~>> *
__<s>(p_fin_de_phrase)__ [.?!:;…][ .?!… »”")]*$ <<- ~>> *
# début de phrase
__<s>__ ^ *[-–—] <<- ~>> *
__<s>(p_début_de_phrase)__ ^ *[-–—] <<- ~>> *
# Guillemets et exposants
__<s>__ [«»“”"„`¹²³⁴⁵⁶⁷⁸⁹⁰]+ <<- ~>> *
__<s>(p_guillemets_exposants)__ [«»“”"„`¹²³⁴⁵⁶⁷⁸⁹⁰]+ <<- ~>> *
# Chapitres et références
__<s>__ [[({][\dIVXLCDM]+, \d+[])}] <js>[\[\(\{][\dIVXLCDM]+, \d+[\]\)\}]</js> <<- ~>> *
__<s>(p_chapitre_référence)__ [[({][\dIVXLCDM]+, \d+[])}] <js>[\[\(\{][\dIVXLCDM]+, \d+[\]\)\}]</js> <<- ~>> *
# simplification des mots grammaticaux élidés
__[i>__ (lorsqu|puisqu|quoiqu|jusqu|qu)’ @@0 <<- ~>> \1
__[i>(p_qu_apostrophe)__ (lorsqu|puisqu|quoiqu|jusqu|qu)’ @@0 <<- ~>> \1
# le, la ou les chose(s)
__[i>__ l[ea] ou les {w_2}([(]s[)]) @@$ <<- ~1>> s
__[i]__ l(e ou la|a ou le) {w_2} @@1 <<- ~1>> ’
__[i>(p_le_ou_les)__ l[ea] ou les {w_2}([(]s[)]) @@$ <<- ~1>> s
__[i](p_le_ou_la)__ l(e ou la|a ou le) {w_2} @@1 <<- ~1>> ’
# les références aux notes
__[i]__ [a-zéèâàôîù][a-zéèâàôîù-]+(\d+) @@$ <<- not morph(\0, ":", False) ~1>> *
__[i](p_références_aux_notes)__ [a-zéèâàôîù][a-zéèâàôîù-]+(\d+) @@$ <<- not morph(\0, ":", False) ~1>> *
# faux positifs avec adverbes de négation
__[i]__ pas mal <<- not morph(word(-1), ":D", False) ~>> *
__[i]__ pas assez ({w_2}) @@$ <<- morph(\1, ":A", False) and not morph(word(-1), ":D", False) ~>> *
__[i](p_pas_mal)__ pas mal <<- not morph(word(-1), ":D", False) ~>> *
__[i](p_pas_assez)__ pas assez ({w_2}) @@$ <<- morph(\1, ":A", False) and not morph(word(-1), ":D", False) ~>> *
# faux positifs avec «à chez»
__[i]__ de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> *
__[i]__ (jusqu à|de) chez @@0 <<- ~1>> *
__[i](p_de_chez_à_chez_pronom)__ de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> *
__[i](p_de_chez)__ (jusqu à|de) chez @@0 <<- ~1>> *
# faux positifs
__[i]__ en tout et pour tout <<- ~>> *
__[i]__ au (sortir) de?s? @@3 <<- ~1>> *
__[i]__ au revoir <<- ~>> au_revoir
__[i](p_en_tout_et_pour_tout)__ en tout et pour tout <<- ~>> *
__[i](p_au_sortir_de)__ au (sortir) de?s? @@3 <<- ~1>> *
__[i](p_au_revoir)__ au revoir <<- ~>> au_revoir
# singletons entre parenthèses / crochets / accolades
__<s>__ [(]\w+[)] <js>\([a-zA-Z]+\)</js> <<- ~>> *
__<s>__ [{]\w+[}] <js>\{[a-zA-Z]+\}</js> <<- ~>> *
__<s>__ [[]\w+[]] <js>\[[a-zA-Z]+\]</js> <<- ~>> *
__<s>(p_singleton_parenthèses)__ [(]\w+[)] <js>\([a-zA-Z]+\)</js> <<- ~>> *
__<s>(p_singleton_accolades)__ [{]\w+[}] <js>\{[a-zA-Z]+\}</js> <<- ~>> *
__<s>(p_singleton_crochets)__ [[]\w+[]] <js>\[[a-zA-Z]+\]</js> <<- ~>> *
# Avocats
__[s]__ (Me) [A-ZÉÂÔÈ][\w-]+ @@0 <<- ~1>> *
__[s](p_Me_nom_propre)__ (Me) [A-ZÉÂÔÈ][\w-]+ @@0 <<- ~1>> *
# Évènements
__[s]__ Mai 68 <<- ~>> Mai-68
__[s](p_Mai_68)__ Mai 68 <<- ~>> Mai-68
# Rois, reines, papes et vaniteux du même acabit
__[s]__ [A-ZÉÂÔÈ]\w+ ([XVI]+|I(?:er|ᵉʳ)) @@$ <<- \1 != "I" ~1>> *
__[s](p_titres_et_ordinaux)__ [A-ZÉÂÔÈ]\w+ ([XVI]+|I(?:er|ᵉʳ)) @@$ <<- \1 != "I" ~1>> *
# Marques
__[i]__ Peugeot (\d0\d\d?) @@$ <<- ~1>> *
__[i](p_Peugeot)__ Peugeot (\d0\d\d?) @@$ <<- ~1>> *
# alors que / dès lors que (éviter d’accorder un participe passé avec un pseudo-COD antérieur)
__[i]__ (alors|dès lors) que? @@0 <<- ~1>> _
__[i](p_alors_dès_lors_que)__ (alors|dès lors) que? @@0 <<- ~1>> _
# Fusion des mots “multiples” (expérimental)
__[s](p_fusion_mots_multiples)__
__[s]__ [A-Z][a-z]+ [A-Z][a-z]+
[A-Z][a-z]+ [A-Z][a-z]+
<<- spell(\0.replace(" ", "_")) ~>> =\0.replace(" ", "_")
TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.
|
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
|
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
|
-
+
|
__[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_jamais1)__ 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 <<- ~>> *
|
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
|
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
|
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
-
-
-
-
-
+
+
+
+
+
|
#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
#
### @ : we remove @ we introduced after le/la/les in some cases
__<s>__ @ <<- ~>> *
__<s>(p_arobase)__ @ <<- ~>> *
### Avant les verbes (ôter seulement les COI!)
__[i]__ ne (leur|lui)(?! en) @@3 <<- ~1>> *
__[i](p_ne_leur_lui)__ ne (leur|lui)(?! en) @@3 <<- ~1>> *
### Après les verbes
__[i]__ jamais <<- ~>> *
__[i]__ guère <<- ~>> *
__[i]__ ({w1}) (pas|point|rien|bien|ensemble) @@0,$ <<- morph(\1, ":V", False) ~2>> *
__[i]__ \w+-(?:je|tu|ils?|elles?|on|[nv]ous) (pas|point|rien|bien|ensemble) @@$ <<- ~1>> *
__[i](p_jamais2)__ jamais <<- ~>> *
#__[i](p_guère)__ guère <<- ~>> *
__[i](p_pas_point_rien_bien_ensemble1)__
({w1}) (pas|point|rien|bien|ensemble) @@0,$ <<- morph(\1, ":V", False) ~2>> *
__[i](p_pas_point_rien_bien_ensemble2)__
\w+-(?:je|tu|ils?|elles?|on|[nv]ous) (pas|point|rien|bien|ensemble) @@$ <<- ~1>> *
# sembler le croire/penser/présumer/supposer/envisager/imaginer
__[i](p_que_semble_le_penser)__
__[i]__ que +(sembl\w+) +(l(?:e (?:penser|croire|présumer|supposer)|’(?:envisager|imaginer))) @@w,$
que +(sembl\w+) +(l(?:e (?:penser|croire|présumer|supposer)|’(?:envisager|imaginer))) @@w,$
<<- morph(\1, ">sembler ", False) ~2>> *
### tous / tout / toute / toutes
__[i]__ (tout) (?:le|ce|[mts]on|leur) @@0 <<- ~1>> *
__[i]__ (toute) (?:la|cette|[mts](?:a|on)|leur) @@0 <<- ~1>> *
__[i]__ (tou(?:te|)s) (?:[csmlt]es|[vn]os|leurs) @@0 <<- ~1>> *
__[i](p_tout_det_mas)__ (tout) (?:le|ce|[mts]on|leur) @@0 <<- ~1>> *
__[i](p_toute_det_fem)__ (toute) (?:la|cette|[mts](?:a|on)|leur) @@0 <<- ~1>> *
__[i](p_tous_det_plur)__ (tou(?:te|)s) (?:[csmlt]es|[vn]os|leurs) @@0 <<- ~1>> *
### Simplification des groupes nominaux
# désambiguïsation - pour contrer le faux positif qui veut accorder fois avec le participe passé de la proposition suivante
__[s]__ (fois )que? @@0 <<- ~1>> fois=
__[i]__ que (l’)on @@4 <<- ~1>> *
__[s](p_fois_que)__ (fois )que? @@0 <<- ~1>> fois=
__[i](p_que_l_on)__ que (l’)on @@4 <<- ~1>> *
__[i]__ beaucoup (de (?:monde|temps)) @@9 <<- ~1>> _
__[i](p_beaucoup_de_monde_temps)__ beaucoup (de (?:monde|temps)) @@9 <<- ~1>> _
__[i]__ en pleine? ({w_2}) @@$
<<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *
__[i]__ en tant que tel(?:s|lles?|) <<- ~>> *
__[i](p_en_plein_xxx)__ en pleine? ({w_2}) @@$ <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *
__[i](p_en_tant_que_tel)__ en tant que tel(?:s|lles?|) <<- ~>> *
# de +
__[i](p_de_vinfi)__
__[i]__ d(?:e |’)({infi}) @@$
d(?:e |’)({infi}) @@$
<<- morph(\1, ":V[123]_i", False) and isNextNotCOD() ~>> *
__[i](p_de_manière_façon_xxx_et_xxx)__
__[i]__ de (?:manière|façon) +(?:non +|)({w_2}) +et +(?:non +|)({w_2}) @@w,$
de (?:manière|façon) +(?:non +|)({w_2}) +et +(?:non +|)({w_2}) @@w,$
<<- morph(\1, ":A", False) and morphex(\2, ":A", ":[GM]") ~>> *
__[i](p_de_manière_façon)__
__[i]__ de (?:manière|façon) +(?:non +|)({w_2}) @@$
de (?:manière|façon) +(?:non +|)({w_2}) @@$
<<- morph(\1, ":A", False) ~>> *
__[i](p_de_nom_adj)__
__[i]__ d(?:e +|’)({w_2}) +({w_2}) @@w,$
d(?:e +|’)({w_2}) +({w_2}) @@w,$
<<- morph(\1, ":[NAQ].*:s", False) and morphex(\2, ":[NAQ].*:s", ":[GV]") and isEndOfNG() ~>> *
__[i](p_det_nom_adj_nom_adj)__
__[i]__ (?:les? |la |l’|des |ce(?:s|tte|t|) |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques |aux? ) *({w2}) +({w2}) @@w,$
(?:les? |la |l’|des |ce(?:s|tte|t|) |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques |aux? ) *({w2}) +({w2}) @@w,$
<<- morphex(\1, ":[NAQ]", ":V0") and morphex(\2, ":[NAQ]", ":(?:G|[123][sp]|P)")
~2>> *
__[i]__ aucune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__ aucune? +(des +{w_2}) +ne? @@w <<- ~1>> *
__[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>> *
__[i](p_aucun_de_pronom)__ aucune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i](p_aucun_des_xxx_ne)__ aucune? +(des +{w_2}) +ne? @@w <<- ~1>> *
__[i](p_chacun_de_pronom)__ chacune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i](p_l_un_de_pronom)__ l’une? (de [nv]ous|des [nv]ôtres|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i](p_la_plupart_des_xxx)__ la plupart (des {w_2}) @@11 <<- ~1>> *
# groupe déjà partiellement simplifié (selon les règles de la passe 3)
__[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)
|