Intention/README.md

109 lines
9.7 KiB
Markdown
Raw Normal View History

# 意图识别和槽位抽取模型训练和推理
## 项目概述
本项目
2025-06-05 09:37:29 +08:00
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模型到服务器
## 项目接口
2025-06-05 09:37:29 +08:00
意图识别和槽位抽取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":"具体的作业计划内容"}]}