Это краткое изложение и основные выводы из исходного сообщения LinkedIn о том, как NLP используется (по состоянию на 2019) при разработке своей системы поиска справки.

Постановка задачи:

По запросу пользователя извлеките из базы данных наиболее релевантную справочную статью.

Итерация 1: начальное решение

  1. Проиндексированы все справочные статьи (документы) в базе данных с помощью Lucene Index. Короче говоря, он создает инвертированный словарь, который сопоставляет термины со всеми документами, в которых он встречается.

2. Данный запрос используется для получения всех соответствующих документов (обращений) с использованием индексации Lucene.

3. Каждое попадание оценивается с помощью алгоритма BM25F, который учитывает структуру документа и присваивает наибольший вес обращениям в заголовке, затем нажимает Keywords, а затем Body и возвращает взвешенную оценку.

4. Возвращайте статьи с лучшими оценками.

Почему это не удалось

Поскольку система поиска документов основана на терминах (синтаксисе),не принимая во внимание семантику , ниже приведены два примеры случаев отказа:

Итерация 2: Окончательное решение

Шаг 1: Нормализация текста

«немедленная отмена моих премиум-аккаунтов» преобразована в «отмена премиум-аккаунта»

Шаг 2. Сопоставление запросов

Может случиться так, что нормализованный запрос не имеет общих слов со словами в статьях. Следовательно, каждый запрос сопоставляется с более репрезентативным запросом, чтобы заполнить пробел между терминологией пользователя и терминологией статьи.

Выполняется в следующие два шага:

  1. Группировка запросов.Запросы группируются на основе показателей сходства.

2. Анализ тем и оценка повторений: для каждого запроса в группе запросов вычисляется показатель повторения , и в качестве запросов повторений выбираются K лучших запросов.

sim(RQ, Q2) — сходство между необработанным запросом и другим запросом в группе.

sim(Q2, title) максимальное сходство между Q2 и одной из тем из заголовка (аналогично для тела)

Шаг 3: Классификация намерений

Запросы с длинным хвостом могут не иметь Rep Query, и в этом случае для классификации намерения запроса используется CNN.

Например: «Отмена вашей Премиум-подписки» и «Отмена или обновление Премиум-подписки, купленной на вашем устройстве Apple» считаются имеющими одно и то же намерение «отменить премиум».

Общий поток