天气问答是NLU及DM领域的经典案例。
依赖准备
准备好对应的虚拟环境(略)
将对应的依赖下载下来
配置文件
vim config.yml
language: zh pipeline: - name: "nlp_mitie" model: "data/total_word_feature_extractor_zh.dat" - name: "tokenizer_jieba" - name: "ner_mitie" - name: "ner_synonyms" - name: "intent_featurizer_mitie" - name: "intent_classifier_sklearn"
数据准备
nlu.json
{
"rasa_nlu_data": {
"common_examples": [
{
"intent": "weather_address_date-time",
"entities": [
{
"start": 2,
"end": 4,
"value": "上海",
"entity": "address"
},
{
"start": 4,
"end": 6,
"value": "明天",
"entity": "date-time"
}
],
"text": "我要上海明天的天气"
},
...
stories.md
## simple path with greet
* greet
- utter_greet
* weather_address_date-time{"address": "上海", "date-time": "明天"}
- utter_working_on_it
- action_report_weather
- utter_report_weather
## simple path
* weather_address_date-time{"address": "上海", "date-time": "明天"}
- utter_working_on_it
- action_report_weather
- utter_report_weather
...
domain.yml
intents:
- greet
- goodbye
- weather
- weather_address_date-time
- weather_address
- weather_date-time
slots:
address:
type: text
date-time:
type: text
matches:
type: unfeaturized
entities:
- address
- date-time
actions:
- utter_greet
- utter_ask_address
- utter_ask_date-time
- utter_working_on_it
- action_report_weather
- utter_report_weather
- utter_goodbye
templates:
utter_greet:
- text: "你好,请说出需要提供天气预测服务的地点和时间"
utter_working_on_it:
- text: "正在查询中,请稍后 ..."
utter_goodbye:
- text: "再见!"
utter_ask_address:
- text: "哪里呢?"
utter_ask_date-time:
- text: "什么时候?"
utter_report_weather:
- text: "{matches}"
utter_default:
- text: "系统不明白您说的话"
配置endpoints.yml
action_endpoint: url: "http://localhost:5055/webhook"
运行
生成模型
rasa train
运行action服务
git clone https://github.com/howl-anderson/WeatherBot_Action
pip3 install -r requirements.txt
python3 -m rasa_core_sdk.endpoint –actions bot

使用restapi访问
import json
import secrets
import requests
def post(url, data=None):
data = json.dumps(data, ensure_ascii=False)
data = data.encode(encoding="utf-8")
r = requests.post(url=url, data=data)
r = json.loads(r.text)
return r
sender = secrets.token_urlsafe(16)
url = "http://localhost:5005/webhooks/rest/webhook"
while True:
message = input("Your input -> ")
data = {
"sender": sender,
"message": message
}
result = post(url, data)
for i in result:
print(i)
版权声明
本文标题:110-【RASA系列教程-4】-RASA做天气问答机器人
文章作者:盛领
发布时间:2020年09月26日 - 22:37:58
原始链接:http://blog.xiaoyuyu.net/post/b053a315.html
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
如您有任何商业合作或者授权方面的协商,请给我留言:sunsetxiao@126.com
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!