9.7 KiB
意图识别和槽位抽取模型训练和推理
项目概述
本项目 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的功能基础上增加了多轮问题的还原和槽位标准化): POST:http://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: POST:http://192.168.0.37:18074/intent_reco Body:{"user_id":"3bb66776-1722-4c36-b14a-73dd210fe750","text":"打开众兴-草庙乡牵引站220kV电缆线路工程(土建部分)(PROJ-2023-0328)一般跨越施工措施"}
槽位抽取api: POST:http://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":"具体的作业计划内容"}]}