Это краткое изложение и основные выводы из исходного сообщения LinkedIn о том, как NLP используется (по состоянию на 2019) при разработке своей системы поиска справки.
Постановка задачи:
По запросу пользователя извлеките из базы данных наиболее релевантную справочную статью.
Итерация 1: начальное решение
- Проиндексированы все справочные статьи (документы) в базе данных с помощью Lucene Index. Короче говоря, он создает инвертированный словарь, который сопоставляет термины со всеми документами, в которых он встречается.
2. Данный запрос используется для получения всех соответствующих документов (обращений) с использованием индексации Lucene.
3. Каждое попадание оценивается с помощью алгоритма BM25F, который учитывает структуру документа и присваивает наибольший вес обращениям в заголовке, затем нажимает Keywords, а затем Body и возвращает взвешенную оценку.
4. Возвращайте статьи с лучшими оценками.
Почему это не удалось
Поскольку система поиска документов основана на терминах (синтаксисе),не принимая во внимание семантику , ниже приведены два примеры случаев отказа:
Итерация 2: Окончательное решение
Шаг 1: Нормализация текста
«немедленная отмена моих премиум-аккаунтов» преобразована в «отмена премиум-аккаунта»
Шаг 2. Сопоставление запросов
Может случиться так, что нормализованный запрос не имеет общих слов со словами в статьях. Следовательно, каждый запрос сопоставляется с более репрезентативным запросом, чтобы заполнить пробел между терминологией пользователя и терминологией статьи.
Выполняется в следующие два шага:
- Группировка запросов.Запросы группируются на основе показателей сходства.
2. Анализ тем и оценка повторений: для каждого запроса в группе запросов вычисляется показатель повторения , и в качестве запросов повторений выбираются K лучших запросов.
sim(RQ, Q2) — сходство между необработанным запросом и другим запросом в группе.
sim(Q2, title) максимальное сходство между Q2 и одной из тем из заголовка (аналогично для тела)
Шаг 3: Классификация намерений
Запросы с длинным хвостом могут не иметь Rep Query, и в этом случае для классификации намерения запроса используется CNN.
Например: «Отмена вашей Премиум-подписки» и «Отмена или обновление Премиум-подписки, купленной на вашем устройстве Apple» считаются имеющими одно и то же намерение «отменить премиум».