شباهت متن

سنجش شباهت متن: فاصله اقلیدسی، ضریب Jaccard و شباهت کسینوسی — قلب جستجو و سیستم توصیه‌گر

چرا شباهت متن؟

خیلی از مسائل NLP به یک سؤال ختم می‌شوند: «این دو متن چقدر شبیه هم‌اند؟»

روش ۱: ضریب Jaccard (مبتنی بر مجموعه)

ساده‌ترین روش — اشتراک تقسیم بر اجتماع:

Jaccard = |A ∩ B| / |A ∪ B|

«گوشی خوب» و «گوشی عالی»: اشتراک {گوشی}، اجتماع {گوشی، خوب، عالی} ← 1/3 ≈ 0.33

مزیت: ساده و سریع | عیب: تکرار و وزن را نمی‌بیند

روش ۲: فاصله اقلیدسی

فاصله مستقیم دو بردار BoW/TF-IDF. مشکل: به طول متن حساس است — متن بلند فاصله زیاد حتی اگر موضوع یکی باشد!

روش ۳: شباهت کسینوسی — پادشاه NLP کلاسیک

زاویه بین دو بردار به‌جای فاصله:

cos(θ) = (A·B) / (|A| × |B|)

مزیت کلیدی: فقط به «جهت» بردار توجه دارد نه اندازه‌اش — دو متن درباره یک موضوع با طول متفاوت، شبیه بالا می‌گیرند!

مقایسه روش‌ها

روشورودیمزیتعیب
Jaccardمجموعه کلماتسادهوزن و تکرار نادیده
اقلیدسیبردارشهودیحساس به طول
کسینوسیبردارمستقل از طول ✓—

ترکیب برنده: TF-IDF + کسینوسی

رایج‌ترین پایپ‌لاین جستجوی معنایی کلاسیک:

  1. همه اسناد + کوئری را با TF-IDF برداری کن
  2. کسینوسی کوئری با هر سند را حساب کن
  3. مرتب‌سازی نزولی ← نتایج جستجو!
نکته: شباهت کسینوسی + بردارهای معنایی (Embedding) = جستجوی معنایی مدرن؛ همان تکنولوژی پشت جستجوی «معنی» به‌جای «کلمه» در محصولات امروز!

جمع‌بندی

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

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