Intention/README.md

109 lines
9.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 意图识别和槽位抽取模型训练和推理
## 项目概述
本项目
1通过大模型提示词实现将用户的多轮问答还原出用户问题
2通过训练百度的ernie和uie模型实现意图识别和槽位抽取的目的。
3对抽取出的槽位信息进行标准化后再返回
意图识别:即根据用户问题 返回用户的意图类型
槽位抽取:即根据用户问题 返回用户的问题中的槽位信息对应api中的参数信息
多轮问题还原:即根据用户的多轮问题和回复 还原用户最终问题
## 文件结构
```
项目根目录/
├── api/
│ ├── logs/ # 运行日志
│ └── standard_data/ #标准化数据本地文件每天凌晨三天通过redis同步
│ └── main.py #主程序
│ └── config.py #配置文件
│ └── constants.py #常量定义文件
│ └── globalData.py #全局数据同步文件类
│ └── intentRecognition.py #意图识别
│ └── logger_util.py #写日志文件
│ └── slotRecognition.py #槽位抽取
│ └── utis.py #通用具体类
│ └── standard_test.py #单元测试
├── ernie/ #意图训练
│ ├── data/ #意图训练数据集
│ └── data.yaml #意图训练配置
│ └── train.py #意图训练脚本
├── uie/ #槽位抽取训练
│ └── data/ #槽位抽取训练数据集
│ └── train.py #槽位抽取训练脚本
├── generated_data/ #生成训练数据集目录
│ └── data/ #训练数据集的中间文件
│ │ └──
│ │ └──
│ └──output/
│ │ └── ernie/ #最终生成的用于意图训练的数据集
│ │ └── uie/ #最终生成的用于槽位抽取训练的数据集
│ └── generated.py #根据意图和槽位数据模版 向本级data目录里产生数据集文件
│ └── 合并数据.py #将本级data目录里的数据合并到output 的merged_data.json
│ └── 按比例分配ernie数据.py #将本级data目录里的数据合并到output 的merged_data.json 按比例抽取意图训练数据集到output/ernie
│ └── 按比例分配uie数据.py #将本级data目录里的数据合并到output 的merged_data.json 按比例抽取意图训练数据集到output/uie
```
注意第一次训练在联网的情况下不需要提前下载模型ernie和uie模型到服务器
## 项目接口
意图识别和槽位抽取api在下面两个api的功能基础上增加了多轮问题的还原和槽位标准化
POSThttp://192.168.0.37:18074/agent
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"送一分公司"},{"role":"assistant","content":"送电一分公司第一项目管理部金上风险等级为2级的有0项3级的有0项4级的有1项5级的有0项有1项作业计划"},{"role":"user","content":"今天有多少项作业计划"},{"role":"assistant","content":"2025-04-25 公司风险等级为2级的有15项3级的有144项4级的有262项5级的有0项有421项作业计划"},{"role":"user","content":"具体作业计划是什么"}]}
意图识别 api
POSThttp://192.168.0.37:18074/intent_reco
Body:{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750","text":"打开众兴-草庙乡牵引站220kV电缆线路工程土建部分(PROJ-2023-0328)一般跨越施工措施"}
槽位抽取api
POSThttp://192.168.0.37:18074/slot_reco
Body:{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750","text":"今天芦集变电站有多少作业计划"}
## 多轮问题还原类实例
需要通过http://192.168.0.37:18074/agent 这个接口去实现多轮还原和意图及槽位的提取
### 追问类
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"今天有多少项作业计划"},{"role":"assistant","content":"2025-04-25公司一共有421项作业计划分别如下风险等级为2级的有15项3级的有144项4级的有262项5级的有0项"},{"role":"user","content":"作业内容"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"“送一分公司第一项目部金上今天有多少项作业计划"},{"role":"assistant","content":"今天送电一分公司第一项目管理部金上有21项作业计划"},{"role":"user","content":"班组详情呢"}]}
### 补充类
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"第10项目管理部特高压部门有多少作业计划"},{"role":"assistant","content":"非常抱歉,请问你想查询什么时间的日计划数量查询?"},{"role":"user","content":"今天"},{"role":"assistant","content":"请补充该项目部所属的分公司名称"},{"role":"user","content":"变电分公司"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"第10项目管理部特高压有多少作业计划"},{"role":"assistant","content":"非常抱歉,请问你想查询什么时间的日计划数量查询?"},{"role":"user","content":"今天"},{"role":"assistant","content":"请补充该项目部所属的分公司名称"},{"role":"user","content":"变电分公司"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"第一项目部有多少作业计划?"},{"role":"assistant","content":"非常抱歉,请问你想查询什么时间的日计划数量查询?"},{"role":"user","content":"今天的"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"第一项目部有多少作业计划?"},{"role":"assistant","content":"非常抱歉,请问你想查询什么时间的日计划数量查询?"},{"role":"user","content":"今天"},{"role":"assistant","content":"请补充该项目部所属的分公司名称"},{"role":"user","content":"送一分公司"}]}
### 序号词指代类
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"送一分公司第一项目部今天有多少作业计划"},{"role":"assistant","content":"您说的项目名可能是第1个 第一项目管理部金上第2个 第一项目管理部(天津),请确认您要选择哪一个?"},{"role":"user","content":"第二个"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"打开合州换流站摄像头"},{"role":"assistant","content":"您说的工程名可能是第1个合州±800千伏换流站电气安装A包(PROJ-2025-0056)第2个陕北-安徽±800千伏特高压直流输电工程合州换流站交流系统调试及特殊试验(PROJ-2025-0159)第3个合州±800千伏换流站工程大件运输工程(PROJ-2024-1194)第4个合州换流站-文都500千伏线路工程(PROJ-2024-1089)第5个合州±800kV换流站电气A包工程调试部分(PROJ-2025-0102)第6个陕北-安徽直流工程合州±800千伏换流站土建A包(PROJ-2024-0312)第7个文都-官山改接入合州换流站500千伏线路工程(PROJ-2024-1090),请确认您要选择哪一个?"},{"role":"user","content":"第1个"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"打开金牛紫蓬工程视频"},{"role":"assistant","content":" 您说的工程名可能是第1个金牛500kV变电站新建工程(PROJ-2024-0866)第2个换流站-金牛500kV线路工程(PROJ-2024-1249)第3个金牛-紫蓬500kV线路工程(PROJ-2023-0503)第4个郑蒲-金河口110kV线路工程(PROJ-2024-0223),请确认您要选择哪一个个?"},{"role":"user","content":"第3个"}]}
### 综合类(综合以上)
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"宋1分公司第一项目部今天有多少作业计划"},{"role":"assistant","content":"您说的项目名可能是第1个 第一项目管理部金上第2个 第2个</strong第一项目管理部天津请确认您要选择哪一个"},{"role":"user","content":"第1个"},{"role":"assistant","content":"2025-03-28 送电一分公司第一项目管理部金上有2项作业计划"},{"role":"user","content":"2项作业计划是什么"},{"role":"assistant","content":"今天送电一分公司第一项目管理部(金上)有1项作业计划:第1项:工程名称:金上-湖北线路工程(川12标)(PROJ-2023-0152),项目经理:姚永先,班组名称:李洋班组,班组人数:12工作负责人:李洋,安全监护员:张节艳,班组质检员:刘永远,特种作业人员:许龙彪,宋伟云,况旻伦,刘付金,杨博文,徐云孝,,一般作业人员:方友昌,朱刘文,吴怀胜,作业部位:2601~2864作业内容:验收消缺,风险等级:4级风险可能导致的后果:高处坠落、物体打击、触由8+2工况:无"},{"role":"user","content":"班组详情"}]}
{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750",
"messages":[{"role":"user","content":"第10项目管理部特高压部门有多少作业计划"},{"role":"assistant","content":"非常抱歉,请问你想查询什么时间的日计划数量查询?"},{"role":"user","content":"今天"},{"role":"assistant","content":"请补充该项目部所属的分公司名称"},{"role":"user","content":"变电分公司"},{"role":"assistant","content":"变电分公司第十项目管理部特高压有2项作业计划"},{"role":"user","content":"具体的作业计划内容"}]}