مدل زبانی N-gram
مدل زبانی N-gram: پیشبینی با n-1 کلمه قبلی، تولید متن، مشکل داده صفر و smoothing
مدل N-gram چیست؟
مدل زبانی N-gram پیشبینی کلمه بعدی را با فرض سادهکننده انجام میدهد: فقط به n−1 کلمه قبلی نگاه کن!
Unigram: P(w) — بدون بافت
Bigram: P(w|قبلی) — یک کلمه قبل
Trigram: P(w|۲ قبلی) — دو کلمه قبل
مثلاً bigram: P(«کردم»|«خرید») = تعداد «خرید کردم» / تعداد «خرید»
آموزش = شمارش!
روی corpus بزرگ، همه n-gram ها را بشمار و احتمالها را بساز. ساده، سریع، بدون GPU!
مثال: پیشبینی با trigram
«هوای امروز خیلی ...»
P(«سرد»|خیلی) vs P(«زیبا»|خیلی) vs P(«کتاب»|خیلی)
← محتملترین انتخاب میشود
مشکل بزرگ: داده صفر (Sparsity)
زبان بینهایت ترکیب دارد! حتی trigram های معقولی که هرگز در corpus نیامدهاند:
- «فیل صورتی پرواز کرد» — معقول (در داستان!) اما شاید صفر بار دیده شده
- احتمال صفر = کل جمله صفر = فاجعه!
راهحل: Smoothing — کمی احتمال از حالتهای دیدهشده به دیدهنشدهها بدهیم:
- Laplace: همه شمارشها +۱
- Backoff: اگر trigram نبود، به bigram برگرد؛ اگر آن هم نبود، unigram
- Interpolation: ترکیب وزندار همه سطوح
مزایا و محدودیتها
| مزیت | محدودیت |
|---|---|
| ساده و سریع | بافت کوتاه (فقط n−1 کلمه!) |
| بدون GPU | داده صفر و sparsity |
| قابل تفسیر | n بزرگ = داده پراکندهتر! |
| baseline خوب | فهم عمیق معنا ندارد |
نکته: چرا n را بزرگتر نکنیم (مثلاً ۱۰)؟ چون 10-gram های معتبر تقریباً هیچوقت تکرار نمیشوند — هر کدام یکبار! این پارادوکس sparsity است. مدلهای عصبی این محدودیت را با «فشردهسازی بافت» حل کردند.
جمعبندی
- N-gram: پیشبینی با n−1 کلمه قبلی؛ آموزش = شمارش
- مشکل جدی: ترکیبهای دیدهنشده (احتمال صفر)
- راهحل: smoothing و backoff
- ساده اما محدود — پایه فهم مدلهای عصبی
این مبحث بخشی از دوره آموزش کامل پردازش زبان طبیعی (NLP) است.