В настоящее время я создаю небольшую внутреннюю поисковую систему на основе Apache Lucene. Его цель проста - на основе некоторых ключевых слов он предложит несколько статей, написанных внутри нашей компании. Я использую довольно стандартную оценку TF-IDF в качестве базовой метрики и построил на ней собственный механизм оценки. Все это, кажется, работает отлично, за исключением некоторых угловых случаев, когда рейтинг кажется испорченным.
Поэтому я планирую добавить небольшую ссылку «Релевантно / Нерелевантно» на страницу результатов поиска, чтобы пользователи могли щелкнуть по одной из них в зависимости от их представления о том, должен ли этот результат быть включен в первую очередь.
Моя идея
- Относитесь к этим как к релевантным / не относящимся к делу как к меткам и создавайте обучающие данные.
- Используйте эти данные для обучения классификатора (такого как SVM)
- Включите эту модель в поисковую систему, т. Е. Каждый новый результат будет проходить через классификатор, и ему будет присвоен ярлык о том, является ли он релевантным или нет.
Этот подход кажется мне интуитивно понятным, но я не уверен, будет ли он работать на практике. У меня есть два конкретных вопроса:
- Какие функции я должен извлечь?
- Есть ли лучший способ интегрировать компонент машинного обучения в поисковую систему? Моя конечная цель - «изучить» функцию ранжирования на основе как бизнес-логики, так и отзывов пользователей.