spacy-fa-pipeline/README.fa.md

3.1 KiB
Raw Blame History

پردازش زبان طبیعی فارسی برای 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 آمده است.