شباهت متن
سنجش شباهت متن: فاصله اقلیدسی، ضریب Jaccard و شباهت کسینوسی — قلب جستجو و سیستم توصیهگر
چرا شباهت متن؟
خیلی از مسائل NLP به یک سؤال ختم میشوند: «این دو متن چقدر شبیه هماند؟»
- جستجو: کدام سند به کوئری نزدیکتر است؟
- حذف تکراری: این خبر قبلاً منتشر شده؟
- پیشنهاددهی: مقالات مشابه این مقاله
- چتبات: کدام سؤال ذخیرهشده شبیه سؤال کاربر است؟
- گروهبندی: اخبار همموضوع
روش ۱: ضریب Jaccard (مبتنی بر مجموعه)
سادهترین روش — اشتراک تقسیم بر اجتماع:
Jaccard = |A ∩ B| / |A ∪ B|
«گوشی خوب» و «گوشی عالی»: اشتراک {گوشی}، اجتماع {گوشی، خوب، عالی} ← 1/3 ≈ 0.33
مزیت: ساده و سریع | عیب: تکرار و وزن را نمیبیند
روش ۲: فاصله اقلیدسی
فاصله مستقیم دو بردار BoW/TF-IDF. مشکل: به طول متن حساس است — متن بلند فاصله زیاد حتی اگر موضوع یکی باشد!
روش ۳: شباهت کسینوسی — پادشاه NLP کلاسیک
زاویه بین دو بردار بهجای فاصله:
cos(θ) = (A·B) / (|A| × |B|)
- cos = ۱: جهت یکسان (خیلی شبیه)
- cos = ۰: عمود (بیربط)
مزیت کلیدی: فقط به «جهت» بردار توجه دارد نه اندازهاش — دو متن درباره یک موضوع با طول متفاوت، شبیه بالا میگیرند!
مقایسه روشها
| روش | ورودی | مزیت | عیب |
|---|---|---|---|
| Jaccard | مجموعه کلمات | ساده | وزن و تکرار نادیده |
| اقلیدسی | بردار | شهودی | حساس به طول |
| کسینوسی | بردار | مستقل از طول ✓ | — |
ترکیب برنده: TF-IDF + کسینوسی
رایجترین پایپلاین جستجوی معنایی کلاسیک:
- همه اسناد + کوئری را با TF-IDF برداری کن
- کسینوسی کوئری با هر سند را حساب کن
- مرتبسازی نزولی ← نتایج جستجو!
نکته: شباهت کسینوسی + بردارهای معنایی (Embedding) = جستجوی معنایی مدرن؛ همان تکنولوژی پشت جستجوی «معنی» بهجای «کلمه» در محصولات امروز!
جمعبندی
- شباهت متن، قلب جستجو، توصیهگر و چتبات است
- Jaccard ساده؛ اقلیدسی حساس به طول؛ کسینوسی بهترین
- کسینوسی = زاویه بردارها؛ مستقل از طول متن
- TF-IDF + کسینوسی = پایپلاین طلایی کلاسیک
این مبحث بخشی از دوره آموزش کامل پردازش زبان طبیعی (NLP) است.