Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Иерархический классификатор хорошо подходит для решения следующих задач:

1. Клиентский сервис
У вас есть база знаний со 100 культурными объектами, например, Кремль, Большой театр и пр. Пользователи спрашивают “Как проехать в Кремль” или “Кремль”. Назовем это “Закрытый вопрос”.
На вопрос “Как проехать в Кремль” система не выдает уровень уверенности в ответе выше 80%, если не добавлять формулировку “Как проехать в Кремль” к конкретной статье в базе знаний. Т.к. объектов 100, то не хотелось бы добавлять по подобной формулировке к каждой статье в базе знаний с Закрытыми вопросами.
А если, кроме “Как проехать в …” возникают дополнительные “Открытые вопросы”: “Какой график работы …”, “Сколько стоит билет в …”, то задача создания и поддержки баз знаний становится еще более трудоемкой.
В этом случае, рекомендуется создание 2х баз знаний:
- “Закрытые вопросы” или “Информация об объектах” - с конкретной информацией об объектах
Режим поиска в этой базе знаний необходимо поставить “По полному тексту вопроса”

- “Открытые вопросы” - с набором сценариев (пример сценария ниже), которые будут обращаться к базе знаний “Закрытые вопросы” и получать точный ответ с достаточным уровнем уверенности.
Режим поиска в этой базе знаний необходимо поставить “По части текста вопроса”

2. Техническая поддержка (классификатор)
У вас есть 2 уровня для классификации обращений в техническую поддержку:
- 1ый уровень: Услуга
- 2ой уровень: Влияние на бизнес процесс
Конкретные виды услуг связаны с конкретными бизнес процессами.
Если посылать текстовый запрос для классификации отдельно к базе знаний “Услуги” и отдельно к базе знаний “Влияние на бизнес процесс”, то качество классификации будет ниже, чем если послать запрос сначала к “Услуги”, а затем, послать запрос к базе знаний с бизнес процессами, связанными только с конкретной услугой.
В этом случае, требуется разделение базы знаний “Влияние на бизнес процесс” на несколько баз знаний, согласно количеству “Услуг”, чтобы повысить качество классификации. А в базе знаний “Услуги” в статьях необходима реализация сценариев для дополнительной классификации по базам знаний “Влияние на бизнес процесс” (пример сценария ниже).

В данном случае, для обеих баз рекомендуемый режим поиска “По полному тексту вопроса”

Пример сценария:

// Токен для чтения баз знаний, брать из АФ в разделе Настройки - Общие - Параметры прямого подключения к базам знаний через API
установитьПеременную("autorizationToken", "XXX")+
// ID и токен базы знаний - классфикатора
установитьПеременную("kb_id", "XX")+
установитьПеременную("kb_token", "XXX")+
// Адрес API баз знаний - получить у администратора системы, ниже примеры:
установитьПеременную("kb_qna_enpoint", "https://xxx.autofaq.ai/q/api/v1/query")+
установитьПеременную("kb_crud_endpoint", "https://xxx.autofaq.ai/api/v1")+
// Требуемы минимальный уровень уверенности при классификации
установитьПеременную("serviceOtherScore", "0.2") +
вызвать.внешнийСервис("{kb_qna_enpoint}","POST").сЗаголовками(("Content-Type", "application/json"),("charset", "utf-8"),("AUTOFAQ-User-Token", "{autorizationToken}")).сТеломСообщения("{\"service_token\":\"{kb_token}\",\"service_id\":\"{kb_id}\",\"query\":\"{platformInMessageQuery}\"}").сохранитьРезультатКакСтроку("answer")+
// если запрос в базы знаний неудачный
если("{http_code} != 200").то(
  // добавление комментария в диалог и завершение сценария
  комментарий("При запросе на классификацию возникла ошибка {http_code}, текст ошибки {answer}")+
  комментарий("Обратитесь к администратору системы")+
  завершить
)+
комментарий("Запрос в классификатор прошел успешно.")+
выполнитьJs("""
  var answerParsed = JSON.parse(answer);
  var resultsLength = answerParsed.results.length;
  var exit = {'resultsLength':resultsLength};
  exit;
""") +
// Разбор ответа на запрос классификации
выполнитьJs("""
  var answerParsed = JSON.parse(answer);
  var resultsLength = answerParsed.results.length;
  var className = '';
  var classAnswer = '';
  var classIdFromClissifier = '';
  var classScore = 0.0;
  if (resultsLength > 0) {
    className = answerParsed.results[0]['name'];
    classIdFromClissifier = answerParsed.results[0]['document_id'].toString();
    classScore = answerParsed.results[0]['score'];
    classAnswer = answerParsed.results[0]['answer'];
  }
  var classScoreToPrint = Math.floor(classScore * 100).toString() + '%';
  var exit = {'className':className, 'classIdFromClissifier':classIdFromClissifier, 'classScore':classScore, 'classAnswer':classAnswer, 'classScoreToPrint':classScoreToPrint};
  exit;
""") +
комментарий("Результаты классификации: определен документ {className} с уверенностью {classScore} при установленном пороге уверенности {serviceOtherScore}")+
  • No labels