Чат-бот официанта для чая с молоком для китайцев. Если вы еще не знаете расу, обратитесь к mini rasa tutorial
ниже.
или прочитайте официальную документацию rasa
вам нужно скачать bert_chinese_model и сначала разархивировать его : chinese_L-12_H-768_A-12
git clone https://github.com/BI4O/rasa_milktea_chatbot.git
cd rasa_milktea_chatbot
pip install -r requirements.txt -i https://pypi.tuan.tsinghua.edu.cn/simple
запустить берт-сервер
bert-serving-start -model_dir path/to/chinese_L-12_H-768_A-12/ -num_worker=1
перейти к чаю с молоком
cd milktea
запустить сервер действий
rasa run actions
обучать модель
rasa train
поговори со своим чат-ботом
rasa shell
Вы можете заказать 3 разных продукта, можно добавить еще, чтобы смоделировать самостоятельно
и выберите 3 размера
- Создать новый проект
- Просмотр данных обучения NLU
- Определите конфигурацию модели и напишите первую историю
- Определите область действия этой истории.
- Модель обучения
- Проверьте помощник, который вы написали
Путь указывает на новую пустую папку cd path/to/a/blank/folder
Создайте новый проект rasa в этой папке rasa init --no-prompt
В папке будут созданы следующие файлы:
__init__.py | Пустой файл, используемый для позиционирования |
---|---|
действия.py | Используется для определения действий (код пользовательского сценария) |
config.yml | Настройка NLU и основных моделей |
учетные данные.yml | Подробности для подключения к другим серверам (не часто используются) |
данные/nlu.md | Мои собственные данные обучения NLU |
данные/stories.md | Мои истории на заказ |
домен.yml | Домен помощника — domian |
конечные точки.yml | Треки, связанные с сообщениями Facebook и т. д. (обычно не используются) |
модели/<метка времени>.tar.gz | Модель и файлы ее параметров |
cat data/nlu.md
Отображается следующим образом
# # intent:order
- [奶茶](type)
- [咖啡](type)
- 我想要一杯[奶茶](type)
- 要杯[奶茶](type)
- 有[奶茶](type)吗
- 有[奶茶](type)卖吗
- 想要一杯[咖啡](type)
- 要杯[咖啡](type)
- 有[咖啡](type)吗
- 我想要一杯[卡布奇诺](type)
- 要杯[卡布奇诺](type)
- [卡布奇诺](type)
# # intent:inform_size
- [中](size)
- [中](size)的
- [中](size)杯
- [中](size)杯吧
- 要[中](size)杯
- [大](size)
- [大](size)的
- [大](size)杯
- [大](size)杯吧
- 要[大](size)杯
- [特大](size)
- [特大](size)的
- [特大](size)杯
- [特大](size)杯吧
- 要[特大](size)杯
Intent представляет собой намерение и должен начинаться с ## и заканчиваться новой строкой. Например, здесь показаны два намерения: 1. Разместить заказ. 2. Сообщить о характеристиках чая с молоком. Вся риторика, которую могут использовать клиенты, должна быть размещена здесь и использована для модели nlu, чтобы научиться понимать, что такое чай. человек говорит.
[value](entity)
представляет сущность, а значение представляет конкретное значение сущности. После обучения модель nlu может возвращать переменные, подобные этой, в базовую модель: {"type":"奶茶","size":"大"}
, чтобы базовая модель могла реагировать соответствующим образом в зависимости от двух параметров type
и size
.
config.yml
будет определять предыдущий модуль NLU и основные элементы, которые будут использоваться в вашей модели. На этот раз мы используем компоненты, написанные экспертами. Также настоятельно рекомендуется всем перейти на https://github.com. /GaoQ1 /rasa_nlu_gqПосмотреть написанные истории
cat data/stories.md
# # order naicha
- order{ " type " : "奶茶" }
- slot{ " type " : "奶茶" }
- utter_ask_size
- inform_size{ " size " : "大" }
- slot{ " size " : "大" }
- utter_affirm
- confirm
- action_charge
- utter_goodbye
Композиция рассказа
##
указывает на название рассказа , описательное название.##
*
представляют намерение пользователя intent{"entity1": "value", "entity2": "value"}
-
начале указаны действия, выполняемые роботом.Информация о пользователе
Действие ацитонов
Есть два типа действий
utter_xxx может напрямую возвращать слова, на которые нужно ответить. Вам нужно только объяснить это в файле domain.yml, чтобы использовать его.
action_xxx может выполнять необходимые вам пользовательские операции. Помимо того, что он указан в домене.yml, его также необходимо добавить в файл aciton.py. Например, вы хотите иметь настраиваемое действие action_HelloWorld
Сначала добавьте это настраиваемое действие в файл domain.yml в разделе acitons.
actions:
- aciton_HelloWorld
Затем добавьте новый класс в файл acitons.py.
class YourCustomAction ( Action ):
def name ( self ):
# 这个返回的值必须和stories.md和domain.yml中说明的一致
return "action_HelloWorld"
def run ( self , dispatcher , tracker , domain ):
# 定义这个动作要执行的你想要的操作
# 比如我想在对话中返回给用户的是HellowWorld!
dispatcher . utter_message ( 'HelloWorld!' )
return []
cat domain.yml
intents:
- greet:
triggers: utter_greet
- goodbye:
triggers: utter_goodbye
- confirm
- deny
- order
- thanks
- inform_size
- unknown_intent
actions:
- utter_greet
- utter_ask_order_what
- utter_ask_size
entities:
- type
- size
slots:
type:
type: text
size:
type: text
templates:
utter_greet:
- text: "你好"
utter_ask_order_what:
- text: "想要喝点什么? "
utter_ask_size:
- text: "想要什么规格的呢?我们有中/大/特大杯"
в
Потому что в данном случае наше действие — это просто отправка слов пользователю в качестве ответа. Все эти простые действия начинаются с utter_
. Для ответа такого типа помощник должен выбрать утверждение в шаблонах. также можно определить больше. Дополнительные действия см. в разделе Custom Actions
Используйте следующую команду, чтобы автоматически проверить различия в домене/историях/NLU и переобучить модель. Обученная модель будет иметь отметку времени как новый rasa train
rasa shell