هزینه بالای جستجوی کلمات کلیدی

شکل ۱. جستجوی کلمات کلیدی
شکل ۱. جستجوی کلمات کلیدی
منتشر‌شده در: towardsdatascience به تاریخ ۸ می ۲۰۲۱
لینک منبع: The High Cost of Keyword Search

وقتی بیشتر دانشمندان کامپیوتر به بازیابی اطلاعات فکر می‌کنند، الگوریتم‌های کلمه کلیدی آماری مانند TF-IDF و BM25 احتمالا به ذهن می‌آیند. این موارد در سیستم‌های منبع باز مانند آپاچی لوسن و آپاچی سولر به کار می‌روند. نسخه‌های ابری جستجوی کلمات کلیدی از شرکت‌هایی مانند جستجوی الاستیتیک‌ها و آلگولیا در دسترس هستند.

چیزی که ممکن است ندانید این است که پیشرفت‌ها در پردازش زبان طبیعی (NLP)، به ویژه معرفی ترانسفورماتورها در سال ۲۰۱۷، طلیعه‌دار طعم جدیدی از بازیابی اطلاعات شده است که به طور متفاوت با عنوان بازیابی اطلاعات عصبی (IR برای مدت کوتاهی) و جستجوی معنایی شناخته می‌شود. ویژگی تعیین‌کننده این سیستم‌ها این است که آن‌ها از شبکه‌های عصبی برای درک زبان در سطحی عمیق‌تر از جستجوی کلمه کلیدی استفاده می‌کنند. این امر آن‌ها را قادر می‌سازد تا تنوع وسیع‌تری از محتوای مربوطه را نشان دهند، در‌حالی‌که نتایج را با دقت بیشتری نشان می‌دهند.

سیستم‌های IR عصبی در دوران کودکی خود هستند، و من یک مقدمه برای بازیابی اطلاعات عصبی توسط میترا و کراسول توصیه می‌کنم اگر علاقمند به کسب درک عمیق‌تر از این زمینه هستید. آمازون کندرا در اوایل سال 2010 تشکیل شد و مثال تبلیغاتی همچنین سیستمی بود در‌حالی‌که مایکروسافت سمنتیک سرچ در آوریل 2021 منتشر شد و ZIR Semantic Search نیز اخیرا منتشر شده است.

شاید مطالعه مقاله پلتفرم GitLab در مقابل GitHub: تفاوت‌ها و شباهت‌های اصلی برای شما مفید باشد.

اهداف

در ادامه این مقاله، ما یک تحقیق بر روی مجموعه کوچکی از بررسی‌های هتل‌ها انجام خواهیم داد. من از پلتفرم جستجوی معنایی ZIR استفاده خواهم کرد، زیرا برای ادغام آسان و مقرون‌به‌صرفه در محصولات SaaS و PaaS طراحی شده است، و توانایی منحصر به فردی برای فهرست کردن و جستجوی محتوا در چندین زبان دارد.

شما می‌توانید کد منبع را برای این برنامه آموزشی از گیت‌هاب در amin3141/zir-souffle دانلود کنید.

مجموعه‌ای از بازبینی‌های هتل

مجموعه داده OpinRank شامل مجموعه‌ای گسترده از بررسی‌های هتل از شهرهای بزرگ در سراسر جهان است. با توجه به این نسخه نمایشی، ما قصد داریم سه هتل مورد بررسی در سان‌فرانسیسکو را مورد بررسی قرار دهیم: هتل توسکان غربی، هتل وارف شیراتون فیشرمن، و هتل سنت فرانسیس وستین.

مجموعه داده دارای یک فرمت ساده از پیش تعیین‌شده با زبانه است. ستون اول تاریخ بررسی، ستون دوم عنوان، و ستون سوم متن واقعی است:

Nov 16 2009 The Prefect Hotel Have visited San Francisco several times and this…
Nov 15 2009 Great location and great hotel My friend and I…
Nov 13 2009 Perfect experience This hotel was perfect. It was a brilliant location…

برای شروع، هر بررسی را در سند خود Json جدا کرده و آن را به عنوان یک فایل جداگانه ذخیره می‌کنیم. ما نام هتل و تاریخ بررسی را به عنوان فراداده در نظر می‌گیریم (ZIR جستجوی معنایی فراداده‌ها را به طور خودکار با نتایج جستجو برمی‌گرداند.)

{
“documentId”: 1036995557631769528072025822232699890,
“metadataJson”: “{\”date\”: \”Apr 23 2005\”, \”hotel\”: \”best_western_tuscan_inn_fisherman_s_wharf_a_kimpton_hotel\”}”,
“section”: [
{
“text”: “We spent six nights at the Tuscan Inn and have nothing but rave reviews for this hotel! The location was perfect. Walking distance to Cable Cars,Wharf, Bus 47 and F Line. Great restaurant with a friendly staff. Everyone was pleasant and very helpful. Nice clean rooms and a spaciousbathroom. We are anxious to return!Mary and Jack from Scituate MA”
}
],
“title”: “Great Hotel”
}

شناسه سند عبارت است از murmur3 x64 128-bit hash بررسی کامل. هنگامی که نتایج جستجو بازگردانده می‌شوند، این ID شامل می‌شود، که به سیستم پرسوجو اجازه می‌دهد تا به راحتی سند کامل را بازیابی کند. برای تسهیل جستجو، برنامه opinrank2 json.py، که این منطق را اجرا می‌کند، همچنین یک پایگاه‌داده SQL Lite شامل تمام بازبینی‌ها در فایل‌ها ایجاد می‌کند، که با شناسه سند کلید‌دار شده است.

مستقل کردن داده‌ها

درست مانند سیستم‌های جستجوی کلمه کلیدی مانند Algolia و ElasticSearch، شما باید محتوایی را که می‌خواهید در پلتفرم جستجو کنید طوری فشار دهید که بتوان آن را ایندکس کرد. جستجوی معنایی ZIR API های مبتنی بر gRPC را برای انجام این کار، علاوه بر رابط کاربری مبتنی بر کشیدن و رها کردن برای پشتیبانی از نمونه‌سازی سریع فراهم می‌کند.

  1. وارد حساب شوید.
  2. از منوی سمت چپ برای رفتن به سرجوخه‌ها استفاده کنید و پیکره جدیدی به نام «بازبینی‌های هتل» ایجاد کنید. یک پیکره زبانی تنها مجموعه‌ای از اسناد و مدارک متنی نام گذاری شده‌است که بعدا می توان از آن‌ها پرس و جو کرد.
  3. روی مجموعه بازبینی‌های هتل کلیک کنید و باز کنید. پوشه حاوی اسناد Json را به داخل پیکره بکشید و رها کنید.
شکل ۲. وارد شدن به حساب کاربری و آپلود کردن نظرات مشتری.
شکل ۲. وارد شدن به حساب کاربری و آپلود کردن نظرات مشتری.

در عرض پنج تا ده دقیقه پس از اضافه شدن، این اسناد قابل جستجو خواهند بود. شما می‌توانید این موضوع را با اجرای یک پرس‌و‌جو بر روی زبانه رابط کاربری هوستد و بررسی کنید که نتایج در حال بازگشت هستند.

مطالعه مقاله به حداکثر رساندن سودآوری کسب‌وکار خود با پایتون توصیه می‌شود.

امنیت

از آنجا که تمام دسترسی به پلتفرم تصدیق‌شده است، ما به یک کاربر معتبر برای اتصال و اجرای پرسوجوها نیاز داریم. در حال حاضر، ما از جریان اعتبار مشتری OAuth ۲.۰ برای راحتی استفاده می‌کنیم. به طور معمول، شما باید تنها زمانی از این جریان استفاده کنید که مشتری در یک محیط مورد اعتماد در حال اجرا است و اعتبارنامه‌ها می‌توانند ایمن نگه داشته شوند، مانند یک سرور در حال اجرا.

شکل ۳. ایجاد یک مشتری برنامه کاربردی و اجازه دسترسی خواندن به مجموعه نظرات هتل.
شکل ۳. ایجاد یک مشتری برنامه کاربردی و اجازه دسترسی خواندن به مجموعه نظرات هتل.

با استفاده از منوی سمت چپ، بر روی تشخیص هویت App Client کلیک کرده، و بر روی دکمه «ایجاد برنامه مشتری» کلیک کنید.

  1. نامی به آن بدهید (به عنوان مثال hotels-cli)، نوع را بر روی متخصص مشتری تنظیم کرده، و هر نشانی اینترنتی را برای تماس مجدد و امضا وارد کنید (به عنوان مثال، https://ae.Zir.dev). به شناسه مشتری و راز مشتری توجه کنید، چون در هنگام برقراری ارتباط و در حال اجرا به آن‌ها نیاز خواهید داشت.
  2. بر روی پیکره کلیک کرده، بر روی تب Authorization کلیک کرده، و بر روی دکمه «Create Role» کلیک کنید. برنامه گیرنده‌ای را که در مرحله دوم ایجاد کرده‌اید انتخاب کرده و به آن امتیازات پرس‌و‌جو بر روی پیکره زبانی بدهید.

یک CLI جستجوی معنایی

رویکردهای عصبی به بازیابی اطلاعات حول محور مجازی‌سازی کلمات، جملات و پاراگراف‌ها می‌گردد. شبکه عصبی یک تابع ریاضی است که یک عبارت را به عنوان ورودی می‌گیرد و یک بردار با بعد بالا را به عنوان خروجی تولید می‌کند. این بردارها، معنای عبارت را به گونه‌ای نشان می‌دهند که عبارات با معنای مرتبط، ساختار هندسی را در فضای برداری به اشتراک می‌گذارند. این بردارها اغلب به عنوان تعبیه نامیده می‌شوند.

با توجه به این کیفیت انتزاعی، سیستم‌های عصبی نسبت به تلفیق‌های اشتباه و دیگر اشتباهات احتمالی که سیستم‌های کلمه کلیدی را از بین می‌برند، مقاوم هستند. در مقابل، سیستم‌های کلمه کلیدی باید به طور کلی حذف کلمه، ریشه کردن کلمه و اصلاح غلط‌های املایی را به منظور به دست آوردن نتایج خوب پیکربندی کنند.

برای ساده نگه داشتن برنامه آموزشی، ما یک مفسر خط فرمان پایتون مبتنی بر پایتون می‌سازیم که پرسوجوها را می‌پذیرد و نتایج تطابق بالا را از بررسی‌های مشتری که قبلا اضافه کردیم برمی‌گرداند. جستجوی معنایی ZIR اطلاعات زیر را در هر نتیجه باز می‌گرداند:

  1. شناسه و فراداده سند. مشتری از این اطلاعات برای پیوستن نتیجه به منبع اطلاعات اصلی و نمایش آن در متن استفاده می‌کند. ما از شناسه سند برای جستجوی بررسی کامل و نمایش آن استفاده خواهیم کرد.
  2. قطعه مربوطه. یک سند به طور کلی موضوعات بسیاری را پوشش می‌دهد، بنابراین نتیجه جستجو شامل بخشی است که به عنوان مرتبط‌ترین بخش شناسایی می‌شود. به عنوان یک قانون کلی، مفید است که هنگام نمایش این نکته به کاربران‌تان، کمی از متن اطراف را نمایش دهید.
  3. نمره. این نمره یک عدد واقعی است که با اطمینان در نتیجه جستجو مرتبط است. مهم‌تر اینکه، امتیاز یک احتمال کالیبره شده نیست، بنابراین باید با احتیاط تفسیر شود. با این حال، می‌توان با اطمینان از آن به عنوان -برای مدل‌های یادگرفته شده از ماشین پایین‌دست مانند ریرانکرز استفاده کرد.

من یک مشتری کامل را در مرکز hotels.py . پیاده‌سازی کرده‌ام. کد زیر نشان می‌دهد که چگونه نامه پرس‌و‌جو با استفاده از کتابخانه درخواست ارسال می‌شود.

ممکن است مطالعه مقاله ۳ ترفند پایتون پانداس برای تجزیه‌و‌تحلیل کارآمد داده‌ها برای شما مفید باشد.

بررسی جستجوی معنایی

در اصل Gf انیمیشنی در زیر یک جلسه جستجوی معنایی تعاملی را نشان می‌دهد. نتایج سوال اول، «اتاق‌ها بزرگ هستند»، نشان می‌دهند که جستجو معنای کلمه جادار را درک می‌کند، و بنابراین می‌تواند نتایجی مانند «تنها عیب، اندازه اتاق است» را برگرداند.

پرسش دوم در مورد «شام خوردن نزدیک» می‌پرسد، و جستجو قادر به بازگشت نتایج مربوطه بدون همپوشانی کلمه کلیدی است، مانند Alos [ sic ]، غذا در رستوران مجاور بسیار خوب بود!

شکل ۴. در حال اجرای سه پرسش از طریق مترجم خط فرمان hotels.py.
شکل ۴. در حال اجرای سه پرسش از طریق مترجم خط فرمان hotels.py.

در نهایت، سومین پرسش عمدا یک عبارت کلیدی، «بوفه صبحانه» را اشتباه می‌گیرد، و با این حال، جستجو نتایج را برای بوفه صبحانه و حتی بوفه صبح برمی‌گرداند!

نتیجه‌گیری

تحقیقات زیادی اهمیت ارتباط در جلب رضایت کاربران را مشخص کرده‌اند. به عنوان مثال، یک مطالعه در سال ۲۰۱۲ توسط مایکروسافت یک ارتباط علی بین ارتباط تخریب‌شده و کاهش طولانی‌مدت در تعامل کاربر با Bing Search را نشان داد. و گوگل از آلتا ویستا، لیکوس و دیگران با فراتر رفتن از کلمات کلیدی برای ترکیب اطلاعات در مورد ساختار لینک صفحات وب در هنگام رتبه‌بندی نتایج جستجو پیشی گرفت.

چه هدف شما بهبود تعامل کاربر باشد و چه شما به سادگی بخواهید به کاربران خود کمک کنید تا به سرعت مرتبط‌ترین اطلاعات را پیدا کنند، شما هزینه بالای جستجوی کلمه کلیدی را هر روز به شکل از دست رفته و نتایج جستجوی بی‌ربط پرداخت می‌کنید. کاربردهایی مانند تجارت الکترونیک، پشتیبانی مشتری، جستجوی سازمانی و کشف الکترونیکی قانونی همگی از ظهور فن‌آوری جستجوی معنایی بهره می‌برند که در حال تغییر چشم‌انداز بازیابی اطلاعات است.

این متن با استفاده از ربات مترجم مقالات دیتاساینس ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.