ریشه‌یابی (Stemming و Lemmatization)

ریشه‌یابی کلمات: تفاوت Stemming (برش) و Lemmatization (ریشه دیکشنری) و پیاده‌سازی برای فارسی و انگلیسی

چرا ریشه‌یابی؟

«کتاب»، «کتاب‌ها»، «کتابی»، «کتابم» — برای انسان یک مفهوم‌اند اما برای ماشین ۴ کلمه متفاوت! ریشه‌یابی همه را به یک شکل واحد می‌رساند تا تحلیل‌ها دقیق‌تر و ابعاد کوچک‌تر شوند.

دو روش اصلی

۱. Stemming (ریشه‌یابی برشی)

برش مکانیکی پسوندها — سریع اما گاهی خشن:

"کتاب‌ها" ← "کتاب"     ✓
"می‌روم" ← "می‌رو"      ~ تقریبی
"studies" ← "studi"    ✗ کلمه واقعی نیست!

۲. Lemmatization (ریشه‌یابی دیکشنری)

پیدا کردن ریشه واقعی دیکشنری با توجه به نقش کلام — دقیق اما کندتر و نیازمند دانش زبانی:

"کتاب‌ها" ← "کتاب"      ✓
"better" ← "good"       ✓✓ ریشه واقعی!
"went" ← "go"           ✓✓ فعل نامنظم!

مقایسه

ویژگیStemmingLemmatization
روشبرش قاعده‌مند پسونددیکشنری + تحلیل نحوی
سرعتسریع ✓کندتر
دقتتقریبیدقیق ✓
خروجیممکن است کلمه واقعی نباشدهمیشه کلمه معتبر
وابستگیفقط قواعددیکشنری و POS
مناسب برایجستجو (سرعت مهم)تحلیل معنایی (دقت مهم)

چالش فارسی: صفت پیچیده

فارسی زبان تصریفی است — کلمات از ریشه + پیشوند + پسوند ساخته می‌شوند:

"می‌رفتند" = می + رفت + ند (زمان + ریشه + شخص/جمع)
"نمی‌توانستم" = ن + می + توان + است + م

ریشه‌یابی فارسی باید این ساختار لایه‌لایه را باز کند — کتابخانه hazm برای همین ساخته شده است.

کجا استفاده کنیم؟

نکته: ریشه‌یابی + حذف stopwords + نرمال‌سازی = سه‌گانه طلایی پیش‌پردازش کلاسیک. با این سه، متن فارسی شما برای BoW و TF-IDF آماده است!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل پردازش زبان طبیعی (NLP) است.

ابزارهای مرتبط