Что такое Раса НЛУ?
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.
Анатомия конвейера Tensorflow
- d ata / nlu.md: данные вашего обучения NLU.
- data / stories.md: ваши истории
- domain.yml: домен вашего ассистента.
- Readme. md: файл с инструкциями.
- 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.