ریشهیابی (Stemming و Lemmatization)
ریشهیابی کلمات: تفاوت Stemming (برش) و Lemmatization (ریشه دیکشنری) و پیادهسازی برای فارسی و انگلیسی
چرا ریشهیابی؟
«کتاب»، «کتابها»، «کتابی»، «کتابم» — برای انسان یک مفهوماند اما برای ماشین ۴ کلمه متفاوت! ریشهیابی همه را به یک شکل واحد میرساند تا تحلیلها دقیقتر و ابعاد کوچکتر شوند.
دو روش اصلی
۱. Stemming (ریشهیابی برشی)
برش مکانیکی پسوندها — سریع اما گاهی خشن:
"کتابها" ← "کتاب" ✓
"میروم" ← "میرو" ~ تقریبی
"studies" ← "studi" ✗ کلمه واقعی نیست!
۲. Lemmatization (ریشهیابی دیکشنری)
پیدا کردن ریشه واقعی دیکشنری با توجه به نقش کلام — دقیق اما کندتر و نیازمند دانش زبانی:
"کتابها" ← "کتاب" ✓
"better" ← "good" ✓✓ ریشه واقعی!
"went" ← "go" ✓✓ فعل نامنظم!
مقایسه
| ویژگی | Stemming | Lemmatization |
|---|---|---|
| روش | برش قاعدهمند پسوند | دیکشنری + تحلیل نحوی |
| سرعت | سریع ✓ | کندتر |
| دقت | تقریبی | دقیق ✓ |
| خروجی | ممکن است کلمه واقعی نباشد | همیشه کلمه معتبر |
| وابستگی | فقط قواعد | دیکشنری و POS |
| مناسب برای | جستجو (سرعت مهم) | تحلیل معنایی (دقت مهم) |
چالش فارسی: صفت پیچیده
فارسی زبان تصریفی است — کلمات از ریشه + پیشوند + پسوند ساخته میشوند:
"میرفتند" = می + رفت + ند (زمان + ریشه + شخص/جمع)
"نمیتوانستم" = ن + می + توان + است + م
ریشهیابی فارسی باید این ساختار لایهلایه را باز کند — کتابخانه hazm برای همین ساخته شده است.
کجا استفاده کنیم؟
- موتور جستجو: Stemming — کاربر «خرید» را جستجو میکند و «خریدم/خریدیم» هم پیدا شود
- تحلیل احساسات/موضوعی: Lemmatization — دقت معنایی مهم است
- مدلهای مدرن (BERT/GPT): هیچکدام! توکن زیرکلمهای خودش این مشکل را حل میکند
نکته: ریشهیابی + حذف stopwords + نرمالسازی = سهگانه طلایی پیشپردازش کلاسیک. با این سه، متن فارسی شما برای BoW و TF-IDF آماده است!
جمعبندی
- ریشهیابی، اشکال مختلف یک کلمه را یکسان میکند
- Stemming: برش سریع تقریبی | Lemmatization: ریشه دقیق دیکشنری
- فارسی تصریفی است — hazm ابزار آماده فارسی
- برای جستجو Stemming، برای معنا Lemmatization
این مبحث بخشی از دوره آموزش کامل پردازش زبان طبیعی (NLP) است.