3.1 KiB
پردازش زبان طبیعی فارسی برای spaCy
کتابخانهی spaCy هیچگاه مدل آموزشدیدهای برای فارسی منتشر نکرده است و spacy.blank("fa") تنها یک
توکنساز و فهرست واژههای اضافه در اختیار میگذارد. این مخزن دو pipeline آموزشدیدهٔ فارسی را
فراهم میکند که بر پایهٔ پیکرهٔ UD_Persian-PerDT
ساخته شدهاند و مانند دیگر مدلهای spaCy با pip نصب میشوند.
بستهها
مدل fa_dep_news_sm دربردارندهٔ tok2vec، برچسبگذار اجزای کلام، ریختشناس،
بنواژهیاب آموزشپذیر و تجزیهگر وابستگی است. fa_core_news_sm همان اجزا بههمراه
بازشناسی موجودیتهای نامدار را دارد. هر دو تحت لیسانس CC BY-SA ۴٫۰ منتشر شدهاند.
pip install https://huggingface.co/Phazel/fa_core_news_sm/resolve/main/fa_core_news_sm-any-py3-none-any.whl
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 تعریف شدهاند.
توضیح بیشتر دربارهٔ گزینش پیکره و پروانهها در docs/MODELS.md و شرح انگلیسی
پروژه در README.md آمده است.