diff --git a/README.fa.md b/README.fa.md new file mode 100644 index 0000000..dc9140d --- /dev/null +++ b/README.fa.md @@ -0,0 +1,51 @@ +# پردازش زبان طبیعی فارسی برای spaCy + +spaCy هیچ‌گاه مدل آموزش‌دیده‌ای برای فارسی منتشر نکرده است و `spacy.blank("fa")` تنها یک +توکن‌ساز و فهرست واژه‌های اضافه در اختیار می‌گذارد. این مخزن دو pipeline آموزش‌دیدهٔ فارسی را +فراهم می‌کند که بر پایهٔ پیکرهٔ [UD_Persian-PerDT](https://github.com/UniversalDependencies/UD_Persian-PerDT) +ساخته شده‌اند و مانند دیگر مدل‌های spaCy با pip نصب می‌شوند. + +## بسته‌ها + +`fa_dep_news_sm` دربردارندهٔ **tok2vec**، **برچسب‌گذار اجزای کلام**، **ریخت‌شناس**، +**بن‌واژه‌یاب آموزش‌پذیر** و **تجزیه‌گر وابستگی** است. `fa_core_news_sm` همان اجزا به‌همراه +**بازشناسی موجودیت‌های نام‌دار** را دارد. هر دو تحت لیسانس CC BY-SA ۴٫۰ منتشر شده‌اند. + +```bash +pip install https://huggingface.co/Phazel/fa_core_news_sm/resolve/main/fa_core_news_sm-any-py3-none-any.whl +``` + +```python +import spacy +nlp = spacy.load("fa_core_news_sm") +doc = nlp("محمدرضا شجریان در مشهد به دنیا آمد.") +print(doc.ents) # (محمدرضا شجریان, مشهد) +``` + +## کارایی + +ارزیابی با `spacy benchmark accuracy` روی بخش آزمون همان پیکره انجام شده است: + +| سنجه | امتیاز | مرجع | +| --- | --- | --- | +| `TOKEN_ACC` / `TOKEN_F` | ۹۹٫۹۶ / ۹۹٫۱۱ | | +| `TAG_ACC` (XPOS) | ۹۵٫۹۶ | | +| `POS_ACC` (UPOS) | ۹۶٫۲۴ | | +| `MORPH_ACC` | ۹۶٫۲۹ | | +| `LEMMA_ACC` | ۹۷٫۹۱ | | +| `SENTS_F` | ۹۹٫۲۵ | | +| `DEP_UAS` | ۸۹٫۶۹ | hazm+ParsBERT: ۹۲٫۴۶ | +| `DEP_LAS` | ۸۵٫۱۵ | hazm+ParsBERT: ۸۹٫۳۴ | +| `ENTS_F` | ۷۱٫۸۷ | تنها در `fa_core_news_sm` | +| سرعت | حدود ۹٬۲۵۰ واژه بر ثانیه | | + +برچسب‌های موجودیت «نقره‌ای» هستند: از لایه‌ای در خود پیکره می‌آیند که با برچسب‌زن Beheshti-NER +تولید و سپس دستی اصلاح شده است. بنابراین `ENTS_F` تا اندازه‌ای هم‌خوانی با آن برچسب‌زن را +می‌سنجد؛ دیگر سنجه‌های جدول در برابر دادهٔ طلایی سنجیده شده‌اند. + +آموزش روی یک پردازندهٔ چهارهسته‌ای i5-7200U و بدون کارت گرافیک انجام شده است: ۱ ساعت و ۲۷ دقیقه +برای اجزای نحوی و ۱۷ دقیقه برای NER. این دو اجرا مستقل‌اند و می‌توانند هم‌زمان انجام شوند. + +گام‌های تبدیل پیکره، آموزش، ارزیابی و بسته‌بندی در [`project.yml`](project.yml) تعریف شده‌اند. +توضیح بیشتر دربارهٔ گزینش پیکره و پروانه‌ها در [`docs/MODELS.md`](docs/MODELS.md) و شرح انگلیسی +پروژه در [`README.md`](README.md) آمده است. diff --git a/README.md b/README.md index 4c44fc3..fd8178a 100644 --- a/README.md +++ b/README.md @@ -157,4 +157,5 @@ It did confirm the corpus choice. hazm's own spaCy parser was trained on - How spaCy models get published, and what upstream `fa` already has: [`docs/CONTRIBUTING-GUIDE.md`](docs/CONTRIBUTING-GUIDE.md) - The build: [`project.yml`](project.yml) +- خلاصهٔ فارسی: [`README.fa.md`](README.fa.md) - Language data comes from `spacy/lang/fa` upstream, whose stop word list came from hazm.