Overview
Comment: | [fr] conversion: regex rules -> graph rules |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr |
Files: | files | file ages | folders |
SHA3-256: |
a5b3aff8386c33cdd72d94da7c85a3de |
User & Date: | olr on 2019-05-24 11:21:45 |
Other Links: | manifest | tags |
Context
2019-05-24
| ||
12:20 | [fr] commentaire check-in: 8fd1fbf7f3 user: olr tags: trunk, fr | |
11:21 | [fr] conversion: regex rules -> graph rules check-in: a5b3aff838 user: olr tags: trunk, fr | |
08:50 | [core] sentence splitting: code clarification check-in: 311ccab788 user: olr tags: trunk, core | |
Changes
Modified gc_lang/fr/rules.grx from [8019fdef02] to [d98da7dc5f].
︙ | ︙ | |||
1541 1542 1543 1544 1545 1546 1547 | !! !! !! !! [++] | | > > > > > > > > > < < < < < < < < < < | 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 | !! !! !! !! [++] !!! !!! !!! Règles par expressions régulières (plus rapides que par tokens) !! !!! !!! !!!! Doublons !! __[s](doublon)__ ({w1}) {1,3}\1 @@0 <<- not re.search("(?i)^([nv]ous|faire|en|la|lui|donnant|œuvre|h[éoa]|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|[0-9]+)$", \1) and not (re.search("^(?:est|une?)$", \1) and before("[’']$")) and not (\1 == "mieux" and before("(?i)qui +$")) ->> \1 # Doublon. TEST: Il y a un {{doublon doublon}}. !!!! Nombres: typographie !! #(\d\d\d\d)-(\d\d\d\d) <<- ->> \1–\2 # Ne pas séparer deux dates par un trait d’union, mais par un tiret demi-cadratin. __[s]/num(num_lettre_O_zéro1)__ [\dO]+[O][\dO]+ <<- not option("ocr") ->> =\0.replace("O", "0") # S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ». |
︙ | ︙ | |||
1584 1585 1586 1587 1588 1589 1590 | <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"]) __[i](d_eepi_écriture_épicène_singulier)__ ({w_2}[éuitsrn])_e @@0 <<- morph(\1, ":[NAQ]") =>> define(\1, [":N:A:Q:e:s"]) | < < < < < | < < < < | | | | < < < < < < | | < < < | < < < < < < < < < < < < < < < < < < < < < < < < < | > > > | > > > | 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 | <<- morph(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"]) __[i](d_eepi_écriture_épicène_singulier)__ ({w_2}[éuitsrn])_e @@0 <<- morph(\1, ":[NAQ]") =>> define(\1, [":N:A:Q:e:s"]) !!!! Purge de quelques éléments !! # Exposants __<s>(p_exposants)__ [¹²³⁴⁵⁶⁷⁸⁹⁰]+ <<- ~>> * # les références aux notes __[i](p_références_aux_notes)__ ({w_2})+(\d+) @@0,$ <<- not morph(\0, ":") and morph(\1, ":") ~2>> * !!!! Traits d’union !! __[i]/tu(tu_trait_union_douteux)__ ({w1})(?:--|—|–|−|⁃)({w1}) @@0,$ <<- spell(\1+"-"+\2) and analyse(\1+"-"+\2, ":") ->> \1-\2 # Trait d’union : un tiret simple suffit. TEST: Nous préparons une {{contre–attaque}}. TEST: Nous préparons une {{contre−attaque}}. __<i]/tu(tu_t_euphonique_incorrect)__ ([-–—− ]t(?:[’' ][-–—−]?|[-–—−][’' ]?))(ils?|elles?|on|tu) @@0,$ <<- re.search("(?i)^(?:ils|elles|tu)$", \2) -1>> - # Le “t” euphonique n’est pas nécessaire avec “\2”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513 <<- __else__ and \1 != "-t-" and \1 != "-T-" -1>> -t- # Pour le “t” euphonique, il faut deux traits d’union. Pas d’apostrophe. Pas d’espace. <<- \1 != "-t-" ~1>> -t- __<i]/tu(tu_t_euphonique_superflu)__ |
︙ | ︙ | |||
1684 1685 1686 1687 1688 1689 1690 | TEST: vient-il demain ? TEST: prend-elle l’avantage ? TEST: saura-t-on jamais la vérité ? TEST: arrive-t-elle ce matin ? TEST: y aura-t-il du poulet au dîner ? | < < < < | 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 | TEST: vient-il demain ? TEST: prend-elle l’avantage ? TEST: saura-t-on jamais la vérité ? TEST: arrive-t-elle ce matin ? TEST: y aura-t-il du poulet au dîner ? !!!! Élisions !! # presque : élision __[i>/typo(typo_presque)__ (presqu[’'])(?![îi]le) @@0 <<- -1>> "presque " # Pas d’élision autorisée sur “presque”, sauf avec “presqu’île”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745 TEST: {{Presqu’}}exclusivement bâtie en pierre. |
︙ | ︙ | |||
1711 1712 1713 1714 1715 1716 1717 | TEST: {{Quelqu’}}absurde que ce soit, il faut y céder. TEST: quelqu’un vient. TEST: elle s’en est allée avec quelqu’une… | < < | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 | TEST: {{Quelqu’}}absurde que ce soit, il faut y céder. TEST: quelqu’un vient. TEST: elle s’en est allée avec quelqu’une… @@@@ @@@@ @@@@ @@@@ @@@@GRAPH: purge_tag_disambiguate _ @@@@ @@@@ @@@@ @@@@ !!! !!! !!! Purge de la phrase !! !!! !!! __tag_mots_entre_guillemets__ « *WORD » <<- space_after(\1, 0, 1) and space_after(\2, 0, 1) /2>> eg1mot « *WORD *WORD <<- space_after(\1, 0, 1) /2:0>> egxmot *WORD *WORD » <<- space_after(\2, 0, 1) /1:2>> egxmot ["|“] *WORD ["|”] <<- space_after(\1, 0, 0) and space_after(\2, 0, 0) /2>> eg1mot ["|“] *WORD *WORD <<- space_after(\1, 0, 0) /2:0>> egxmot *WORD *WORD ["|”] <<- space_after(\2, 0, 0) /1:2>> egxmot __purge_guillemets__ [«|»|“|”|"|„|`] <<- ~>> * __purge_début_phrase__ <start> [?|!|:|;|…|‘|’|'|¿|¡] <<- ~2>> * <start> [-|–|—] ?[-|–|—]¿ <<- />> tiret1 <<- ~2>> * <start> [•|·|.] <<- />> puce1 <<- ~2>> * __purge_fin_phrase__ [.|…|?|!|:|;|–|—|•|·|…|«|»|‘|’|“|”|"|'|¿|¡|-] ?[.|…|?|!|:|;|–|—|•|·|…|«|»|‘|’|“|”|"|'|¿|¡|-]¿ <end> <<- ~1:-2>> * __purge_mot_nombre_parenthèses_crochets_accolades__ ( [*WORD|*NUM] ) [ [*WORD|*NUM] ] { [*WORD|*NUM] } <<- ~>> * __purge_chapitres_références__ ( [*WORD|*NUM] , *NUM ) [ [*WORD|*NUM] , *NUM ] { [*WORD|*NUM] , *NUM } <<- ~>> * !!! !!! !!! Désambiguïsation !! !!! !!! |
︙ | ︙ | |||
2016 2017 2018 2019 2020 2021 2022 | __tag_ni__ ni <<- />> ni | > | > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | | 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 | __tag_ni__ ni <<- />> ni !!!! Fusions et immunités !! __fusions_mots_grammaticaux__ le ou la *WORD la ou le *WORD <<- morph(\-1, ":[NA]") ~1:3>> ␣ alors [que|qu’] dès lors [que|qu’] <<- ~>> ␣ <<- =>> define(\1, [":Cs"]) __fusions_noms_communs__ au revoir <<- ~>> ␣ <<- =>> define(\1, [":N:m:i"]) n’ importe [qui|quoi|quel|quelle|quels|quelles] <<- ~1:2>> ␣ [cultural|gender] studies <<- ~>> ␣ <<- =>> define(\1, [":N:f:p"]) machine [learning|learnings] standing >ovation star [system|systems] black [>bloc|>block] <<- ~>> ␣ *NUM : *NUM <<- space_after(\1, 0, 0) and space_after(\1, 0, 0) ~>> ␣ *NUM ~^h[0-9][0-9]$ <<- space_after(\1, 0, 0) ~>> ␣ __fusions_noms_propres__ cac 40 <<- ~>> ␣ France [2|3|4|5|0|O] <<- ~>> ␣ Peugeot ~^\d0\d\d?$ <<- ~>> ␣ <<- =>> define(\1, [":N:e:i"]) Mai 68 <<- ~>> ␣ <<- =>> define(\1, [":N:m:i"]) ~^[A-ZÂÉÈÎ]. ~^[A-ZÂÉÈÎ] <<- analyse_with_next(\1, " ", ":") ~>> ␣ Me ~^[A-ZÂÉÈÎ]. <<- =>> define(\1, [":T"]) <<- ~1>> * notre père <<- morph(<1, ":D.*:[mp]") ~>> ␣ <<- __also__ =>> define(\1, [":N:m:i"]) __immunités__ il y a il n’ y a <<- !-1>> à l’ arrache <<- !3>> à ce point en tout point <<- !3>> au [bas|bras|côté|milieu|sein|sommet|faîte] [duquel|desquels|desquelles] au [bas|bras|côté|milieu|sein|sommet|faîte] de laquelle aux [côtés] [duquel|desquels|desquelles] aux [côtés] de laquelle <<- !-1>> au lieu des <<- !3>> au sortir [de|des|du|d’] <<- ~2>> _ de chez *WORD à chez <<- !-2>> en tout et pour tout <<- !-1>> jusqu’ à <<- !2>> [comme|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quand|pourquoi|qui|quoi] ?[ne|n’]¿ ?[se|s’]¿ (*WORD) ?à¿ [le|la|l’|les] @:Y @:M <<- morph(\1, ":V") !-2>> soit pour soit contre <<- !3>> TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. !!!! Noms composés !! __tag_noms__ ~\w-là$ <<- />> -là <<- =>> =define_from(\1, 0, -3) !! !! !!!! Verbes composés !! !! !! |
︙ | ︙ | |||
2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 | 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>> __inte_verbes_composés_impératifs__ ~\w-l(?:es?|a)-(?:[mt]oi|nous|leur)$ ~\w-(?:[nv]ous|lui|leur)-en$ ~\w-[mt]’en$ ~\w-[mt]’y$ <<- /imp/ morphVC(\1, ":V", ":E") ->> =suggVerbImpe(\1, True) # Ceci n’est pas une forme impérative correcte.|http://fr.wikipedia.org/wiki/Imp%C3%A9ratif_%28grammaire%29 | > > | 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 | 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 dans le dictionnaire __inte_verbes_composés_impératifs__ ~\w-l(?:es?|a)-(?:[mt]oi|nous|leur)$ ~\w-(?:[nv]ous|lui|leur)-en$ ~\w-[mt]’en$ ~\w-[mt]’y$ <<- /imp/ morphVC(\1, ":V", ":E") ->> =suggVerbImpe(\1, True) # Ceci n’est pas une forme impérative correcte.|http://fr.wikipedia.org/wiki/Imp%C3%A9ratif_%28grammaire%29 |
︙ | ︙ | |||
2179 2180 2181 2182 2183 2184 2185 | TEST: {{prend-m’en}} trois, s’il te plaît. TEST: {{Sert-toi}} d’eux autant que tu le peux, puis casse-toi. TEST: {{explique-leurs}} de quoi il est question. TEST: c’est mon chez-moi TEST: c’est ton chez-toi | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 | TEST: {{prend-m’en}} trois, s’il te plaît. TEST: {{Sert-toi}} d’eux autant que tu le peux, puis casse-toi. TEST: {{explique-leurs}} de quoi il est question. TEST: c’est mon chez-moi TEST: c’est ton chez-toi @@@@ @@@@ @@@@ @@@@ @@@@GRAPH: ocr _ |
︙ | ︙ | |||
9539 9540 9541 9542 9543 9544 9545 | n’ [en|y] ?presque¿ [pas|rien|guère|point] non plus @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ jamais ?[rien|plus|trop|beaucoup]¿ @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ jamais ?[rien|plus]¿ non plus @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ plus ?[jamais|rien|guère|trop|beaucoup]¿ @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ plus ?[jamais|rien|guère]¿ non plus @:[VNA]¬:(?:Y|W|X|O) <<- /infi/ --1>> =suggVerbInfi(\-1) # Après “ne pas”, “ne jamais”, “ne plus”, “ne rien”… le verbe devrait être à l’infinitif. | | | 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 | n’ [en|y] ?presque¿ [pas|rien|guère|point] non plus @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ jamais ?[rien|plus|trop|beaucoup]¿ @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ jamais ?[rien|plus]¿ non plus @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ plus ?[jamais|rien|guère|trop|beaucoup]¿ @:[VNA]¬:(?:Y|W|X|O) n’ [en|y] ?presque¿ plus ?[jamais|rien|guère]¿ non plus @:[VNA]¬:(?:Y|W|X|O) <<- /infi/ --1>> =suggVerbInfi(\-1) # Après “ne pas”, “ne jamais”, “ne plus”, “ne rien”… le verbe devrait être à l’infinitif. ne [pas|jamais|plus|rien|guère|point] [beaucoup|trop|assez|mal] <<- ~3>> * TEST: ne jamais les {{cédé}} TEST: ne point nous {{donné}} TEST: ne rien {{finit}} TEST: ne jamais plus s’y {{frottait}} TEST: ne presque jamais plus s’y {{frottaient}} |
︙ | ︙ | |||
9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 | TEST: J’espère ne pas te déranger TEST: Ne pas te le donner, ce serait une insulte. TEST: ne jamais vraiment évoquer le sujet TEST: déterminés à ne pas se laisser récupérer TEST: de ne pas en élire du tout TEST: Mais gare à ne pas non plus trop surestimer la menace TEST: ne jamais beaucoup bosser, c’est sa devise. ## guerre / guère __conf_préverbes_guère_guerre!5__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ *WORD ?[plus|jamais]¿ guerre [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] *WORD ?[plus|jamais]¿ guerre [ne|n’] [le|la|l’|les] [lui|leur|en|y] *WORD ?[plus|jamais]¿ guerre | > > > | 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 | TEST: J’espère ne pas te déranger TEST: Ne pas te le donner, ce serait une insulte. TEST: ne jamais vraiment évoquer le sujet TEST: déterminés à ne pas se laisser récupérer TEST: de ne pas en élire du tout TEST: Mais gare à ne pas non plus trop surestimer la menace TEST: ne jamais beaucoup bosser, c’est sa devise. TEST: ne pas mal faire, c’est déjà pas si mal TEST: ne pas assez faire pour eux, voilà notre tort ## guerre / guère __conf_préverbes_guère_guerre!5__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ *WORD ?[plus|jamais]¿ guerre [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] *WORD ?[plus|jamais]¿ guerre [ne|n’] [le|la|l’|les] [lui|leur|en|y] *WORD ?[plus|jamais]¿ guerre |
︙ | ︙ | |||
9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 | <<- ~>> * par-devers [moi|toi|lui|elle|elles|lui|eux|nous|vous] <<- ~>> * quant à [moi|toi|lui|elle|elles|lui|eux|nous|vous] [<end>|,|@:[VXG]¬>qui] <<- ~1:3>> * TODO: comme __purge_locutions_latines__ [a|à] [priori|postériori|posteriori|contrario|cappella|minima] <<- ~>> * | > > > > > > > | 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 | <<- ~>> * par-devers [moi|toi|lui|elle|elles|lui|eux|nous|vous] <<- ~>> * quant à [moi|toi|lui|elle|elles|lui|eux|nous|vous] [<end>|,|@:[VXG]¬>qui] <<- ~1:3>> * de chez *WORD ?jusqu’¿ à chez [moi|toi|soi|elle|eux|elles|moi-même|toi-même|soi-même|lui-même|elle-même|nous-mêmes|vous-même|vous-mêmes|eux-mêmes|elles-mêmes] <<- ~>> * jusqu’ à chez de chez <<- ~1:-2>> * TODO: comme __purge_locutions_latines__ [a|à] [priori|postériori|posteriori|contrario|cappella|minima] <<- ~>> * |
︙ | ︙ | |||
11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 | non @:A <<- not morph(<1, ":D.*:m:[si]") ~1>> * par trop @:A <<- ~1:2>> * pêle-mêle <<- not morph(<1, ":D.*:[me]") ~>> * plein est <<- not morph(<1, ":D.*:m:[si]") ~>> * [plus|moins|aussi] @:W que prévu | > > > > > > | 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 | non @:A <<- not morph(<1, ":D.*:m:[si]") ~1>> * par trop @:A <<- ~1:2>> * pas mal <<- not morph(<1, ":D") ~>> * pas assez *WORD <<- morph(\3, ":[AW]") and not morph(<1, ":D") ~>> * pêle-mêle <<- not morph(<1, ":D.*:[me]") ~>> * plein est <<- not morph(<1, ":D.*:m:[si]") ~>> * [plus|moins|aussi] @:W que prévu |
︙ | ︙ |