调整各阈值以满足标准化名的需要
This commit is contained in:
parent
b25317baef
commit
5ad9be92fe
42
api/main.py
42
api/main.py
|
|
@ -6,16 +6,16 @@ from pydantic import ValidationError
|
|||
|
||||
from intentRecognition import IntentRecognition
|
||||
from slotRecognition import SlotRecognition
|
||||
from utils import CheckResult, load_standard_name, generate_project_prompt, standardize_company_and_project, \
|
||||
load_standard_data, standardize_single_name, text_to_pinyin, multiple_standardize_single_name, \
|
||||
from utils import CheckResult, load_standard_name, generate_project_prompt, \
|
||||
load_standard_data, text_to_pinyin, multiple_standardize_single_name, \
|
||||
standardize_company_and_projectDepartment
|
||||
|
||||
from constants import PROJECT_NAME, PROJECT_DEPARTMENT, SIMILARITY_VALUE, IMPLEMENTATION_ORG, RISK_LEVEL
|
||||
from langchain_openai import OpenAIEmbeddings
|
||||
from config import *
|
||||
|
||||
MODEL_ERNIE_PATH = R"../ernie/output/checkpoint-12750"
|
||||
MODEL_UIE_PATH = R"../uie/output/checkpoint-12150"
|
||||
MODEL_ERNIE_PATH = R"../ernie/output/checkpoint-16470"
|
||||
MODEL_UIE_PATH = R"../uie/output/checkpoint-17290"
|
||||
|
||||
# 类别名称列表
|
||||
labels = [
|
||||
|
|
@ -273,7 +273,7 @@ def extract_multi_chat(messages):
|
|||
prompt = f'''你是一个智能助手,需要从以下对话记录中提取用户最近一次提问的完整问题:
|
||||
1. **仅关注用户的最后一个问题**,无论之前用户提问了什么,**不要受到之前用户问题的影响**。
|
||||
2. **如果用户的最后一个问题包含指代词**(如“作业计划分别是什么”、“具体是哪2项”、“刚刚那个故事”、“明天呢”、“合肥中心变工程呢”等),请结合用户上一次的问题和**AI(助手)回答**,补充信息,使问题成为完整的句子。
|
||||
3. **如果用户的最后一个问题包含“公司”这个字眼并且“公司”单独出现(如“公司今天有多少作业计划”)或者公司,工程,项目部等都不出现(如“今天有多少作业计划”),则不要参考对话历史进行补全,保持用户原始表达,不要替换为具体的公司名,工程名或项目部名等。**
|
||||
3. **如果用户的最后一个问题的主语是“公司”这个字眼(如“公司今天有多少四级风险作业计划”或“公司今天有多少4级风险的作业面”)则不要参考对话历史进行补全,保持用户原始表达,不要替换为具体的公司名,工程名或项目部名等。**
|
||||
4. **如果用户的最后一个问题本身是完整的**(即未使用上述2里的指代词),直接输出该问题,不要受前文影响。
|
||||
5. **如果问题缺少上下文信息**(如工程、项目部和时间等),仅在**最近的 AI 回答**提供了明确的上下文时进行补全,否则保持用户的原始输入,不要添加错误的补全信息。
|
||||
6. **如果用户的最新问题包含时间信息**(如“今天、明天、本周”),请确保其被保留,并且不改变时间表达方式。
|
||||
|
|
@ -281,7 +281,16 @@ def extract_multi_chat(messages):
|
|||
- **例如:用户问“具体是哪20项”时,最近 AI 回答是“今天送1分公司第二项目管理部有20项作业计划”,那么补全后的问题应为“今天送1分公司第二项目管理部具体是哪20项作业计划”**。
|
||||
7. **不要改写问题的主体和语序**,仅在需要时补全信息,避免误修改用户原始表达。
|
||||
8. 直接输出补全后的完整问题,不需要额外解释,也不需要输出“用户想了解的问题”这样的字眼。
|
||||
|
||||
9. **当用户的最后一条消息使用了“第一个”、“第1个”、“第2个”……等指代方式,且上一条 AI 回复中列出了多个选项(如多个工程名、公司名、项目部等),你需要:**
|
||||
- 精确提取用户所指的序号(如“第3个”指第3个工程名、公司名或项目部名);
|
||||
- 将该工程、公司或项目部的完整名称(包括括号中的编号)提取出来;
|
||||
- **用完整名称替换掉用户上一个问题中出现的简称或模糊表达,并保留用户问题中的其它部分(如时间、计划数、内容)不变**;
|
||||
- 示例:
|
||||
- 原始问题:`2025年南苑调相机检修(PROJ-2023-0179)今天有多少作业计划`
|
||||
- AI 回答:列出多个工程,第1个是`检修公司调相机一二次设备检修维护和改造服务框架-2025年南苑调相机检修(PROJ-2023-0179)`
|
||||
- 用户回复:“第1个”
|
||||
- 则最终提问应为:
|
||||
`检修公司调相机一二次设备检修维护和改造服务框架-2025年南苑调相机检修(PROJ-2023-0179)今天有多少作业计划`
|
||||
**对话记录:**
|
||||
{chat_history}
|
||||
|
||||
|
|
@ -442,7 +451,7 @@ def check_project_standard_slot(int_res, slot) -> tuple:
|
|||
for key, value in slot.items():
|
||||
if key == PROJECT_NAME:
|
||||
print(f"check_project_standard_slot original project : {slot[PROJECT_NAME]}")
|
||||
match_results = multiple_standardize_single_name(value, standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,30,70)
|
||||
match_results = multiple_standardize_single_name(value, standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,20,70)
|
||||
print(f"standardize_single_name 工程名 :result:{match_results}",flush=True)
|
||||
if match_results and len(match_results) == 1:
|
||||
slot[key] = match_results[0]
|
||||
|
|
@ -452,8 +461,8 @@ def check_project_standard_slot(int_res, slot) -> tuple:
|
|||
|
||||
if key == IMPLEMENTATION_ORG and slot[key] != "公司":
|
||||
print(f"check_project_standard_slot original company : {slot[IMPLEMENTATION_ORG]}")
|
||||
match_results = multiple_standardize_single_name(value, standard_company_name_list, standard_company_name_pinyin_list, pinyin_to_standard_company_name_map, lower_score=70, high_score=8, isArabicNumConv = True)
|
||||
print(f"standardize_single_name 分公司名: result:{match_results}",flush=True)
|
||||
match_results = multiple_standardize_single_name(value, standard_company_name_list, standard_company_name_pinyin_list, pinyin_to_standard_company_name_map, lower_score=50, high_score=80, isArabicNumConv = True)
|
||||
print(f"check_project_standard_slot 分公司名: result:{match_results}",flush=True)
|
||||
if match_results and len(match_results) == 1:
|
||||
slot[key] = match_results[0]
|
||||
else:
|
||||
|
|
@ -501,8 +510,8 @@ def check_project_standard_slot(int_res, slot) -> tuple:
|
|||
# result = standardize_single_name("阜阳阜四变电站工程", standard_project_name_list, 60, 75)
|
||||
# print(f"输入: 阜阳阜四变电站工程-> 输出: {result}")
|
||||
#
|
||||
# result = standardize_single_name("循环园变电站工程", standard_project_name_list, 60, 75)
|
||||
# print(f"输入: 循环园变电站工程-> 输出: {result}")
|
||||
# result = standardize_single_name("芦集变电站", standard_project_name_list, 20, 50)
|
||||
# print(f"输入: 芦集变电站-> 输出: {result}")
|
||||
#
|
||||
# match_results = multiple_standardize_single_name("宋轶分公司", standard_company_name_list, standard_company_name_pinyin_list, pinyin_to_standard_company_name_map,75,80)
|
||||
# print(f"standardize_pinyin_single_name 输入: 宋轶分公司-> 输出: {match_results}")
|
||||
|
|
@ -513,15 +522,18 @@ def check_project_standard_slot(int_res, slot) -> tuple:
|
|||
# match_results = multiple_standardize_single_name("淮南安丰", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||
# print(f"standardize_pinyin_single_name 输入: 淮南安丰工程-> 输出: {match_results}")
|
||||
#
|
||||
# match_results = multiple_standardize_single_name("合州蚊度工程", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,40,70)
|
||||
# print(f"standardize_pinyin_single_name 输入: 合州站工程-> 输出: {match_results}")
|
||||
# match_results = multiple_standardize_single_name("芦集变电站", standard_project_name_list, standard_project_name_pinyin_list, pinyin_to_standard_project_name_map,20,70)
|
||||
# print(f"standardize_pinyin_single_name 输入: 芦集变电站-> 输出: {match_results}")
|
||||
#
|
||||
# company, project = standardize_company_and_projectDepartment("宋轶分公司","第一项目部", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||
# company, project = standardize_company_and_projectDepartment("变电分公司","第一项目部", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||
# print(f"company:{company}, project:{project}")
|
||||
#
|
||||
# company, project = standardize_company_and_projectDepartment("变电分公司","第十一项目部", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||
# print(f"company:{company}, project:{project}")
|
||||
# company, project = standardize_company_and_projectDepartment("试验分公司","电缆班", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||
# print(f"company:{company}, project:{project}")
|
||||
# company, project = standardize_company_and_projectDepartment("宏源电力公司","第三项目部(六安线路)", standard_company_name_list, standard_company_program, pinyin_to_standard_company_name_map)
|
||||
# print(f"company:{company}, project:{project}")
|
||||
|
||||
#
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=18074, debug=True)
|
||||
|
|
|
|||
|
|
@ -1,137 +1,184 @@
|
|||
安庆四500kV变电站新建工程(PROJ-2024-0862)
|
||||
锦绣-常青π入中心变电站220kV架空线路工程(PROJ-2024-1206)
|
||||
渝北±800千伏换流站电气安装A包(调试部分)(PROJ-2024-1192)
|
||||
先锋-泉河π入安庆四变电站220kV线路工程(PROJ-2024-0834)
|
||||
安徽滁州护桥220kV变电站2号主变扩建工程(PROJ-2024-0821)
|
||||
合州士800千伏换流站电气安装A包(PROJ-2025-0056)
|
||||
金牛500kV变电站新建工程(PROJ-2024-0866)
|
||||
香涧-鹭岛500kV线路工程(淮河大跨越段)(PROJ-2024-0722)
|
||||
陶楼-广银(T接智迪)改接首业变电站110kV电缆线路工程(PROJ-2024-1233)
|
||||
国网北京检修公司2024年±500kV延庆换流站直流主设备及辅助设备不停电检修维护(PROJ-2024-0841)
|
||||
原鹿500千伏变电站220千伏谢桥电厂间隔扩建工程(PROJ-2024-1243)
|
||||
紫蓬500kV变电站间隔扩建工程(调试部分)(PROJ-2025-0129)
|
||||
安徽宿州萧砀500千伏变电站新建工程(建筑部分)(PROJ-2024-0822)
|
||||
蓼城-冯井π入尧塘变电站110kV线路工程(PROJ-2024-0897)
|
||||
谯城(亳三)-希夷220kV线路工程(PROJ-2024-1205)
|
||||
蚌埠潼河110kV变电站新建工程(PROJ-2024-0774)
|
||||
龙门500kV变电站间隔扩建工程(调试部分)(PROJ-2025-0043)
|
||||
富邦-秋浦T接窦桥路、火车站变电站110kV电缆线路工程(PROJ-2024-1221)
|
||||
卫田-陶楼T接首业变电站110kV电缆线路工程(PROJ-2024-1236)
|
||||
包河10kV玉龙18网架结构化工程施工(PROJ-2024-0464)
|
||||
松滋-安丰220kV线路工程(PROJ-2024-0438)
|
||||
塔岗-西梁山T接杨柳圩变电站110kV架空线路工程(PROJ-2024-0886)
|
||||
安庆武昌220kV变电站220kV江调间隔扩建工程(PROJ-2020-0465)
|
||||
富邦-秋浦T接龙门岭变电站、秋浦-龙门岭T接张洼变电站110kV电缆线路改接工程(PROJ-2024-1225)
|
||||
陶楼-广银(T接智迪)改接首业变电站110kV架空线路工程(PROJ-2024-1232)
|
||||
耿皇220kV变电站220kV焦楼间隔扩建工程(调试部分)(PROJ-2025-0134)
|
||||
灵泗-奎河220kV线路工程(PROJ-2024-0704)
|
||||
亳州孙刘 110kV 变电站新建工程(PROJ-2024-1026)
|
||||
香涧-梨花220kV线路工程(PROJ-2024-0442)
|
||||
池州二-蓉城220kV线路工程(PROJ-2025-0077)
|
||||
滁州九梓110kV变电站新建工程(PROJ-2024-1039)
|
||||
和襄高速机电工程总承包项目500kV-1100kV特高压电力线路迁建工程(PROJ-2024-1052)
|
||||
陶楼-下塘(T接亚迪)改接首业变电站110kV电缆线路工程(PROJ-2024-1235)
|
||||
绿雪-莲塘220kV线路工程(PROJ-2024-0274)
|
||||
合肥循环园220kV输变电工程(调试部分)(PROJ-2024-1075)
|
||||
当涂500kV变电站220kV万济间隔扩建工程(调试部分)(PROJ-2025-0105)
|
||||
金牛(220kV)-石岗π入金牛(500kV)变电站 220kV线路工程(PROJ-2024-0893)
|
||||
500kV古繁5731线芜黄高速公路芜湖改造工程(PROJ-2020-0313)
|
||||
钟阳-黄桥(T接头铺)改接潼河变电站110kV电缆线路工程(PROJ-2024-0440)
|
||||
香涧-梨花π入固镇南牵引站220kV线路工程(PROJ-2024-0441)
|
||||
香涧-鹭岛500kV线路工程(一般线路西段)(PROJ-2024-0723)
|
||||
安徽明生电力投资集团有限公司科创基地项目(一期)(PROJ-2024-1035)
|
||||
换流站-金牛500kV线路工程(PROJ-2024-1249)
|
||||
锦绣-常青π入中心变电站220kV电缆线路工程(PROJ-2024-1207)
|
||||
滁州堰陈110千伏变电站新建工程(PROJ-2024-0820)
|
||||
安徽河沥500kV变电站3号主变扩建工程(PROJ-2024-0297)
|
||||
显通-碱河π入凌云变电站220kV电缆线路工程(电缆敷设部分)(PROJ-2025-0038)
|
||||
安徽合肥包河区10kV王郢19开关网架结构优化工程施工(PROJ-2024-0461)
|
||||
福渡-日新π入潘坛变电站220kV线路工程(PROJ-2024-0302)
|
||||
黄栗树-儒林π入堰陈变电站110kV线路工程(PROJ-2024-0900)
|
||||
阜四-椿树220千伏线路工程(PROJ-2024-0705)
|
||||
±500kV宜华线#1485-#1491迁改工程(PROJ-2024-1253)
|
||||
国网安徽宣城供电公司500kV河沥变加装固定融冰装置(PROJ-2024-1061)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(PROJ-2024-0271)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(PROJ-2024-0271)
|
||||
安徽阜阳颍上县110kV半岗-润河35kV线路工程(PROJ-2022-0097)
|
||||
青峰开关站-挥手220千伏线路工程(PROJ-2025-0048)
|
||||
合肥长临河-义兴220kV架空线路工程(PROJ-2022-0112)
|
||||
安徽合肥义兴220kV变电站新建工程(PROJ-2022-0168)
|
||||
合肥长临河-义兴220kV电缆线路工程(PROJ-2022-0260)
|
||||
虹乡变-泗县东牵引站220kV线路工程(PROJ-2022-0440)
|
||||
蟠龙变-泗县东牵引站220kV线路工程(PROJ-2022-0441)
|
||||
安庆石化110kV变电站新建 工程(PROJ-2022-0459)
|
||||
濉淮5379濉洪5380线147#-148#跨阜淮铁路迁改工程(PROJ-2023-0169)
|
||||
合肥循环园220kV变电站新建工程(PROJ-2023-0224)
|
||||
金上-湖北线路工程(川12标)(PROJ-2023-0152)
|
||||
安徽淮北凌云220千伏变电站新建工程(PROJ-2023-0178)
|
||||
阜四500千伏变电站新建工程(建筑部分)(PROJ-2023-0201)
|
||||
科学城-长岗(双回T接空港)改接塘稍变电站110kV架空线路工程(PROJ-2023-0060)
|
||||
合新高铁蚌埠花园湖牵引站220kV外部供电工程(PROJ-2023-0153)
|
||||
检修公司调相机一二次设备检修维护和改造服务框架-2025年南苑调相机检修(PROJ-2023-0179)
|
||||
蚌埠大唐滁州电厂220kV送出工程(PROJ-2023-0154)
|
||||
安徽沙河变至原鹿变500kV双回线路开断接入阜四变工程(PROJ-2023-0183)
|
||||
国网安徽电力营销服务计量用房(PROJ-2023-0216)
|
||||
濉溪-凌云220kV架空线路工程(PROJ-2023-0238)
|
||||
显通-碱河π入凌云变电站220kV电缆线路工程(PROJ-2023-0237)
|
||||
濉溪-凌云220kV电缆线路工程(PROJ-2023-0239)
|
||||
合肥二电厂-彭郢π入长临河变电站220kV线路工程(PROJ-2023-0254)
|
||||
众兴-草庙乡牵引站220kV电缆线路工程(土建部分)(PROJ-2023-0328)
|
||||
滁州红桥220kV变电站新建工程(PROJ-2023-0335)
|
||||
宝桥220kV变电站220kV红桥间隔保护改造工程(PROJ-2023-0345)
|
||||
南屏-蓬莱路π入派河变电站110kV线路工程(PROJ-2023-0363)
|
||||
安庆四-涓桥500kV线路工程(一般线路段)(PROJ-2023-0413)
|
||||
刘尧-屏山π入濉河变电站 110kV线路工程(PROJ-2023-0414)
|
||||
安徽合肥杜岗220kV开关站新建工程(PROJ-2023-0434)
|
||||
安徽合肥晶合220kV外部供电工程(合肥杜岗Ⅱ220kV输变电工程)(PROJ-2023-0438)
|
||||
新河-建阳、明都-建阳π入红桥变电站220kV线路工程(PROJ-2023-0440)
|
||||
宿州城东220kV变电站新建工程(PROJ-2023-0445)
|
||||
世袭庄园二期居配工程(PROJ-2023-0281)
|
||||
安庆城南110kV变电站新建工程(PROJ-2023-0305)
|
||||
池州电厂二期-涓桥220kV线路工程(PROJ-2023-0325)
|
||||
阜阳东坡110kV变电站新建工程(PROJ-2023-0336)
|
||||
清流500kV变电站220kV红桥间隔保护改造工程(电气安装)(PROJ-2023-0344)
|
||||
明都220kV变电站220kV红桥间隔保护改造工程(PROJ-2023-0347)
|
||||
南坪220kV变电站220kV杨柳间隔改造工程(PROJ-2023-0390)
|
||||
孔店-龙门500kV线路增容改造工程(PROJ-2023-0405)
|
||||
安庆四-涓桥500kV线路工程(长江大跨越段)(PROJ-2023-0412)
|
||||
合肥陶楼220kV变电站间隔扩建工程(PROJ-2023-0449)
|
||||
余桥500kV 变电站220kV 银山间隔扩建工程(PROJ-2023-0452)
|
||||
合肥二电厂-长临河π入循环园变电站220kV线路工程(PROJ-2023-0255)
|
||||
众兴-草庙乡牵引站220kV架空线路工程(PROJ-2023-0327)
|
||||
杨柳220kV变电站220kV南坪间隔扩建工程(PROJ-2023-0389)
|
||||
建阳220kV变电站220kV红桥间隔保护改造工(PROJ-2023-0346)
|
||||
云谷-蓬莱路T接派河变电站110kV线路工程(PROJ-2023-0364)
|
||||
安徽合肥下塘220kV变电站新建工程(PROJ-2023-0448)
|
||||
程集-东坡110kV架空线路工程(PROJ-2023-0454)
|
||||
茗南-熙湖T接城南变电站110kV架空线路工程(PROJ-2023-0287)
|
||||
五蒙高速公路项目500kV电力杆线迁改工程(PROJ-2023-0320)
|
||||
陂塘-草庙乡牵引站220kV架空线路工程(PROJ-2023-0326)
|
||||
百大物流园-刘河π入派河变电站110kV线路工程(PROJ-2023-0361)
|
||||
慈山-百大物流园T接派河变电站110kV线路工程(PROJ-2023-0362)
|
||||
祝集220kV变电站新建工程(PROJ-2023-0379)
|
||||
杨柳-南坪220kV线路工程(PROJ-2023-0386)
|
||||
藕池-漆园π入杨柳变电站220kV线路工程(PROJ-2023-0387)
|
||||
伯阳-涡阳π入真源变电站220kV线路工程(PROJ-2023-0393)
|
||||
魏武-木兰π入祝集变电站220kV线路工程(PROJ-2023-0394)
|
||||
余桥-银山220kV线路工程(PROJ-2023-0423)
|
||||
安庆四500kV变电站新建工程(PROJ-2024-0862)
|
||||
清流-宝桥π入红桥变电站220kV线路工程(PROJ-2023-0439)
|
||||
安庆四500kV变电站新建工程(建筑)(PROJ-2023-0446)
|
||||
安庆银山220kV变电站新建工程(PROJ-2023-0451)
|
||||
洛河-汤庄、洛河-平圩500kV线路(常规段)增容改造工程(PROJ-2023-0468)
|
||||
宿州蕲城-埇南开断入谷岭220kV线路工程(PROJ-2023-0471)
|
||||
金牛-福渡500kV线路工程(巢湖、无为段)(PROJ-2023-0507)
|
||||
金牛-福渡500kV线路工程(庐江段)(PROJ-2023-0508)
|
||||
宁芜铁扩能改造(安徽段)涉及500kV线路跨越宁芜铁路迁改工程(PROJ-2024-0009)
|
||||
肥西-铭传I、II回500kV线路改造工程(PROJ-2024-0013)
|
||||
肥西-中心500kV线路工程(电缆部分)(PROJ-2024-0015)
|
||||
陶楼-下塘、陶楼-航锂(凯博)π入下塘变电站220kV架空线路工程(PROJ-2024-0017)
|
||||
黄阳-仙河110kV线路工程(PROJ-2024-0047)
|
||||
牛草山风电场-仙河T接黄阳变电站110kV线路 工程(PROJ-2024-0048)
|
||||
田家庵电厂秦集改接孝仪变电站220kV线路工程(PROJ-2024-0050)
|
||||
官塘-燕山π入孝仪变电站220kV线路工程(PROJ-2024-0051)
|
||||
孝仪-凤阳π入官塘变电站220kV线路工程(PROJ-2024-0053)
|
||||
渝北±800千伏换流站工程电气安装A包(PROJ-2024-0057)
|
||||
谷岭220kV变电站220kV蕲城电厂、埇南间隔扩建工程(PROJ-2023-0466)
|
||||
淮南至桐城高速公路淮南段500kV电力迁改工程(PROJ-2023-0467)
|
||||
金牛-紫蓬500kV线路工程(PROJ-2023-0503)
|
||||
埇桥-胜广π入城东变电站220KV线路工程(PROJ-2023-0504)
|
||||
金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)
|
||||
金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)
|
||||
灵泗500kV变电站新建工程(PROJ-2023-0544)
|
||||
国网安徽合肥供电公司220kV庄陶28A1、28A2线7#-13#段升高改造工程(PROJ-2023-0542)
|
||||
国网安徽亳州供电公司运检营销综合用房(PROJ-2024-0002)
|
||||
沪宁合高铁安徽段500kV清同5737线等2处电力线路迁改工程(PROJ-2024-0003)
|
||||
肥西-繁昌Ⅰ、Ⅱ回500kV线路改造工程(PROJ-2024-0012)
|
||||
肥西-中心500kV线路工程(架空部分)(PROJ-2024-0014)
|
||||
陶楼-下塘、陶楼-航锂(凯博)π入下塘变电站220kV电缆线路工程(PROJ-2024-0018)
|
||||
安徽阜阳阜四500kV变电站新建工程(PROJ-2024-0041)
|
||||
陶楼-卫田Ⅱ线π入下塘变电站220kV线路工程(PROJ-2024-0019)
|
||||
龙子湖电厂-凤阳π入孝仪变电站220kV线路工程(PROJ-2024-0052)
|
||||
曹店风电-官塘、凤阳-官塘220kV线路改接工程(PROJ-2024-0054)
|
||||
220kV秦陈2C39线#31-#46改造工程(PROJ-2024-0055)
|
||||
杨柳-南坪改接至双堆集牵引站220kV线路工程(PROJ-2024-0059)
|
||||
南坪-双堆集牵引站220kV线路工程(PROJ-2024-0060)
|
||||
龙门500kV变电站间隔扩建工程(PROJ-2024-0063)
|
||||
蚌埠孝仪220kV变电站新建工程(建筑安装部分)(PROJ-2024-0072)
|
||||
蚌埠孝仪220kV变电站新建工程(建筑安装部分)(PROJ-2024-0072)
|
||||
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV架空线路工程(PROJ-2024-0084)
|
||||
游乐-南岗、游乐-湖光路T接方兴Ⅱ变电站110kV电缆线路工程(PROJ-2024-0085)
|
||||
合肥金牛-庐江π入庐江北变电站220KV线路工程(PROJ-2024-0088)
|
||||
耿皇-焦楼220kV线路工程(PROJ-2024-0091)
|
||||
安徽合肥方兴II110kV变电站新建工程(PROJ-2024-0096)
|
||||
文昌宫-淮北西牵引站220kV线路工程(PROJ-2024-0106)
|
||||
国网安徽合肥供电公司2024年220kV板桥变电站一键顺控系统完善提升(PROJ-2024-0123)
|
||||
凌云-淮北西牵引站220kV线路工程(PROJ-2024-0107)
|
||||
杨柳四铺π入况楼变110kV电缆线路工程(PROJ-2024-0126)
|
||||
安徽滁州红桥220kV变电站110kV国智新能源等间隔扩建工程(PROJ-2024-0127)
|
||||
华南城220kV变电站新建工程(PROJ-2024-0129)
|
||||
寨西-苦竹溪T接金桥变电站110kV线路工程(PROJ-2024-0140)
|
||||
安徽合肥肥西-游乐π入华南城变220kV电缆线路工程(PROJ-2024-0145)
|
||||
中心500kV变电站新建工程(A包)(PROJ-2024-0175)
|
||||
围屏220kV变电站220kV万济间隔扩建工程(PROJ-2024-0180)
|
||||
马鞍山郑蒲220kV变电站新建工程(PROJ-2024-0181)
|
||||
马鞍山金河口110kV变电站新建工程(PROJ-2024-0182)
|
||||
马鞍山横龙110kV变电站新建工程(PROJ-2024-0183)
|
||||
显通-白杨(T接刘桥)、显通-溪河(T接刘桥)π入凌云变电站110kV架空线路工程(PROJ-2024-0201)
|
||||
夏湖-华都改接入真源变电站110kV线路工程(PROJ-2024-0207)
|
||||
夏湖-凤凰城T接城北变电站110kV架空线路工程(PROJ-2024-0208)
|
||||
魏岗-古井π入祝集110kV线路工程(PROJ-2024-0215)
|
||||
桐城-独秀π入双港变电站220kV线路工程(PROJ-2024-0216)
|
||||
安徽马鞍山当涂-万济220kV线路工程(PROJ-2024-0221)
|
||||
安徽马鞍山围屏-万济220kV线路工程(PROJ-2024-0222)
|
||||
霸王-厉阳T接金河口110kV线路工程(PROJ-2024-0224)
|
||||
郑蒲-金河口110kV线路工程(PROJ-2024-0223)
|
||||
苍山-横龙110kV架空线路工程(PROJ-2024-0225)
|
||||
苍山-横龙110kV电缆线路工程(PROJ-2024-0226)
|
||||
含山-环峰T接横龙110kV电缆线路工程(PROJ-2024-0228)
|
||||
亳州城北110kV变电站新建工程(PROJ-2024-0238)
|
||||
国网安徽合肥供电公司2024年500kV龙门变电站一键顺控视频双确认系统完善提升(PROJ-2024-0251)
|
||||
银联黄山园区220kV变电站工程(PROJ-2024-0256)
|
||||
芜湖潘坛220kV变电站新建工程(PROJ-2024-0257)
|
||||
陕北~安徽±800千伏特高压直流输电工程受端换流站四通一平工程(PROJ-2024-0100)
|
||||
新建沪宁合高铁安徽段“三电”及管线迁改SDQG-1标电力500kV众长5371众临5372线跨铁迁改工程(PROJ-2024-0108)
|
||||
庐北220kV变电站新建工程(PROJ-2024-0113)
|
||||
国网北京检修公司2024年±500kV延庆换流站直流主设备年度检修维护(PROJ-2024-0124)
|
||||
况楼-杨柳220kV线路工程(PROJ-2024-0125)
|
||||
谯城500千伏变电站新建工程(建筑)(PROJ-2024-0133)
|
||||
安庆双港220kV变电站新建工程(PROJ-2024-0136)
|
||||
安徽合肥肥西-游乐π入华南城变220kV架空线路工程(PROJ-2024-0718)
|
||||
伯阳-谯城500kV线路工程(PROJ-2024-0143)
|
||||
安徽合肥铭传-华南城220kV线路工程(PROJ-2024-0146)
|
||||
安徽合肥肥西-游乐π入华南城变220kV架空线路工程(PROJ-2024-0147)
|
||||
香涧-鹭岛500kV线路工程(淮河大跨越段)综合试桩(PROJ-2024-0150)
|
||||
合肥中心变B包(PROJ-2024-0176)
|
||||
芦集-古沟π入潘集变电站220kV线路工程(PROJ-2024-0189)
|
||||
显通-白杨( T 接刘桥)、显通-至溪河(T接刘桥)π入凌云变电站110kV电缆线路工程(PROJ-2024-0202)
|
||||
陕北-安徽±800kV特高压直流输电线路工程(皖2标)(PROJ-2024-0203)
|
||||
魏武-桐花π入祝集变电站110kV线路工程(PROJ-2024-0214)
|
||||
和平-邓村π入双港变电站220kV线路工程(PROJ-2024-0217)
|
||||
|
|
@ -139,76 +186,116 @@
|
|||
独秀-谭桥牵引站π入和平变电站220kV线路工程(PROJ-2024-0219)
|
||||
黄山巷联-水西220kV线路工程(PROJ-2024-0220)
|
||||
含山-环峰T接横龙110kV架空线路工程(PROJ-2024-0227)
|
||||
伯阳500千伏变电站220千伏间隔扩建工程(PROJ-2024-0239)
|
||||
蕴山-沙埂110kV线路工程(PROJ-2024-0245)
|
||||
国国网安徽合肥供电公司2024年220kV秋浦变电站一键顺控系统完善提升(PROJ-2024-0249)
|
||||
淮南芦集220千伏变电站220千伏配电装置改造工程(PROJ-2024-0265)
|
||||
安徽宣城莲塘-敬亭220kV线路改造工程(PROJ-2024-0906)
|
||||
无人机智能巡检技术实验室项目(PROJ-2024-1213)
|
||||
安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)(PROJ-2024-0794)
|
||||
国网北京检修公司2024年±500kV延庆换流站阀冷系统设备驻站(PROJ-2024-0849)
|
||||
中心500kV变电站新建工程(A包)(调试部分)(PROJ-2025-0033)
|
||||
阜四-流鞍河220千伏线路工程(PROJ-2024-0706)
|
||||
窦郢-综保区220kV架空线路工程(PROJ-2024-1226)
|
||||
汤池-曹家河35kV架空线路工程(PROJ-2024-0936)
|
||||
南乡-九十铺π入施桥变电站35kV架空线路工程(PROJ-2024-0929)
|
||||
富邦-秋浦T接窦桥路、火车站变电站110kV架空线路工程(PROJ-2024-1220)
|
||||
锁库500kV变电站新建工程(PROJ-2024-0275)
|
||||
祝集220kV变电站新建工程(调试部分)(PROJ-2024-1188)
|
||||
轨道7号线10(20)kV杆线迁移(施工)(电缆试验)(PROJ-2025-0039)
|
||||
富邦-杜岗110kV架空线路改造工程(PROJ-2024-1222)
|
||||
中心-槽坊(珠江路)220kV架空线路工程(PROJ-2024-1208)
|
||||
淮南安丰220千伏变电站新建工程(PROJ-2024-0456)
|
||||
合肥轨道7号线10kV杆线迁改工程(PROJ-2021-0037)
|
||||
陕北-安徽±800千伏特高压直流输电工程陶大庄村接地极工程(PROJ-2024-0773)
|
||||
安庆-龙山π入安庆四变电站220kV线路工程(PROJ-2024-0835)
|
||||
合肥比亚迪四期220kV变电站新建工程(PROJ-2025-0072)
|
||||
涓桥500kV变电站间隔扩建工程(PROJ-2024-0468)
|
||||
阜阳太和城南110kV变电站新建工程(PROJ-2024-0301)
|
||||
原鹿500千伏变电站220千伏谢桥电厂间隔扩建工程(调试部分)(PROJ-2025-0133)
|
||||
青峰开关站-叶桥220千伏线路工程(PROJ-2025-0050)
|
||||
蓼城-高塘π入冯井变电站110kV线路工程(PROJ-2024-0898)
|
||||
杨柳四铺π入况楼变110kV电缆线路工程(电缆敷设部分)(PROJ-2025-0130)
|
||||
城西-谷岭220kV线路工程(PROJ-2024-1242)
|
||||
韭山-梓树(九梓)110kV线路工程(PROJ-2024-1053)
|
||||
长临河500kV变电站220kV义兴间隔扩建工程(调试部分)(PROJ-2025-0120)
|
||||
滁州黄桥220千伏变电站新建工程(变电站土建)(PROJ-2024-0915)
|
||||
安徽合肥方兴II110kV变电站新建工程(调试部分)(PROJ-2025-0016)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(调试部分)(PROJ-2025-0053)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(调试部分)(PROJ-2025-0053)
|
||||
安庆四500kV变电站新建工程(调试部分)(PROJ-2025-0044)
|
||||
S334峨山路东延伸(沿江高速至芜宣高速)新建工程二期500kV电力迁改工程(PROJ-2024-1266)
|
||||
顿丘-黄桥220kV线路工程(PROJ-2024-0901)
|
||||
章塘-邰桥、石桥-邰桥π入万济变电站110kV线路工程(PROJ-2024-0889)
|
||||
建阳220kV变电站220kV红桥间隔保护改造工程(调试部分)(PROJ-2025-0143)
|
||||
窦郢220kV开关站220kV综保区间隔扩建工程(PROJ-2024-1047)
|
||||
谢桥电厂-原鹿220kV线路工程(PROJ-2024-0785)
|
||||
六庆城际铁路穿±500kV宜华线改造工程(PROJ-2024-1247)
|
||||
安徽淮北凌云220千伏变电站新建工程(调试部分)(PROJ-2025-0004)
|
||||
国网安徽安庆供电公司500kV双岭变电站加装固定融冰装置(调试部分)(PROJ-2025-0084)
|
||||
国网安徽淮北供电公司500kV濉溪变电站1号主变5022电流互感器改造(PROJ-2024-1271)
|
||||
马鞍山横龙110kV变电站新建工程(调试部分)(PROJ-2025-0086)
|
||||
合肥下塘110kV变电站1号主变增容改造工程(PROJ-2024-1038)
|
||||
华佗-曙光牵引站π入谯城(亳三)变电站220kV线路工程(PROJ-2024-1202)
|
||||
富邦-秋浦T接龙门岭变电站、秋浦-龙门岭T接张洼变电站110kV架空线路改接工程(PROJ-2024-1224)
|
||||
甘肃-浙江±800千伏特高压直流输电线路工程(皖3标段)(PROJ-2024-1162)
|
||||
宿州萧砀500kV变电站220kV送出工程(PROJ-2024-1265)
|
||||
安徽马鞍山220kV围屏变电站110kV顺博间隔扩建工程(PROJ-2025-0040)
|
||||
六安汤池 110kV 变电站新建工程(PROJ-2024-0912)
|
||||
芜湖福渡-蛟矶220kV线路工程(PROJ-2024-1230)
|
||||
月桥-火龙岗π入高村变电站220kV线路工程(PROJ-2024-0923)
|
||||
杨柳220kV变电站220kV南坪间隔扩建工程(调试部分)(PROJ-2025-0020)
|
||||
芜湖高村220kV变电站新建工程(PROJ-2024-0790)
|
||||
国网安徽合肥供电公司2024年500kV肥西变电站一键顺控系统完善提升(PROJ-2024-0772)
|
||||
汤池-牛角冲35kV架空线路工程(PROJ-2024-0931)
|
||||
汲东-汪墩220千伏增容改造工程(PROJ-2025-0051)
|
||||
安徽滁州清流-环漪220kV线路改造工程(PROJ-2024-0793)
|
||||
太和-李腰π入城南变电站110kV架空线路工程(PROJ-2024-0709)
|
||||
金牛500kV变电站新建工程(调试部分)(PROJ-2025-0032)
|
||||
甘肃-浙江±800 千伏特高压直流输电工程GIL管廊工程四通一平(PROJ-2024-1262)
|
||||
韭山-梓树(九梓)T接鲁肃变电站110kV线路工程(PROJ-2024-1054)
|
||||
岩歙220kV变电站新建工程(PROJ-2024-0815)
|
||||
安徽安庆仙河220kV变电站2号主变扩建工程(调试部分)(PROJ-2024-1065)
|
||||
莲塘-甘露π入绿雪变电站220kV线路工程(PROJ-2024-0273)
|
||||
富邦-秋浦110kV架空线路改造工程(PROJ-2024-1218)
|
||||
富邦-东北郊T接河东路变电站110kV电缆线路工程(PROJ-2024-1217)
|
||||
合州换流站-文都500千伏线路工程(PROJ-2024-1089)
|
||||
富邦-杜岗110kV电缆线路改造工程(PROJ-2024-1223)
|
||||
芜湖江北-通江π入蛟矶变电站220kV线路工程(PROJ-2024-1231)
|
||||
广德-敬亭π入桂花(广五)变220kV线路工程(PROJ-2024-0272)
|
||||
白莲-邵岗π入尧塘变电站35kV架空线路工程(PROJ-2024-0899)
|
||||
程集-牛庄π入阜四变220千伏线路工程(PROJ-2024-0708)
|
||||
安徽滁州护桥220kV变电站2号主变扩建工程(调试部分)(PROJ-2025-0041)
|
||||
西梁山-和城、宏港-和城π入郑蒲变电站110kV架空线路工程(PROJ-2024-0883)
|
||||
国网滁州供电公司500kV清流变500kV5031、5041电流互感器更换项目(PROJ-2025-0093)
|
||||
安徽六安春秋塘-山七π入汤池变电站110kV线路工程(PROJ-2024-0932)
|
||||
亳州茨淮220kV变电站220kV中煤新集风电间隔扩建工程(PROJ-2025-0058)
|
||||
马鞍山万济220kV变电站新建工程(调试部分)(PROJ-2025-0136)
|
||||
安徽官山-涓桥I、II回π入池州二变500千伏线路工程(PROJ-2024-1060)
|
||||
陕北-安徽直流工程合州±800千伏换流站土建A包(PROJ-2024-0312)
|
||||
石岗-施桥110kV线路工程(PROJ-2024-0276)
|
||||
国网安徽宣城供电公司500kV河沥变加装固定融冰装置(调试部分)(PROJ-2025-0087)
|
||||
香涧-鹭岛500kV线路工程(一般线路东段)(PROJ-2024-0725)
|
||||
滁州红桥220kV变电站新建工程(调试部分)(PROJ-2024-1191)
|
||||
围屏-石桥π入万济变电站110kV线路工程(PROJ-2024-0888)
|
||||
汤池-河棚35kV架空线路工程(PROJ-2024-0934)
|
||||
汤庄-平圩500kV线路工程(PROJ-2024-1258)
|
||||
芜湖站1000千伏1号主变A相局放配合项目(PROJ-2025-0057)
|
||||
石岗220kV变电站110kV施桥间隔扩建工程(PROJ-2025-0061)
|
||||
窦郢-综保区220kV电缆线路工程(PROJ-2024-1227)
|
||||
韦寨-范兴集π入阜四变电站220kV线路工程(PROJ-2024-0707)
|
||||
长临河500kV变电站220kV循环园间隔扩建工程(调试部分)(PROJ-2024-1074)
|
||||
埇桥-萧砀Ⅰ回500千伏线路工程(PROJ-2024-0924)
|
||||
紫蓬500kV变电站间隔扩建工程(PROJ-2024-0868)
|
||||
安徽阜阳薛桥-花园220kV线路改造工程(PROJ-2024-1195)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(电缆安装)(PROJ-2025-0037)
|
||||
国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(电缆安装)(PROJ-2025-0037)
|
||||
包河10kV延安30与兴集18网架结构优化工程施工(PROJ-2024-0459)
|
||||
国网安徽马鞍山供电公司500kV峨廻5904线#92等拉线杆塔改造工程(PROJ-2024-1241)
|
||||
富邦-秋浦110kV电缆线路改造工程(PROJ-2024-1219)
|
||||
当涂-楚城500kV线路开断接入锁库线路工程(PROJ-2024-0310)
|
||||
宣城桂花220kV变电站新建工程(PROJ-2024-0298)
|
||||
安徽亳州子胥-孙刘110kV线路工程(PROJ-2024-1042)
|
||||
国网安徽安庆供电公司500kV双岭变电站加装固定融冰装置(PROJ-2024-1064)
|
||||
况楼220kV变电站间隔扩建工程(PROJ-2024-0465)
|
||||
耿皇 220kV 变电站 220kV 焦楼间隔扩建工程(PROJ-2024-1073)
|
||||
国网安徽合肥供电公司 220kV 秋蒲变220kV#1、#2主变保护改造(PROJ-2025-0075)
|
||||
文都-官山改接入合州换流站500千伏线路工程(PROJ-2024-1090)
|
||||
芜湖抖音220kV线路涉500kV峨峰5914、峨廻5904线改造工程(PROJ-2024-0946)
|
||||
合肥综保区220kV变电站新建工程(PROJ-2024-1037)
|
||||
陶楼-下塘(T接亚迪)改接首业变电站110kV架空线路工程(PROJ-2024-1234)
|
||||
钟阳-黄桥(T接头铺)改接潼河变电站110kV架空线路工程(PROJ-2024-0439)
|
||||
杨柳圩110kV变电站110kV配电装置改造工程(PROJ-2024-1040)
|
||||
富邦-东北郊T接河东路变电站110kV架空线路工程(PROJ-2024-1216)
|
||||
马鞍山万济220kV变电站新建工程(PROJ-2024-0455)
|
||||
马鞍山金河口110kV变电站新建工程(调试部分)(PROJ-2025-0011)
|
||||
合安铁路三电迁改工程(PROJ-2024-1051)
|
||||
合肥杜岗Ⅱ220kV 开关站新建工程(调试部分)(PROJ-2025-0064)
|
||||
汤庄500kV变电站保护改造工程(调试部分)(PROJ-2025-0003)
|
||||
庐北220kV变电站新建工程(调试部分)(PROJ-2025-0131)
|
||||
安徽河沥500kV变电站3号主变扩建工程(调试部分)(PROJ-2025-0085)
|
||||
中煤电厂-青峰开关站、青峰开关站-汲东220千伏线路工程(PROJ-2025-0049)
|
||||
宣城中港110kV变电站新建工程(PROJ-2024-0816)
|
||||
灵泗500kV变电站新建工程(调试部分)(PROJ-2024-1183)
|
||||
安徽池州二500千伏变电站工程(PROJ-2024-0811)
|
||||
芜湖蛟矶220kV变电站新建工程(PROJ-2024-1036)
|
||||
金牛(220kV)-庐北改接金牛(500kV)变电站220kV线路工程(PROJ-2024-0894)
|
||||
埇桥-萧砀Ⅱ回500千伏线路工程(PROJ-2024-0925)
|
||||
93
api/utils.py
93
api/utils.py
|
|
@ -49,43 +49,6 @@ def extract_number(text):
|
|||
return num_str # 中文数字直接返回
|
||||
return None
|
||||
|
||||
|
||||
def standardize_company_and_project(input_company, input_project, standard_data):
|
||||
"""
|
||||
将口语化的公司名和项目部名转换为标准化名称。
|
||||
|
||||
参数:
|
||||
input_company (str): 用户输入的公司名(可能是口语化或不完整的名称)。
|
||||
input_project (str): 用户输入的项目部名(可能是口语化或不完整的名称)。
|
||||
standard_data (dict): 标准化的公司名和项目部名数据,格式为 {公司名: [项目部名1, 项目部名2, ...]}。
|
||||
|
||||
返回:
|
||||
tuple: (标准化公司名, 匹配的项目部名列表)。如果无法匹配,返回 (None, None)。
|
||||
"""
|
||||
# **1. 标准化公司名**
|
||||
company_match = process.extractOne(input_company, standard_data.keys(), scorer=fuzz.ratio)
|
||||
if not company_match or company_match[1] < 65: # 相似度低于 70 可能匹配错误
|
||||
return None, None
|
||||
standard_company = company_match[0]
|
||||
|
||||
# **2. 先尝试直接匹配最相似的项目名**
|
||||
project_match = process.extractOne(input_project, standard_data[standard_company], scorer=fuzz.ratio)
|
||||
print(f"项目部名称最相似:{project_match[0]},{project_match[1]}", flush=True)
|
||||
if project_match and project_match[1] >= 86:
|
||||
return standard_company, [project_match[0]] # 直接返回匹配的项目名
|
||||
|
||||
# **3. 提取项目部的数字部分**
|
||||
query_number = extract_number(input_project)
|
||||
|
||||
# **4. 过滤所有符合数字的项目部**
|
||||
matched_projects = []
|
||||
for project in standard_data[standard_company]:
|
||||
project_number = extract_number(project)
|
||||
if query_number and query_number == project_number:
|
||||
matched_projects.append(project)
|
||||
|
||||
return standard_company, matched_projects
|
||||
|
||||
def standardize_company_and_projectDepartment(input_company, input_project, origianl_company_list , company_project_department_map, company_pinyin_to_original_map = None):
|
||||
"""
|
||||
将口语化的公司名和项目部名转换为标准化名称。
|
||||
|
|
@ -101,7 +64,7 @@ def standardize_company_and_projectDepartment(input_company, input_project, orig
|
|||
"""
|
||||
try:
|
||||
# **1. 标准化公司名**
|
||||
best_company_match = multiple_standardize_single_name(input_company, origianl_company_list,list(company_pinyin_to_original_map.keys()),company_pinyin_to_original_map,60,85,True)
|
||||
best_company_match = multiple_standardize_single_name(input_company, origianl_company_list,list(company_pinyin_to_original_map.keys()),company_pinyin_to_original_map,50,85,True)
|
||||
|
||||
if not best_company_match:
|
||||
return None, None
|
||||
|
|
@ -109,10 +72,9 @@ def standardize_company_and_projectDepartment(input_company, input_project, orig
|
|||
standard_company = best_company_match[0]
|
||||
|
||||
# **2. 先尝试直接匹配最相似的项目名**
|
||||
project_match = process.extract(input_project, company_project_department_map[standard_company], scorer=fuzz.token_sort_ratio, limit=len(company_project_department_map[standard_company]))
|
||||
# project_match = process.extractOne(input_project, company_project_department_map[standard_company], scorer=fuzz.ratio)
|
||||
project_match = process.extractOne(input_project, company_project_department_map[standard_company], scorer=fuzz.ratio)
|
||||
print(f"项目部名称最相似:{project_match[0]},{project_match[1]}", flush=True)
|
||||
if project_match and project_match[1] >= 86:
|
||||
if project_match and project_match[1] >= 85:
|
||||
return standard_company, [project_match[0]] # 直接返回匹配的项目名
|
||||
|
||||
# **3. 提取项目部的数字部分**
|
||||
|
|
@ -130,38 +92,6 @@ def standardize_company_and_projectDepartment(input_company, input_project, orig
|
|||
print(f"standardize_company_and_projectDepartment:{e}", flush=True)
|
||||
return None,None
|
||||
|
||||
#弃用
|
||||
def standardize_single_name(input_name, name_list, lower_score=70, high_score=85):
|
||||
"""
|
||||
将输入的名称(可能是口语化或不完整的名称)转换为标准化名称。
|
||||
|
||||
参数:
|
||||
input_name (str): 用户输入的名称(可能是口语化或不完整的名称)。
|
||||
name_list (list): 标准化的名称列表。
|
||||
lower_score (int): 匹配的最低相似度阈值,默认值为 70。
|
||||
high_score (int): 匹配的高置信度阈值,默认值为 85。
|
||||
|
||||
返回:
|
||||
list: 匹配的标准化名称列表。如果未找到匹配项,返回 None。
|
||||
"""
|
||||
match_results = process.extract(input_name, name_list, scorer=fuzz.token_sort_ratio, limit=len(name_list))
|
||||
|
||||
# 找到所有相似度 > 80 的匹配项
|
||||
high_confidence_matches = [(match[0], match[1]) for match in match_results if match[1] > lower_score]
|
||||
print(f"standardize_single_name, high_confidence_matches:{high_confidence_matches}", flush=True)
|
||||
if not high_confidence_matches:
|
||||
return None # 没有找到匹配项
|
||||
# 返回匹配结果
|
||||
|
||||
best_match = max(high_confidence_matches, key=lambda x: x[1], default=None)
|
||||
|
||||
print(f"best_match: {best_match}", flush=True)
|
||||
if best_match and best_match[1] >= high_score:
|
||||
return [best_match[0]] # 直接返回最高相似度的单个匹配项
|
||||
|
||||
return [match[0] for match in high_confidence_matches]
|
||||
|
||||
|
||||
def multiple_standardize_single_name(origin_input_name, origin_name_list, pinyin_name_list = None, pinyin_to_original_map = None, lower_score=70, high_score=85, isArabicNumConv = False):
|
||||
"""
|
||||
使用拼音 + rapidfuzz 进行关键词模糊匹配,并返回原始的标准名
|
||||
|
|
@ -233,14 +163,17 @@ def generate_project_prompt(matched_projects, original_name = "", type="项目
|
|||
str: 生成的提示信息。如果未找到匹配项,返回提示用户提供更准确信息的字符串。
|
||||
"""
|
||||
if not matched_projects:
|
||||
return f"未找到匹配的{type}:{original_name},请提供更准确的{type}信息。"
|
||||
return f"<p>未找到匹配的<strong>{type}</strong>:{original_name},请提供更准确的{type}信息。</p>"
|
||||
|
||||
prompt = f"您说的{type}可能是:"
|
||||
for idx, project in enumerate(matched_projects, start=1):
|
||||
prompt += f"第{idx}个: {project},"
|
||||
|
||||
prompt += "请确认您要选择哪一个?"
|
||||
return prompt
|
||||
html_parts = [f"<p>您说的<strong>{type}</strong>可能是:</p>"]
|
||||
for idx, item in enumerate(matched_projects, start=1):
|
||||
html_parts.append(f"""
|
||||
<div class="project-entry">
|
||||
<text class="label"><strong>第{idx}个:</strong>{item}</text><br>
|
||||
</div>
|
||||
""")
|
||||
html_parts.append("<p>请确认您要选择哪一个?</p>")
|
||||
return "\n".join(html_parts)
|
||||
|
||||
|
||||
def load_standard_name(file_path: str):
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ BASE_DATA = {
|
|||
"project_names": [
|
||||
"中心变",
|
||||
"1号工程",
|
||||
"国网安徽马鞍山供电公司220kV恒兴变电站220kV配电装置改造(PROJ-2024-0271)",
|
||||
"国网供电公司220kV恒兴变电站220kV配电装置改造(调试部分)",
|
||||
"安徽蚌埠濠州220kV变电站220千伏大唐凤阳红心镇光伏间隔扩建工程(电气安装)"
|
||||
"滁州堰陈110千伏变电站新建工程",
|
||||
|
|
@ -25,6 +26,15 @@ BASE_DATA = {
|
|||
"金牛500kV变电站新建工程(建筑)(PROJ-2023-0506)",
|
||||
"谷岭220kV变电站220kV蕲城电厂、埇南间隔扩建工程(PROJ-2023-0466)",
|
||||
"渝北±800千伏换流站工程电气安装A包(PROJ-2024-0057)",
|
||||
"检修公司调相机一二次设备检修维护和改造服务框架-2025年南苑调相机检修(一期)(PROJ-2023-0179)"
|
||||
"明生科创基地项目",
|
||||
"安徽明生有限公司科创基地项目",
|
||||
"无人机智能巡检技术实验室项目",
|
||||
"九号线路项目",
|
||||
"埇南间隔更换项目",
|
||||
"国网滁州供电公司电流互感器更换项目",
|
||||
"谷岭220kV变电站220kV蕲城电厂-埇南间隔扩建项目(PROJ-2023-0466)",
|
||||
"安徽明生电力投资集团有限公司科创基地项目(一期)(PROJ-2024-1035)"
|
||||
"九号工程",
|
||||
"合州变电站",
|
||||
"合州换流站"
|
||||
|
|
@ -34,7 +44,7 @@ BASE_DATA = {
|
|||
"中铁二局集团电务工程有限公司"],
|
||||
# 项目部名称
|
||||
"project_departments": ["调试一队", "第9项目管理部", "金上第十一项目部", "第八项目管理部(合肥)", "肥东9号项目部",
|
||||
"金上第一项目部管理部(池州黄山)", "第一项目部管理部(肥东)", "调试四队"],
|
||||
"金上第一项目部管理部(池州黄山)", "第一项目部管理部(肥东)", "调试四队","第一项目部"],
|
||||
# 项目经理
|
||||
"project_managers": ["陈少平项目经理", "范文立项目经理", "何东洋项目经理"],
|
||||
# 分包单位
|
||||
|
|
@ -56,7 +66,7 @@ BASE_DATA = {
|
|||
# 自然语言模板配置
|
||||
TEMPLATE_CONFIG = {
|
||||
"日计划数量查询": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}有多少作业计划?", ["date", "project_name"]),
|
||||
("{project_name}{date}有多少项作业计划?", ["project_name", "date"]),
|
||||
|
|
@ -96,20 +106,20 @@ TEMPLATE_CONFIG = {
|
|||
("{project_department}{date}有多少项{risk_level}风险作业计划?",
|
||||
["project_department", "date", "risk_level"]),
|
||||
("{project_department}{date}有多少{risk_level}风险作业计划?", ["project_department", "date", "risk_level"]),
|
||||
|
||||
("{date}{project_manager}作业计划是多少?", ["date", "project_manager"]),
|
||||
("{date}{subcontractor}有多少条作业计划?", ["date", "subcontractor"]),
|
||||
("{date}{team_leader}有多少作业计划?", ["date", "team_leader"]),
|
||||
("{date}风险等级为{risk_level}的作业计划有多少?", ["date", "risk_level"]),
|
||||
("{date}公司{project_department}有多少{risk_level}风险作业计划?",
|
||||
# 请帮我查一下
|
||||
("请帮我查一下{date}{project_manager}作业计划是多少?", ["date", "project_manager"]),
|
||||
("请帮我查一下{date}{subcontractor}有多少条作业计划?", ["date", "subcontractor"]),
|
||||
("请帮我查一下{date}{team_leader}有多少作业计划?", ["date", "team_leader"]),
|
||||
("请帮我查一下{date}风险等级为{risk_level}的作业计划有多少?", ["date", "risk_level"]),
|
||||
("请帮我查一下{date}公司{project_department}有多少{risk_level}风险作业计划?",
|
||||
["date", "project_department", "risk_level"]),
|
||||
("{date}{project_department}有多少{risk_level}风险作业计划?", ["date", "project_department", "risk_level"]),
|
||||
("{date}{project_type}类风险等级为{risk_level}的作业计划有多少?", ["date", "project_type", "risk_level"]),
|
||||
("{date}{construction_unit}有多少{risk_level}风险作业计划?", ["date", "construction_unit", "risk_level"]),
|
||||
("请帮我查一下{date}{project_department}有多少{risk_level}风险作业计划?", ["date", "project_department", "risk_level"]),
|
||||
("请帮我查一下{date}{project_type}类风险等级为{risk_level}的作业计划有多少?", ["date", "project_type", "risk_level"]),
|
||||
("请帮我查一下{date}{construction_unit}有多少{risk_level}风险作业计划?", ["date", "construction_unit", "risk_level"]),
|
||||
|
||||
("{date}存在{risk_level}风险的有多少", ["date", "risk_level"]),
|
||||
("{implementation_organization}{date}{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||
("{implementation_organization}{date}存在{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||
("请帮我查一下{date}存在{risk_level}风险的有多少", ["date", "risk_level"]),
|
||||
("请帮我查一下{implementation_organization}{date}{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||
("请帮我查一下{implementation_organization}{date}存在{risk_level}风险的有多少", ["implementation_organization","date", "risk_level"]),
|
||||
|
||||
("{date}{project_type}类{construction_unit}负责的作业计划有多少?",
|
||||
["date", "project_type", "construction_unit"]),
|
||||
|
|
@ -234,14 +244,14 @@ TEMPLATE_CONFIG = {
|
|||
["implementation_organization", "project_department", "date"]),
|
||||
("{date}{project_department}{implementation_organization}有多少项作业计划?",
|
||||
["date", "project_department", "implementation_organization"]),
|
||||
("{date}{implementation_organization}有多少?", ["date", "implementation_organization"]),
|
||||
("{date}公司{project_department}有多少?", ["date", "project_department"]),
|
||||
("{date}{project_department}有多少?", ["date", "project_department"]),
|
||||
("{date}{project_name}有多少", ["date", "project_name"]),
|
||||
("{project_name}{date}有多少", ["project_name", "date"]),
|
||||
("{date}公司{project_name}有多少?", ["date", "project_name"]),
|
||||
("{date}工程性质是{project_type}有多少", ["project_type", "date"]),
|
||||
("工程性质是{project_type}{date}有多少", ["project_type", "date"])
|
||||
("请帮我查一下{date}{implementation_organization}有多少?", ["date", "implementation_organization"]),
|
||||
("请帮我查一下{date}公司{project_department}有多少?", ["date", "project_department"]),
|
||||
("请帮我查一下{date}{project_department}有多少?", ["date", "project_department"]),
|
||||
("请帮我查一下{date}{project_name}有多少", ["date", "project_name"]),
|
||||
("请帮我查一下{project_name}{date}有多少", ["project_name", "date"]),
|
||||
("请帮我查一下{date}公司{project_name}有多少?", ["date", "project_name"]),
|
||||
("请帮我查一下{date}工程性质是{project_type}有多少", ["project_type", "date"]),
|
||||
("请帮我查一下工程性质是{project_type}{date}有多少", ["project_type", "date"])
|
||||
]
|
||||
},
|
||||
"日计划作业内容": {
|
||||
|
|
@ -328,10 +338,21 @@ TEMPLATE_CONFIG = {
|
|||
["date", "project_department", "implementation_organization"]),
|
||||
|
||||
# 16. 查询特定日期和项目进度
|
||||
("{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
||||
("请帮我查一下{date}{project_name}作业内容是什么?", ["date", "project_name"]),
|
||||
# 班组
|
||||
("{date}{team_name}作业是什么?", ["date", "team_name"]),
|
||||
("{team_name}{date}作业内容", ["team_name", "date"])
|
||||
("请帮我查一下{date}{team_name}作业是什么?", ["date", "team_name"]),
|
||||
("请帮我查一下{team_name}{date}作业内容", ["team_name", "date"]),
|
||||
|
||||
("{team_leader}在{date}具体的作业内容", ["team_leader", "date"]),
|
||||
|
||||
# 9. 查询特定日期和项目类型下的高风险任务
|
||||
("{date}的{project_type}类风险等级为{risk_level}具体的作业计划", ["date", "project_type", "risk_level"]),
|
||||
|
||||
# 10. 查询特定日期和风险等级的任务安排
|
||||
("{date}风险等级为{risk_level}具体的2项作业计划", ["date", "risk_level"]),
|
||||
|
||||
("{date}{risk_level}作业内容", ["date", "risk_level"]),
|
||||
|
||||
]
|
||||
},
|
||||
"周计划作业内容": {
|
||||
|
|
@ -381,14 +402,21 @@ TEMPLATE_CONFIG = {
|
|||
# 15. 查询某项目部门在指定周的作业安排
|
||||
("{project_department}在{date}作业内容是什么?", ["project_department", "date"]),
|
||||
|
||||
("{date}{team_name}作业内容是什么", ["date", "team_name"]),
|
||||
("{team_name}{date}2项作业计划分别有哪些", ["team_name", "date"]),
|
||||
("{team_name}{date}2项作业计划分别是什么", ["team_name", "date"]),
|
||||
("{team_name}{date}有哪些作业", ["team_name", "date"]),
|
||||
("请帮我查一下{date}{team_name}作业内容是什么", ["date", "team_name"]),
|
||||
("请帮我查一下{team_name}{date}2项作业计划", ["team_name", "date"]),
|
||||
("请帮我查一下{team_name}{date}2项作业计划分别是什么", ["team_name", "date"]),
|
||||
("请帮我查一下{team_name}{date}有哪些作业", ["team_name", "date"]),
|
||||
|
||||
("{date}{construction_unit}具体作业计划", ["date", "construction_unit"]),
|
||||
|
||||
("{implementation_organization}{date}的作业", ["implementation_organization", "date"]),
|
||||
|
||||
("{implementation_organization}{project_department}{date}具体2项作业计划",
|
||||
["implementation_organization", "project_department", "date"]),
|
||||
]
|
||||
},
|
||||
"施工人数": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}施工人员有多少?", ["date", "project_name"]),
|
||||
("{date}{project_name}施工人数是多少?", ["date", "project_name"]),
|
||||
|
|
@ -473,9 +501,9 @@ TEMPLATE_CONFIG = {
|
|||
["project_department", "implementation_organization", "date"]),
|
||||
("{date}{project_department}{implementation_organization}有多少作业人数?",
|
||||
["date", "project_department", "implementation_organization"]),
|
||||
("{date}{project_department}{implementation_organization}作业人员有多少?",
|
||||
("请帮我查一下{date}{project_department}{implementation_organization}作业人员有多少?",
|
||||
["date", "project_department", "implementation_organization"]),
|
||||
("{project_department}{implementation_organization}{date}作业人员是多少",
|
||||
("请帮我查一下{project_department}{implementation_organization}{date}作业人员是多少",
|
||||
["project_department", "implementation_organization", "date"]),
|
||||
]
|
||||
},
|
||||
|
|
@ -515,8 +543,8 @@ TEMPLATE_CONFIG = {
|
|||
("{subcontractor}在{date}的出勤情况如何?", ["subcontractor", "date"]),
|
||||
("{subcontractor}在{date}的出勤情况怎么样?", ["subcontractor", "date"]),
|
||||
|
||||
("{date}{team_name}考勤人数是多少", ["date", "team_name"]),
|
||||
("{team_name}{date}考勤人数", ["team_name", "date"]),
|
||||
("请帮我查一下{date}{team_name}考勤人数是多少", ["date", "team_name"]),
|
||||
("请帮我查一下{team_name}{date}考勤人数", ["team_name", "date"]),
|
||||
]
|
||||
},
|
||||
"页面切换": {
|
||||
|
|
@ -562,13 +590,13 @@ TEMPLATE_CONFIG = {
|
|||
("工程性质是{project_type}{date}有多少项作业面?", ["project_type", "date"]),
|
||||
("工程性质是{project_type}{date}有多少条作业面?", ["project_type", "date"]),
|
||||
("{date}风险等级为{risk_level}的作业面有多少?", ["date", "risk_level"]),
|
||||
("公司{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||
("{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||
("公司工程性质为{project_type}{date}作业面有多少?", ["project_type", "date"]),
|
||||
("请帮我查一下公司{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||
("请帮我查一下{date}工程性质为{project_type}作业面有多少?", ["date", "project_type"]),
|
||||
("请帮我查一下公司工程性质为{project_type}{date}作业面有多少?", ["project_type", "date"]),
|
||||
]
|
||||
},
|
||||
"班组人数查询": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}班组人员有多少?", ["date", "project_name"]),
|
||||
("{date}{project_name}班组人数是多少?", ["date", "project_name"]),
|
||||
|
|
@ -599,16 +627,19 @@ TEMPLATE_CONFIG = {
|
|||
("{project_manager}负责的项目在{date}的班组人数是多少?", ["project_manager", "date"]),
|
||||
("{date}{project_manager}负责的项目的现场班组人数是多少?", ["date", "project_manager"]),
|
||||
#
|
||||
("{date}{implementation_organization}{project_department}班组人数是多少?",
|
||||
("请帮我查一下{date}{implementation_organization}{project_department}班组人数是多少?",
|
||||
["date", "implementation_organization", "project_department"]),
|
||||
("{implementation_organization}{project_department}{date}班组人员有多少?",
|
||||
("请帮我查一下{implementation_organization}{project_department}{date}班组人员有多少?",
|
||||
["implementation_organization", "project_department", "date"]),
|
||||
("{implementation_organization}{project_department}{date}班组人数是多少?",
|
||||
["implementation_organization", "project_department", "date"])
|
||||
("请帮我查一下{implementation_organization}{project_department}{date}班组人数是多少?",
|
||||
["implementation_organization", "project_department", "date"]),
|
||||
("{date}{team_name}有多少?", ["date", "team_name"]),
|
||||
("请帮我查一下{date}{team_name}有多少?", ["date", "team_name"]),
|
||||
|
||||
]
|
||||
},
|
||||
"班组数查询": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}现场有多少班组?", ["date", "project_name"]),
|
||||
("{date}{project_name}现场有多少个班组?", ["date", "project_name"]),
|
||||
|
|
@ -632,14 +663,14 @@ TEMPLATE_CONFIG = {
|
|||
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||
("工程性质是{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||
("{date}风险等级为{risk_level}的班组有多少?", ["date", "risk_level"]),
|
||||
("公司{date}工程性质为{project_type}班组有多少个?", ["date", "project_type"]),
|
||||
("{date}工程性质为{project_type}现场班组有多少?", ["date", "project_type"]),
|
||||
("公司工程性质为{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||
("请帮我查一下{date}风险等级为{risk_level}的班组有多少?", ["date", "risk_level"]),
|
||||
("请帮我查一下公司{date}工程性质为{project_type}班组有多少个?", ["date", "project_type"]),
|
||||
("请帮我查一下{date}工程性质为{project_type}现场班组有多少?", ["date", "project_type"]),
|
||||
("请帮我查一下公司工程性质为{project_type}{date}有多少班组?", ["project_type", "date"]),
|
||||
]
|
||||
},
|
||||
"作业面内容": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}作业面是什么?", ["date", "project_name"]),
|
||||
("{project_name}在{date}的作业面有哪些", ["project_name", "date"]),
|
||||
|
|
@ -707,7 +738,7 @@ TEMPLATE_CONFIG = {
|
|||
]
|
||||
},
|
||||
"班组详情": {
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天"],
|
||||
"date": ["今日", "昨日", "2024年5月24日", "5月24日", "今天", "昨天","2025-04-09"],
|
||||
"templates": [
|
||||
("{date}{project_name}现场具体有哪些班组?", ["date", "project_name"]),
|
||||
("{date}{project_name}现场班组详情是什么?", ["date", "project_name"]),
|
||||
|
|
|
|||
Loading…
Reference in New Issue