مدل زبانی 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 — کمی احتمال از حالت‌های دیده‌شده به دیده‌نشده‌ها بدهیم:

مزایا و محدودیت‌ها

مزیتمحدودیت
ساده و سریعبافت کوتاه (فقط n−1 کلمه!)
بدون GPUداده صفر و sparsity
قابل تفسیرn بزرگ = داده پراکنده‌تر!
baseline خوبفهم عمیق معنا ندارد
نکته: چرا n را بزرگ‌تر نکنیم (مثلاً ۱۰)؟ چون 10-gram های معتبر تقریباً هیچ‌وقت تکرار نمی‌شوند — هر کدام یک‌بار! این پارادوکس sparsity است. مدل‌های عصبی این محدودیت را با «فشرده‌سازی بافت» حل کردند.

جمع‌بندی

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

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