Add Persian(Farsi) language support (#2797)

This commit is contained in:
JKhakpour 2018-10-13 17:01:49 +03:30 committed by Matthew Honnibal
parent b76fe08308
commit 74a30d883c
16 changed files with 15402 additions and 107 deletions

106
.github/contributors/JKhakpour.md vendored Normal file
View File

@ -0,0 +1,106 @@
# spaCy contributor agreement
This spaCy Contributor Agreement (**"SCA"**) is based on the
[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf).
The SCA applies to any contribution that you make to any product or project
managed by us (the **"project"**), and sets out the intellectual property rights
you grant to us in the contributed materials. The term **"us"** shall mean
[ExplosionAI UG (haftungsbeschränkt)](https://explosion.ai/legal). The term
**"you"** shall mean the person or entity identified below.
If you agree to be bound by these terms, fill in the information requested
below and include the filled-in version with your first pull request, under the
folder [`.github/contributors/`](/.github/contributors/). The name of the file
should be your GitHub username, with the extension `.md`. For example, the user
example_user would create the file `.github/contributors/example_user.md`.
Read this agreement carefully before signing. These terms and conditions
constitute a binding legal agreement.
## Contributor Agreement
1. The term "contribution" or "contributed materials" means any source code,
object code, patch, tool, sample, graphic, specification, manual,
documentation, or any other material posted or submitted by you to the project.
2. With respect to any worldwide copyrights, or copyright applications and
registrations, in your contribution:
* you hereby assign to us joint ownership, and to the extent that such
assignment is or becomes invalid, ineffective or unenforceable, you hereby
grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge,
royalty-free, unrestricted license to exercise all rights under those
copyrights. This includes, at our option, the right to sublicense these same
rights to third parties through multiple levels of sublicensees or other
licensing arrangements;
* you agree that each of us can do all things in relation to your
contribution as if each of us were the sole owners, and if one of us makes
a derivative work of your contribution, the one who makes the derivative
work (or has it made will be the sole owner of that derivative work;
* you agree that you will not assert any moral rights in your contribution
against us, our licensees or transferees;
* you agree that we may register a copyright in your contribution and
exercise all ownership rights associated with it; and
* you agree that neither of us has any duty to consult with, obtain the
consent of, pay or render an accounting to the other for any use or
distribution of your contribution.
3. With respect to any patents you own, or that you can license without payment
to any third party, you hereby grant to us a perpetual, irrevocable,
non-exclusive, worldwide, no-charge, royalty-free license to:
* make, have made, use, sell, offer to sell, import, and otherwise transfer
your contribution in whole or in part, alone or in combination with or
included in any product, work or materials arising out of the project to
which your contribution was submitted, and
* at our option, to sublicense these same rights to third parties through
multiple levels of sublicensees or other licensing arrangements.
4. Except as set out above, you keep all right, title, and interest in your
contribution. The rights that you grant to us under these terms are effective
on the date you first submitted a contribution to us, even if your submission
took place before the date you sign these terms.
5. You covenant, represent, warrant and agree that:
* Each contribution that you submit is and shall be an original work of
authorship and you can legally grant the rights set out in this SCA;
* to the best of your knowledge, each contribution will not violate any
third party's copyrights, trademarks, patents, or other intellectual
property rights; and
* each contribution shall be in compliance with U.S. export control laws and
other applicable export and import laws. You agree to notify us if you
become aware of any circumstance which would make any of the foregoing
representations inaccurate in any respect. We may publicly disclose your
participation in the project, including the fact that you have signed the SCA.
6. This SCA is governed by the laws of the State of California and applicable
U.S. Federal law. Any choice of law rules will not apply.
7. Please place an “x” on one of the applicable statement below. Please do NOT
mark both statements:
* [ ] I am signing on behalf of myself as an individual and no other person
or entity, including my employer, has or will have rights with respect to my
contributions.
* [ ] I am signing on behalf of my employer or a legal entity and I have the
actual authority to contractually bind that entity.
## Contributor Details
| Field | Entry |
|------------------------------- | -------------------- |
| Name | Ja'far Khakpour |
| Company name (if applicable) | |
| Title or role (if applicable) | |
| Date | 2018-09-24 |
| GitHub username | JKhakpour |
| Website (optional) | |

View File

@ -1,21 +1,29 @@
# coding: utf8
from __future__ import unicode_literals
from .stop_words import STOP_WORDS
from ..tokenizer_exceptions import BASE_EXCEPTIONS
from ..norm_exceptions import BASE_NORMS
from ...language import Language
from ...attrs import LANG, NORM
from ...util import update_exc, add_lookups
from ..norm_exceptions import BASE_NORMS
from .stop_words import STOP_WORDS
from .lex_attrs import LEX_ATTRS
from .tokenizer_exceptions import TOKENIZER_EXCEPTIONS
from .tag_map import TAG_MAP
from .punctuation import TOKENIZER_SUFFIXES
from .lemmatizer import LEMMA_RULES, LEMMA_INDEX, LEMMA_EXC
class PersianDefaults(Language.Defaults):
lex_attr_getters = dict(Language.Defaults.lex_attr_getters)
lex_attr_getters[LANG] = lambda text: 'fa'
lex_attr_getters.update(LEX_ATTRS)
lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], BASE_NORMS)
tokenizer_exceptions = update_exc(BASE_EXCEPTIONS)
lex_attr_getters[LANG] = lambda text: 'fa'
tokenizer_exceptions = update_exc(TOKENIZER_EXCEPTIONS)
lemma_rules = LEMMA_RULES
lemma_index = LEMMA_INDEX
lemma_exc = LEMMA_EXC
stop_words = STOP_WORDS
tag_map = TAG_MAP
suffixes = TOKENIZER_SUFFIXES
class Persian(Language):

View File

@ -0,0 +1,32 @@
# coding: utf8
from __future__ import unicode_literals
from ._adjectives import ADJECTIVES
from ._adjectives_exc import ADJECTIVES_EXC
from ._nouns import NOUNS
from ._nouns_exc import NOUNS_EXC
from ._verbs import VERBS
from ._verbs_exc import VERBS_EXC
from ._lemma_rules import ADJECTIVE_RULES, NOUN_RULES, VERB_RULES, PUNCT_RULES
LEMMA_INDEX = {
'adj': ADJECTIVES,
'noun': NOUNS,
'verb': VERBS
}
LEMMA_RULES = {
'adj': ADJECTIVE_RULES,
'noun': NOUN_RULES,
'verb': VERB_RULES,
'punct': PUNCT_RULES
}
LEMMA_EXC = {
'adj': ADJECTIVES_EXC,
'noun': NOUNS_EXC,
'verb': VERBS_EXC
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,53 @@
# coding: utf8
from __future__ import unicode_literals
# Adjectives extracted from Mojgan Seraji's Persian Universal Dependencies Corpus
# Below adjectives are exceptions for current adjective lemmatization rules
ADJECTIVES_EXC = {
"بهترین": ("بهتر",),
"بهتر": ("بهتر",),
"سنگین": ("سنگین",),
"بیشترین": ("بیشتر",),
"برتر": ("برتر",),
"بدبین": ("بدبین",),
"متین": ("متین",),
"شیرین": ("شیرین",),
"معین": ("معین",),
"دلنشین": ("دلنشین",),
"امین": ("امین",),
"متدین": ("متدین",),
"تیزبین": ("تیزبین",),
"بنیادین": ("بنیادین",),
"دروغین": ("دروغین",),
"واپسین": ("واپسین",),
"خونین": ("خونین",),
"مزین": ("مزین",),
"خوشبین": ("خوشبین",),
"عطرآگین": ("عطرآگین",),
"زرین": ("زرین",),
"فرجامین": ("فرجامین",),
"فقیرنشین": ("فقیرنشین",),
"مستتر": ("مستتر",),
"چوبین": ("چوبین",),
"آغازین": ("آغازین",),
"سخن‌چین": ("سخن‌چین",),
"مرمرین": ("مرمرین",),
"زنده‌تر": ("زنده‌تر",),
"صفر‌کیلومتر": ("صفر‌کیلومتر",),
"غمگین": ("غمگین",),
"نازنین": ("نازنین",),
"مثبت": ("مثبت",),
"شرمگین": ("شرمگین",),
"قرین": ("قرین",),
"سوتر": ("سوتر",),
"بی‌زین": ("بی‌زین",),
"سیمین": ("سیمین",),
"رنگین": ("رنگین",),
"روشن‌بین": ("روشن‌بین",),
"اندوهگین": ("اندوهگین",),
"فی‌مابین": ("فی‌مابین",),
"لاجوردین": ("لاجوردین",),
"برنجین": ("برنجین",),
"مشکل‌آفرین": ("مشکل‌آفرین",),
"خبرچین": ("خبرچین",),
}

View File

@ -0,0 +1,64 @@
# coding: utf8
from __future__ import unicode_literals
ADJECTIVE_RULES = [
["ین", ""],
["\u200cترین", ""],
["ترین", ""],
["\u200cتر", ""],
["تر", ""],
["\u200cای", ""],
# ["ایی", "ا"],
# ["ویی", "و"],
# ["ی", ""],
# ["مند", ""],
# ["گین", ""],
# ["مین", ""],
# ["ناک", ""],
# ["سار", ""],
# ["\u200cوار", ""],
# ["وار", ""]
]
NOUN_RULES = [
['ایان', 'ا'],
['ویان', 'و'],
['ایانی', 'ا'],
['ویانی', 'و'],
['گان', 'ه'],
['گانی', 'ه'],
['گان', ''],
['گانی', ''],
['ان', ''],
['انی', ''],
['ات', ''],
['ات', 'ه'],
['ات', 'ت'],
['اتی', ''],
['اتی', 'ه'],
['اتی', 'ت'],
# ['ین', ''],
# ['ینی', ''],
# ['ون', ''],
# ['ونی', ''],
['\u200cها', ''],
['ها', ''],
['\u200cهای', ''],
['های', ''],
['\u200cهایی', ''],
['هایی', ''],
]
VERB_RULES = [
]
PUNCT_RULES = [
["", "\""],
["", "\""],
["\u2018", "'"],
["\u2019", "'"]
]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,781 @@
# coding: utf8
from __future__ import unicode_literals
NOUNS_EXC = {
"آثار": ("اثر",),
"آرا": ("رأی",),
"آراء": ("رأی",),
"آفات": ("آفت",),
"اباطیل": ("باطل",),
"ائمه": ("امام",),
"ابرار": ("بر",),
"ابعاد": ("بعد",),
"ابنیه": ("بنا",),
"ابواب": ("باب",),
"ابیات": ("بیت",),
"اجداد": ("جد",),
"اجساد": ("جسد",),
"اجناس": ("جنس",),
"اثمار": ("ثمر",),
"اجرام": ("جرم",),
"اجسام": ("جسم",),
"اجنه": ("جن",),
"احادیث": ("حدیث",),
"احجام": ("حجم",),
"احرار": ("حر",),
"احزاب": ("حزب",),
"احکام": ("حکم",),
"اخبار": ("خبر",),
"اخیار": ("خیر",),
"ادبا": ("ادیب",),
"ادعیه": ("دعا",),
"ادله": ("دلیل",),
"ادوار": ("دوره",),
"ادیان": ("دین",),
"اذهان": ("ذهن",),
"اذکار": ("ذکر",),
"اراضی": ("ارض",),
"ارزاق": ("رزق",),
"ارقام": ("رقم",),
"ارواح": ("روح",),
"ارکان": ("رکن",),
"ازمنه": ("زمان",),
"اساتید": ("استاد",),
"اساطیر": ("اسطوره",),
"اسامی": ("اسم",),
"اسرار": ("سر",),
"اسما": ("اسم",),
"اسناد": ("سند",),
"اسیله": ("سوال",),
"اشجار": ("شجره",),
"اشخاص": ("شخص",),
"اشرار": ("شر",),
"اشربه": ("شراب",),
"اشعار": ("شعر",),
"اشقیا": ("شقی",),
"اشیا": ("شی",),
"اشباح": ("شبح",),
"اصدقا": ("صدیق",),
"اصناف": ("صنف",),
"اصنام": ("صنم",),
"اصوات": ("صوت",),
"اصول": ("اصل",),
"اضداد": ("ضد",),
"اطبا": ("طبیب",),
"اطعمه": ("طعام",),
"اطفال": ("طفل",),
"الطاف": ("لطف",),
"اعدا": ("عدو",),
"اعزا": ("عزیز",),
"اعضا": ("عضو",),
"اعماق": ("عمق",),
"الفاظ": ("لفظ",),
"اعناب": ("عنب",),
"اغذیه": ("غذا",),
"اغراض": ("غرض",),
"افراد": ("فرد",),
"افعال": ("فعل",),
"افلاک": ("فلک",),
"افکار": ("فکر",),
"اقالیم": ("اقلیم",),
"اقربا": ("قریب",),
"اقسام": ("قسم",),
"اقشار": ("قشر",),
"اقفال": ("قفل",),
"اقلام": ("قلم",),
"اقوال": ("قول",),
"اقوام": ("قوم",),
"البسه": ("لباس",),
"الحام": ("لحم",),
"الحکام": ("الحاکم",),
"القاب": ("لقب",),
"الواح": ("لوح",),
"الکبار": ("الکبیر",),
"اماکن": ("مکان",),
"امثال": ("مثل",),
"امراض": ("مرض",),
"امم": ("امت",),
"امواج": ("موج",),
"اموال": ("مال",),
"امور": ("امر",),
"امیال": ("میل",),
"انبیا": ("نبی",),
"انجم": ("نجم",),
"انظار": ("نظر",),
"انفس": ("نفس",),
"انهار": ("نهر",),
"انواع": ("نوع",),
"اهالی": ("اهل",),
"اهداف": ("هدف",),
"اواخر": ("آخر",),
"اواسط": ("وسط",),
"اوایل": ("اول",),
"اوراد": ("ورد",),
"اوراق": ("ورق",),
"اوزان": ("وزن",),
"اوصاف": ("وصف",),
"اوضاع": ("وضع",),
"اوقات": ("وقت",),
"اولاد": ("ولد",),
"اولیا": ("ولی",),
"اولیاء": ("ولی",),
"اوهام": ("وهم",),
"اکاذیب": ("اکذوبه",),
"اکفان": ("کفن",),
"ایالات": ("ایالت",),
"ایام": ("یوم",),
"ایتام": ("یتیم",),
"بشایر": ("بشارت",),
"بصایر": ("بصیرت",),
"بطون": ("بطن",),
"بنادر": ("بندر",),
"بیوت": ("بیت",),
"تجار": ("تاجر",),
"تجارب": ("تجربه",),
"تدابیر": ("تدبیر",),
"تعاریف": ("تعریف",),
"تلامیذ": ("تلمیذ",),
"تهم": ("تهمت",),
"توابیت": ("تابوت",),
"تواریخ": ("تاریخ",),
"جبال": ("جبل",),
"جداول": ("جدول",),
"جدود": ("جد",),
"جراثیم": ("جرثوم",),
"جرایم": ("جرم",),
"جرائم": ("جرم",),
"جزئیات": ("جزء",),
"جزایر": ("جزیره",),
"جزییات": ("جزء",),
"جنایات": ("جنایت",),
"جهات": ("جهت",),
"جوامع": ("جامعه",),
"حدود": ("حد",),
"حروف": ("حرف",),
"حقایق": ("حقیقت",),
"حقوق": ("حق",),
"حوادث": ("حادثه",),
"حواشی": ("حاشیه",),
"حوایج": ("حاجت",),
"حوائج": ("حاجت",),
"حکما": ("حکیم",),
"خدمات": ("خدمت",),
"خدمه": ("خادم",),
"خدم": ("خادم",),
"خزاین": ("خزینه",),
"خصایص": ("خصیصه",),
"خطوط": ("خط",),
"دراهم": ("درهم",),
"دروس": ("درس",),
"دفاتر": ("دفتر",),
"دلایل": ("دلیل",),
"دلائل": ("دلیل",),
"ذخایر": ("ذخیره",),
"ذنوب": ("ذنب",),
"ربوع": ("ربع",),
"رجال": ("رجل",),
"رسایل": ("رسال",),
"رسوم": ("رسم",),
"روابط": ("رابطه",),
"روسا": ("رئیس",),
"رئوس": ("راس",),
"ریوس": ("راس",),
"زوار": ("زائر",),
"ساعات": ("ساعت",),
"سبل": ("سبیل",),
"سطوح": ("سطح",),
"سطور": ("سطر",),
"سعدا": ("سعید",),
"سفن": ("سفینه",),
"سقاط": ("ساقی",),
"سلاطین": ("سلطان",),
"سلایق": ("سلیقه",),
"سموم": ("سم",),
"سنن": ("سنت",),
"سنین": ("سن",),
"سهام": ("سهم",),
"سوابق": ("سابقه",),
"سواحل": ("ساحل",),
"سوانح": ("سانحه",),
"شباب": ("شاب",),
"شرایط": ("شرط",),
"شروط": ("شرط",),
"شرکا": ("شریک",),
"شعب": ("شعبه",),
"شعوب": ("شعب",),
"شموس": ("شمس",),
"شهدا": ("شهید",),
"شهور": ("شهر",),
"شواهد": ("شاهد",),
"شوون": ("شان",),
"شکات": ("شاکی",),
"شیاطین": ("شیطان",),
"صبیان": ("صبی",),
"صحف": ("صحیفه",),
"صغار": ("صغیر",),
"صفوف": ("صف",),
"صنادیق": ("صندوق",),
"ضعفا": ("ضعیف",),
"ضمایر": ("ضمیر",),
"ضوابط": ("ضابطه",),
"طرق": ("طریق",),
"طلاب": ("طلبه",),
"طواغیت": ("طاغوت",),
"طیور": ("طیر",),
"عادات": ("عادت",),
"عباد": ("عبد",),
"عبارات": ("عبارت",),
"عجایب": ("عجیب",),
"عزایم": ("عزیمت",),
"عشایر": ("عشیره",),
"عطور": ("عطر",),
"عظما": ("عظیم",),
"عقاید": ("عقیده",),
"عقائد": ("عقیده",),
"علائم": ("علامت",),
"علایم": ("علامت",),
"علما": ("عالم",),
"علوم": ("علم",),
"عمال": ("عمله",),
"عناصر": ("عنصر",),
"عناوین": ("عنوان",),
"عواطف": ("عاطفه",),
"عواقب": ("عاقبت",),
"عوالم": ("عالم",),
"عوامل": ("عامل",),
"عیوب": ("عیب",),
"عیون": ("عین",),
"غدد": ("غده",),
"غرف": ("غرفه",),
"غیوب": ("غیب",),
"غیوم": ("غیم",),
"فرایض": ("فریضه",),
"فضایل": ("فضیلت",),
"فضلا": ("فاضل",),
"فواصل": ("فاصله",),
"فواید": ("فایده",),
"قبایل": ("قبیله",),
"قرون": ("قرن",),
"قصص": ("قصه",),
"قضات": ("قاضی",),
"قضایا": ("قضیه",),
"قلل": ("قله",),
"قلوب": ("قلب",),
"قواعد": ("قاعده",),
"قوانین": ("قانون",),
"قیود": ("قید",),
"لطایف": ("لطیفه",),
"لیالی": ("لیل",),
"مباحث": ("مبحث",),
"مبالغ": ("مبلغ",),
"متون": ("متن",),
"مجالس": ("مجلس",),
"محاصیل": ("محصول",),
"محافل": ("محفل",),
"محاکم": ("محکمه",),
"مخارج": ("خرج",),
"مدارس": ("مدرسه",),
"مدارک": ("مدرک",),
"مداین": ("مدینه",),
"مدن": ("مدینه",),
"مراتب": ("مرتبه",),
"مراتع": ("مرتع",),
"مراجع": ("مرجع",),
"مراحل": ("مرحله",),
"مسائل": ("مسئله",),
"مساجد": ("مسجد",),
"مساعی": ("سعی",),
"مسالک": ("مسلک",),
"مساکین": ("مسکین",),
"مسایل": ("مسئله",),
"مشاعر": ("مشعر",),
"مشاغل": ("شغل",),
"مشایخ": ("شیخ",),
"مصادر": ("مصدر",),
"مصادق": ("مصداق",),
"مصادیق": ("مصداق",),
"مصاعب": ("مصعب",),
"مضار": ("ضرر",),
"مضامین": ("مضمون",),
"مطالب": ("مطلب",),
"مظالم": ("مظلمه",),
"مظاهر": ("مظهر",),
"اهرام": ("هرم",),
"معابد": ("معبد",),
"معابر": ("معبر",),
"معاجم": ("معجم",),
"معادن": ("معدن",),
"معاذیر": ("عذر",),
"معارج": ("معراج",),
"معاصی": ("معصیت",),
"معالم": ("معلم",),
"معایب": ("عیب",),
"مفاسد": ("مفسده",),
"مفاصل": ("مفصل",),
"مفاهیم": ("مفهوم",),
"مقابر": ("مقبره",),
"مقاتل": ("مقتل",),
"مقادیر": ("مقدار",),
"مقاصد": ("مقصد",),
"مقاطع": ("مقطع",),
"ملابس": ("ملبس",),
"ملوک": ("ملک",),
"ممالک": ("مملکت",),
"منابع": ("منبع",),
"منازل": ("منزل",),
"مناسبات": ("مناسبت",),
"مناسک": ("منسک",),
"مناطق": ("منطقه",),
"مناظر": ("منظره",),
"منافع": ("منفعت",),
"موارد": ("مورد",),
"مواضع": ("موضع",),
"مواضیع": ("موضوع",),
"مواطن": ("موطن",),
"مواقع": ("موقع",),
"موانع": ("مانع",),
"مکاتب": ("مکتب",),
"مکاتیب": ("مکتوب",),
"مکارم": ("مکرمه",),
"میادین": ("میدان",),
"نتایج": ("نتیجه",),
"نعم": ("نعمت",),
"نفوس": ("نفس",),
"نقاط": ("نقطه",),
"نواحی": ("ناحیه",),
"نوافذ": ("نافذه",),
"نواقص": ("نقص",),
"نوامیس": ("ناموس",),
"نکات": ("نکته",),
"نیات": ("نیت",),
"هدایا": ("هدیه",),
"واقعیات": ("واقعیت",),
"وجوه": ("وجه",),
"وحوش": ("وحش",),
"وزرا": ("وزیر",),
"وسایل": ("وسیله",),
"وصایا": ("وصیت",),
"وظایف": ("وظیفه",),
"وعاظ": ("واعظ",),
"وقایع": ("واقعه",),
"کتب": ("کتاب",),
"کسبه": ("کاسب",),
"کفار": ("کافر",),
"کواکب": ("کوکب",),
"تصاویر": ("تصویر",),
"صنوف": ("صنف",),
"اجزا": ("جزء",),
"اجزاء": ("جزء",),
"ذخائر": ("ذخیره",),
"خسارات": ("خسارت",),
"عشاق": ("عاشق",),
"تصانیف": ("تصنیف",),
"دﻻیل": ("دلیل",),
"قوا": ("قوه",),
"ملل": ("ملت",),
"جوایز": ("جایزه",),
"جوائز": ("جایزه",),
"ابعاض": ("بعض",),
"اتباع": ("تبعه",),
"اجلاس": ("جلسه",),
"احشام": ("حشم",),
"اخلاف": ("خلف",),
"ارامنه": ("ارمنی",),
"ازواج": ("زوج",),
"اسباط": ("سبط",),
"اعداد": ("عدد",),
"اعصار": ("عصر",),
"اعقاب": ("عقبه",),
"اعیاد": ("عید",),
"اعیان": ("عین",),
"اغیار": ("غیر",),
"اقارب": ("اقرب",),
"اقران": ("قرن",),
"اقساط": ("قسط",),
"امنای": ("امین",),
"امنا": ("امین",),
"اموات": ("میت",),
"اناجیل": ("انجیل",),
"انحا": ("نحو",),
"انساب": ("نسب",),
"انوار": ("نور",),
"اوامر": ("امر",),
"اوائل": ("اول",),
"اوصیا": ("وصی",),
"آحاد": ("احد",),
"براهین": ("برهان",),
"تعابیر": ("تعبیر",),
"تعالیم": ("تعلیم",),
"تفاسیر": ("تفسیر",),
"تکالیف": ("تکلیف",),
"تماثیل": ("تمثال",),
"جنود": ("جند",),
"جوانب": ("جانب",),
"حاجات": ("حاجت",),
"حرکات": ("حرکت",),
"حضرات": ("حضرت",),
"حکایات": ("حکایت",),
"حوالی": ("حول",),
"خصایل": ("خصلت",),
"خلایق": ("خلق",),
"خلفا": ("خلیفه",),
"دعاوی": ("دعوا",),
"دیون": ("دین",),
"ذراع": ("ذرع",),
"رعایا": ("رعیت",),
"روایات": ("روایت",),
"شعرا": ("شاعر",),
"شکایات": ("شکایت",),
"شهوات": ("شهوت",),
"شیوخ": ("شیخ",),
"شئون": ("شأن",),
"طبایع": ("طبع",),
"ظروف": ("ظرف",),
"ظواهر": ("ظاهر",),
"عبادات": ("عبادت",),
"عرایض": ("عریضه",),
"عرفا": ("عارف",),
"عروق": ("عرق",),
"عساکر": ("عسکر",),
"علماء": ("عالم",),
"فتاوا": ("فتوا",),
"فراعنه": ("فرعون",),
"فرامین": ("فرمان",),
"فروض": ("فرض",),
"فروع": ("فرع",),
"فصول": ("فصل",),
"فقها": ("فقیه",),
"قبور": ("قبر",),
"قبوض": ("قبض",),
"قدوم": ("قدم",),
"قرائات": ("قرائت",),
"قرائن": ("قرینه",),
"لغات": ("لغت",),
"مجامع": ("مجمع",),
"مخازن": ("مخزن",),
"مدارج": ("درجه",),
"مذاهب": ("مذهب",),
"مراکز": ("مرکز",),
"مصارف": ("مصرف",),
"مطامع": ("طمع",),
"معانی": ("معنی",),
"مناصب": ("منصب",),
"منافذ": ("منفذ",),
"مواریث": ("میراث",),
"موازین": ("میزان",),
"موالی": ("مولی",),
"مواهب": ("موهبت",),
"نسوان": ("نسا",),
"نصوص": ("نص",),
"نظایر": ("نظیر",),
"نقایص": ("نقص",),
"نقوش": ("نقش",),
"ولایات": ("ولایت",),
"هیئات": ("هیأت",),
"جماهیر": ("جمهوری",),
"خصائص": ("خصیصه",),
"دقایق": ("دقیقه",),
"رذایل": ("رذیلت",),
"طوایف": ("طایفه",),
"علامات": ("علامت",),
"علایق": ("علاقه",),
"علل": ("علت",),
"غرایز": ("غریزه",),
"غرائز": ("غریزه",),
"غنایم": ("غنیمت",),
"فرائض": ("فریضه",),
"فضائل": ("فضیلت",),
"فقرا": ("فقیر",),
"فلاسفه": ("فیلسوف",),
"فواحش": ("فاحشه",),
"قصائد": ("قصیده",),
"قصاید": ("قصیده",),
"قوائد": ("قائده",),
"مزارع": ("مزرعه",),
"مصائب": ("مصیبت",),
"معارف": ("معرفت",),
"نصایح": ("نصیحت",),
"وثایق": ("وثیقه",),
"وظائف": ("وظیفه",),
"توابین": ("تواب",),
"رفقا": ("رفیق",),
"رقبا": ("رقیب",),
"زحمات": ("زحمت",),
"زعما": ("زعیم",),
"زوایا": ("زاویه",),
"سماوات": ("سما",),
"علوفه": ("علف",),
"غایات": ("غایت",),
"فنون": ("فن",),
"لذات": ("لذت",),
"نعمات": ("نعمت",),
"امراء": ("امیر",),
"امرا": ("امیر",),
"دهاقین": ("دهقان",),
"سنوات": ("سنه",),
"عمارات": ("عمارت",),
"فتوح": ("فتح",),
"لذائذ": ("لذیذ",),
"لذایذ": ("لذیذ", "لذت",),
"تکایا": ("تکیه",),
"صفات": ("صفت",),
"خصوصیات": ("خصوصیت",),
"کیفیات": ("کیفیت",),
"حملات": ("حمله",),
"شایعات": ("شایعه",),
"صدمات": ("صدمه",),
"غلات": ("غله",),
"کلمات": ("کلمه",),
"مبارزات": ("مبارزه",),
"مراجعات": ("مراجعه",),
"مطالبات": ("مطالبه",),
"مکاتبات": ("مکاتبه",),
"نشریات": ("نشریه",),
"بحور": ("بحر",),
"تحقیقات": ("تحقیق",),
"مکالمات": ("مکالمه",),
"ریزمکالمات": ("ریزمکالمه",),
"تجربیات": ("تجربه",),
"جملات": ("جمله",),
"حالات": ("حالت",),
"حجاج": ("حاجی",),
"حسنات": ("حسنه",),
"حشرات": ("حشره",),
"خاطرات": ("خاطره",),
"درجات": ("درجه",),
"دفعات": ("دفعه",),
"سیارات": ("سیاره",),
"شبهات": ("شبهه",),
"ضایعات": ("ضایعه",),
"ضربات": ("ضربه",),
"طبقات": ("طبقه",),
"فرضیات": ("فرضیه",),
"قطرات": ("قطره",),
"قطعات": ("قطعه",),
"قلاع": ("قلعه",),
"کشیشان": ("کشیش",),
"مادیات": ("مادی",),
"مباحثات": ("مباحثه",),
"مجاهدات": ("مجاهدت",),
"محلات": ("محله",),
"مداخلات": ("مداخله",),
"مشقات": ("مشقت",),
"معادلات": ("معادله",),
"معوقات": ("معوقه",),
"منویات": ("منویه",),
"موقوفات": ("موقوفه",),
"موسسات": ("موسسه",),
"حلقات": ("حلقه",),
"ایات": ("ایه",),
"اصلح": ("صالح",),
"اظهر": ("ظاهر",),
"آیات": ("آیه",),
"برکات": ("برکت",),
"جزوات": ("جزوه",),
"خطابات": ("خطابه",),
"دوایر": ("دایره",),
"روحیات": ("روحیه",),
"متهمان": ("متهم",),
"مجاری": ("مجرا",),
"مشترکات": ("مشترک",),
"ورثه": ("وارث",),
"وکلا": ("وکیل",),
"نقبا": ("نقیب",),
"سفرا": ("سفیر",),
"مآخذ": ("مأخذ",),
"احوال": ("حال",),
"آلام": ("الم",),
"مزایا": ("مزیت",),
"عقلا": ("عاقل",),
"مشاهد": ("مشهد",),
"ظلمات": ("ظلمت",),
"خفایا": ("خفیه",),
"مشاهدات": ("مشاهده",),
"امامان": ("امام",),
"سگان": ("سگ",),
"نظریات": ("نظریه",),
"آفاق": ("افق",),
"آمال": ("امل",),
"دکاکین": ("دکان",),
"قصبات": ("قصبه",),
"مضرات": ("مضرت",),
"قبائل": ("قبیله",),
"مجانین": ("مجنون",),
"سيئات": ("سیئه",),
"صدقات": ("صدقه",),
"کثافات": ("کثافت",),
"کسورات": ("کسر",),
"معالجات": ("معالجه",),
"مقابلات": ("مقابله",),
"مناظرات": ("مناظره",),
"ناملايمات": ("ناملایمت",),
"وجوهات": ("وجه",),
"مصادرات": ("مصادره",),
"ملمعات": ("ملمع",),
"اولویات": ("اولویت",),
"جمرات": ("جمره",),
"زیارات": ("زیارت",),
"عقبات": ("عقبه",),
"کرامات": ("کرامت",),
"مراقبات": ("مراقبه",),
"نجاسات": ("نجاست",),
"هجویات": ("هجو",),
"تبدلات": ("تبدل",),
"روات": ("راوی",),
"فیوضات": ("فیض",),
"کفارات": ("کفاره",),
"نذورات": ("نذر",),
"حفریات": ("حفر",),
"عنایات": ("عنایت",),
"جراحات": ("جراحت",),
"ثمرات": ("ثمره",),
"حکام": ("حاکم",),
"مرسولات": ("مرسوله",),
"درایات": ("درایت",),
"سیئات": ("سیئه",),
"عدوات": ("عداوت",),
"عشرات": ("عشره",),
"عقوبات": ("عقوبه",),
"عقودات": ("عقود",),
"کثرات": ("کثرت",),
"مواجهات": ("مواجهه",),
"مواصلات": ("مواصله",),
"اجوبه": ("جواب",),
"اضلاع": ("ضلع",),
"السنه": ("لسان",),
"اشتات": ("شت",),
"دعوات": ("دعوت",),
"صعوبات": ("صعوبت",),
"عفونات": ("عفونت",),
"علوفات": ("علوفه",),
"غرامات": ("غرامت",),
"فارقات": ("فارقت",),
"لزوجات": ("لزوجت",),
"محللات": ("محلله",),
"مسافات": ("مسافت",),
"مسافحات": ("مسافحه",),
"مسامرات": ("مسامره",),
"مستلذات": ("مستلذ",),
"مسرات": ("مسرت",),
"مشافهات": ("مشافهه",),
"مشاهرات": ("مشاهره",),
"معروشات": ("معروشه",),
"مجادلات": ("مجادله",),
"ابغاض": ("بغض",),
"اجداث": ("جدث",),
"اجواز": ("جوز",),
"اجواد": ("جواد",),
"ازاهیر": ("ازهار",),
"عوائد": ("عائده",),
"احافیر": ("احفار",),
"احزان": ("حزن",),
"آنام": ("انام",),
"احباب": ("حبیب",),
"نوابغ": ("نابغه",),
"بینات": ("بینه",),
"حوالات": ("حواله",),
"حوالجات": ("حواله",),
"دستجات": ("دسته",),
"شمومات": ("شموم",),
"طاقات": ("طاقه",),
"علاقات": ("علاقه",),
"مراسلات": ("مراسله",),
"موجهات": ("موجه",),
"اقویا": ("قوی",),
"اغنیا": ("غنی",),
"بلایا": ("بلا",),
"خطایا": ("خطا",),
"ثنایا": ("ثنا",),
"لوایح": ("لایحه",),
"غزلیات": ("غزل",),
"اشارات": ("اشاره",),
"رکعات": ("رکعت",),
"امثالهم": ("مثل",),
"تشنجات": ("تشنج",),
"امانات": ("امانت",),
"بریات": ("بریت",),
"توست": ("تو",),
"حبست": ("حبس",),
"حیثیات": ("حیثیت",),
"شامات": ("شامه",),
"قبالات": ("قباله",),
"قرابات": ("قرابت",),
"مطلقات": ("مطلقه",),
"نزلات": ("نزله",),
"بکمان": ("بکیم",),
"روشان": ("روشن",),
"مسانید": ("مسند",),
"ناحیت": ("ناحیه",),
"رسوله": ("رسول",),
"دانشجویان": ("دانشجو",),
"روحانیون": ("روحانی",),
"قرون": ("قرن",),
"انقلابیون": ("انقلابی",),
"قوانین": ("قانون",),
"مجاهدین": ("مجاهد",),
"محققین": ("محقق",),
"متهمین": ("متهم",),
"مهندسین": ("مهندس",),
"مؤمنین": ("مؤمن",),
"مسئولین": ("مسئول",),
"مشرکین": ("مشرک",),
"مخاطبین": ("مخاطب",),
"مأمورین": ("مأمور",),
"سلاطین": ("سلطان",),
"مضامین": ("مضمون",),
"منتخبین": ("منتخب",),
"متحدین": ("متحد",),
"متخصصین": ("متخصص",),
"مسوولین": ("مسوول",),
"شیاطین": ("شیطان",),
"مباشرین": ("مباشر",),
"منتقدین": ("منتقد",),
"موسسین": ("موسس",),
"مسؤلین": ("مسؤل",),
"متحجرین": ("متحجر",),
"مهاجرین": ("مهاجر",),
"مترجمین": ("مترجم",),
"مدعوین": ("مدعو",),
"مشترکین": ("مشترک",),
"معصومین": ("معصوم",),
"مسابقات": ("مسابقه",),
"معانی": ("معنی",),
"مطالعات": ("مطالعه",),
"نکات": ("نکته",),
"خصوصیات": ("خصوصیت",),
"خدمات": ("خدمت",),
"نشریات": ("نشریه",),
"ساعات": ("ساعت",),
"بزرگان": ("بزرگ",),
"خسارات": ("خسارت",),
"شیعیان": ("شیعه",),
"واقعیات": ("واقعیت",),
"مذاکرات": ("مذاکره",),
"حشرات": ("حشره",),
"طبقات": ("طبقه",),
"شکایات": ("شکایت",),
"ابیات": ("بیت",),
"شایعات": ("شایعه",),
"ضربات": ("ضربه",),
"مقالات": ("مقاله",),
"اوقات": ("وقت",),
"عباراتی": ("عبارت",),
"سالیان": ("سال",),
"زحمات": ("زحمت",),
"عبارات": ("عبارت",),
"لغات": ("لغت",),
"نیات": ("نیت",),
"مطالبات": ("مطالبه",),
"مطالب": ("مطلب",),
"خلقیات": ("خلق",),
"نکات": ("نکته",),
"بزرگان": ("بزرگ",),
"ابیاتی": ("بیت",),
"محرمات": ("حرام",),
"اوزان": ("وزن",),
"اخلاقیات": ("اخلاق",),
"سبزیجات": ("سبزی",),
"اضافات": ("اضافه",),
"قضات": ("قاضی",),
}

View File

@ -0,0 +1,6 @@
# coding: utf8
from __future__ import unicode_literals
VERBS = set("""
""".split())

View File

@ -0,0 +1,647 @@
# 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})

View File

@ -0,0 +1,92 @@
# coding: utf8
from __future__ import unicode_literals
from ...attrs import LIKE_NUM
MIM = 'م'
ZWNJ_O_MIM = '‌ام'
YE_NUN = 'ین'
_num_words = set("""
صفر
یک
دو
سه
چهار
پنج
شش
شیش
هفت
هشت
نه
ده
یازده
دوازده
سیزده
چهارده
پانزده
پونزده
شانزده
شونزده
هفده
هجده
هیجده
نوزده
بیست
سی
چهل
پنجاه
شصت
هفتاد
هشتاد
نود
صد
یکصد
یکصد
دویست
سیصد
چهارصد
پانصد
پونصد
ششصد
شیشصد
هفتصد
هفصد
هشتصد
نهصد
هزار
میلیون
میلیارد
بیلیون
بیلیارد
تریلیون
تریلیارد
کوادریلیون
کادریلیارد
کوینتیلیون
""".split())
_ordinal_words = set("""
اول
سوم
سیام""".split())
_ordinal_words.update({num + MIM for num in _num_words})
_ordinal_words.update({num + ZWNJ_O_MIM for num in _num_words})
_ordinal_words.update({num + YE_NUN for num in _ordinal_words})
def like_num(text):
"""
check if text resembles a number
"""
text = text.replace(',', '').replace('.', '').\
replace('،', '').replace('٫','').replace('/', '')
if text.isdigit():
return True
if text in _num_words:
return True
if text in _ordinal_words:
return True
return False
LEX_ATTRS = {
LIKE_NUM: like_num
}

View File

@ -0,0 +1,16 @@
# coding: utf8
from __future__ import unicode_literals
from ..punctuation import TOKENIZER_INFIXES
from ..char_classes import LIST_PUNCT, LIST_ELLIPSES, LIST_QUOTES, CURRENCY
from ..char_classes import QUOTES, UNITS, ALPHA, ALPHA_LOWER, ALPHA_UPPER
_suffixes = (LIST_PUNCT + LIST_ELLIPSES + LIST_QUOTES +
[r'(?<=[0-9])\+',
r'(?<=[0-9])%', # 4% -> ["4", "%"]
# Persian is written from Right-To-Left
r'(?<=[0-9])(?:{})'.format(CURRENCY),
r'(?<=[0-9])(?:{})'.format(UNITS),
r'(?<=[{au}][{au}])\.'.format(au=ALPHA_UPPER)])
TOKENIZER_SUFFIXES = _suffixes

View File

@ -1,105 +1,395 @@
# coding: utf8
from __future__ import unicode_literals
# stop words from HAZM package
STOP_WORDS = set("""
آباد آره آری آسانی آمد آمده آن آنان آنجا آنها آنها آنچه آنکه آورد آورده آیا آید
ات اثر از است استفاده اش اطلاعند الاسف البته الظاهر ام اما امروز امسال اند انکه او اول اکنون
اگر الواقع ای ایشان ایم این اینک اینکه
ب با بااین بار بارة باره بارها باز بازهم بازی باش باشد باشم باشند باشی باشید باشیم بالا بالاخره
بالاخص بالاست بالای بالطبع بالعکس باوجودی باورند باید بتدریج بتوان بتواند بتوانی بتوانیم بجز بخش بخشه بخشی بخصوص بخواه
بخواهد بخواهم بخواهند بخواهی بخواهید بخواهیم بخوبی بد بدان بدانجا بدانها بدون بدین بدینجا بر برآن برآنند برا برابر
براحتی براساس براستی برای برایت برایش برایشان برایم برایمان برخوردار برخوردارند برخی برداری برداشتن بردن برعکس برنامه
بروز بروشنی بزرگ بزودی بس بسا بسادگی بسته بسختی بسوی بسی بسیار بسیاری بشدت بطور بطوری بعد بعدا بعدازظهر بعدها بعری
بعضا بعضی بعضیهایشان بعضیها بعلاوه بعید بفهمی بلافاصله بله بلکه بلی بنابراین بندی به بهت بهتر بهترین بهش بود بودم بودن
بودند بوده بودی بودید بودیم بویژه بپا بکار بکن بکند بکنم بکنند بکنی بکنید بکنیم بگو بگوید بگویم بگویند بگویی بگویید
بگوییم بگیر بگیرد بگیرم بگیرند بگیری بگیرید بگیریم بی بیا بیاب بیابد بیابم بیابند بیابی بیابید بیابیم بیاور بیاورد
بیاورم بیاورند بیاوری بیاورید بیاوریم بیاید بیایم بیایند بیایی بیایید بیاییم بیرون بیست بیش بیشتر بیشتری بین بیگمان
پ پا پارسال پارسایانه پارهای پاعین پایین پدرانه پدیده پرسان پروردگارا پریروز پس پشت پشتوانه پشیمونی پنج پهن پی پیدا
پیداست پیرامون پیش پیشاپیش پیشتر پیوسته
ت تا تازه تازگی تان تاکنون تحت تحریم تدریج تر ترتیب تردید ترند ترین تصریحا تعدادی تعمدا تفاوتند تقریبا تک تلویحا تمام
تماما تمامشان تمامی تند تنها تو توؤما تواند توانست توانستم توانستن توانستند توانسته توانستی توانستیم توانم توانند توانی
توانید توانیم توسط تول توی
ث ثالثا ثانی ثانیا
ج جا جای جایی جدا جداگانه جدید جدیدا جریان جز جلو جلوگیری جلوی جمع جمعا جمعی جنابعالی جناح جنس جهت جور جوری
چ چاله چاپلوسانه چت چته چرا چشم چطور چقدر چنان چنانچه چنانکه چند چندان چنده چندین چنین چه چهار چو چون چکار چگونه چی چیز
چیزهاست چیزی چیزیست چیست چیه
ح حاشیه حاشیهای حاضر حاضرم حال حالا حاکیست حتما حتی حداقل حداکثر حدود حدودا حسابگرانه حسابی حضرتعالی حق حقیرانه حول
حکما
خ خارج خالصانه خب خداحافظ خداست خدمات خستهای خصوصا خلاصه خواست خواستم خواستن خواستند خواسته خواستی خواستید خواستیم
خواهد خواهم خواهند خواهی خواهید خواهیم خوب خوبی خود خودبه خودت خودتان خودتو خودش خودشان خودم خودمان خودمو خودی خوش
خوشبختانه خویش خویشتن خویشتنم خیاه خیر خیره خیلی
د دا داام دااما داخل داد دادم دادن دادند داده دادی دادید دادیم دار داراست دارد دارم دارند داری دارید داریم داشت داشتم
داشتن داشتند داشته داشتی داشتید داشتیم دامم دانست دانند دایم دایما در دراین درباره درحالی درحالیکه درست درسته درشتی
درصورتی درعین درمجموع درواقع درون درپی دریغ دریغا دسته دشمنیم دقیقا دلخواه دم دنبال ده دهد دهم دهند دهی دهید دهیم دو
دوباره دوم دیده دیر دیرت دیرم دیروز دیشب دیوی دیگر دیگران دیگری دیگه
ذ ذاتا ذلک ذیل
ر را راجع راحت راسا راست راستی راه رسما رسید رشته رغم رفت رفتارهاست رفته رنجند رهگشاست رو رواست روب روبروست روز روزانه
روزه روزهای روزهای روش روشنی روی رویش ریزی
ز زدن زده زشتکارانند زمان زمانی زمینه زنند زهی زود زودتر زودی زیاد زیاده زیر زیرا
س سابق ساختن ساخته ساده سادگی سازی سالانه سالته سالمتر ساله سالهاست سالها سالیانه سایر ست سخت سخته سر سراسر سرانجام
سراپا سرعت سری سریع سریعا سعی سمت سه سهوا سوم سوی سپس سیاه
ش شان شاهدند شاهدیم شاید شبهاست شخصا شد شدت شدم شدن شدند شده شدی شدید شدیدا شدیم شش شما شماری شماست شمایند شناسی شود
شوراست شوم شوند شونده شوی شوید شویم شیرین شیرینه
ص صددرصد صرفا صریحا صندوق صورت صورتی
ض ضد ضمن ضمنا
ط طبعا طبق طبیعتا طرف طریق طلبکارانه طور طوری طی
ظ ظاهرا
ع عاجزانه عاقبت عبارتند عجب عجولانه عدم عرفانی عقب علاوه علت علنا علی علیه عمدا عمدتا عمده عمل عملا عملی عموم عموما
عنقریب عنوان عینا
غ غالبا غیر غیرقانونی
ف فاقد فبها فر فردا فعلا فقط فلان فلذا فوق فکر فی فیالواقع
ق قاالند قابل قاطبه قاطعانه قاعدتا قانونا قبل قبلا قبلند قد قدر قدری قراردادن قصد قطعا
ک کارند کاش کاشکی کامل کاملا کتبا کجا کجاست کدام کرات کرد کردم کردن کردند کرده کردی کردید کردیم کس کسانی کسی کشیدن کل
کلا کلی کلیشه کلیه کم کمااینکه کماکان کمتر کمتره کمتری کمی کن کنار کنارش کنان کنایهای کند کنم کنند کننده کنون کنونی
کنی کنید کنیم که کو کی كي
گ گاه گاهی گذاری گذاشتن گذاشته گذشته گردد گرفت گرفتارند گرفتم گرفتن گرفتند گرفته گرفتی گرفتید گرفتیم گرمی گروهی گرچه
گفت گفتم گفتن گفتند گفته گفتی گفتید گفتیم گه گهگاه گو گونه گویا گویان گوید گویم گویند گویی گویید گوییم گیرد گیرم گیرند
گیری گیرید گیریم
ل لا لااقل لاجرم لب لذا لزوما لطفا لیکن لکن
م ما مادامی ماست مامان مان مانند مبادا متاسفانه متعاقبا متفاوتند مثل مثلا مجبورند مجددا مجموع مجموعا محتاجند محکم
محکمتر مخالفند مختلف مخصوصا مدام مدت مدتهاست مدتی مذهبی مرا مراتب مرتب مردانه مردم مرسی مستحضرید مستقیما مستند مسلما
مشت مشترکا مشغولند مطمانا مطمانم مطمینا مع معتقدم معتقدند معتقدیم معدود معذوریم معلومه معمولا معمولی مغرضانه مفیدند
مقابل مقدار مقصرند مقصری ممکن من منتهی منطقی مواجهند موارد موجودند مورد موقتا مکرر مکررا مگر می مي میان میزان میلیارد
میلیون میرسد میرود میشود میکنیم
ن ناامید ناخواسته ناراضی ناشی نام ناچار ناگاه ناگزیر ناگهان ناگهانی نباید نبش نبود نخست نخستین نخواهد نخواهم نخواهند
نخواهی نخواهید نخواهیم نخودی ندارد ندارم ندارند نداری ندارید نداریم نداشت نداشتم نداشتند نداشته نداشتی نداشتید نداشتیم
نزد نزدیک نسبتا نشان نشده نظیر نفرند نفهمی نماید نمی نمیشود نه نهایت نهایتا نوع نوعا نوعی نکرده نگاه نیازمندانه
نیازمندند نیز نیست نیمی
و وابسته واقع واقعا واقعی واقفند وای وجه وجود وحشت وسط وضع وضوح وقتی وقتیکه ولی وگرنه وگو وی ویا ویژه
ه ها هاست های هایی هبچ هدف هر هرحال هرچند هرچه هرکس هرگاه هرگز هزار هست هستم هستند هستی هستید هستیم هفت هق هم همان
همانند همانها همدیگر همزمان همه همهاش همواره همچنان همچنین همچون همچین همگان همگی همیشه همین هنوز هنگام هنگامی هوی هی
هیچ هیچکدام هیچکس هیچگاه هیچگونه هیچی
ی یا یابد یابم یابند یابی یابید یابیم یارب یافت یافتم یافتن یافته یافتی یافتید یافتیم یعنی یقینا یواش یک یکدیگر یکریز
یکسال یکی یکي
""".split())
و
در
به
از
که
این
را
با
است
برای
آن
یک
خود
تا
کرد
بر
هم
نیز
گفت
میشود
وی
شد
دارد
ما
اما
یا
شده
باید
هر
آنها
بود
او
دیگر
دو
مورد
میکند
شود
کند
وجود
بین
پیش
شدهاست
پس
نظر
اگر
همه
یکی
حال
هستند
من
کنند
نیست
باشد
چه
بی
می
بخش
میکنند
همین
افزود
هایی
دارند
راه
همچنین
روی
داد
بیشتر
بسیار
سه
داشت
چند
سوی
تنها
هیچ
میان
اینکه
شدن
بعد
جدید
ولی
حتی
کردن
برخی
کردند
میدهد
اول
نه
کردهاست
نسبت
بیش
شما
چنین
طور
افراد
تمام
درباره
بار
بسیاری
میتواند
کرده
چون
ندارد
دوم
بزرگ
طی
حدود
همان
بدون
البته
آنان
میگوید
دیگری
خواهدشد
کنیم
قابل
یعنی
رشد
میتوان
وارد
کل
ویژه
قبل
براساس
نیاز
گذاری
هنوز
لازم
سازی
بودهاست
چرا
میشوند
وقتی
گرفت
کم
جای
حالی
تغییر
پیدا
اکنون
تحت
باعث
مدت
فقط
زیادی
تعداد
آیا
بیان
رو
شدند
عدم
کردهاند
بودن
نوع
بلکه
جاری
دهد
برابر
مهم
بوده
اخیر
مربوط
امر
زیر
گیری
شاید
خصوص
آقای
اثر
کننده
بودند
فکر
کنار
اولین
سوم
سایر
کنید
ضمن
مانند
باز
میگیرد
ممکن
حل
دارای
پی
مثل
میرسد
اجرا
دور
منظور
کسی
موجب
طول
امکان
آنچه
تعیین
گفته
شوند
جمع
خیلی
علاوه
گونه
تاکنون
رسید
ساله
گرفته
شدهاند
علت
چهار
داشتهباشد
خواهدبود
طرف
تهیه
تبدیل
مناسب
زیرا
مشخص
میتوانند
نزدیک
جریان
روند
بنابراین
میدهند
یافت
نخستین
بالا
پنج
ریزی
عالی
چیزی
نخست
بیشتری
ترتیب
شدهبود
خاص
خوبی
خوب
شروع
فرد
کامل
غیر
میرود
دهند
آخرین
دادن
جدی
بهترین
شامل
گیرد
بخشی
باشند
تمامی
بهتر
دادهاست
حد
نبود
کسانی
میکرد
داریم
علیه
میباشد
دانست
ناشی
داشتند
دهه
میشد
ایشان
آنجا
گرفتهاست
دچار
میآید
لحاظ
آنکه
داده
بعضی
هستیم
اند
برداری
نباید
میکنیم
نشست
سهم
همیشه
آمد
اش
وگو
میکنم
حداقل
طبق
جا
خواهدکرد
نوعی
چگونه
رفت
هنگام
فوق
روش
ندارند
سعی
بندی
شمار
کلی
کافی
مواجه
همچنان
زیاد
سمت
کوچک
داشتهاست
چیز
پشت
آورد
حالا
روبه
سالهای
دادند
میکردند
عهده
نیمه
جایی
دیگران
سی
بروز
یکدیگر
آمدهاست
جز
کنم
سپس
کنندگان
خودش
همواره
یافته
شان
صرف
نمیشود
رسیدن
چهارم
یابد
متر
ساز
داشته
کردهبود
باره
نحوه
کردم
تو
شخصی
داشتهباشند
محسوب
پخش
کمی
متفاوت
سراسر
کاملا
داشتن
نظیر
آمده
گروهی
فردی
ع
همچون
خطر
خویش
کدام
دسته
سبب
عین
آوری
متاسفانه
بیرون
دار
ابتدا
شش
افرادی
میگویند
سالهای
درون
نیستند
یافتهاست
پر
خاطرنشان
گاه
جمعی
اغلب
دوباره
مییابد
لذا
زاده
گردد
اینجا""".split())

View File

@ -0,0 +1,43 @@
# coding: utf8
from __future__ import unicode_literals
from ...symbols import NOUN, PROPN, PRON
def noun_chunks(obj):
"""
Detect base noun phrases from a dependency parse. Works on both Doc and Span.
"""
labels = ['nsubj', 'dobj', 'nsubjpass', 'pcomp', 'pobj', 'dative', 'appos',
'attr', 'ROOT']
doc = obj.doc # Ensure works on both Doc and Span.
np_deps = [doc.vocab.strings.add(label) for label in labels]
conj = doc.vocab.strings.add('conj')
np_label = doc.vocab.strings.add('NP')
seen = set()
for i, word in enumerate(obj):
if word.pos not in (NOUN, PROPN, PRON):
continue
# Prevent nested chunks from being produced
if word.i in seen:
continue
if word.dep in np_deps:
if any(w.i in seen for w in word.subtree):
continue
seen.update(j for j in range(word.left_edge.i, word.i+1))
yield word.left_edge.i, word.i+1, np_label
elif word.dep == conj:
head = word.head
while head.dep == conj and head.head.i < head.i:
head = head.head
# If the head is an NP, and we're coordinated to it, we're an NP
if head.dep in np_deps:
if any(w.i in seen for w in word.subtree):
continue
seen.update(j for j in range(word.left_edge.i, word.i+1))
yield word.left_edge.i, word.i+1, np_label
SYNTAX_ITERATORS = {
'noun_chunks': noun_chunks
}

39
spacy/lang/fa/tag_map.py Normal file
View File

@ -0,0 +1,39 @@
# coding: utf8
from __future__ import unicode_literals
from ...symbols import POS, PUNCT, SYM, ADJ, CONJ, NUM, DET, ADV, ADP, X, VERB
from ...symbols import NOUN, PROPN, PART, INTJ, SPACE, PRON, AUX
TAG_MAP = {
"ADJ": {POS: ADJ },
"ADJ_CMPR": {POS: ADJ },
"ADJ_INO": {POS: ADJ},
"ADJ_SUP": {POS: ADJ},
"ADV": {POS: ADV},
"ADV_COMP": {POS: ADV},
"ADV_I": {POS: ADV},
"ADV_LOC": {POS: ADV},
"ADV_NEG": {POS: ADV},
"ADV_TIME": {POS: ADV},
"CLITIC": {POS: PART},
"CON": {POS: CONJ},
"CONJ": {POS: CONJ},
"DELM": {POS: PUNCT},
"DET": {POS: DET},
"FW": {POS: X},
"INT": {POS: INTJ},
"N_PL": {POS: NOUN},
"N_SING": {POS: NOUN},
"N_VOC": {POS: NOUN},
"NUM": {POS: NUM},
"P": {POS: ADP},
"PREV": {POS: ADP},
"PRO": {POS: PRON},
"V_AUX": {POS: AUX},
"V_IMP": {POS: VERB},
"V_PA": {POS: VERB},
"V_PP": {POS: VERB},
"V_PRS": {POS: VERB},
"V_SUB": {POS: VERB},
}

File diff suppressed because it is too large Load Diff