Як машинне навчання включено в дизайн пошукових систем?


15

Зараз я будую невелику внутрішню пошукову систему на базі Apache Lucene. Призначення його просте - на основі деяких ключових слів він пропонує запропонувати деякі статті, написані всередині нашої компанії. Я використовую досить стандартний бал TF-IDF як базовий показник і над ним будую свій власний механізм балів. Все це, здається, працює чудово, за винятком деяких кутових випадків, коли рейтинг здається заплутаним.

Тож, що я планую робити, - це додати невелику відповідну / невідповідну посилання на сторінку результатів пошуку, щоб користувачі могли натиснути одну з тих, що залежать від їх сприйняття, чи повинен цей результат був включений в першу чергу.

Моя ідея

  1. Ставтесь до цих релевантних / невідповідних як до міток та створіть дані про навчання.
  2. Використовуйте ці дані для підготовки класифікатора (наприклад, SVM)
  3. Включіть цю модель в пошукову систему, тобто кожен новий результат буде проходити через класифікатор і йому буде присвоєно мітку на те, чи вона відповідна чи ні.

Цей підхід мені здається інтуїтивно зрозумілим, але я не впевнений, чи спрацює це на практиці. У мене є два конкретні питання:

  1. Які всі функції слід витягти?
  2. Чи є кращий спосіб інтегрувати компонент машинного навчання в пошукову систему? Моя остаточна мета - "вивчити" функцію ранжирування на основі як логіки бізнесу, так і відгуків користувачів.

4
Я робив щось подібне одного разу, і користувачі ненавидів це, тому я його вимкнув. Проблемою була поведінка користувачів. Користувачі адаптувались до слабких сторін результатів пошуку, змінюючи свої умови, і тоді вони продовжуватимуть їх повторне використання. Система реагувала на коригування рейтингу позицій, і ті, хто вибрав умови, почали давати різні результати. Це змусило користувачів. Навчання не означає, що воно розумніше;)
Реакційний

Ось реалізація, що використовує еластичний пошук та angularjs - також містить необхідні пояснення - machinelearningblogs.com/2016/12/12/…
Vivek Kalyanarangan

Відповіді:


15

(1) Які всі функції слід витягти?

По-перше, зрозумійте, що ви не класифікуєте документи. Ви класифікуєте (документ, запит) пари, тому вам слід отримати функції, які виражають, наскільки вони добре відповідають.

Стандартний підхід при навчанні ранжуванню полягає в запуску запиту проти різних налаштувань пошукової системи (наприклад, tf-idf, BM-25 тощо), а потім підготовка моделі на балах схожості, але для невеликого SE, що залежить від домену, у вас можуть бути такі функції, як

  • Для кожного терміна булеве значення, яке вказує, чи виникає термін і в запиті, і в документі. А може бути, не булевим, але вагою tf-idf тих термінів запиту, які насправді зустрічаються в документі.
  • Різні показники перекриття, такі як Жакард або Танімото.

(2) Чи є кращий спосіб інтегрувати компонент машинного навчання в пошукову систему? Моя остаточна мета - "вивчити" функцію ранжирування на основі як логіки бізнесу, так і відгуків користувачів.

Це дуже широке запитання, і відповідь залежить від того, скільки зусиль ви хочете вкласти. Перше вдосконалення, яке вам прийде в голову, - це те, що вам слід використовувати не судження бінарної релевантності класифікатора, а його функції дійсного значення, так що ви можете зробити рейтинг замість просто фільтрувати. Для SVM функцією рішення є підписана відстань до гіперплану. Хороші пакети машинного навчання мають інтерфейс для отримання цього значення.

Окрім цього, розгляньте попарно та впорядкованому навчанні ранжувати; що ви пропонуєте - це так званий точковий підхід. IIRC, попарно працює набагато краще на практиці. Причина полягає в тому, що при парному ранжуванні вам потрібно набагато менше кліків: замість того, щоб користувачі мітили документи як релевантні / нерелевантні, ви надаєте їм лише "відповідну" кнопку. Потім ви дізнаєтесь двійковий класифікатор на трійки (document1, document2, query), який повідомляє, що document1 є більш відповідним запиту, ніж document2, або навпаки. Коли користувач мітить, скажімо, документ 4 у рейтингу як релевантний, це дає шість зразків для навчання:

  • document4> document3
  • document4> document2
  • document4> document1
  • документ1 <документ4
  • документ2 <документ4
  • документ3 <документ4

тому ви отримуєте негативи безкоштовно.

(Це все лише пропозиції, я нічого не пробував. Я просто випадково працював у дослідницькій групі, де люди досліджували навчання, щоб оцінювати. Я один раз робив презентацію чужого документу для групи читання, можливо, слайди можуть бути корисними.)


+1 Дякую Це вдруге ви мені допомогли! Дозвольте мені взяти пару годин, щоб переварити це. :)
Легенда

4
Це відмінна відповідь, я просто хотів би запропонувати незначний виправлення. З точки зору ux, ви набагато більше шансів змусити користувачів отримувати результат за допомогою "нерелевантної" кнопки, ніж "відповідної" кнопки. Хто тримається за результат, коли вони знайшли те, що шукають? Вони набагато частіше натискають на кнопку, яка виглядає як "можливість скаржитися", коли вони не знайшли того, що хотіли, тому що вдосконалення системи в цей момент фактично вирівняне з їх поточною метою.
Racheet

4
tl; dr. Якщо ви збираєтесь використовувати лише один вхід, зробіть це "нерелевантним", люди швидше натискають на нього, коли вони засмучуються.
Рахіт

Який би був підхід "списку"? Також ти мав на увазі 3 або 6 прикладів безкоштовно? (Останні 3 здаються лише повторенням перших 3?)
макс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.