ОБНОВЛЕНИЕ 2020/11/01: доступен бесплатный тарифный план Botium! С Botium Box Mini вы сможете:

  • использовать несколько технологий чат-ботов
  • настроить автоматизацию тестирования за несколько минут
  • наслаждайтесь новым улучшенным пользовательским интерфейсом
  • получить преимущества размещенного бесплатного сервиса

Возьми на тест-драйв

Что такое матрица неточностей? Как создать и прочитать матрицу неточностей? Как рассчитать точность, отзывчивость и F1-Score для вашего движка NLU?

Эта серия статей представляет собой введение в важные показатели качества для вашего движка NLU и данных обучения вашего чат-бота. Мы сосредоточимся на практическом использовании представленных метрик, а не на математической и статистической подоплеке - для этого я добавлю ссылки на другие статьи.

Это часть 1 из серии статей Метрики качества данных обучения NLU / чат-ботов.

Для этой серии статей вы должны иметь представление о том, что такое NLU и NLP, а также о задействованном словаре (намерение, сущность, высказывание) и концепциях (разрешение намерений, уверенность в намерениях, примеры пользователей).

Почему важны показатели качества для NLU?

При обучении движка NLU для чат-бота всегда используется один и тот же подход:

  1. Вы пометили доступные обучающие данные (помеченные означают: вы знаете, какое намерение должно разрешить высказывание)
  2. Вы загружаете данные обучения в свой движок NLU
  3. Вы подтверждаете результат обучения
  4. Уточните данные обучения и повторяйте до тех пор, пока не будете удовлетворены.

Для шага 2 выбран инструмент Botium для автоматизации тренировочного процесса.



Для шага 3 одним из подходов могло бы быть выполнение некоторых ручных или автоматизированных тестов на движке NLU со специальным набором тестов, не используемым для обучения. Основной вопрос: оказал ли шаг 4, уточнение данных обучения, положительное или отрицательное влияние на производительность NLU? Сделал ли он мой NLU лучше или хуже в разрешении намерений?

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

Даже при работе с небольшим и средним проектом чат-бота с 30 намерениями и 70 пользовательскими примерами для каждого намерения существуют тысячи результатов тестов, которые необходимо проверить и сравнить с предыдущими циклами обучения, что невозможно, если полагаться на быстрые циклы обратной связи. Нам нужно довольно небольшое количество сопоставимых чисел (или показателей) - в лучшем случае ровно одно число - чтобы рассказать нам об общей производительности NLU и некоторых других числах. сообщая нам горячие точки, чтобы мы обратили внимание. Одним предложением:

Метрики качества позволяют сравнивать циклы обучения NLU и указывать на области, представляющие интерес.

Матрица замешательства

Матрица неточностей показывает и обзор прогнозируемого намерения и ожидаемого намерения. Он отвечает на такие вопросы, как «При отправке пользовательского примера X я ожидаю, что NLU предскажет намерение Y, что он на самом деле предсказал?».

Ожидаемые намерения отображаются в виде строк, прогнозируемые намерения - в виде столбцов. Примеры пользователей отправляются в механизм NLU, и значение ячейки для строки ожидаемого намерения и столбца прогнозируемого намерения увеличивается на 1. Таким образом, всякий раз, когда прогнозируемое и ожидаемое намерение совпадает, значение ячейки по диагонали увеличивается - это наши успешные тестовые случаи. Все остальные значения ячеек не по диагонали являются нашими неудачными тестовыми случаями.

Примеры

Вот небольшой отрывок из большой матрицы путаницы, рассчитанной для Сара, демо-бот Rasa:

Эта матрица позволяет вычитать такие утверждения:

  • Существует 53 (52 + 1) пользовательских примера для подтверждения намерения. Но для одного из них NLU вместо этого предсказал намерение enter_data.
  • NLU предсказал намерение ask_faq_platform для 21 (18 + 3) пользовательских примеров, но это ожидалось только в 18 из них, для остальных 3 ожидаемым намерением было contact_sales, так что предсказание было неверным.
  • Для намерения ask_faq_platform существует 19 (18 + 1) пользовательских примеров, но только 18 из них были распознаны NLU.
  • Для 38 пользовательских примеров намерение ask_howold было ожидаемым, и NLU предсказал его именно для этих 38 пользовательских примеров.

И из этих утверждений можно сделать несколько выводов:

  • Интенты ask_howold и how_to_get_started обучены идеально
  • Есть 3 пользовательских примера, в которых NLU предсказал ask_faq_platform, но тестовые данные ожидали намерения contact_sales - найдите 3 пользовательских примера и уточните данные обучения для них.
  • enter_data намерение было предсказано для 3 (1 + 1 + 1) примеров пользователей, где ожидалось другое намерение. С другой стороны, существует 682 пользовательских примера, правильно идентифицированных как enter_data, поэтому компромисс для этого намерения приемлем.

Точность, отзывчивость и оценка F1

Приведенные выше утверждения логически безупречны, но не полностью интуитивно понятны.

  • Как определить, нуждается ли пара намерений или намерений в доработке и дополнительном обучении?
  • Как на самом деле сравнить общую производительность NLU с предыдущим тренировочным циклом?
  • Как сравнить результативность наиболее важных намерений с предыдущим тренировочным циклом?
  • Как определить, достаточно ли обучающих данных для производственного использования?

Именно здесь вступает в игру статистическая концепция точности и полноты, а показатель F1 представляет собой компромисс между ними.

Вы можете найти подробности в Википедии, эта статья даст лишь приблизительный обзор.

Точность

В приведенном выше примере NLU распознал намерение ask_faq_platform для 21 (18 + 3) пользовательских примеров. Для 3 из них ожидаемое намерение было другим намерением, поэтому 3 из 21 прогноза неверны. Точность составляет ~ 0,85 (18/21), количество правильных прогнозов для намерения ask_faq_platform делится на общее количество прогнозов для намерения ask_faq_platform.

Вопрос, на который отвечает показатель точности: сколько предсказаний намерения верны?

Напоминание / Чувствительность

В приведенном выше примере у нас есть 121 (1 + 117 + 3) пользовательских примера, поскольку мы ожидаем намерения contact_sales. NLU предсказал намерение contact_sales только для 117 примеров пользователей. Отзыв составляет ~ 0,97 (117/121), количество правильных прогнозов для намерения contact_sales делится на общее количество ожиданий для намерения contact_sales.

Вопрос, на который отвечает показатель отзыва: сколько намерений правильно предсказано?

Точность против отзыва - F1-Score

Хотя эти двое звучат примерно одинаково, это не так. Фактически, невозможно оценить производительность NLU только с помощью одного из этих двух показателей.

Опять же, из приведенного выше примера:

  • Намерение contact_sales было предсказано 117 раз, и 117 из предсказаний верны. Уровень точности равен 1,0, идеально.
  • Есть еще 4 пользовательских примера, для которых NLU предсказал другое намерение. Скорость отзыва составляет ~ 0,97, что неплохо, но не идеально.

Теоретически можно получить идеальную точность, сделав очень мало прогнозов для намерения (например, установив уровень достоверности очень высоким). Но скорость отзыва в этом случае резко снизится, поскольку NLU во многих случаях не делает прогнозов (или делает неверный прогноз).

С другой стороны, можно получить идеальную скорость отзыва для намерения, сопоставив КАЖДЫЙ пример пользователя с этим намерением. Точность будет очень низкой, чем.

Компромисс между отзывом и точностью называется F1-Score, который представляет собой среднее гармоническое значение между ними. Наиболее важно то, что F1-Score - это сопоставимая метрика для измерения воздействия обучения NLU. Практическое правило (с некоторыми исключениями):

Увеличение F1-Score означает увеличение производительности NLU, уменьшение F1-Score означает снижение производительности NLU в ваших тестовых данных.

F1-Score 0,95 обычно является хорошим значением, что означает, что механизм NLU довольно хорошо работает с вашими тестовыми данными.

F1-Score 1.0 означает, что все ваши тестовые данные идеально обрабатываются вашим NLU, идеальная производительность NLU. Это может быть приятно для регрессионного тестирования, но обычно это признак переобучения - тема для другой статьи.

Автоматический расчет точности / отзыва / оценки F1 и создание матрицы неточностей

Botium - это Selenium для чат-ботов, идеальный выбор для автоматизированного обучения и тестирования любого из поддерживаемых движков NLU:

  • IBM Watson
  • Google Dialogflow
  • Microsoft LUIS
  • Amazon Lex
  • SAP Conversational AI
  • Wit.ai
  • Раса
  • Ботпресс
  • Пользовательские конечные точки HTTP / JSON
  • И многое другое…

Botium Box записывает все тестовые данные и рассчитывает для вас важную аналитику НЛП.

Помимо матрицы недоразумений, включая отзыв, точность и оценку F1 (см. Снимки экрана в этой статье), вы также получаете полный список результатов теста, показывающий все ваши высказывания с ожидаемым и прогнозируемым намерением и уверенностью в простом списке Excel.

Проведите тест-драйв Botium Box сегодня - начните с бесплатной версии Mini Edition, мы будем рады услышать от вас, если вы сочтете ее полезной!

Ищем участников

Пожалуйста, примите участие в сообществе Botium, чтобы развивать чат-ботов! Внося свой вклад, вы помогаете повысить качество чат-ботов во всем мире, что приведет к увеличению признания конечных пользователей, что снова приведет к развитию вашего собственного чат-бота! Начать здесь:

Https://github.com/codeforequity-at/botium-core