From b9fa6836958ffab893f0b5fb181534a5236149c8 Mon Sep 17 00:00:00 2001 From: zoujiwen Date: Fri, 13 Jun 2025 13:51:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20kg=5Flab=5F6.13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 6.13lab 更新main:更新为循环对话 --- kg_lab_6.13/main.py | 64 ++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/kg_lab_6.13/main.py b/kg_lab_6.13/main.py index 7ff72de..998d7bb 100644 --- a/kg_lab_6.13/main.py +++ b/kg_lab_6.13/main.py @@ -1,8 +1,50 @@ from chains_lab import Problem_rewrite +from vector_lab import intersection_of_three_lists +from utils import find_target_item, find_target_items, pre_mapping, pre_mapping2 +import json +# 初始化 problem_rewrite = Problem_rewrite() -from vector_lab import intersection_of_three_lists +# 加载数据 +with open('./data/data.json', 'r', encoding='utf-8') as file: + data = json.load(file) + +print("📥 请输入查询内容,输入 'exit' 可退出程序。\n") + +while True: + input_str = input("🔍 输入问题:") + + if input_str.lower() == 'exit': + print("👋 已退出。") + break + + try: + results = intersection_of_three_lists(input_str) + if not results: + print("⚠️ 无法从向量中获取候选项。") + continue + + retriever = results[0] + + print(f"➡️ 匹配向量检索结果:{retriever}") + + # 重写问题,提取关键词 + keywords = problem_rewrite.invoke({ + "query": input_str, + "retriever": retriever + }) + + print(f"🧠 提取关键词:{keywords}") + + # 预映射为图数据库结构 + input_neo4j = pre_mapping2(keywords, data) + + print(f"📊 图谱相关知识输出:\n{input_neo4j}\n") + + except Exception as e: + print(f"❌ 发生错误:{e}") + # input_str1 = "杆塔总基数是多少?" # input_str2 = "单回路长度是多少?" @@ -13,25 +55,5 @@ from vector_lab import intersection_of_three_lists # input_str7 = "计算一下本体工程机械费" # ipout_str8 = "项目建设技术服务费合计" -input_str = "项目建设技术服务费合计是多少?" -results = intersection_of_three_lists(input_str) - -retriever = intersection_of_three_lists(input_str)[0] - -print(f"输入:{input_str}") - -keywords = problem_rewrite.invoke({"query":input_str, "retriever":retriever}) - -print(f"输出:{keywords}") -import json - -with open('./data/data.json', 'r', encoding='utf-8') as file: - data = json.load(file) - -from utils import find_target_item, find_target_items, pre_mapping, pre_mapping2 - -input_neo4j = pre_mapping2(keywords, data) - -print(f"检索目标:{input_neo4j}") \ No newline at end of file