spaCy/spacy/lang/fa/lemmatizer/_verbs_exc.py
Ines Montani eddeb36c96
💫 Tidy up and auto-format .py files (#2983)
<!--- Provide a general summary of your changes in the title. -->

## Description
- [x] Use [`black`](https://github.com/ambv/black) to auto-format all `.py` files.
- [x] Update flake8 config to exclude very large files (lemmatization tables etc.)
- [x] Update code to be compatible with flake8 rules
- [x] Fix various small bugs, inconsistencies and messy stuff in the language data
- [x] Update docs to explain new code style (`black`, `flake8`, when to use `# fmt: off` and `# fmt: on` and what `# noqa` means)

Once #2932 is merged, which auto-formats and tidies up the CLI, we'll be able to run `flake8 spacy` actually get meaningful results.

At the moment, the code style and linting isn't applied automatically, but I'm hoping that the new [GitHub Actions](https://github.com/features/actions) will let us auto-format pull requests and post comments with relevant linting information.

### Types of change
enhancement, code style

## Checklist
<!--- Before you submit the PR, go over this checklist and make sure you can
tick off all the boxes. [] -> [x] -->
- [x] I have submitted the spaCy Contributor Agreement.
- [x] I ran the tests, and all new and existing tests passed.
- [x] My changes don't require a change to the documentation, or if they do, I've added all required information.
2018-11-30 17:03:03 +01:00

654 lines
14 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding: utf8
from __future__ import unicode_literals
verb_roots = """
#هست
آخت#آهنج
آراست#آرا
آراماند#آرامان
آرامید#آرام
آرمید#آرام
آزرد#آزار
آزمود#آزما
آسود#آسا
آشامید#آشام
آشفت#آشوب
آشوبید#آشوب
آغازید#آغاز
آغشت#آمیز
آفرید#آفرین
آلود#آلا
آمد#آ
آمرزید#آمرز
آموخت#آموز
آموزاند#آموزان
آمیخت#آمیز
آورد#آر
آورد#آور
آویخت#آویز
آکند#آکن
آگاهانید#آگاهان
ارزید#ارز
افتاد#افت
افراخت#افراز
افراشت#افراز
افروخت#افروز
افروزید#افروز
افزود#افزا
افسرد#افسر
افشاند#افشان
افکند#افکن
افگند#افگن
انباشت#انبار
انجامید#انجام
انداخت#انداز
اندوخت#اندوز
اندود#اندا
اندیشید#اندیش
انگاشت#انگار
انگیخت#انگیز
انگیزاند#انگیزان
ایستاد#ایست
ایستاند#ایستان
باخت#باز
باراند#باران
بارگذاشت#بارگذار
بارید#بار
باز#بازخواه
بازآفرید#بازآفرین
بازآمد#بازآ
بازآموخت#بازآموز
بازآورد#بازآور
بازایستاد#بازایست
بازتابید#بازتاب
بازجست#بازجو
بازخواند#بازخوان
بازخوراند#بازخوران
بازداد#بازده
بازداشت#بازدار
بازرساند#بازرسان
بازرسانید#بازرسان
باززد#باززن
بازستاند#بازستان
بازشمارد#بازشمار
بازشمرد#بازشمار
بازشمرد#بازشمر
بازشناخت#بازشناس
بازشناساند#بازشناسان
بازفرستاد#بازفرست
بازماند#بازمان
بازنشست#بازنشین
بازنمایاند#بازنمایان
بازنهاد#بازنه
بازنگریست#بازنگر
بازپرسید#بازپرس
بازگذارد#بازگذار
بازگذاشت#بازگذار
بازگرداند#بازگردان
بازگردانید#بازگردان
بازگردید#بازگرد
بازگرفت#بازگیر
بازگشت#بازگرد
بازگشود#بازگشا
بازگفت#بازگو
بازیافت#بازیاب
بافت#باف
بالید#بال
باوراند#باوران
بایست#باید
بخشود#بخش
بخشود#بخشا
بخشید#بخش
بر#برخواه
برآشفت#برآشوب
برآمد#برآ
برآورد#برآور
برازید#براز
برافتاد#برافت
برافراخت#برافراز
برافراشت#برافراز
برافروخت#برافروز
برافشاند#برافشان
برافکند#برافکن
براند#بران
برانداخت#برانداز
برانگیخت#برانگیز
بربست#بربند
برتاباند#برتابان
برتابید#برتاب
برتافت#برتاب
برتنید#برتن
برجهید#برجه
برخاست#برخیز
برخورد#برخور
برد#بر
برداشت#بردار
بردمید#بردم
برزد#برزن
برشد#برشو
برشمارد#برشمار
برشمرد#برشمار
برشمرد#برشمر
برنشاند#برنشان
برنشانید#برنشان
برنشست#برنشین
برنهاد#برنه
برچید#برچین
برکرد#برکن
برکشید#برکش
برکند#برکن
برگذشت#برگذر
برگرداند#برگردان
برگردانید#برگردان
برگردید#برگرد
برگرفت#برگیر
برگزید#برگزین
برگشت#برگرد
برگشود#برگشا
برگمارد#برگمار
برگمارید#برگمار
برگماشت#برگمار
برید#بر
بست#بند
بلعید#بلع
بود#باش
بوسید#بوس
بویید#بو
بیخت#بیز
بیخت#بوز
تاباند#تابان
تابید#تاب
تاخت#تاز
تاراند#تاران
تازاند#تازان
تازید#تاز
تافت#تاب
ترادیسید#ترادیس
تراشاند#تراشان
تراشید#تراش
تراوید#تراو
ترساند#ترسان
ترسید#ترس
ترشاند#ترشان
ترشید#ترش
ترکاند#ترکان
ترکید#ترک
تفتید#تفت
تمرگید#تمرگ
تنید#تن
توانست#توان
توفید#توف
تپاند#تپان
تپید#تپ
تکاند#تکان
تکانید#تکان
جست#جه
جست#جو
جنباند#جنبان
جنبید#جنب
جنگید#جنگ
جهاند#جهان
جهید#جه
جوشاند#جوشان
جوشانید#جوشان
جوشید#جوش
جويد#جو
جوید#جو
خاراند#خاران
خارید#خار
خاست#خیز
خایید#خا
خراشاند#خراشان
خراشید#خراش
خرامید#خرام
خروشید#خروش
خرید#خر
خزید#خز
خسبید#خسب
خشکاند#خشکان
خشکید#خشک
خفت#خواب
خلید#خل
خماند#خمان
خمید#خم
خنداند#خندان
خندانید#خندان
خندید#خند
خواباند#خوابان
خوابانید#خوابان
خوابید#خواب
خواست#خواه
خواست#خیز
خواند#خوان
خوراند#خوران
خورد#خور
خیزاند#خیزان
خیساند#خیسان
داد#ده
داشت#دار
دانست#دان
در#درخواه
درآمد#درآ
درآمیخت#درآمیز
درآورد#درآور
درآویخت#درآویز
درافتاد#درافت
درافکند#درافکن
درانداخت#درانداز
درانید#دران
دربرد#دربر
دربرگرفت#دربرگیر
درخشاند#درخشان
درخشانید#درخشان
درخشید#درخش
درداد#درده
دررفت#دررو
درماند#درمان
درنمود#درنما
درنوردید#درنورد
درود#درو
دروید#درو
درکرد#درکن
درکشید#درکش
درگذشت#درگذر
درگرفت#درگیر
دریافت#دریاب
درید#در
دزدید#دزد
دمید#دم
دواند#دوان
دوخت#دوز
دوشید#دوش
دوید#دو
دید#بین
راند#ران
ربود#ربا
ربود#روب
رخشید#رخش
رساند#رسان
رسانید#رسان
رست#ره
رست#رو
رسید#رس
رشت#ریس
رفت#رو
رفت#روب
رقصاند#رقصان
رقصید#رقص
رماند#رمان
رمانید#رمان
رمید#رم
رنجاند#رنجان
رنجانید#رنجان
رنجید#رنج
رندید#رند
رهاند#رهان
رهانید#رهان
رهید#ره
روبید#روب
روفت#روب
رویاند#رویان
رویانید#رویان
رویید#رو
رویید#روی
ریخت#ریز
رید#رین
ریدن#رین
ریسید#ریس
زاد#زا
زارید#زار
زایاند#زایان
زایید#زا
زد#زن
زدود#زدا
زیست#زی
ساباند#سابان
سابید#ساب
ساخت#ساز
سایید#سا
ستاد#ستان
ستاند#ستان
سترد#ستر
ستود#ستا
ستیزید#ستیز
سراند#سران
سرایید#سرا
سرشت#سرش
سرود#سرا
سرکشید#سرکش
سرگرفت#سرگیر
سرید#سر
سزید#سز
سفت#سنب
سنجید#سنج
سوخت#سوز
سود#سا
سوزاند#سوزان
سپارد#سپار
سپرد#سپار
سپرد#سپر
سپوخت#سپوز
سگالید#سگال
شاشید#شاش
شایست#
شایست#شاید
شتاباند#شتابان
شتابید#شتاب
شتافت#شتاب
شد#شو
شست#شو
شست#شوی
شلید#شل
شمار#شمر
شمارد#شمار
شمرد#شمار
شمرد#شمر
شناخت#شناس
شناساند#شناسان
شنفت#شنو
شنید#شنو
شوتید#شوت
شوراند#شوران
شورید#شور
شکافت#شکاف
شکاند#شکان
شکاند#شکن
شکست#شکن
شکفت#شکف
طلبید#طلب
طپید#طپ
غراند#غران
غرید#غر
غلتاند#غلتان
غلتانید#غلتان
غلتید#غلت
غلطاند#غلطان
غلطانید#غلطان
غلطید#غلط
فرا#فراخواه
فراخواند#فراخوان
فراداشت#فرادار
فرارسید#فرارس
فرانمود#فرانما
فراگرفت#فراگیر
فرستاد#فرست
فرسود#فرسا
فرمود#فرما
فرهیخت#فرهیز
فرو#فروخواه
فروآمد#فروآ
فروآورد#فروآور
فروافتاد#فروافت
فروافکند#فروافکن
فروبرد#فروبر
فروبست#فروبند
فروخت#فروش
فروخفت#فروخواب
فروخورد#فروخور
فروداد#فروده
فرودوخت#فرودوز
فرورفت#فرورو
فروریخت#فروریز
فروشکست#فروشکن
فروفرستاد#فروفرست
فروماند#فرومان
فرونشاند#فرونشان
فرونشانید#فرونشان
فرونشست#فرونشین
فرونمود#فرونما
فرونهاد#فرونه
فروپاشاند#فروپاشان
فروپاشید#فروپاش
فروچکید#فروچک
فروکرد#فروکن
فروکشید#فروکش
فروکوبید#فروکوب
فروکوفت#فروکوب
فروگذارد#فروگذار
فروگذاشت#فروگذار
فروگرفت#فروگیر
فریفت#فریب
فشاند#فشان
فشرد#فشار
فشرد#فشر
فلسفید#فلسف
فهماند#فهمان
فهمید#فهم
قاپید#قاپ
قبولاند#قبول
قبولاند#قبولان
لاسید#لاس
لرزاند#لرزان
لرزید#لرز
لغزاند#لغزان
لغزید#لغز
لمباند#لمبان
لمید#لم
لنگید#لنگ
لولید#لول
لیسید#لیس
ماسید#ماس
مالاند#مالان
مالید#مال
ماند#مان
مانست#مان
مرد#میر
مویید#مو
مکید#مک
نازید#ناز
نالاند#نالان
نالید#نال
نامید#نام
نشاند#نشان
نشست#نشین
نمایاند#نما
نمایاند#نمایان
نمود#نما
نهاد#نه
نهفت#نهنب
نواخت#نواز
نوازید#نواز
نوردید#نورد
نوشاند#نوشان
نوشانید#نوشان
نوشت#نویس
نوشید#نوش
نکوهید#نکوه
نگاشت#نگار
نگرید#
نگریست#نگر
هراساند#هراسان
هراسانید#هراسان
هراسید#هراس
هشت#هل
وا#واخواه
واداشت#وادار
وارفت#وارو
وارهاند#وارهان
واماند#وامان
وانهاد#وانه
واکرد#واکن
واگذارد#واگذار
واگذاشت#واگذار
ور#ورخواه
ورآمد#ورآ
ورافتاد#ورافت
وررفت#وررو
ورزید#ورز
وزاند#وزان
وزید#وز
ویراست#ویرا
پاشاند#پاشان
پاشید#پاش
پالود#پالا
پایید#پا
پخت#پز
پذیراند#پذیران
پذیرفت#پذیر
پراند#پران
پراکند#پراکن
پرداخت#پرداز
پرستید#پرست
پرسید#پرس
پرهیخت#پرهیز
پرهیزید#پرهیز
پروراند#پروران
پرورد#پرور
پرید#پر
پسندید#پسند
پلاساند#پلاسان
پلاسید#پلاس
پلکید#پلک
پناهاند#پناهان
پناهید#پناه
پنداشت#پندار
پوساند#پوسان
پوسید#پوس
پوشاند#پوشان
پوشید#پوش
پویید#پو
پژمرد#پژمر
پژوهید#پژوه
پکید#پک
پیراست#پیرا
پیمود#پیما
پیوست#پیوند
پیچاند#پیچان
پیچانید#پیچان
پیچید#پیچ
چاپید#چاپ
چایید#چا
چراند#چران
چرانید#چران
چرباند#چربان
چربید#چرب
چرخاند#چرخان
چرخانید#چرخان
چرخید#چرخ
چروکید#چروک
چرید#چر
چزاند#چزان
چسباند#چسبان
چسبید#چسب
چسید#چس
چشاند#چشان
چشید#چش
چلاند#چلان
چلانید#چلان
چپاند#چپان
چپید#چپ
چکاند#چکان
چکید#چک
چید#چین
کاست#کاه
کاشت#کار
کاوید#کاو
کرد#کن
کشاند#کشان
کشانید#کشان
کشت#کار
کشت#کش
کشید#کش
کند#کن
کوباند#کوبان
کوبید#کوب
کوشید#کوش
کوفت#کوب
کوچانید#کوچان
کوچید#کوچ
گایید#گا
گداخت#گداز
گذارد#گذار
گذاشت#گذار
گذراند#گذران
گذشت#گذر
گرازید#گراز
گرانید#گران
گرایید#گرا
گرداند#گردان
گردانید#گردان
گردید#گرد
گرفت#گیر
گروید#گرو
گریاند#گریان
گریخت#گریز
گریزاند#گریزان
گریست#گر
گریست#گری
گزارد#گزار
گزاشت#گزار
گزید#گزین
گسارد#گسار
گستراند#گستران
گسترانید#گستران
گسترد#گستر
گسست#گسل
گسلاند#گسل
گسیخت#گسل
گشاد#گشا
گشت#گرد
گشود#گشا
گفت#گو
گمارد#گمار
گماشت#گمار
گنجاند#گنجان
گنجانید#گنجان
گنجید#گنج
گنداند#گندان
گندید#گند
گوارید#گوار
گوزید#گوز
گیراند#گیران
یازید#یاز
یافت#یاب
یونید#یون
""".strip().split()
# Below code is a modified version of HAZM package's verb conjugator,
# with soem extra verbs (Anything in hazm and not in here? compare needed!)
VERBS_EXC = {}
with_nots = lambda items: items + ["ن" + item for item in items]
simple_ends = ["م", "ی", "", "یم", "ید", "ند"]
narrative_ends = ["ه‌ام", "ه‌ای", "ه", "ه‌ایم", "ه‌اید", "ه‌اند"]
present_ends = ["م", "ی", "د", "یم", "ید", "ند"]
# special case of '#هست':
VERBS_EXC.update({conj: "هست" for conj in ["هست" + end for end in simple_ends]})
VERBS_EXC.update({conj: "هست" for conj in ["نیست" + end for end in simple_ends]})
for verb_root in verb_roots:
conjugations = []
if "#" not in verb_root:
continue
past, present = verb_root.split("#")
if past:
past_simples = [past + end for end in simple_ends]
past_imperfects = ["می‌" + item for item in past_simples]
past_narratives = [past + end for end in narrative_ends]
conjugations = with_nots(past_simples + past_imperfects + past_narratives)
if present:
imperatives = ["ب" + present, "ن" + present]
if present.endswith("ا") or present in ("آ", "گو"):
present = present + "ی"
present_simples = [present + end for end in present_ends]
present_imperfects = ["می‌" + present + end for end in present_ends]
present_subjunctives = ["ب" + present + end for end in present_ends]
conjugations += (
with_nots(present_simples + present_imperfects)
+ present_subjunctives
+ imperatives
)
if past.startswith("آ"):
conjugations = set(
map(
lambda item: item.replace("بآ", "بیا").replace("نآ", "نیا"),
conjugations,
)
)
VERBS_EXC.update({conj: (past,) if past else present for conj in conjugations})