{"id":21536688,"url":"https://github.com/kartmaan/french-language-tools","last_synced_at":"2026-03-01T11:31:44.528Z","repository":{"id":158402003,"uuid":"634023262","full_name":"Kartmaan/french-language-tools","owner":"Kartmaan","description":"A series of offline language tools based on a French dictionary in .csv format","archived":false,"fork":false,"pushed_at":"2025-03-14T17:12:31.000Z","size":11178,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T16:52:31.545Z","etag":null,"topics":["anagrams","csv","definitions","dictionary","dictionnaire","filtering","filtering-algorithm","francais","french","french-language","itertools","kaggle","lexicon","offline","pandas","parser","wiktionary","word-analysis","xml","xml-parser"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kartmaan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-04-28T20:49:13.000Z","updated_at":"2025-03-14T17:12:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4f6f1c8-bf7e-47fc-91ff-5ec62e38d6bd","html_url":"https://github.com/Kartmaan/french-language-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kartmaan/french-language-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kartmaan%2Ffrench-language-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kartmaan%2Ffrench-language-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kartmaan%2Ffrench-language-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kartmaan%2Ffrench-language-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kartmaan","download_url":"https://codeload.github.com/Kartmaan/french-language-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kartmaan%2Ffrench-language-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29968457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T10:55:55.490Z","status":"ssl_error","status_checked_at":"2026-03-01T10:55:55.175Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anagrams","csv","definitions","dictionary","dictionnaire","filtering","filtering-algorithm","francais","french","french-language","itertools","kaggle","lexicon","offline","pandas","parser","wiktionary","word-analysis","xml","xml-parser"],"created_at":"2024-11-24T03:21:08.429Z","updated_at":"2026-03-01T11:31:44.512Z","avatar_url":"https://github.com/Kartmaan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- TOC --\u003e\n* [French language tools](#french-language-tools)\n  * [Dictionary](#dictionary)\n    * [Example](#example)\n  * [Lexicon](#lexicon)\n    * [Examples](#examples)\n      * [Add a new word to the lexicon from the dictionary](#add-a-new-word-to-the-lexicon-from-the-dictionary)\n      * [Insert a new word to the lexicon manually](#insert-a-new-word-to-the-lexicon-manually)\n      * [Find a word in the lexicon](#find-a-word-in-the-lexicon)\n      * [Delete a lexicon entry](#delete-a-lexicon-entry)\n  * [Word analyzer](#word-analyzer)\n    * [Examples](#examples-1)\n      * [Various filters](#various-filters)\n      * [Anagram filter](#anagram-filter)\n\u003c!-- TOC --\u003e\n\n# French language tools\nSeries of tools using a French dictionary in `.csv` format.\nThe file contains +900,000 words with their spelling variations, their plurals, their conjugations etc. as well as their definitions, also in French. It was generated in Python on the basis of an XML file containing the database of fr.wiktionary and according to methods explained in detail in the \"Upstream\" folder, the XML not being in the final git due to its significant weight.\n\nThe .csv dataset was also published on Kaggle : https://www.kaggle.com/datasets/kartmaan/dictionnaire-francais\n\n## Dictionary\nRetrieves the definition(s) of a word in the dictionary.\n\n### Example\nThe function `define()` takes 4 arguments:\n- `dataframe`: The Pandas dataframe referring to the .csv dictionary\n- `word_column_name`: The name of the column containing the words\n- `definition_column_name`: The name of the column containing the definitions\n- `word`: The word to search for\n\n```python\ndefine(dataframe=df, word_column_name=\"Mot\", definition_column_name=\"Définitions\", word=\"Hallali\")\n\u003e\u003e\u003e ['Cri de victoire dans la chasse à courre, pour annoncer que la bête est aux abois.', \"Ton de chasse que l'on sonne pour annoncer que la bête se rend.\"]\n```\n\n## Lexicon\nTools for saving dictionary or custom words to an Excel .xlsx file. The tool allows, among other things, to:\n- Add words and its definitions from dictionary to the lexicon\n- Insert a personal word and its definitions to the lexicon\n- Find if a word is present in the lexicon\n- Delete a word from the lexicon\n\n![Lexicon](files/assets/insert_word.png)\n\n### Examples\n#### Add a new word to the lexicon from the dictionary\nThe `add_word()` function takes 3 arguments:\n- `dataframe`: The Pandas dataframe referring to the .csv dictionary\n- `workbook`: Workbook object (openpyxl) referring to the spreadsheet.\n- `word`: Word present in the dictionary to add in the lexicon.\n\n```python\nadd_word(dict_df, sheet, \"manga\")\n\u003e\u003e\u003e \"The word 'Manga' has been added to the lexicon.\"\n```\n\n#### Insert a new word to the lexicon manually\nThe `insert()` function takes 3 arguments:\n- `workbook`: Workbook object (openpyxl) referring to the spreadsheet.\n- `word`: Word to insert.\n- `definition`: Word definition. If there are several definitions, they can be placed in a list.\n\n```python\ninsert(sheet, \"Luffy\", \"Personnage principal du manga One Piece.\")\n\u003e\u003e\u003e \"The word 'Luffy' has been added to the lexicon.\"\n```\n\n#### Find a word in the lexicon\nThe `search()` function retrieves an entry from the lexicon, using 2 mandatory arguments:\n- `workbook`: Workbook object (openpyxl) referring to the spreadsheet.\n- `word`: Word to search.\n\nThe function returns in order:\n- 0: The index \n- 1: The word searched for \n- 2: The definition \n- 3: The timestamp of the addition to the lexicon.\n```python\nsearch(sheet, \"Luffy\")\n\u003e\u003e\u003e (14, 'Luffy', '1) Personnage principal du manga One Piece.', '1741967631')\n```\n\n#### Delete a lexicon entry\nThe `delete()` function takes 2 arguments:\n- `workbook`: Workbook object (openpyxl) referring to the spreadsheet.\n- `word`: Word to delete.\n\n```python\ndelete(sheet, \"Manga\")\n\u003e\u003e\u003e \"The word 'Manga' has been deleted from the lexicon.\"\n```\n\n## Word analyzer\nThe `multi_filter` function is used to filter dictionary words according to several specific criteria.\nThe 2 mandatory arguments are :\n- `dataframe`: The Pandas dataframe referring to the .csv dictionary\n- `col_name`: The name of the column containing the words\n\nThe `multi_filter` function has also 8 filters that can be activated by entering the associated arguments :\n- `no_comp`: Remove compound words from the analysis (bool).\n- `length`: Word length required (int).\n- `start_with`: Letters to appear at the beginning of the word (str).\n- `end_with`: Letters to appear at the end of a word (str).\n- `nth_letters`: Letter to appear in the desired position (list).\n- `contains`: Letters that the word must contain (list).\n- `not_contain`: Letters the word must not contain (list).\n- `anagram`: The words must be anagrams of the letters given as arguments (list).\n\n### Examples\n#### Various filters\nHere we want :\n- The word begins with the letter “g”.\n- The word ends with the letters “it”.\n- The word contains the letters “a”, and “u”.\n- The word does not contain the letter “b”.\n- The second letter of the word is an “r” and the fourth is a “t”.\n- The length of the word is 7.\n```python\nmulti_filters(df,\n              col_name=\"Mot\",\n              start_with=\"g\",\n              end_with=\"it\",\n              contains=[\"a\",\"u\"],\n              not_contain=[\"b\"],\n              nth_letters=[[2,\"r\"], [4,\"t\"]],\n              length=7)\n\n\u003e\u003e\u003e Filtering...\n            Mot                                        Définitions\n368175  Gratuit            [\"Qu'on donne, sans y être tenu.\", '…']\n371798  Grutait  [\"Troisième personne du singulier de l'indicat...\n```\n\n#### Anagram filter\nHere we want to filter out all words that : \n- Are an anagram of the letters \"c\", \"a\", \"r\", \"t\" and \"e\". \n- Are of length 5.\n\n```python\nmulti_filters(df, \n              col_name=\"Mot\",\n              anagram=[\"c\",\"a\",\"r\",\"t\",\"e\"],\n              length=5)\n\n\u003e\u003e\u003e Filtering...\n          Mot                                        Définitions\n7609    Acter  ['Noter par écrit une décision sur un acte.', ...\n121041  Caret  [\"Tortue des côtes de l'Amérique, du Mexique, ...\n122559  Carte  [\"Représentation, à échelle réduite, de la géo...\n122828  Carté                               ['Du verbe carter.']\n189149  Crèta  ['Troisième personne du singulier du passé sim...\n189291  Créat  [\"Manège Le sous-écuyer dans une école d'équit...\n190245  Créât                                ['Du verbe créer.']\n190353  Crêta  ['Troisième personne du singulier du passé sim...\n194190  Cérat  [\"Pharmacie Sorte d'onguent composé principale...\n614589  Recta                                ['Ponctuellement.']\n892823  Terça  ['Troisième personne du singulier du passé sim...\n903137  Trace  [\"Vestige qu'un homme ou un animal laisse à l'...\n903367  Tracé  ['Ensemble des lignes par lesquelles on indiqu...\n950585  Écart  [\"Action par laquelle deux parties d'une chose...\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartmaan%2Ffrench-language-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkartmaan%2Ffrench-language-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartmaan%2Ffrench-language-tools/lists"}