Comment: | [fr] thesaurus builder (merging synsets) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr |
Files: | files | file ages | folders |
SHA3-256: |
e67b500b7b8adbee2249ac560668cb88 |
User & Date: | olr on 2019-06-26 18:54:17 |
Other Links: | manifest | tags |
2019-06-26
| ||
23:06 | [fr] update thésaurus check-in: 4c57a4f8ce user: olr tags: trunk, fr | |
18:54 | [fr] thesaurus builder (merging synsets) check-in: e67b500b7b user: olr tags: trunk, fr | |
09:52 | [fr] faux positifs et ajustements check-in: 6d9ee21a54 user: olr tags: trunk, fr | |
Modified gc_lang/fr/dictionnaire/genfrdic.py from [4b330e0ec5] to [05828a16a3].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 28 29 30 | from distutils import dir_util from distutils import file_util from string import Template import metagraphe import metaphone2 # Dictionnaire des caractères pour le tri naturel. # Ordre souhaitable, mais pose problème pour la recherche, car engendre des égalités de lemmes différents. # Il faut donc travailler sur un dictionnaire trié *numériquement* et le sauvegarder selon le tri *naturel* CHARMAP = str.maketrans({ 'à': 'a', 'À': 'A', 'â': 'a', 'Â': 'A', 'ä': 'a', 'Ä': 'A', 'å': 'a', 'Å': 'A', 'ā': 'a', 'Ā': 'A', 'ç': 'c', 'Ç': 'C', | > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | from distutils import dir_util from distutils import file_util from string import Template import metagraphe import metaphone2 import thes_build # Dictionnaire des caractères pour le tri naturel. # Ordre souhaitable, mais pose problème pour la recherche, car engendre des égalités de lemmes différents. # Il faut donc travailler sur un dictionnaire trié *numériquement* et le sauvegarder selon le tri *naturel* CHARMAP = str.maketrans({ 'à': 'a', 'À': 'A', 'â': 'a', 'Â': 'A', 'ä': 'a', 'Ä': 'A', 'å': 'a', 'Å': 'A', 'ā': 'a', 'Ā': 'A', 'ç': 'c', 'Ç': 'C', |
︙ | ︙ | |||
564 565 566 567 568 569 570 | #file_util.copy_file('_templates/ooo/dictionaries.xcu.tpl.xml', spExt) copyTemplate('_templates/ooo', spExt, 'package-description.txt', dTplVars) for dVars in lDictVars: dicPath = spBuild + '/' + PREFIX_DICT_PATH + self.sVersion file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.dic', spExt+'/dictionaries/'+dVars['asciiName']+'.dic') file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.aff', spExt+'/dictionaries/'+dVars['asciiName']+'.aff') copyTemplate('orthographe', spExt+'/dictionaries', 'README_dict_fr.txt', dTplVars) | < < < < | 565 566 567 568 569 570 571 572 573 574 575 576 577 578 | #file_util.copy_file('_templates/ooo/dictionaries.xcu.tpl.xml', spExt) copyTemplate('_templates/ooo', spExt, 'package-description.txt', dTplVars) for dVars in lDictVars: dicPath = spBuild + '/' + PREFIX_DICT_PATH + self.sVersion file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.dic', spExt+'/dictionaries/'+dVars['asciiName']+'.dic') file_util.copy_file(dicPath+'/'+dVars['asciiName']+'.aff', spExt+'/dictionaries/'+dVars['asciiName']+'.aff') copyTemplate('orthographe', spExt+'/dictionaries', 'README_dict_fr.txt', dTplVars) # hyphenation file_util.copy_file('césures/hyph_fr.dic', spExt+'/dictionaries') file_util.copy_file('césures/hyph_fr.iso8859-1.dic', spExt+'/dictionaries') file_util.copy_file('césures/frhyph.tex', spExt+'/dictionaries') file_util.copy_file('césures/hyph-fr.tex', spExt+'/dictionaries') file_util.copy_file('césures/README_hyph_fr-3.0.txt', spExt+'/dictionaries') file_util.copy_file('césures/README_hyph_fr-2.9.txt', spExt+'/dictionaries') |
︙ | ︙ | |||
1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 | with open(sPathFile, 'w', encoding='utf-8', newline="\n") as hDst: for t in self.lLex: hDst.write(str(t)+"\n") for e in self.dFlexions.items(): hDst.write("{} - {}\n".format(e[0], e[1])) def main (): xParser = argparse.ArgumentParser() xParser.add_argument("-v", "--verdic", help="set dictionary version, i.e. 5.4", type=str, default="X.Y.z") xParser.add_argument("-m", "--mode", help="0: no tags, 1: Hunspell tags (default), 2: All tags", type=int, choices=[0, 1, 2], default=1) xParser.add_argument("-u", "--uncompress", help="do not use Hunspell compression", action="store_true") xParser.add_argument("-s", "--simplify", help="no virtual lemmas", action="store_true") | > > > > > > > > > > > > | 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 | with open(sPathFile, 'w', encoding='utf-8', newline="\n") as hDst: for t in self.lLex: hDst.write(str(t)+"\n") for e in self.dFlexions.items(): hDst.write("{} - {}\n".format(e[0], e[1])) def createThesaurusPackage (spBuild, sVersion, spCopy=""): print("Création du thésaurus") spThesaurus = spBuild+"/thesaurus-v"+sVersion dir_util.mkpath(spThesaurus) thes_build.build("thesaurus/thes_fr.dat", "thesaurus/synsets_fr.dat", spThesaurus) file_util.copy_file('thesaurus/README_thes_fr.txt', spThesaurus) if spCopy: # copy in libreoffice extension package file_util.copy_file(spThesaurus+'/thes_fr.dat', spCopy) file_util.copy_file(spThesaurus+'/thes_fr.idx', spCopy) file_util.copy_file(spThesaurus+'/README_thes_fr.txt', spCopy) def main (): xParser = argparse.ArgumentParser() xParser.add_argument("-v", "--verdic", help="set dictionary version, i.e. 5.4", type=str, default="X.Y.z") xParser.add_argument("-m", "--mode", help="0: no tags, 1: Hunspell tags (default), 2: All tags", type=int, choices=[0, 1, 2], default=1) xParser.add_argument("-u", "--uncompress", help="do not use Hunspell compression", action="store_true") xParser.add_argument("-s", "--simplify", help="no virtual lemmas", action="store_true") |
︙ | ︙ | |||
1554 1555 1556 1557 1558 1559 1560 | oStatsLex.addLexFromFile('lexique/corpus_data/stats_google_ngram_1.txt', 'G', 'Google 1-grams') oStatsLex.addLexFromFile('lexique/corpus_data/stats_frwiki.txt', 'W', 'Wikipédia') oStatsLex.addLexFromFile('lexique/corpus_data/stats_frwikisource.txt', 'S', 'Wikisource') oStatsLex.addLexFromFile('lexique/corpus_data/stats_litterature.txt', 'L', 'Littérature') oStatsLex.write(spBuild+'/test_lex.txt') oFrenchDict.calculateStats(oStatsLex, spfStats) | | > > < | 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 | oStatsLex.addLexFromFile('lexique/corpus_data/stats_google_ngram_1.txt', 'G', 'Google 1-grams') oStatsLex.addLexFromFile('lexique/corpus_data/stats_frwiki.txt', 'W', 'Wikipédia') oStatsLex.addLexFromFile('lexique/corpus_data/stats_frwikisource.txt', 'S', 'Wikisource') oStatsLex.addLexFromFile('lexique/corpus_data/stats_litterature.txt', 'L', 'Littérature') oStatsLex.write(spBuild+'/test_lex.txt') oFrenchDict.calculateStats(oStatsLex, spfStats) ### Écriture des paquets echo("Création des paquets...") spLexiconDestGL = "../../../lexicons" if xArgs.grammalecte else "" spLibreOfficeExtDestGL = "../oxt/Dictionnaires/dictionaries" if xArgs.grammalecte else "" spMozillaExtDestGL = "" if xArgs.grammalecte else "" # no more Hunspell dictionaries in Mozilla extensions for now spDataDestGL = "../data" if xArgs.grammalecte else "" ### dictionnaires if not xArgs.uncompress: oFrenchDict.defineAbreviatedTags(xArgs.mode, spfStats) oFrenchDict.createFiles(spBuild, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], xArgs.mode, xArgs.simplify) oFrenchDict.createLexiconPackages(spBuild, xArgs.verdic, oStatsLex, spLexiconDestGL) oFrenchDict.createFileIfqForDB(spBuild) createThesaurusPackage(spBuild, xArgs.verdic, spLibreOfficeExtDestGL) oFrenchDict.createLibreOfficeExtension(spBuild, dMOZEXT, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], spLibreOfficeExtDestGL) oFrenchDict.createMozillaExtensions(spBuild, dMOZEXT, [dTOUTESVAR, dCLASSIQUE, dREFORME1990], spMozillaExtDestGL) oFrenchDict.createDictConj(spBuild, spDataDestGL) oFrenchDict.createDictDecl(spBuild, spDataDestGL) if __name__ == '__main__': main() |
Added gc_lang/fr/dictionnaire/thes_build.py version [34ec46a285].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | # Thesaurus builder import os import re def readFile (spf): if os.path.isfile(spf): with open(spf, "r", encoding="utf-8") as hSrc: for sLine in hSrc: yield sLine.strip() else: print("# Error. File not found or not loadable: " + spf) class ThesaurusBuilder (): def __init__ (self): # synsets self.dSynEntry = {} # {sWord: iSynset} self.dSynset = {} # {iSynset: lSynset} # thesaurus self.dThesEntry = {} # {sWord: lWord} def readSynsets (self, spf): if not spf: return for i, sLine in enumerate(readFile(spf), 1): sPOS, *lSynset = sLine.split("|") lSynset = self._removeDuplicatesFrom(lSynset) self.dSynset[i] = lSynset for sWord in lSynset: if not sWord.endswith("*"): if sWord not in self.dSynEntry: self.dSynEntry[sWord] = [ (sPOS, i) ] else: self.dSynEntry[sWord].append( (sPOS, i) ) def showSynsetEntries (self): for sWord, lSynset in self.dSynEntry.items(): for sPOS, iSynset in lSynset: print(sWord, sPOS, "|".join(self.dSynset[iSynset])) def readThesaurus (self, spf): if not spf: return genRead = readFile(spf) sLine1 = next(genRead) sEntry = "" iEntryLine = 0 nClass = 0 nClassFound = 0 for i, sLine in enumerate(genRead, 2): sLine = sLine.strip() if re.search(r"^[^|]+\|[1-9][0-9]*$", sLine): # new entry if nClass != nClassFound: print("Ligne:", iEntryLine, ", nombre de liste incorrect") iEntryLine = i sEntry, sNum = sLine.split("|") self.dThesEntry[sEntry] = [] nClass = int(sNum) nClassFound = 0 else: # new list of synonyms nClassFound += 1 sPOS, *lClass = sLine.split("|") lClass = self._removeDuplicatesFrom(lClass) self.dThesEntry[sEntry].append( (sPOS, lClass) ) def showThesaurusEntries (self): for sWord, lClass in self.dThesEntry.items(): for sPOS, lWord in lClass: print(sWord, sPOS, "|".join(lWord)) def _removeDuplicatesFrom (self, lWord): return [ sWord.strip() for sWord in dict.fromkeys(lWord) ] # remove duplicates: use <dict.fromkeys()> instead of <set()> to keep order def merge (self): for sWord, lSynset in self.dSynEntry.items(): for sPOS, iSynset in lSynset: if sWord in self.dThesEntry: self.dThesEntry[sWord].append( (sPOS, self.dSynset[iSynset]) ) else: self.dThesEntry[sWord] = [ (sPOS, self.dSynset[iSynset]) ] def write (self, spDest): nOffset = 0 # the offset for finding data is the number of bytes (-> encoding("utf-8")) dOffset = {} with open(spDest + "/thes_fr.dat", "w", encoding="utf-8", newline="\n") as hThes: sHeader = "UTF-8\n" hThes.write(sHeader) nOffset = len(sHeader.encode("utf-8")) for sWord, lClass in self.dThesEntry.items(): dOffset[sWord] = nOffset sWordLine = sWord+"|"+str(len(lClass))+"\n" hThes.write(sWordLine) nOffset += len(sWordLine.encode("utf-8")) for sPOS, lWord in lClass: sClassLine = sPOS+"|"+"|".join(lWord)+"\n" hThes.write(sClassLine) nOffset += len(sClassLine.encode("utf-8")) with open(spDest + "/thes_fr.idx", "w", encoding="utf-8", newline="\n") as hIndex: hIndex.write("UTF-8\n") hIndex.write(str(len(self.dThesEntry))+"\n") for sWord, nOffset in sorted(dOffset.items()): hIndex.write(sWord+"|"+str(nOffset)+"\n") def build (spfThesaurus="", spfSynsets="", spDest="_build"): oThes = ThesaurusBuilder() oThes.readSynsets(spfSynsets) #oThes.showSynsetEntries() oThes.readThesaurus(spfThesaurus) #oThes.showThesaurusEntries() oThes.merge() oThes.write(spDest) if __name__ == '__main__': build("thesaurus/thes_fr.dat", "thesaurus/synsets_fr.dat") |
Deleted gc_lang/fr/dictionnaire/thesaurus/create_idx.py version [570f17f6e9].
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
Added gc_lang/fr/dictionnaire/thesaurus/synsets_fr.dat version [d79a3cf0cc].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | (nom)|aigreur|indignation|rancœur|rancune|dépit|ressentiment|amertume|acrimonie|antipathie|colère (nom)|arbre|végétal|baliveau|tige|buisson|feuillu|résineux|arbuste|résinifère|tronc (nom)|assemblée|communauté|confrérie|sororité|collectivité|compagnie|association|corporation|congrégation|clergé|coterie|loge|corps|Église|ordre|groupe|société (nom)|atout|carte-maîtresse|carte-maitresse|as|joker (nom)|âtre|feu|foyer|cheminée|réchaud|fourneau|chaufferette|brasero|chauffe-plat|tison|brasier|fournaise|chauffage|haut-fourneau|four (nom)|axe|pivot|essieu|manivelle|bielle|embiellage|pivot|charnière|balancier|bras|arbre|transmission (nom)|bordel|foutoir|chantier|désordre|galère|merdier|merde|bazar (nom)|cadavre|défunt|mort|trépassé|esprit|spectre|âme|décédé|victime|dépouille|défunt|tué|disparu|martyr|souffre-douleur|corps (verb)|capitulez|rendez-vous|acceptez|abandonnez|renoncez|repliez-vous|agenouillez-vous|soumettez-vous (adj)|certain|indiscutable|indubitable|concret|positif|précis|net|patent|effectif|solide|sûr|sérieux|visible (adj)|charnel|sexuel|physiologique|organique|physique (nom)|chef|maître|maitre|responsable|dirigeant|patron|commandant|directeur|supérieur|leader|meneur|propriétaire|employeur|dictateur|tyran (nom)|chocolatine|pain au chocolat (nom)|clé|clef|rossignol|crochet|sésame|carouble|accès|passe|mot de passe|passe-partout (nom)|colère|courroux|animosité|irritation|humeur|malveillance|inimitié|agressivité|haine|emportement|véhémence|ire|rage|exaspération|impatience|déchaînement|explosion|crise|irritation (adj)|commun|ordinaire|normal|vulgaire|général|quelconque|terne|habituel|insignifiant|universel|global|consensuel|léger|vague (adj)|concret|palpable|réel|matériel|corporel|physique|tangible|visible|solide (nom)|conjonction|coïncidence|jonction|association|entremêlement|réunion|rendez-vous (nom)|créateur|maître|maitre|dieu|divinité|déité|démiurge|verbe|idole|logos|éternel|père|artiste|maestro|virtuose|répétiteur|musicien (nom)|destruction|combustion|calcination|incendie|incinération|oxydation|déflagration|flamboiement|ignition|sinistre|feu (nom)|disparu|mort|décédé|trépassé|défunt|tué|passé|oublié|feu (nom)|douleur|feu|brûlure|aigreur|ampoule|cloque|inflammation|irradiation|irritation|insolation|ulcération|rougeur|enfer|souffrance (nom)|église|temple|mosquée|synagogue|cathédrale|cloître|chapelle|couvent|abbatiale|monastère|oratoire|sanctuaire|asile|basilique|ziggourat|presbytère|monument mégalithique|fanum (nom)|entreprise|société|compagnie|holding|groupe|corporation|SARL|SA (nom)|épée|sabre|katana|lame|rapière|cimeterre|yatagan|kriss|coupe-chou|glaive|poignard|dague|couteau|fleuret (nom)|escrime|épéisme (nom)|excrément|merde|selles|bouse|crottin|crotte|caca (nom)|famille|lignage|foyer|maison|ménage|dynastie|descendance|progéniture|généalogie|souche|parentèle|race|sang|extraction|lignée|parenté|postérité|ascendance|filiation|racine|tronc|tige|branche (nom)|fin|achèvement|extrémité|limite|terme|terminaison|terminus|queue|aboutissement|issue|épilogue|conclusion|dénouement|mort (adj)|flou|vague|incertain|indistinct|indécis|brouillé|nébuleux|équivoque|confus|indéterminé|imprécis|obscur|douteux|ténébreux|ambigu|indéfini|vaporeux|brumeux|clair-obscur|évasif|imperceptible|incompréhensible|indiscernable|lâche|indéfinissable|abstrait|sombre|imparfait|approximatif|fumeux|fuligineux|délayé|inclassable|indéterminable|trouble|voilé|sibyllin|nuageux|estompé|inconsistant|diffus (adj)|fluctuant|ondulant|changeant|fuyant|inconstant|flottant|vague (nom)|force|puissance|énergie|attraction|gravitation|pénétration|portée|effet|ampleur|intensité|amplitude|étendue|immensité|importance|impact|efficacité (adj)|foutu|râpé|terminé|fini|déglingué|mort (adj)|hésitant|irrésolu|indécis|perplexe|inexpressif|atone|froid|négligé|vague (adj)|inanimé|inerte|inactif|crevé|épuisé|immobile|stagnant|dormant|marécageux|stationnaire|mort (nom)|lumière|feu|flamme|lanterne|fanal|flambeau|phare|flammes|flambée|flammèche|éblouissement|éclat|étincelle|embrasement|lueur|lumière|clarté|rayon|scintillement|éclair|illumination|fulgurance|luisance|phosphorescence|falot (nom)|maladie|mal|crève|grippe|mort (interj)|marre|assez|ça suffit|ras le bol|j’en peux plus (nom)|matériel|outilllage|fourbi|attirail|barda|matériau|outil|mobilier|équipement|machine|matos|appareillage|instrument|hardware (nom)|mentor|maître|maitre|enseignant|éducateur|initiateur|expert|savant|précepteur|formateur|professeur|pion|surveillant|éveilleur|instructeur|moniteur|pédagogue|instituteur|entraîneur|gourou (nom)|mort|décès|trépas|agonie|glas|meurtre|anéantissement|disparition|extinction|consommation|suicide|assassinat|fin (nom)|noblesse|excellence|sagesse|expérience|plénitude|profondeur|grandeur|élévation|mérite|valeur|maturité|force (nom)|ordinateur|calculateur|machine|PC|calculatrice|micro-ordinateur|unité centrale|station|terminal|bécane|computer|tour|portable|ordinant|robot|androïde|gynoïde|marionnette|automate (nom)|passion|feu|ardeur|fanatisme|emballement|délire|exaltation|ferveur|fièvre|frénésie|fureur|impétuosité|flamme|élan (nom)|pouvoir|autorité|grâce|grandeur|gloire|domination|présence|charisme|influence|ascendant|stature|assurance|impassibilité|force (nom)|prostituée|pute|catin|putain|péripatéticienne|hétaïre|courtisane|geisha|asphalteuse|belle-de-nuit|demi-mondaine|femme de mauvaise vie|femme publique|fille publique|fille de joie|fille de mauvaise vie|fille des rues|fleur de macadam|michetonneuse|poule|professionnelle|raccrocheuse|racoleuse|ribaude|sirène|tapineuse|traînée|trimardeuse|turfeuse|bagasse|cocotte|sirène (nom)|réalité|réel|matériel|matériau|nature (nom)|religion|confession|culte|croyance|Église (nom)|rendez-vous|rancard|rancart|rencard|tête-à-tête|entretien|entrevue|audience|assignation|convocation|réunion|rencontre|match (nom)|résistance|endurance|dureté|fermeté|invulnérabilité|inflexibilité|solidité|robustesse|patience|force (nom)|sang|hémoglobine|plasma|sérum|cruor|sève|fluide vital (nom)|seigneur|maître|maitre|roi|prince|empereur|monarque|majesté|magister|régent|sieur|sire|suzerain|hobereau|souverain|châtelain|paladin|aristocrate|franc-maçon|juge (nom)|signal|drapeau|balise|déclencheur|déclic|signalement|alarme|feu|alerte (nom)|solution|clé|clef|point-clé|réponse|conclusion|dénouement (nom)|vague|onde|flot|vaguelette|ressac|marée|lame|flux|reflux|afflux|courant|eau|déferlement|torrent|onde de choc|raz-de-marée|houle|roulis|rut|rush|remous|déferlante|rouleau|fluctuation|déluge|pluie|ondée (nom)|vigueur|activité|dynamisme|énergie|force|enthousiasme|sang (nom)|vigueur|fougue|sève|activité|sang|tonicité|tonus|punch|verdeur|jeunesse|élan|ressort|impétuosité|dynamisme|impulsivité|vitalité|ardeur|virulence|véhémence|exaltation|force (nom)|violence|force|tyrannie|despotisme|contrainte|oppression (nom)|volonté|courage|audace|cran|détermination|constance|persévérance|résolution|ténacité|trempe|acharnement|persistance|force |
Modified gc_lang/fr/modules/conj_data.py from [f9502006bf] to [79483966f2].
cannot compute difference between binary files
Modified gc_lang/fr/modules/phonet_data.py from [07fb54d0a8] to [b720d5cd9f].
cannot compute difference between binary files
Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.aff from [d85769e650] to [793d991f9c].
1 2 3 4 5 6 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “CLASSIQUE” v6.4.1 # par Olivier R. -- licence MPL 2.0 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “CLASSIQUE” v6.4.1 # par Olivier R. -- licence MPL 2.0 # Généré le 26-06-2019 à 20:44 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/ SET UTF-8 WORDCHARS -’'1234567890. |
︙ | ︙ |
Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.aff from [7ec124d4b1] to [91b4b5b4c4].
1 2 3 4 5 6 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “RÉFORME 1990” v6.4.1 # par Olivier R. -- licence MPL 2.0 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “RÉFORME 1990” v6.4.1 # par Olivier R. -- licence MPL 2.0 # Généré le 26-06-2019 à 20:44 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/ SET UTF-8 WORDCHARS -’'1234567890. |
︙ | ︙ |
Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.aff from [d531e86770] to [f217c056cf].
1 2 3 4 5 6 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “TOUTES VARIANTES” v6.4.1 # par Olivier R. -- licence MPL 2.0 | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “TOUTES VARIANTES” v6.4.1 # par Olivier R. -- licence MPL 2.0 # Généré le 26-06-2019 à 20:44 # Pour améliorer le dictionnaire, allez sur https://grammalecte.net/ SET UTF-8 WORDCHARS -’'1234567890. |
︙ | ︙ |