Что такое Раса НЛУ?

Rasa - это инструмент диалогового ИИ с открытым исходным кодом. NLU в переводе с раса означает понимание естественного языка. Не путаете НЛП и НЛУ? Ну, NLP означает обработку естественного языка, а NLU - это сокращение от понимания естественного языка. Оба имеют общую цель - понять взаимодействие между естественным языком (например, английским) и компьютерным языком. Rasa NLU - это инструмент обработки естественного языка для классификации намерений, поиска ответов, извлечения сущностей и многого другого. Он специально используется для определения настроений, разговорных чат-ботов, распознавания именованных сущностей и определения цели предложения (намерения).

Цель

В этой статье мы собираемся построить модель классификации намерений, которая будет понимать заданные пользователем намерения и соответственно классифицировать предложения. Конвейер Rasa в основном разработан для понимания работы чат-ботов, но здесь мы настраиваем его, чтобы получить желаемый результат.

Предварительные требования и зависимости

  • Python 3.5
  • Раса_нлу -0.15.0
  • Rasa_core -0.14.4
  • Инструменты сборки Visual C ++
  • Node.js
  • Тензорпоток -1.13.1

Мы будем использовать конвейер тензорного потока, предоставленный Rasa.

Ссылка- https://github.com/RasaHQ/tutorial-tf-pipeline

Анатомия конвейера Tensorflow

  1. d ata / nlu.md: данные вашего обучения NLU.
  2. data / stories.md: ваши истории
  3. domain.yml: домен вашего ассистента.
  4. Readme. md: файл с инструкциями.
  5. config.yml: конфигурация ваших моделей NLU и Core.

config.yml включает следующие компоненты:

Конструктивная схема трубопровода

Создайте / отредактируйте файл уценки (data / nlu_data.md) и предоставьте образцы соответственно. Я дал четыре различных намерения относительно их образцов.

## intent: Запрос

- Привет, я хочу знать диапазон цен на стиральные машины, доступные в вашем магазине.
- Нужно ли мне регистрироваться на вашем веб-сайте для получения более подробной информации?
- Какова дата запуска вашего продукта xyz.
- Доброе утро, не могли бы вы обновить дело № как завершенное.
- Есть ли какие-либо улучшения по моему текущему продукту?

## intent: Предложение

- Улучшите светодиодную подсветку экрана.
- Команда доставки должна отслеживать клиентов, которых они доставляют.
- Клиенты должны получить сообщение в течение 2–3 дней с момента заказа, а не 5–7 дней.
- Срок гарантии должен быть увеличен с 12 до 18 месяцев.
- Предложения по дебетовым / кредитным картам могут быть доступны всем.

## intent: Удовлетворение

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

## intent: Проблемы

- Товар не доставлен. Это неприятно.
- Служба доставки не получает звонок. Как непрофессионально.
- Товар на нем вмятины. Я проинформировал, но не ответил. Дешёвое обслуживание.
- Не доволен процессом. Это слишком долго и утомительно.
- Товар отсутствует в корзине. Я добавил в корзину несколько часов назад. Это раздражает.

Пора тренироваться

python -m rasa_nlu_train -c config.yml — data data/nlu_data.md -o models — fixed_model_name nlu_model — project current — verbose

Тестирование классификатора

Мы передадим новый образец нашему парсеру, чтобы проверить нашу точность. Классификатор намерений порождает намерения с таким уровнем достоверности.

interpreter.parse("I don't like you product. take it back its cheap")

{'intent': {'name': 'Проблемы', 'уверенность': 0,7875019907951355},
'entity': [],
'intent_ranking': [{'name': 'Проблемы', 'доверие': 0,7875019907951355},
{'name': 'Удовлетворение', 'доверие': 0,3987600803375244},
{'name': 'Запрос', 'доверие': 0,0548376739025116},
{'name': 'Предложение', 'уверенность': 0,0}],
'text': мне не нравится ваш продукт. забрать его дешево}

interpreter.parse("I really like your product. It's nice and elegant")

{'intent': {'name': 'Удовлетворение', 'уверенность': 0,7504403591156006},
'entity': [],
'intent_ranking': [{'name': 'Удовлетворение', 'уверенность': 0,7504403591156006},
{'имя': 'запрос', 'уверенность': 0,43102625012397766},
{'имя': 'проблемы', 'уверенность': 0,29785239696502686},
{'name': 'Предложение', 'уверенность': 0,0}],
'text': мне очень нравится ваш продукт. Красиво и элегантно}

interpreter.parse("What is the date of  delivery?")

{'intent': {'name': 'Запрос', 'уверенность': 0.8536046743392944},
'entity': [],
'intent_ranking': [{'name': 'Запрос', 'уверенность': 0,8536046743392944},
{'имя': 'Проблемы', 'уверенность': 0,2455110251903534},
{'имя': 'Удовлетворение', 'уверенность': 0,16995489597320557},
{'name': 'Предложение', 'уверенность': 0,04869852960109711}],
'text': 'Какая дата доставки?'}

interpreter.parse("Try to improve service offerings")

{'intent': {'name': 'Предложение', 'уверенность': 0,6914837956428528},
'entity': [],
'intent_ranking': [{'name': 'Предложение', 'уверенность': 0,6914837956428528},
{'имя': 'запрос', 'уверенность': 0,3903597593307495},
{'имя': 'проблемы', 'уверенность': 0,2396610677242279},
{'name': 'Удовлетворенность', 'уверенность': 0,038475312292575836}],
'text': 'Попробуйте улучшить предлагаемые услуги'}

Я действительно надеюсь, что вам понравилось мое небольшое исследование того, как реализовать простой классификатор намерений с использованием конвейера тензорного потока Rasa. Посмотрите эту ссылку для кода.

Если у вас есть вопросы, свяжитесь с автором по адресу shubhamdeshmukh @ yahoo.in. Если вы увлечены наукой о данных / машинным обучением, пожалуйста, добавьте меня в LinkedIn.