
کتابخانهٔ shekar یک ابزار متنباز پایتونی برای پردازش زبان طبیعی فارسی است که با الهام از داستان معروف «فارسی شِکَر است» ساخته شده است. هدف این کتابخانه فراهمکردن بستری ماژولار، ساده و قابل توسعه برای پژوهشگران، توسعهدهندگان و علاقهمندان به NLP فارسی است.
برای نصب کتابخانه از دستور زیر استفاده کنید:
pip install shekar
نرمالسازی یکی از مهمترین مراحل پیشپردازش است که شامل تبدیل نویسههای عربی به فارسی، حذف علائم نگارشی اضافی، حذف شکلکها، حذف تگهای HTML، یکنواختسازی فاصلهها و... میباشد. در shekar میتوانید از کلاس Normalizer برای این منظور استفاده کنید:
from shekar import Normalizer normalizer = Normalizer() text = "ۿدف ما ػمګ بۀ ێڪډيڱڕ أښټ" print(normalizer(text))
خروجی: "هدف ما کمک به یکدیگر است"
در این کلاس همچنین قابلیت استفاده به صورت Decorator نیز پشتیبانی میشود:
@normalizer.on_args(["text"]) def process_text(text): return text print(process_text("تو را من چشم👀 در راهم!"))
خروجی: "تو را من چشم در راهم"
اگر مایل باشید مراحل پیشپردازش را بهصورت دلخواه طراحی کنید، میتوانید از کلاس Pipeline استفاده کرده و ابزارهای shekar.preprocessing را بهدلخواه ترکیب کنید:
from shekar import Pipeline from shekar.preprocessing import EmojiRemover, PunctuationRemover pipeline = Pipeline([ ("removeEmoji", EmojiRemover()), ("removePunct", PunctuationRemover() ]) text = "پرندههای 🐔 قفسی، عادت دارن به بیکسی!" print(pipeline(text))
خروجی: "پرندههای قفسی عادت دارن به بیکسی"
برخی از کلاسهای مهم در shekar.preprocessing عبارتند از:
SpacingStandardizer اصلاح فاصلهها و حذف فاصلههای اضافی
AlphabetNormalizerیکنواختسازی نویسههای فارسی/عربی
NumericNormalizerتبدیل اعداد به فرمت فارسی
PunctuationNormalizerنرمالسازی علائم نگارشی
EmojiRemoverحذف ایموجیها
EmailMasker / URLMaskerحذف یا پنهانسازی ایمیلها و لینکها
DiacriticsRemoverحذف حرکات و اعراب از متن
StopwordRemoverحذف کلمات ایست فارسی (stopwords)
NonPersianRemoverحذف نویسههای غیر فارسی
HTMLTagRemoverحذف تگهای HTML
@pipeline.on_args("text") def process(text): return text print(process("تو را من چشم👀 در راهم!"))
خروجی: "تو را من چشم در راهم"
برای تقسیم متن به جملهها میتوانید از SentenceTokenizer استفاده کنید:
from shekar.tokenizers import SentenceTokenizer text = "هدف ما کمک به یکدیگر است! ما میتوانیم با هم کار کنیم." tokenizer = SentenceTokenizer() sentences = tokenizer.tokenize(text) for sentence in sentences: print(sentence)
کتابخانهی Shekar از مدلهای FastText پیشآموزشدیده برای متون فارسی پشتیبانی میکند. برای استفاده از آنها کافیست از کلاس Embedder استفاده کنید:
from shekar import Embedder embedder = Embedder(model_name="fasttext-d100-w10-cbow-blogs")
دریافت بردار یک واژه
vector = embedder["کتاب"]
یافتن کلمات مشابه
similar_words = embedder.most_similar("کتاب", topn=5) print(similar_words)
مدلهای پشتیبانیشده شامل موارد زیر هستند:
fasttext-d300-w5-cbow-naab (آموزشدیده روی پیکره Naab)fasttext-d100-w10-cbow-blogs (آموزشدیده روی وبلاگهای فارسی)