# 意图识别和槽位抽取模型训练和推理 ## 项目概述 本项目 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个: