ویرگول
ورودثبت نام
آرسام فرهمند
آرسام فرهمند
آرسام فرهمند
آرسام فرهمند
خواندن ۲ دقیقه·۷ ماه پیش

پردازش زبان فارسی در پایتون با کتابخانهٔ shekar

کتابخانهٔ shekar یک ابزار متن‌باز پایتونی برای پردازش زبان طبیعی فارسی است
کتابخانهٔ shekar یک ابزار متن‌باز پایتونی برای پردازش زبان طبیعی فارسی است


کتابخانهٔ shekar یک ابزار متن‌باز پایتونی برای پردازش زبان طبیعی فارسی است که با الهام از داستان معروف «فارسی شِکَر است» ساخته شده است. هدف این کتابخانه فراهم‌کردن بستری ماژولار، ساده و قابل توسعه برای پژوهشگران، توسعه‌دهندگان و علاقه‌مندان به NLP فارسی است.

نصب و استفاده

برای نصب کتابخانه از دستور زیر استفاده کنید:

pip install shekar

نرمال‌سازی متون فارسی

نرمال‌سازی یکی از مهم‌ترین مراحل پیش‌پردازش است که شامل تبدیل نویسه‌های عربی به فارسی، حذف علائم نگارشی اضافی، حذف شکلک‌ها، حذف تگ‌های HTML، یکنواخت‌سازی فاصله‌ها و... می‌باشد. در shekar می‌توانید از کلاس Normalizer برای این منظور استفاده کنید:

from shekar import Normalizer normalizer = Normalizer() text = &quotۿدف ما ػمګ بۀ ێڪډيڱڕ أښټ&quot print(normalizer(text))

خروجی: "هدف ما کمک به یکدیگر است"

در این کلاس همچنین قابلیت استفاده به صورت Decorator نیز پشتیبانی می‌شود:

@normalizer.on_args([&quottext&quot]) def process_text(text): return text print(process_text(&quotتو را من چشم👀 در راهم!&quot))

خروجی: "تو را من چشم در راهم"

ساخت Pipeline سفارشی

اگر مایل باشید مراحل پیش‌پردازش را به‌صورت دلخواه طراحی کنید، می‌توانید از کلاس Pipeline استفاده کرده و ابزارهای shekar.preprocessing را به‌دلخواه ترکیب کنید:

from shekar import Pipeline from shekar.preprocessing import EmojiRemover, PunctuationRemover pipeline = Pipeline([ (&quotremoveEmoji&quot, EmojiRemover()), (&quotremovePunct&quot, PunctuationRemover() ]) text = &quotپرنده‌های 🐔 قفسی، عادت دارن به بی‌کسی!&quot print(pipeline(text))

خروجی: "پرنده‌های قفسی عادت دارن به بی‌کسی"

ابزارهای پیش‌پردازش موجود در Shekar

برخی از کلاس‌های مهم در shekar.preprocessing عبارتند از:

SpacingStandardizer اصلاح فاصله‌ها و حذف فاصله‌های اضافی

AlphabetNormalizerیکنواخت‌سازی نویسه‌های فارسی/عربی

NumericNormalizerتبدیل اعداد به فرمت فارسی

PunctuationNormalizerنرمال‌سازی علائم نگارشی

EmojiRemoverحذف ایموجی‌ها

EmailMasker / URLMaskerحذف یا پنهان‌سازی ایمیل‌ها و لینک‌ها

DiacriticsRemoverحذف حرکات و اعراب از متن

StopwordRemoverحذف کلمات ایست فارسی (stopwords)

NonPersianRemoverحذف نویسه‌های غیر فارسی

HTMLTagRemoverحذف تگ‌های HTML

استفاده به صورت Dcorator

@pipeline.on_args(&quottext&quot) def process(text): return text print(process(&quotتو را من چشم👀 در راهم!&quot))

خروجی: "تو را من چشم در راهم"

توکن‌سازی جملات

برای تقسیم متن به جمله‌ها می‌توانید از SentenceTokenizer استفاده کنید:

from shekar.tokenizers import SentenceTokenizer text = &quotهدف ما کمک به یکدیگر است! ما می‌توانیم با هم کار کنیم.&quot tokenizer = SentenceTokenizer() sentences = tokenizer.tokenize(text) for sentence in sentences: print(sentence)

استخراج بردارهای واژه (Word Embeddings)

کتابخانه‌ی Shekar از مدل‌های FastText پیش‌آموزش‌دیده برای متون فارسی پشتیبانی می‌کند. برای استفاده از آن‌ها کافیست از کلاس Embedder استفاده کنید:

from shekar import Embedder embedder = Embedder(model_name=&quotfasttext-d100-w10-cbow-blogs&quot)

دریافت بردار یک واژه

vector = embedder[&quotکتاب&quot]

یافتن کلمات مشابه

similar_words = embedder.most_similar(&quotکتاب&quot, topn=5) print(similar_words)

مدل‌های پشتیبانی‌شده شامل موارد زیر هستند:

  • fasttext-d300-w5-cbow-naab (آموزش‌دیده روی پیکره Naab)
  • fasttext-d100-w10-cbow-blogs (آموزش‌دیده روی وبلاگ‌های فارسی)
پردازش زبان
۲
۰
آرسام فرهمند
آرسام فرهمند
شاید از این پست‌ها خوشتان بیاید