중국인을 위한 밀크티 웨이터 챗봇, 아직 라사를 모른다면 아래의 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 | 위치 지정에 사용되는 빈 파일 |
---|---|
actions.py | 작업을 정의하는 데 사용됩니다(사용자 정의 스크립트 코드). |
config.yml | NLU 및 핵심 모델 구성 |
자격 증명.yml | 다른 서버 연결에 대한 세부 정보(일반적으로 사용되지 않음) |
데이터/nlu.md | 내 사용자 정의 NLU 교육 데이터 |
데이터/stories.md | 내 맞춤 스토리 스토리 |
도메인.yml | 도우미의 도메인은 도미안입니다. |
엔드포인트.yml | FB 메시지 등에 연결된 트랙(일반적으로 사용되지 않음) |
모델/<타임스탬프>.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)杯
의도는 의도를 나타내며 ##으로 시작하고 줄 바꿈으로 끝나야 합니다. 예를 들어, 여기에는 두 가지 의도가 있습니다: 1. 주문하기, 2. 밀크티 사양 알리기 고객이 사용할 수 있는 모든 수사법은 여기에 배치되어야 하며 nlu 모델에서 밀크티가 무엇인지 이해하는 방법을 배우는 데 사용되어야 합니다. 사람이 말합니다.
[value](entity)
엔터티는 엔터티를 나타내고 value는 엔터티의 특정 값을 나타냅니다. 학습 후 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는 원하는 사용자 정의 작업을 수행할 수 있으며 domain.yml에 지정하는 것 외에도 aciton.py 파일에도 추가해야 합니다. 예를 들어 사용자 정의 작업인 action_HelloWorld
갖고 싶습니다.
먼저 이 사용자 정의 작업을 acitons 아래의 domain.yml에 추가하세요.
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