توکن‌سازی (Tokenization)

توکن‌سازی: تقسیم متن به کلمات و جملات، چالش‌های فارسی (نیم‌فاصله، علائم) و پیاده‌سازی با split و regex

توکن‌سازی چیست؟

توکن‌سازی (Tokenization) اولین گام پردازش هر متن: تقسیم متن به واحدهای معنایی به نام توکن — معمولاً کلمات، اما گاهی جملات، زیرکلمات یا حتی کاراکترها.

همه تحلیل‌های بعدی (شمارش، بردار، مدل) روی توکن‌ها انجام می‌شود؛ پس کیفیت توکن‌سازی حیاتی است!

انواع توکن‌سازی

چرا split ساده کافی نیست؟

"قیمت: ۲۵۰,۰۰۰ تومان!" .split()
← ["قیمت:", "۲۵۰,۰۰۰", "تومان!"]

مشکلات: علائم چسبیده به کلمه، اعداد با جداکننده، نیم‌فاصله، مخفف‌ها («د.»)، ایمیل و URL. توکن‌ساز خوب باید این‌ها را هوشمندانه جدا کند.

چالش‌های خاص فارسی

توکن‌سازی جملات

جدا کردن جملات هم ساده نیست: نقطه پایان جمله است اما در «۳.۵» یا «د.» و «ایران‌سل.» نه! توکن‌سازهای حرفه‌ای این موارد را با قواعد و مدل‌های آماری تشخیص می‌دهند.

توکن‌سازی زیرکلمه‌ای — روش مدرن

مدل‌های امروز (GPT، BERT) از روش‌هایی مثل BPE (Byte Pair Encoding) استفاده می‌کنند: کلمات پرتکرار کامل و کلمات نادر به قطعات معنادار شکسته می‌شوند:

"نامعتبر" ← ["نام", "عتبر"]
"unhappiness" ← ["un", "happiness"]

مزیت: واژگان محدود (مثلاً ۳۰ هزار توکن) اما پوشش همه کلمات، حتی ندیده‌ها!

نکته: در پایتون، برای انگلیسی NLTK و spaCy و برای فارسی کتابخانه hazm توکن‌سازی آماده دارند. اما فهم منطق پشت آن‌ها (همین مبحث) مهارت اصلی شماست!

جمع‌بندی

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

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