开源任务式问答机器人框架系列--Rasa
Rasa
rasa是一个开源的问答机器人框架,rasa可用于构建基于上下文的AI助手,也可用于构建闲聊机器人。
Rasa有两个主要模块:Rasa NLU和Rasa Core,Rasa NLU 用于对用户消息内容的语义理解,主要包括实体识别,意图识别;Rasa Core 用于对话管理(Dialogue management),记录多轮信息,跟踪对话状态。Rasa官方还提供了一套交互工具 RasaX 帮助用户提升和部署由Rasa框架构建的AI小助手和聊天机器人。
创建一个初始的Rasa项目。可在终端运行如下命令:
rasa init --no-prompt
init.py | an empty file that helps python find your actions |
---|---|
actions.py | an empty file that helps python find your actions |
config.yml ‘*’ | configuration of your NLU and Core models |
credentials.yml | details for connecting to other services |
data/nlu.md ‘*’ | your NLU training data |
data/stories.md ‘*’ | your stories |
domain.yml ‘*’ | your assistant’s domain |
endpoints.yml | details for connecting to channels like fb messenger |
models/.tar.gz | your initial model |
可以看到,一个完整的项目主要包括以上内容。最为重要的是带*号的文件,主要是需要我们定制的用以训练NLU模型和对话管理模型的数据。
以下分别介绍上述文件的主要内容。
data/nlu.md
Rasa NLU是一个开源的自然语言处理工具,其主要作用是识别用户的意图,以及用户消息内容所涉及的实体:
“我想查询广州今天的天气”
NLU将会解析成:
{
"intent": "search_weather",
"entities": {
"address" : "广州",
"date_time" : "今天"
}
}
也就是,识别出用户的意图为查询天气,识别的两个实体包括地点和时间,分别是广州和今天。也就是我们常说的填槽。nlu的训练数据在data/nlu.md文件,是以markdown编写的形式,易于理解,示例如下:
## intent:request_weather
- 帮我查下天气
- 天气怎么样
- 我想知道[明天](date_time)的天气
- 请问[北京](address)[今天]