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). |
︙ | ︙ |