🤖️ 聊天机器人——夫子
的「自然语言理解」模块。
夫子
聊天机器人有 7 个模块组成:
- fuzi-bot: 聊天界面模块,与用户进行交互。
- fuzi-bot-api: 聊天接口模块,与其他后端模块通信。
- fuzi-nlu: 自然语言处理模块,理解用户的问题。
- fuzi: 对话管理模块,推断用户的意图。
- fuzi-admin: 后台管理模块,管理机器人的设置。
- fuzi-admin-api: 后台管理接口,与其他后端模块通信。
- fuzi-mark: 数据标注模块,标注用户的问题。
常见地聊天机器人有两种:
- 闲聊型
open domain
- 任务型
task oriented
本项目属于第二种,即面向任务的聊天机器人。这类型机器人的常见应用是智能客服,目的是为了解决用户的明确需求。
上图为面向任务的聊天机器人的一般流程,该项目目前实现了第一部分的 NLU
功能,包含 Slot Filling
和 Intent Prediction
。
这里使用 RASA 开源的标注工具 RASA-NLU-Trainer 进行标注。
我自己部署了一份在线上,可以直接使用 。
标注完成后需要进行格式转化才能使用,这里以 /back/data/guotie.json
为例:
pip install rasa==2.6.3
cd fuzi-nlu/data
mkdir guotie
# rasa 暂时不支持从 json 直接转成 yaml,因此需要先转 md,再转 yaml
rasa data convert nlu -f md --data guotie.json --out ./guotie/nlu.md
rasa data convert nlu -f yaml --data ./guotie/nlu.md --out ./guotie/
rm ./guotie/nlu.md
mv ./guotie/nlu_converted.yml ./guotie/nlu.yml
# 生成 domain
python -m run.generate_domain_from_nlu --nlu ./data/guotie/nlu.yml --domain ./data/guotie/domain.yml
git clone https://github.com/Ailln/fuzi-nlu.git
cd fuzi-nlu
# 安装依赖
pip install -r requirements.txt
python -m run.server
git clone https://github.com/Ailln/fuzi-nlu.git
# in amd64
cd fuzi-nlu
# 打包
docker build -t fuzi-nlu:1.0.0 .
# 运行
docker run -d --restart=always --name fuzi-nlu -p 8081:8081 fuzi-nlu:1.0.0
# in arm64
cd fuzi-nlu
# 打包
docker build -t fuzi-nlu:1.0.0 -f deploy/arm64.Dockerfile .
# 运行
docker run -d --restart=always --name fuzi-nlu -p 8081:8081 fuzi-nlu:1.0.0
cd fuzi-nlu
# 准备好镜像
kubectl apply -f deploy/deployment.yaml
cd fuzi-nlu
# 训练
python -m run.train
# 测试
python -m run.test
pip install locust -U
locust -f test/qps_test.py -u 10 -r 2
# 打开 http://127.0.0.1:8089
- Tensorflow动态seq2seq使用总结(r1.3)
- Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling
- BERT for Joint Intent Classification and Slot Filling
- 从“连接”到“交互”—阿里巴巴智能对话交互实践及思考
- A Frustratingly Easy Approach for Joint Entity and Relation Extraction
- FewJoint: A Few-shot Learning Benchmark for Joint Language Understanding
请添加微信号:Ailln_
,备注「fuzi」,我邀请你进入交流群。