52 lines
3.1 KiB
Markdown
52 lines
3.1 KiB
Markdown
# پردازش زبان طبیعی فارسی برای 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-3.8.0-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) آمده است.
|