Overview
| Comment: | [core][build][fr] merge token tags and sentence tags, immunity rework |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | fr | core | build | rg |
| Files: | files | file ages | folders |
| SHA3-256: |
b08008a0107b43d56e804d7fc34cd410 |
| User & Date: | olr on 2018-08-10 11:25:29 |
| Other Links: | branch diff | manifest | tags |
Context
|
2018-08-10
| ||
| 16:55 | [fr] conversion: regex rules -> graph rules check-in: d00a2d1b87 user: olr tags: fr, rg | |
| 11:25 | [core][build][fr] merge token tags and sentence tags, immunity rework check-in: b08008a010 user: olr tags: fr, core, build, rg | |
|
2018-08-08
| ||
| 20:20 | [fr] conversion: regex rules -> graph rules check-in: 79f51ff0f6 user: olr tags: fr, rg | |
Changes
Modified compile_rules_graph.py from [47c53113f4] to [065d3a908a].
| ︙ | ︙ | |||
244 245 246 247 248 249 250 |
# checking consistancy
checkTokenNumbers(sAction, sActionId, nToken)
if cAction == ">":
## no action, break loop if condition is False
return [sOption, sCondition, cAction, ""]
| | | 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# checking consistancy
checkTokenNumbers(sAction, sActionId, nToken)
if cAction == ">":
## no action, break loop if condition is False
return [sOption, sCondition, cAction, ""]
if not sAction and cAction != "%":
print("# Error in action at line " + sActionId + ": This action is empty.")
if sAction[0:1] != "=" and cAction != "=":
checkIfThereIsCode(sAction, sActionId)
if cAction == "-":
## error detected --> suggestion
|
| ︙ | ︙ |
Modified gc_core/py/lang_core/gc_engine.py from [493b1ff4c9] to [2cdea3f901].
| ︙ | ︙ | |||
807 808 809 810 811 812 813 |
# disambiguation
if bDebug:
print(" DISAMBIGUATOR:\n ", dRule[sRuleId])
globals()[sWhat](self.lToken, nTokenOffset)
elif cActionType == ">":
# we do nothing, this test is just a condition to apply all following actions
if bDebug:
| | > | | | > > > > > | < < | > > > > > | > | > > | | | 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 |
# disambiguation
if bDebug:
print(" DISAMBIGUATOR:\n ", dRule[sRuleId])
globals()[sWhat](self.lToken, nTokenOffset)
elif cActionType == ">":
# we do nothing, this test is just a condition to apply all following actions
if bDebug:
print(" COND_OK: ", sRuleId)
pass
elif cActionType == "/":
# Tag
if bDebug:
print(" TAG:\n ", dRule[sRuleId])
nTokenStart = nTokenOffset + eAct[0] if eAct[0] > 0 else nLastToken + eAct[0]
nTokenEnd = nTokenOffset + eAct[1] if eAct[1] > 0 else nLastToken + eAct[1]
for i in range(nTokenStart, nTokenEnd+1):
if "tags" in self.lToken[i]:
self.lToken[i]["tags"].update(sWhat.split("|"))
else:
self.lToken[i]["tags"] = set(sWhat.split("|"))
if sWhat not in self.dTags:
self.dTags[sWhat] = [nTokenStart, nTokenStart]
else:
self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0])
self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1])
elif cActionType == "%":
# immunity
nTokenStart = nTokenOffset + eAct[0] if eAct[0] > 0 else nLastToken + eAct[0]
nTokenEnd = nTokenOffset + eAct[1] if eAct[1] > 0 else nLastToken + eAct[1]
if nTokenEnd - nTokenStart == 0:
self.lToken[nTokenStart]["bImmune"] = True
nErrorStart = self.nOffsetWithinParagraph + self.lToken[nTokenStart]["nStart"]
if nErrorStart in self.dError:
del self.dError[nErrorStart]
else:
for i in range(nTokenStart, nTokenEnd+1):
self.lToken[i]["bImmune"] = True
nErrorStart = self.nOffsetWithinParagraph + self.lToken[i]["nStart"]
if nErrorStart in self.dError:
del self.dError[nErrorStart]
else:
print("# error: unknown action at " + sLineId)
elif cActionType == ">":
if bDebug:
print(" COND_BREAK")
break
except Exception as e:
|
| ︙ | ︙ | |||
913 914 915 916 917 918 919 |
self.lToken[nTokenRewriteStart]["bToRemove"] = True
else:
for i in range(nTokenRewriteStart, nTokenRewriteEnd+1):
self.lToken[i]["bToRemove"] = True
elif sWhat == "␣":
# merge tokens
self.lToken[nTokenRewriteStart]["nMergeUntil"] = nTokenRewriteEnd
| < < < < < < < | 925 926 927 928 929 930 931 932 933 934 935 936 937 938 |
self.lToken[nTokenRewriteStart]["bToRemove"] = True
else:
for i in range(nTokenRewriteStart, nTokenRewriteEnd+1):
self.lToken[i]["bToRemove"] = True
elif sWhat == "␣":
# merge tokens
self.lToken[nTokenRewriteStart]["nMergeUntil"] = nTokenRewriteEnd
elif sWhat == "_":
# neutralized token
if nTokenRewriteEnd - nTokenRewriteStart == 0:
self.lToken[nTokenRewriteStart]["sNewValue"] = "_"
else:
for i in range(nTokenRewriteStart, nTokenRewriteEnd+1):
self.lToken[i]["sNewValue"] = "_"
|
| ︙ | ︙ | |||
963 964 965 966 967 968 969 |
print("REWRITE")
lNewToken = []
nMergeUntil = 0
dTokenMerger = None
for iToken, dToken in enumerate(self.lToken):
bKeepToken = True
if dToken["sType"] != "INFO":
| < < < < < < | 968 969 970 971 972 973 974 975 976 977 978 979 980 981 |
print("REWRITE")
lNewToken = []
nMergeUntil = 0
dTokenMerger = None
for iToken, dToken in enumerate(self.lToken):
bKeepToken = True
if dToken["sType"] != "INFO":
if nMergeUntil and iToken <= nMergeUntil:
dTokenMerger["sValue"] += " " * (dToken["nStart"] - dTokenMerger["nEnd"]) + dToken["sValue"]
dTokenMerger["nEnd"] = dToken["nEnd"]
if bDebug:
print(" MERGED TOKEN:", dTokenMerger["sValue"])
bKeepToken = False
if "nMergeUntil" in dToken:
|
| ︙ | ︙ |
Modified gc_lang/fr/rules.grx from [52284b2f0c] to [7ba5ff9a6a].
| ︙ | ︙ | |||
2202 2203 2204 2205 2206 2207 2208 |
<<- />> -là
!!!! Immunity !!
__n_importe_qui_quoi__
n’ importe [qui|quoi]
| | | 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 |
<<- />> -là
!!!! Immunity !!
__n_importe_qui_quoi__
n’ importe [qui|quoi]
<<- %2>>
@@@@
@@@@
@@@@
@@@@
|
| ︙ | ︙ | |||
6345 6346 6347 6348 6349 6350 6351 |
TEST: Je propse que, par {{voix}} de conséquence, nous partions immédiatement.
TEST: C’est une {{voix}} interdite.
# voir / voire
__conf_voir_voire__
voir [grand|petit|rouge]
| | | 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 |
TEST: Je propse que, par {{voix}} de conséquence, nous partions immédiatement.
TEST: C’est une {{voix}} interdite.
# voir / voire
__conf_voir_voire__
voir [grand|petit|rouge]
<<- %2>>
voir @:A¬:[NGM]
<<- /conf/ not \2.istitle() and not morph(<1, ":O[os]|>(?:[ndmts]e|falloir|pouvoir|savoir|de)/")
and not before(r"(?i)\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$")
-1>> voir # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez :|https://fr.wiktionary.org/wiki/voire
[comme|lorque|puisque|quand|que|quoique|si] (voire)
|
| ︙ | ︙ | |||
6412 6413 6414 6415 6416 6417 6418 |
TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18.
# Les mois
__maj_mois__
monarchie de Juillet
révolution d’ Octobre
| | | 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 |
TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18.
# Les mois
__maj_mois__
monarchie de Juillet
révolution d’ Octobre
<<- %3>>
*WORD [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
<<- /maj/ not morph(\1, ":M1") -2:>> =\2.lower()
# Pas de majuscule sur les mois.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong
[*NUM|*WORD_ELIDED] [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
, [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
|
| ︙ | ︙ | |||
6437 6438 6439 6440 6441 6442 6443 |
TEST: ils viendront en {{Mars}}. ->> mars
TEST: le comité d’éthique qui statuera dans les meilleurs délais sur la situation de Véronique Avril
# Les États
__maj_État__
en fonction de l’ état
| | | 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 |
TEST: ils viendront en {{Mars}}. ->> mars
TEST: le comité d’éthique qui statuera dans les meilleurs délais sur la situation de Véronique Avril
# Les États
__maj_État__
en fonction de l’ état
<<- %5>>
état [français|belge|suisse|canadien|palestinien|souverain|américain|russe|anglais|allemand|espagnol|italien|mexicain|japonais|chinois|australien|polonais|membre|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéral|fédéré|capitaliste|communiste|providence|nation]
<<- /maj/ \1 == "état" -1>> État # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.
états [français|>belge|>suisse|canadien|canadiens|palestinien|palestiniens|souverain|souverains|>membre|américain|américains|africain|africains|européen|européens|>asiatique|>voyou|>démocratique|>totalitaire|>fédérale|>fédérée|>capitaliste|>communiste|>providence|>nation]
<<- /maj/ \1 == "états" -1>> États # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.
|
| ︙ | ︙ | |||
6471 6472 6473 6474 6475 6476 6477 |
TEST: C’est une prérogative de l’{{état-nation}} ->> État-nation
# gentilés / ethnonymes
__maj_gentilés__
océan Indien
[îles|iles] Britanniques
| | | 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 |
TEST: C’est une prérogative de l’{{état-nation}} ->> État-nation
# gentilés / ethnonymes
__maj_gentilés__
océan Indien
[îles|iles] Britanniques
<<- %2>>
*WORD [>afghane|>albanaise|>algérienne|>allemande|>américaine|>andorrane|>anglais|>angolaise|>arabe|>argentine|>arménienne|>australienne|>autrichienne|>asiatique|>azerbaïdjanaise|>bahamienne|>bangladaise|>bengladeshie|>barbadienne|>basque|>belge|>bélizienne|>béninoise|>bretonne|>bhoutanaise|>biélorusse|>birmane|>bolivienne|>bosnienne|>botswanaiso|>brésilienne|>britannique|>brunéiene|>bulgare|>burkinabé|>burundaise|>cambodgienne|>camerounaise|>canadienne|>capverdienne|>centrafricaine|>chilienne|>chinoise|>chypriote|>colombienne|>comorienne|>congolaise|>nord-coréenne|>corse|>costaricienne|>croate|>cubaine|>danoise|>djiboutienne|>dominicaine|>égyptienne|>émiratie|>équatorienne|>érythréenne|>estonienne|>espagnole|>étatsunienne|>états-unienne|>étasunienne|>éthiopienne|>fidjienne|>finlandaise|>formosane|>française|>gabonaise|>gambienne|>géorgienne|>ghanéenne|>grecque|>grenadienne|>guadeloupéenne|>guatémaltèque|>guinéenne|>équato-guinéenne|>guyanienne|>haïtienne|>honduriene|>hollandaise|>hongroise|>indienne|>indochinoise|>indonésienne|>irakienne|>italienne|>iranienne|>irlandaise|>islandaise|>israélienne|>ivoirienne|>jamaïcaine|>japonaise|>jordanienne|>kazakhe|>kényane|>kosovare|>koweïtienne|>laotienne|>lapone|>lettone|>libanaise|>libérienne|>libyenne|>liechtensteinoise|>lituanienne|>luxembourgeois|>macédonienne|>maghrébine|>malgache|>malaisienne|>malawite|>maldivienne|>malienne|>maltaise|>maorie|>marocaine|>martienne|>mauricienne|>mauritanienne|>mexicaine|>micronésienne|>moldave|>monégasque|>monténégrine|>mongole|>mozambicaine|>namibiene|>népalaise|>nicaraguayenne|>nigérienne|>nigériane|>néerlandaise|>norvégienne|>néo-zélandaise|>ougandaise|>ouzbèke|>pakistanaise|>palestinienne|>panaméenne|>paraguayenne|>perse|>péruvienne|>philippine|>polonaise|>polynésienne|>portugaise|>québécoise|>qatarie|>roumaine|>russe|>rwandaise|>saoudienne|>scandinave|>salvadorienne|>sénégalaise|>serbe|>singapourienne|>slovaque|>slovène|>somalienne|>soudanaise|>soviétique|>srilankaise|>suédoise|>suisse|>surinamaise|>syrienne|>sud-africaine|>sud-coréenne|>américaine|>tadjike|>tanzanienne|>tchadienne|>tchèque|>thaïlandaise|>togolaise|>tahitienne|>tunisiene|>turkmène|>turque|>taïwanaise|>ukrainienne|>uruguayenne|>vénézuélienne|>vietnamienne|>yéménite|>yougoslave|>zaïroise|>zambienne|>zimbabwéenne]
<<- /maj/ \2.istitle() and morph(\1, ":N", ":(?:A|V0e|D|R|B)") -2:>> =\2.lower() # S’il s’agit d’un adjectif, ne mettez pas de majuscule.
<<- /maj/ \2.islower() and not \2.startswith("canadienne") and
( value(\1, "|certains|certaines|ce|cet|cette|ces|des|les|nos|vos|leurs|quelques|plusieurs|chaque|une|aux|") or
( value(\1, "|un|") and not value(<1, "|dans|numéro|") and not after("(?:approximatif|correct|courant|parfait|facile|aisé|impeccable|incompréhensible)") ) )
-2>> =\2.capitalize() # S’il s’agit d’un gentilé, mettez une majuscule.
|
| ︙ | ︙ | |||
6596 6597 6598 6599 6600 6601 6602 |
__rendez_vous__
ne [le|la|les] [lui|leur] (rendez-vous)
ne me [le|la|les] (rendez-vous)
ne [lui|leur] en (rendez-vous)
ne [le|la|les|lui|leur] (rendez-vous)
[me|ne|nous|vous|lui] (rendez-vous)
<<- =>> define(\1, [":VCi1:2p"])
| | | | 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 |
__rendez_vous__
ne [le|la|les] [lui|leur] (rendez-vous)
ne me [le|la|les] (rendez-vous)
ne [lui|leur] en (rendez-vous)
ne [le|la|les|lui|leur] (rendez-vous)
[me|ne|nous|vous|lui] (rendez-vous)
<<- =>> define(\1, [":VCi1:2p"])
<<- %1>>
# [un|mon|ton|son|ce|mes|tes|ses|leurs] rendez-vous
# rendez-vous seulement défini comme :N:m:i
!!
!!
!!!! Pronoms + incohérences !!
!!
!!
__m_enfin__
m’ enfin
<<- %2>>
<<- ~>> *
__non_verbe_après_préverbes__
[ne|n’] [le|la|l’|les] [lui|leur|en|y] @:[NAQ]¬:(?:[123][sp]|Y|P|Oo|X)
[ne|n’] [lui|leur] en @:[NAQ]¬:(?:[123][sp]|Y|P|Oo|X)
<<- /conf/ -4>> =suggSimil(\4, ":(?:[123][sp]|Y)", False) # Incohérence avec « \1 \2 \3 » : « \4 » devrait être un verbe.
|
| ︙ | ︙ | |||
6680 6681 6682 6683 6684 6685 6686 |
TEST: t’en voilà débarrassée.
TEST: N’oublient-ils pas ce qu’ils étaient autrefois…
TEST: Ne presque jamais réussir un plat aussi simple, c’est de l’incompétence pure et simple.
__loc_notre_père_qui_es_au_cieux__
notre père qui [es|est] aux cieux
| | | | | | | | 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 |
TEST: t’en voilà débarrassée.
TEST: N’oublient-ils pas ce qu’ils étaient autrefois…
TEST: Ne presque jamais réussir un plat aussi simple, c’est de l’incompétence pure et simple.
__loc_notre_père_qui_es_au_cieux__
notre père qui [es|est] aux cieux
<<- %4>>
<<- ~3:0>> *
!!
!!
!!!! Formes verbales sans sujet !!
!!
!!
__tag_sujets__
[je|j’]
[moi|moi-même] qui
[moi|moi-même] [seul|seule]
<<- />> 1s
tu
t’ @:2s
t’ [en|y] @:2s
[toi|toi-même] ?,¿ qui
[toi|toi-même] [seul|seule]
<<- />> 2s
nous
nous ?,¿ qui
nous-même
nous-mêmes
nous [seul|seuls|seules]
[et|ou] [moi|moi-même]
ni [moi|moi-même]
[moi|moi-même] et
<<- />> 1p
vous
vous ?,¿ qui
vous-même
vous-mêmes
vous [seul|seule|seuls|seules]
[et|ou] [toi|toi-même]
ni [toi|toi-même]
[toi|toi-même] et
<<- />> 2p
__tag_prop_sub__
ce [que|qu’|qu]
<<- />> ce_que
## Incohérences avec formes verbales 1sg et 2sg sans sujet
__conj_xxxai__sans_sujet!3__
[se|s’] ?[en|y|le|la|l’|les]¿ (~ai$)
<<- /conj/ morph(\1, ":1s", ":(?:G|W|M|J|3[sp])")
|
| ︙ | ︙ | |||
7372 7373 7374 7375 7376 7377 7378 |
TODO: comme
__purge_locutions_latines__
[a|à] [priori|postériori|posteriori|contrario|cappella|minima]
<<- ~>> *
| | | 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 |
TODO: comme
__purge_locutions_latines__
[a|à] [priori|postériori|posteriori|contrario|cappella|minima]
<<- ~>> *
<<- %1>>
ab [absurdo|initio]
ad [hoc|hominem|infinitum|nauseam|valorem|patres]
ad vitam æternam
ex [nihilo|cathedra|absurdo|abrupto]
id est
in [abstracto|extenso|extremis|fine|petto|situ|utero|vitro|vivo]
|
| ︙ | ︙ | |||
11712 11713 11714 11715 11716 11717 11718 |
__conf_cour_cours_court_courre__
au [cour|court|courre|courres|courts] [de|d’|des|du]
<<- /conf/ -2>> cours # Confusion. Locution “au cours de”. Une cour… Un cours… Adjectif : court(e).
en cour martiale
en cour [de|d’] [cassation|justice]
en cour d’ [>assise]
| | | 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 |
__conf_cour_cours_court_courre__
au [cour|court|courre|courres|courts] [de|d’|des|du]
<<- /conf/ -2>> cours # Confusion. Locution “au cours de”. Une cour… Un cours… Adjectif : court(e).
en cour martiale
en cour [de|d’] [cassation|justice]
en cour d’ [>assise]
<<- %1:2>>
en cour
<<- /conf/ ->> en cours # Confusion probable. Une cour… Un cours… Adjectif : court(e).
>couper [cour|cours|courre|courres|courts]
<<- /conf/ -2>> court # “Couper court” qui signifie écourter. Une cour… Un cours… Adjectif : court(e).
|
| ︙ | ︙ |