手机网站建设代码中国商标自助查询

张小明 2026/1/7 11:14:16
手机网站建设代码,中国商标自助查询,宁波seo推广哪家好,wordpress cdn优化本实验围绕“文本型疾病描述数据的结构化建模与图数据库智能查询”这一核心目标#xff0c;结合大模型技术与图数据库技术#xff0c;构建从非结构化医学文本 → 结构化知识 → 图数据库 → 自然语言问答的完整实验流程。实验整体设计分为数据获取、信息抽取、图数据库构建以…本实验围绕“文本型疾病描述数据的结构化建模与图数据库智能查询”这一核心目标结合大模型技术与图数据库技术构建从非结构化医学文本 → 结构化知识 → 图数据库 → 自然语言问答的完整实验流程。实验整体设计分为数据获取、信息抽取、图数据库构建以及大模型图查询四个阶段逐步验证大模型在医学知识建模与智能检索场景下的应用效果。一、实验数据与预处理本实验所使用的数据来源于公开医学健康网站——36 健康网数据内容主要为各类疾病的文字介绍信息。该类数据以自然语言文本形式呈现具有信息密集、语义丰富但结构松散的特点适合作为大模型进行医学文本结构化抽取与知识建模的实验数据来源。在数据采集阶段实验采用后羿采集器作为爬虫工具对 36 健康网中疾病相关页面进行定向爬取。爬取内容主要包括疾病名称及其对应的文本描述信息。输入对应网址爬取数据由于原始采集数据属于典型的非结构化文本数据在正式进入大模型处理之前需要进行必要的数据预处理操作。首先对爬取结果进行格式整理统一存储为 CSV / Excel 等结构化文件格式确保每条记录对应一类疾病并保留完整的原始文本描述。其次对文本内容进行基础清洗包括去除网页冗余信息、无关标签、特殊符号及重复段落减少噪声对模型抽取结果的干扰。此外在预处理过程中对数据进行了初步规范化处理如统一疾病名称表达方式删除明显缺失或内容异常的样本确保数据语义清晰、文本完整。经过上述步骤处理后随机抽取其中50种疾病最终形成了一份质量较高的疾病非结构化文本数据集为后续基于大模型的结构化信息抽取实验提供了可靠的数据输入。清洗数据的具体代码prepare_disease_texts.py 如下import pandas as pd import re import random # 1. 读取疾病文件 df pd.read_csv(disease1.csv, encodingutf-8) # 2. 对 description 长度进行初筛过滤掉无意义/太短内容 df[desc_length] df[description].astype(str).apply(len) candidate df[df[desc_length] 50].copy() # 可按需调整阈值 # 3. 文本清洗函数去噪、去前缀、规范空格 def clean_text(text): text str(text) # 去掉可能存在的常见前缀 text re.sub(r^(疾病|病因|描述|答|医生), , text) # 去掉 HTML 标签 text re.sub(r.*?, , text) # 去掉多余空格/换行 text re.sub(r\s, , text).strip() # 去掉常见噪声符号 noise_chars r[★☆◆■●▲▼□◇…→←↑↓] text re.sub(noise_chars, , text) return text # 4. 应用清洗 candidate[clean_description] candidate[description].apply(clean_text) # 5. 再次过滤清洗后长度不足的去除 candidate candidate[candidate[clean_description].apply(len) 60] # 6. 去重 candidate candidate.drop_duplicates(subset[clean_description]) # 7. 随机抽取50条 sample_n min(50, len(candidate)) final_samples candidate.sample(nsample_n, random_state42)[[name, clean_description]] final_samples final_samples.reset_index(dropTrue) final_samples.columns [disease_name, disease_text] # 8. 保存输出 final_samples.to_csv(disease_50_samples.csv, indexFalse, encodingutf-8-sig) print(完成已生成 disease_50_samples.csv共 {} 条疾病描述文本.format(sample_n)) print(final_samples.head())通过对实验数据的合理采集与预处理有效保证了疾病文本数据的可用性与一致性为后续大模型抽取、知识图谱构建以及图数据库查询实验奠定了数据基础。二、大模型结构化抽取实验设计与对比分析1. 大模型平台选择与服务配置本实验采用阿里云“百炼”大模型服务平台作为大模型调用环境使用其中的通义千问Qwen-Plus模型完成医学文本的结构化信息抽取任务。百炼平台为用户提供标准化的大模型 API 接口并支持通过兼容 OpenAI 协议的方式进行调用便于与现有 Python 生态及 LangChain 框架集成。实验前首先在阿里云官网完成账号注册与实名认证并在控制台中开通“百炼”大模型服务。平台为新用户提供一定的免费调用额度使得实验能够在不额外增加成本的情况下完成多轮模型调用与参数对比测试。随后通过配置环境变量的方式将 DashScope API Key 安全地加载至实验环境中确保模型调用过程的稳定性与安全性。2. 实验任务定义与字段设计本部分的核心任务是将疾病非结构化文本转化为统一格式的结构化数据以支持后续疾病知识图谱的构建与图数据库存储。结合前一阶段爬取的疾病文本内容特点并遵循“不过度推断、尽量贴近原文”的原则实验最终定义了以下 10 个结构化抽取字段disease_name疾病名称affected_part累及部位department就诊科室symptoms症状表现risk_groups高风险人群infectious是否具有传染性check_method检查方式drug常用药物rate治愈率或控制率insurance医保情况上述字段既能够覆盖疾病文本中的核心医学信息又保持了较好的通用性避免因字段过于细碎而导致模型抽取失败率升高。3. Prompt 设计与对比方案为系统评估不同提示策略与模型随机性参数对抽取效果的影响本实验设计了3 种 Prompt 形式 × 3 种 Temperature 参数的对比实验共形成 9 种实验组合。实验中采用了以下三类Prompt简洁指令型 Prompt仅给出任务目标、字段定义和输出格式强调直接从文本中抽取信息适合测试模型在最少约束条件下的抽取能力。详细指令型 Prompt在简洁指令基础上进一步强调“不得推断、不补充、不解释”引导模型严格对齐原文内容进行信息抽取以降低幻觉风险。示例引导型 Prompt在正式抽取前提供完整示例通过“示例—文本—JSON 输出”的方式帮助模型更好地理解字段含义和输出格式增强对复杂文本的适应能力。Temperature 用于控制模型生成结果的随机性本实验选取以下三种典型取值0.0生成结果最稳定、确定性最强0.5在稳定性与多样性之间折中1.0生成随机性较高语言灵活度增强通过对不同 Temperature 下抽取结果的对比分析模型随机性对结构化抽取质量的影响。4. 实验流程与结果分析实验采用 Python 编程实现基于 LangChain 框架对通义千问模型进行调用。文件名extraction_experiment.pyimport pandas as pd import os import json import time from tqdm import tqdm from dotenv import load_dotenv from langchain_openai import ChatOpenAI # 1. 环境 API Key load_dotenv() if not os.environ.get(DASHSCOPE_API_KEY): api_key input(请输入你的 DashScope API-Key: ).strip() os.environ[DASHSCOPE_API_KEY] api_key print(API Key 状态, 已就位 if os.environ.get(DASHSCOPE_API_KEY) else 缺失) # 2. 加载数据 try: df pd.read_csv(disease_50_samples(1).csv) assert disease_text in df.columns print(f成功加载 {len(df)} 条文本) except Exception as e: print(❌ 数据加载失败, e) exit(1) # 3. 字段定义与文本严格对齐 FIELDS [ disease_name, affected_part, department, symptoms, risk_groups, infectious, check_method, drug, rate, insurance ] # 4. Prompt 构造函数 def build_prompt(prompt_type, text): json_template { disease_name: , affected_part: , department: , symptoms: , risk_groups: , infectious: , check_method: , drug: , rate: , insurance: } if prompt_type 简洁指令: return f 请从以下医学文本中抽取结构化信息仅返回 JSON。 字段未出现请返回空字符串 。 JSON格式 {json_template} 文本 {text} if prompt_type 详细指令: return f 你是医学文本结构化抽取专家。 任务从文本中“照原文抽取”信息不允许推断或补充。 不要输出解释只返回 JSON。 JSON格式 {json_template} 文本 {text} if prompt_type 示例引导: return f 请参考示例从文本中抽取疾病结构化信息仅返回 JSON。 示例 文本 水痘是一种常见疾病主要累及皮肤。就诊于传染科。 症状包括发烧、水泡。传染性有。治愈率95%。医保是。 JSON {{ disease_name: 水痘, affected_part: 皮肤, department: 传染科, symptoms: 发烧,水泡, risk_groups: , infectious: 有传染性, check_method: , drug: , rate: 95%, insurance: 是 }} 现在处理以下文本 {text} raise ValueError(未知 Prompt 类型) # 5. 后处理 评分函数 def normalize_fields(data): return {k: data.get(k, ) or for k in FIELDS} def score_extraction(data): return sum(1 for k in FIELDS if data[k].strip()) # 6. 主实验循环3×3 PROMPTS [简洁指令, 详细指令, 示例引导] TEMPERATURES [0.0, 0.5, 1.0] summary_results [] all_structured_records [] for prompt_name in PROMPTS: for temp in TEMPERATURES: print(f\n Prompt{prompt_name} | Temp{temp} ) llm ChatOpenAI( modelqwen-plus, temperaturetemp, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, api_keyos.environ[DASHSCOPE_API_KEY] ) total_score 0 success 0 for _, row in tqdm(df.iterrows(), totallen(df)): text row[disease_text] prompt build_prompt(prompt_name, text) try: response llm.invoke(prompt).content.strip() data json.loads(response) data normalize_fields(data) score score_extraction(data) total_score score success 1 data[Prompt] prompt_name data[Temperature] temp data[Score] score all_structured_records.append(data) time.sleep(0.1) except Exception: continue avg_score total_score / success if success 0 else 0 summary_results.append({ Prompt: prompt_name, Temperature: temp, 成功抽取条数: success, 平均得分(满分10): round(avg_score, 2) }) # 7. 输出结果 summary_df pd.DataFrame(summary_results) detail_df pd.DataFrame(all_structured_records) summary_df.to_excel(3x3_抽取效果对比(1).xlsx, indexFalse) detail_df.to_excel(疾病结构化结果_全部组合(1).xlsx, indexFalse) print(\n✅ 实验完成) print(已生成) print( - 3x3_抽取效果对比.xlsx) print( - 疾病结构化结果_全部组合.xlsx)导入大模型运行结果从实验结果可以看出在 3 种 Prompt 形式与 3 种 Temperature 组合下模型均能够对全部 50 条疾病文本完成结构化抽取说明通义千问模型在该任务上的整体稳定性较好不同参数设置不会导致抽取失败。从平均得分来看各组合的得分集中在 3.03.3 分之间整体差异不大表明在当前字段设计与文本复杂度条件下模型对显性疾病信息如疾病名称、部分症状等的抽取能力较强但对隐含或文本中出现频率较低的字段如治愈率、医保情况、检查方式等覆盖有限。对比不同 Prompt 形式可以发现简洁指令型 Prompt 的平均得分略高说明在字段较多但文本信息有限的情况下过于复杂的指令或示例并未显著提升抽取效果反而可能引入一定约束。Temperature 的变化对结果影响较小低温度下结果略为稳定高温度下存在轻微波动但整体未出现明显性能退化表明该任务对模型随机性的敏感度较低。疾病结构化结果三、Neo4j / TuGraph 系统架构与实现1. Neo4j 系统实现流程启动docker用powershell指令进入windows命令行输入docker images查看是否有名字叫 docker.lms.run/library/neo4j 的镜像。命令行输入docker run --publish7475:7474 --publish7688:7687 --volume//c/Users/zhang/Desktop/专业综合实践/data:/data --volume//c/Users/zhang/Desktop/专业综合实践/import:/import docker.1ms.run/library/neo4j打开浏览器在浏览器地址栏输入localhost:7475输入用户名和密码进入图形化操作界面在 Neo4j 实验环境中首先通过 Python 驱动与数据库建立连接并构建包含疾病、症状、药物等节点及其关系的示例图谱。随后引入通义千问大模型结合 LangChain 提供的图问答链对用户输入的自然语言问题进行处理。文件名neo4j_langchain.pyfrom langchain_openai import ChatOpenAI from langchain_community.graphs import Neo4jGraph from langchain.chains import GraphCypherQAChain import os # 密钥处理 from dotenv import load_dotenv load_dotenv() if not os.environ.get(DASHSCOPE_API_KEY): os.environ[DASHSCOPE_API_KEY] input(请粘贴你的 DashScope API-Key: ).strip() os.environ[OPENAI_API_KEY] os.environ[DASHSCOPE_API_KEY] # 连接 Neo4j graph Neo4jGraph( urlbolt://localhost:7687, usernameneo4j, passwordrxt0413zC, refresh_schemaFalse # 关键关闭自动 schema ) # 建立疾病知识图谱 print(正在创建 疾病知识图谱 示例...) graph.query(MATCH (n) DETACH DELETE n) graph.query( MERGE (d:Disease {name: 水痘}) MERGE (s1:Symptom {name: 发热}) MERGE (s2:Symptom {name: 水疱}) MERGE (dpt:Department {name: 传染科}) MERGE (drug:Drug {name: 阿昔洛韦}) MERGE (d)-[:HAS_SYMPTOM]-(s1) MERGE (d)-[:HAS_SYMPTOM]-(s2) MERGE (d)-[:BELONGS_TO]-(dpt) MERGE (d)-[:TREATED_BY]-(drug) ) print(疾病图谱创建完成) # 手动 Schema graph.schema Node properties are the following: Disease {name: STRING} Symptom {name: STRING} Drug {name: STRING} Department {name: STRING} Relationship properties are the following: (No relationship properties) The relationships are the following: (:Disease)-[:HAS_SYMPTOM]-(:Symptom) (:Disease)-[:TREATED_BY]-(:Drug) (:Disease)-[:BELONGS_TO]-(:Department) print(Schema 已手动设置) # 创建 LLM Cypher QA Chain llm ChatOpenAI( modelqwen-plus, temperature0, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) chain GraphCypherQAChain.from_llm( llmllm, graphgraph, verboseTrue, # 调试 Cypher allow_dangerous_requestsTrue ) # 测试问题 questions [ 水痘有哪些症状, 水痘通常去哪个科室, 水痘用什么药治疗, 列出水痘的所有症状和用药, 有哪些疾病属于传染科 ] print(\n *80) print(开始测试自然语言 → Cypher → 结果) print(*80) for i, q in enumerate(questions, 1): print(f\n第 {i} 题{q}) result chain.invoke({query: q}) print(答案 →, result[result])系统在运行时先由大模型根据预定义的 Schema 自动生成 Cypher 查询语句再由 Neo4j 执行该语句并返回查询结果。通过开启 verbose 模式可以清晰地观察到模型生成的 Cypher 语句从而验证其与图数据库结构的一致性。实验结果表明在 Schema 定义清晰、约束合理的前提下大模型能够正确生成可执行的 Cypher 查询语句。2. TuGraph 系统实现流程在 TuGraph 平台中由于其不完全支持 LangChain 默认的自动事务与 Schema 刷新机制实验对系统架构进行了针对性调整。首先通过 TuGraph 控制台或导入工具提前完成疾病知识图谱的数据导入与 Schema 创建随后在程序中显式指定数据库名称并采用自动提交auto-commit方式执行 Cypher 查询避免显式事务引发的兼容性问题。首先启动 TuGraph在命令行中执行docker run -d -v D:\disease:/mnt -p 7070:7070 -p 7687:7687 docker.1ms.run/tugraph/tugraph-runtime-ubuntu18.04 lgraph_server在浏览器地址栏输入http://localhost:7070即可进入 TuGraph 图形化操作界面。接着将第二部分处理好的结构化文本数据导入TuGraph并运行脚本TuGraph_langchain.pyfrom langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from neo4j import GraphDatabase import os from dotenv import load_dotenv # 1. 密钥 load_dotenv() if not os.environ.get(DASHSCOPE_API_KEY): os.environ[DASHSCOPE_API_KEY] input(请输入 DashScope API Key: ).strip() os.environ[OPENAI_API_KEY] os.environ[DASHSCOPE_API_KEY] # 2. 连接 TuGraph driver GraphDatabase.driver( bolt://localhost:7687, auth(admin, 73TuGraph) ) def run_cypher(cypher: str): with driver.session(databasedefault) as session: return session.run(cypher).data() # 3. LLM llm ChatOpenAI( modelqwen-plus, temperature0, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) # 4. Prompt prompt ChatPromptTemplate.from_messages([ ( system, 你是 TuGraph 图数据库专家需要将中文医疗问题转换为 Cypher 查询。 图数据库 Schema 节点 - Disease(name) - Drug(name) - Symptom(name) - Department(name) - Age(name) 关系 - (Disease)-[:HAS_Drug]-(Drug) - (Disease)-[:HAS_SYMPTOM]-(Symptom) - (Disease)-[:IS_OF_Department]-(Department) - (Disease)-[:IS_OF_AGE]-(Age) 【生成规则必须严格遵守】 你只能从以下 Cypher 模板中选择并填写不得自行创造新结构。 【模板 1疾病列表】 MATCH (d:Disease) RETURN d.name LIMIT 5 【模板 2疾病 → 药物】 MATCH (d:Disease)-[:HAS_Drug]-(m:Drug) WHERE d.name X RETURN m.name 【模板 3症状 → 疾病】 MATCH (s:Symptom)-[:HAS_SYMPTOM]-(d:Disease) WHERE s.name X RETURN d.name 【模板 4疾病 → 症状】 MATCH (d:Disease)-[:HAS_SYMPTOM]-(s:Symptom) WHERE d.name X RETURN s.name 【模板 5疾病 → 科室】 MATCH (d:Disease)-[:IS_OF_Department]-(k:Department) WHERE d.name X RETURN k.name 【模板 6人群 → 疾病】 MATCH (d:Disease)-[:IS_OF_AGE]-(a:Age) WHERE a.name X RETURN d.name 约束 1. 只输出一条 Cypher 2. MATCH 开头RETURN 结尾 3. 不输出解释、不加 markdown 4. 若问题无法明确匹配模板使用【模板 1】 ), (human, {question}) ]) chain prompt | llm # 5. 测试 questions [ 给我几个疾病, 不孕症该吃什么药, 月经不调可能是什么病, 糖尿病有什么症状, 不孕症的症状是什么 ] print( * 80) print(TuGraph NL → Cypher) print( * 80) for q in questions: print(f\n问题{q}) cypher chain.invoke({question: q}).content.strip() print(生成 Cypher) print(cypher) try: data run_cypher(cypher) print(f✅ 返回 {len(data)} 条结果) if data: print(示例, data[:3]) except Exception as e: print(❌ 执行失败, e)在大模型交互层采用更加严格和保守的 Prompt 设计策略对可生成的 Cypher 语句进行约束例如限定节点标签、关系类型以及可使用的属性字段。这种方式有效降低了模型生成非法或不兼容语句的概率提高了查询成功率。实验过程中通过逐步放宽 Prompt 约束实现了从“简单节点查询”到“多实体关系查询”的渐进式测试。四、实验总结本实验围绕疾病文本数据完成了从非结构化数据采集、结构化信息抽取到疾病知识图谱构建及自然语言查询的完整流程。实验结果表明大模型在疾病知识建模和图数据库交互任务中具有较高的实用价值能够有效降低人工规则设计和查询编写的成本。通过 Neo4j 与 TuGraph 双平台的实践验证实验进一步证明了大模型技术在不同图数据库系统中的可迁移性和适配潜力。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

如何制作公司网站和网页专业网站建设模板

想要轻松下载网络视频却对命令行望而却步?yt-dlp-gui作为yt-dlp的Windows图形界面版本,完美解决了这一痛点。这款免费开源工具让你只需简单点击就能完成视频下载,支持多个主流视频平台等数百个平台,还能批量处理和个性化设置&…

张小明 2026/1/6 14:22:13 网站建设

云南 网站建设硬件开发管理流程

如何在工程实践中快速掌握可靠性分析工具 【免费下载链接】ReliabilityWorkbench中文用户手册下载 Reliability Workbench 中文用户手册下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/82e10 作为一名工程师,你是否曾经面临这样的困…

张小明 2026/1/7 3:43:21 网站建设

蓝色管理系统网站模版长春建个网站需要多少钱?

目录具体实现截图项目介绍论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持Python(flask,django)、…

张小明 2026/1/7 3:43:22 网站建设

北京网站的网站建设公司西安工程建设信息中心

还在为绘制UML图表而头疼吗?PlantUML Editor为您带来革命性的图表创作体验——用写代码的方式画图,让技术文档可视化变得前所未有的简单! 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_…

张小明 2026/1/7 3:43:23 网站建设

揭阳网站制作案例镇江网站建设要多少钱

在 2026 年,越来越多用户反馈 KakaoTalk 账号被限制、冻结甚至直接封禁,尤其集中在海外使用、多设备登录、业务账号或团队协作场景中。Kakao 的账号风控体系已经从“行为检测”升级为多维度综合判定,包括设备、IP、账号历史与使用行为。如果只…

张小明 2026/1/7 3:43:24 网站建设

建设公共网站的目的怎么制作论坛

Tamra-FAPI-4,TAMRA标记成纤维细胞活化蛋白抑制剂 4,实现对成纤维细胞的靶向识别 Tamra-FAPI-4,即 TAMRA(羧基四甲基罗丹明)荧光染料标记的成纤维细胞活化蛋白抑制剂 4(FAPI-4),是一…

张小明 2026/1/7 3:43:23 网站建设