{"id":17718551,"url":"https://github.com/linuxscout/alyahmor","last_synced_at":"2025-05-07T10:21:02.486Z","repository":{"id":56953941,"uuid":"169302376","full_name":"linuxscout/alyahmor","owner":"linuxscout","description":"Arabic flexionnal morphology generator","archived":false,"fork":false,"pushed_at":"2024-08-28T16:52:23.000Z","size":580,"stargazers_count":32,"open_issues_count":6,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-27T20:38:14.312Z","etag":null,"topics":["arabic-nlp","generation","morphology"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linuxscout.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":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-05T19:50:29.000Z","updated_at":"2025-03-17T03:06:12.000Z","dependencies_parsed_at":"2024-06-21T14:23:33.188Z","dependency_job_id":"7a908eb8-278d-402d-bbf7-4f41a090f89e","html_url":"https://github.com/linuxscout/alyahmor","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"89b66710cee9d4d2318e703010a4fb5c9162df76"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxscout%2Falyahmor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxscout%2Falyahmor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxscout%2Falyahmor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linuxscout%2Falyahmor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linuxscout","download_url":"https://codeload.github.com/linuxscout/alyahmor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252856824,"owners_count":21814904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["arabic-nlp","generation","morphology"],"created_at":"2024-10-25T14:54:49.772Z","updated_at":"2025-05-07T10:21:02.459Z","avatar_url":"https://github.com/linuxscout.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Alyahmor اليحمور\nArabic flexionnal morphology generator\n\n![Alyahmor](doc/alyahmor.png)\n\n## Description\n\nThe Alyahmor produce a word form from (prefix, lemma, suffix).\nIt has many functionalities:\n- Generate word forms from given word and affixes\n- Generate all word forms by adding verbal or nominal affixes according to word type\n- Generate all affixes combination for verbs or nouns which can be used in morphology analysis.\n\n مكتبة اليحمور يُولّد أشكال الكلمات من (الأصل، والسوابق واللواحق). ويخدم وظائف مثل:\n - إنشاء أشكال الكلمات من الكلمة والزوائد المعطاة \n-  توليد أشكال الكلمات بزيادة اللواحق الاسمية أو الفعلية وفقًا لنوع الكلمة \n- توليد قوائم اللواحق للأفعال أو الأسماء لاستخدامها في التحليل الصرفي\n\n\n\n#### Developpers: \n Taha Zerrouki: http://tahadz.com\n    taha dot zerrouki at gmail dot com\n\nFeatures |   value\n---------|---------------------------------------------------------------------------------\nAuthors  | [Authors.md](https://github.com/linuxscout/alyahmor/master/AUTHORS.md)\nRelease  | 0.2 \nLicense  |[GPL](https://github.com/linuxscout/alyahmor/master/LICENSE)\nTracker  |[linuxscout/alyahmor/Issues](https://github.com/linuxscout/alyahmor/issues)\nAccounts  |[@Twitter](https://twitter.com/linuxscout) \n\u003c!-- Website  |[https://pypi.python.org/pypi/alyahmor](https://pypi.python.org/pypi/alyahmor)--\u003e\n\u003c!--Doc  |[package Documentaion](http://pythonhosted.org/alyahmor/)\nSource  |[Github](http://github.com/linuxscout/alyahmor)--\u003e\n\u003c!--Download  |[sourceforge](http://alyahmor.sourceforge.net)--\u003e\n\u003c!-- Feedbacks  |[Comments](http://tahadz.com/alyahmor/contact) --\u003e\n\n\n\n\n## Citation\nIf you would cite it in academic work, can you use this citation\n```\nT. Zerrouki‏, Alyahmor, Arabic mophological  generator Library for python.,  https://pypi.python.org/pypi/alyahmor/, 2019\n```\nor in bibtex format\n```bibtex\n@misc{zerrouki2019alyahmor,\n  title={alyahmor, Arabic mophological generator Library for python.},\n  author={Zerrouki, Taha},\n  url={https://pypi.python.org/pypi/alyahmor},\n  year={2019}\n}\n```\n## Applications\n* Text Stemming\n* Morphology analysis \n* Text Classification and categorization\n* Spellchecking\n\n\n## Features  مزايا\n - Arabic word Light Stemming.\n* Features:\n    - Generate word forms from given word and affixes\n    - Generate all word forms by adding verbal or nominal affixes according to word type\n    - Generate all affixes combination for verbs or nouns which can be used in morphology analysis.\n    - Generate Stopwords forms \n\n\n\n\n\n## Installation\n```\npip install alyahmor\n```\n### Requirements\n``` \npip install -r requirements.txt \n```\n - libQutrub: Qutrub verb conjugation library: http://pypi.pyton/LibQutrub\n - PyArabic: Arabic language tools library   : http://pypi.pyton/pyarabic\n - Arramooz-pysqlite : Arabic dictionary\n\n\n## أصل التسمية\n\n**اليَحْمُور،** وهو الحسن بن المعالي الباقلاني أبو علي النحوي الحلي  شيخ العربية في زمانه في بغداد من تلامذة أبي البقاء العكبري ت ٦٣٧هـ\n\nوكتب بخطه كثيراً من الأدب واللغة وسائر الفنون، وكان له همةٌ عالية، وحرصٌ شديد؛ وتحصيل الفوائد مع علو سنه، وضعف بصره، وكثرة محفوظه، وصدقه، وثقته، وتواضعه، وكرم أخلاقه.\n\nوانتقل آخر عمره إلى مذهب الشافعي، **وانتهت إليه رياسة النحو.** مولده سنة ثمان وستين وخمسمائة، وتوفي سنة سبع وثلاثين وستمائة.\n[المزيد عن اليحمور ](doc/alyahmor.md)\n\nUsage\n=====\n\n\n\n\n## Example \n\n\n\n\n### Generate words forms\n\nIt joins word with affixes with suitable correction\nfor example\n\nبال+كتاب +ين =\u003e بالكتابين\nب+أبناء+ه =\u003e بأبنائه\n\n#### Nouns\nTo generate all forms of the word كتاب as noun use \n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"كِتِاب\"\n\u003e\u003e\u003e noun_forms = generator.generate_forms( word, word_type=\"noun\")\n\u003e\u003e\u003enoun_forms\n[u'آلْكِتَاب', u'آلْكِتَابا', u'آلْكِتَابات', u'آلْكِتَابان', u'آلْكِتَابة', u'آلْكِتَابتان', u'آلْكِتَابتين', u'آلْكِتَابون', u'آلْكِتَابي', u'آلْكِتَابيات'\n....]\n\n```\n#### Verbs\nTo generate all forms of the word كتاب as verb, use \n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"استعمل\"\n\u003e\u003e\u003e verb_forms = generator.generate_forms( word, word_type=\"verb\")\n\u003e\u003e\u003everb_forms\n[u'أَأَسْتَعْمِلَ', u'أَأَسْتَعْمِلَكَ', u'أَأَسْتَعْمِلَكُمَا', u'أَأَسْتَعْمِلَكُمْ', u'أَأَسْتَعْمِلَكُنَّ', u'أَأَسْتَعْمِلَنَا', u'أَأَسْتَعْمِلَنِي', u'أَأَسْتَعْمِلَنَّ', u'أَأَسْتَعْمِلَنَّكَ', u'أَأَسْتَعْمِلَنَّكُمَا', \n\n....]\n```\n\n### Stop words\nTo generate all forms of the word إلى as stopword, use\n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = \"إلى\"\n\u003e\u003e\u003e stop_forms = generator.generate_forms( word, word_type=\"stopword\")\n\u003e\u003e\u003e stop_forms\n['أَإِلَى', 'أَإِلَييّ', 'أَإِلَيْكَ', 'أَإِلَيْكُمَا', 'أَإِلَيْكُمْ', 'أَإِلَيْكُنَّ', 'أَإِلَيْكِ', 'أَإِلَيْنَا',\n....]\n```\n#### Generate non vocalized forms\nTo generate all forms of the word كتاب as noun without vocalization  use \n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"كِتِاب\"\n\u003e\u003e\u003e noun_forms = generator.generate_forms( word, word_type=\"noun\", vocalized=False)\n\u003e\u003e\u003enoun_forms\n[u'آلكتاب', u'آلكتابا', u'آلكتابات', u'آلكتابان', u'آلكتابة', u'آلكتابتان', u'آلكتابتين', u'آلكتابون', u'آلكتابي', u'آلكتابيات',\n....]\n\n```\n#### Generate a dictionary of  vocalized forms indexed by unvocalized form\nTo generate all forms of the word كتاب as noun as a dict of grouped all vocalized forms by unvocalized form  use \n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"كِتِاب\"\n\u003e\u003e\u003e noun_forms = generator.generate_forms( word, word_type=\"noun\", indexed=True)\n\u003e\u003e\u003enoun_forms\n{u'أككتابة': [u'أكَكِتَِابَةِ', u'أكَكِتَِابَةٍ'],\n u'أوككتابة': [u'أَوَكَكِتَِابَةِ', u'أَوَكَكِتَِابَةٍ'],\n u'وكتابياتهم': [u'وَكِتَِابياتهِمْ', u'وَكِتَِابِيَاتُهُمْ', u'وَكِتَِابِيَاتِهِمْ', u'وَكِتَِابِيَاتُهِمْ', u'وَكِتَِابياتهُمْ'],\n u'وكتابياتهن': [u'وَكِتَِابياتهِنَّ', u'وَكِتَِابياتهُنَّ', u'وَكِتَِابِيَاتِهِنَّ', u'وَكِتَِابِيَاتُهِنَّ', u'وَكِتَِابِيَاتُهُنَّ'],\n u'وللكتابات': [u'وَلِلْكِتَِابَاتِ', u'وَلِلْكِتَِابات'],\n u'أبكتابتكن': [u'أَبِكِتَِابَتِكُنَّ'],\n u'أبكتابتكم': [u'أَبِكِتَِابَتِكُمْ'],\n u'أكتابياتهن': [u'أَكِتَِابياتهِنَّ', u'أَكِتَِابِيَاتِهِنَّ', u'أَكِتَِابياتهُنَّ', u'أَكِتَِابِيَاتُهُنَّ', u'أَكِتَِابِيَاتُهِنَّ'],\n u'فكتاباتهم': [u'فَكِتَِاباتهِمْ', u'فَكِتَِابَاتُهُمْ', u'فَكِتَِابَاتُهِمْ', u'فَكِتَِاباتهُمْ', u'فَكِتَِابَاتِهِمْ'],\n u'بكتابياتكن': [u'بِكِتَِابِيَاتِكُنَّ', u'بِكِتَِابياتكُنَّ'],\n....\n}\n\n```\n\n### Generate detailled forms\nThe detailled  form contains\n* vocalized word form, example: \"ِكِتَابَاتُنَا\"\n* semi-vocalized: the word without case mark (دون علامة الإعراب),  example: \"ِكِتَابَاتنَا\"\n* segmented form: the affix parts and the word like : procletic-prefix-word-suffix-proclitic, for example : و--كتاب-ات-نا\n* Tags : عطف:جمع مؤنث سالم:ضمير متصل\n\n``` python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"كِتِاب\"\nnoun_forms = generator.generate_forms( word, word_type=\"noun\", indexed=True, details=True)\n\u003e\u003e\u003e noun_forms\n  [{'vocolized': 'استعمل', 'semi-vocalized': 'استعمل', 'segmented': '-استعمل--', 'tags': '::'}, \n  {'vocolized': 'استعملي', 'semi-vocalized': 'استعملي', 'segmented': '-استعمل--ي', 'tags': ':مضاف:'},\n  {'vocolized': 'استعملِي', 'semi-vocalized': 'استعملِي', 'segmented': '-استعمل--ي', 'tags': ':مضاف:'},\n  {'vocolized': 'استعملكِ', 'semi-vocalized': 'استعملكِ', 'segmented': '-استعمل--ك', 'tags': ':مضاف:'}, \n  {'vocolized': 'استعملكَ', 'semi-vocalized': 'استعملكَ', 'segmented': '-استعمل--ك', 'tags': ':مضاف:'},\n   {'vocolized': 'استعملكِ', 'semi-vocalized': 'استعملكِ', 'segmented': '-استعمل--ك', 'tags': ':مضاف:'}, \n   {'vocolized': 'استعملكُمُ', 'semi-vocalized': 'استعملكُمُ', 'segmented': '-استعمل--كم', 'tags': ':مضاف:'}, \n   ....]\n```\n### Generate affixes lists\nAlyahmor generate affixes listes for verbs and nouns\n```python\n\u003e\u003e\u003e verb_affix =generator.generate_affix_list(word_type=\"verb\", vocalized=True)\n\u003e\u003e\u003everb_affix\n[u'أَفَسَت-يننِي', u'أَ-ونَا', u'ي-ونكَ', u'فَلَ-تاكَ', u'وَلََن-هُنَّ', u'أَت-وننَا', u'وَ-اكُنَّ', u'ن-ننَا', u'وَت-وهَا', u'أَي-نهُمَا', ....]\n\n\u003e\u003e\u003e noun_affix =generator.generate_affix_list(word_type=\"noun\", vocalized=True)\n\u003e\u003e\u003e noun_affix\n[u'أكَ-ياتكَ', u'فَ-ِيَاتِكُمَا', u'أكَ-ياتكِ', u'أَوَكَ-ِينَا', u'أَلِ-ِيِّهِنَّ', u'أَفَ-َكُمَا', u'أَفَ-ِيَّتِهِمْ', u'أَفَكَ-ياتهُمْ', u'فَبِ-ِيِّكُمْ', u'وَلِ-ِيَّتِهَا', ....]\n\n```\n\nGenerate Unvocalized affixes \n```python\n\u003e\u003e\u003e noun_affix =generator.generate_affix_list(word_type=\"noun\", vocalized=False)\n\u003e\u003e\u003e noun_affix\n[u'-', u'-ا', u'-ات', u'-اتك', u'-اتكم', u'-اتكما', u'-اتكن', u'-اتنا', u'-اته', u'-اتها', ...]\n\n```\n\n### Generate word forms by affixes\nAlyahmor generate word forms for given affixes\n\n\n\n*  the affix parameter is a list which contains  four elements as\n  * procletic\n  * prefix\n  * suffix\n  * enclitic\n\n```python\n\u003e\u003e\u003e import alyahmor.genelex\n\u003e\u003e\u003e generator = alyahmor.genelex.genelex()\n\u003e\u003e\u003e word = u\"كِتِاب\"\n\u003e\u003e\u003e generator.generate_by_affixes( word, word_type=\"noun\", affixes = [u\"بال\", u\"\", u\"ين\", u\"\"])\n['بِالْكِتَِابين']\n\u003e\u003e\u003e generator.generate_by_affixes( word, word_type=\"noun\", affixes = [u\"وك\", u\"\", u\"ِ\", u\"\"])\n['وَكَكِتَِابِ']\n\u003e\u003e\u003e generator.generate_by_affixes( word, word_type=\"noun\", affixes = [u\"و\", u\"\", u\"\", u\"\"])\n['وَكِتَِاب']\n \n```\n\n### Files\n\n* file/directory    category    description \n\ntests/samples/dataset.csv   A list of verified affixes\n\n## Featured Posts\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxscout%2Falyahmor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinuxscout%2Falyahmor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxscout%2Falyahmor/lists"}