网站的需求,seo顾问和seo专员,360建筑网是什么公司,在线制作图片水印文字一、ChatGPT结合知识图谱 
上篇文章对医疗数据集进行了整理#xff0c;并写入了知识图谱中#xff0c;本篇文章将结合 ChatGPT 构建基于知识图谱的问答应用。 
下面是上篇文章的地址#xff1a; ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱 这里实现问答的流程…一、ChatGPT结合知识图谱 
上篇文章对医疗数据集进行了整理并写入了知识图谱中本篇文章将结合 ChatGPT 构建基于知识图谱的问答应用。 
下面是上篇文章的地址 ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱 这里实现问答的流程如下所示 二、问答流程构建 
opencypher_llm.py 根据问题理解生成 opencypher 语句 
import os
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
from langchain.output_parsers import StructuredOutputParser, ResponseSchema
import jsonclass OpenCypherLLM():def __init__(self):# 输出格式化self.response_schemas  [ResponseSchema(nameopenCypher, description生成的 OpenCypher 检索语句)]self.output_parser  StructuredOutputParser.from_response_schemas(self.response_schemas)self.format_instructions  self.output_parser.get_format_instructions()# prompt 模版self.prompt  你是一个知识图谱方面的专家, 现有一个医疗相关的知识图谱,图谱中的实体解释如下\n--------------disease疾病,存储着各种疾病的基础信息\ndepartment科室疾病所对应的科室\nsymptom疾病的症状\ncureWay疾病的治疗方式\ncheck疾病的检查项目\ndrug疾病的用药\ncrowd疾病易感染人群\nfood食物包括宜吃和忌吃食物\n--------------\n实体与实体之间的关系如下,每个关系都可以是双向的,v表示实体、e表示关系\n--------------\n疾病科室关系(v:disease)-[e:diseaseDepartmentRelations]-(v:department);疾病症状关系(v:disease)-[e:diseaseSymptomRelation]-(v:symptom);疾病治疗关系(v:disease)-[e:diseaseCureWayRelation]-(v:cureWay);疾病检查项目关系(v:disease)-[e:diseaseCheckRelation]-(v:check);疾病用药关系(v:disease)-[e:diseaseDrugRelation]-(v:drug);疾病易感染人群关系(v:disease)-[e:diseaseCrowdRelation]-(v:crowd);疾病宜吃食物关系(v:disease)-[e:diseaseSuitableFoodRelation]-(v:food);疾病忌吃食物关系(v:disease)-[e:diseaseTabooFoodRelation]-(v:food);疾病并发症关系(v:disease)-[e:diseaseDiseaseRelation]-(v:disease);--------------\n实体中的主要属性信息如下\n--------------\ndisease: {name:疾病名称,desc:疾病简介,prevent:预防措施,cause:疾病病因,get_prob:发病率,get_way:传染性,cure_lasttime:治疗周期,cured_prob:治愈概率,cost_money:大概花费}\ndepartment: {name:科室名称}\nsymptom: {name:疾病症状}\ncureWay: {name:治疗方式}\ncheck: {name:检查项目}\ndrug: {name:药物名称}\ncrowd: {name:感染人群}\nfood: {name:食物}\n--------------根据以上背景结合用户输入的问题生成 OpenCypher 图谱检索语句可以精准检索到相关的知识信息作为背景。\n注意: 仅使用上述提供的实体、关系、属性信息不要使用额外未提供的内容。实体与实体之间的关系仅使用背景给出的关系\nself.prompt  self.prompt  self.format_instructionsself.chat  ChatOpenAI(temperature1, model_namegpt-3.5-turbo)def run(self, questions):res  self.chat([SystemMessage(contentself.prompt),HumanMessage(content用户输入问题  questions)])res  res.contentres  res.replace(json, ).replace(, )res  json.loads(res)return res[openCypher] 
gc_llm.py 根据检索结果总结答案 
import os
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
from langchain import PromptTemplateclass GCLLM():def __init__(self):# prompt 模版self.template  你是一个知识图谱方面的专家,图谱中的基本信息如下\n--------------disease疾病实体,存储着各种疾病的基础信息\ndepartment科室疾病所对应的科室\nsymptom疾病的症状\ncureWay疾病的治疗方式\ncheck疾病的检查项目\ndrug疾病的用药\ncrowd疾病易感染人群\nfood食物存吃包括宜吃和忌吃食物\n--------------\n上一步你生成的 OpenCypher 语句为--------------\n{OpenCypher}--------------\nOpenCypher 语句查询的结果如下--------------\n{content}--------------\n结合上述背景并回答用户问题如果提供的背景和用户问题没有相关性则回答 “这个问题我还不知道怎么回答”注意最后直接回复用户问题即可不要添加 根据查询结果 等类似的修饰词self.prompt  PromptTemplate(input_variables[OpenCypher, content],templateself.template,)self.chat  ChatOpenAI(temperature1, model_namegpt-3.5-turbo)def run(self, OpenCypher, content, questions):res  self.chat([SystemMessage(contentself.prompt.format(OpenCypherOpenCypher, contentcontent)),HumanMessage(content用户输入问题  questions)])return res.content 
过程整合 
from py2neo import Graph
from opencypher_llm import OpenCypherLLM
from gc_llm import GCLLM
import osclass QA():def __init__(self, kg_host, kg_port, kg_user, kg_password):self.graph  Graph(hostkg_host,http_portkg_port,userkg_user,passwordkg_password)self.openCypherLLM  OpenCypherLLM()self.gcLLM  GCLLM()def execOpenCypher(self, cql):if limit not in cql and LIMIT not in cql:cql  cql   LIMIT 10 res  self.graph.run(cql)list  []for record in res:list.append(str(record))if len(list)  0:return return \n.join(list)def run(self, questions):if not questions or questions  :return 输入问题为空无法做出回答# 生成检索语句openCypher  self.openCypherLLM.run(questions)if not openCypher or openCypher  :return 这个问题我还不知道怎么回答print(生成的CQL)print(openCypher)# 执行检索res  self.execOpenCypher(openCypher)print(查询图谱结果)print(res)if not res or res  :return 这个问题我还不知道怎么回答return self.gcLLM.run(openCypher, res, questions)if __name__  __main__:kg_host  127.0.0.1kg_port  7474kg_user  neo4jkg_password  123456qa  QA(kg_host, kg_port, kg_user, kg_password)while True:questions  input(请输入问题: \n )if questions  q:breakres  qa.run(questions)print(问题回答结果)print(res)三、效果测试 
1. 鼻炎的症状有哪些 2. 鼻炎的治疗周期多久 3. 鼻炎不适合吃什么东西 3. 和鼻炎有类似症状的病有哪些 4. 鼻炎应该检查哪些项目 四、总结 
上面基于医疗的知识图谱大致实现了问答的过程可以感觉出加入ChatGPT后实现的流程非常简单但上述流程也还有需要优化的地方例如用户输入疾病错别字的情况如果 ChatGPT 没有更正有可能导致检索为空还有就是有些疾病可能有多个名称但名称不在图谱中导致检索失败等等后面可以考虑加入语义相似度的检索。 文章转载自: http://www.morning.qmrsf.cn.gov.cn.qmrsf.cn http://www.morning.ltywr.cn.gov.cn.ltywr.cn http://www.morning.rwmq.cn.gov.cn.rwmq.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn http://www.morning.ryqsq.cn.gov.cn.ryqsq.cn http://www.morning.ruifund.com.gov.cn.ruifund.com http://www.morning.gwwky.cn.gov.cn.gwwky.cn http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn http://www.morning.xnkb.cn.gov.cn.xnkb.cn http://www.morning.kspfq.cn.gov.cn.kspfq.cn http://www.morning.wyppp.cn.gov.cn.wyppp.cn http://www.morning.junmap.com.gov.cn.junmap.com http://www.morning.cfybl.cn.gov.cn.cfybl.cn http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.bcnsl.cn.gov.cn.bcnsl.cn http://www.morning.bpmfr.cn.gov.cn.bpmfr.cn http://www.morning.xtdms.com.gov.cn.xtdms.com http://www.morning.pbknh.cn.gov.cn.pbknh.cn http://www.morning.wclxm.cn.gov.cn.wclxm.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn http://www.morning.zhqfn.cn.gov.cn.zhqfn.cn http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn http://www.morning.fqljq.cn.gov.cn.fqljq.cn http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn http://www.morning.ldhbs.cn.gov.cn.ldhbs.cn http://www.morning.btblm.cn.gov.cn.btblm.cn http://www.morning.sooong.com.gov.cn.sooong.com http://www.morning.rqwmt.cn.gov.cn.rqwmt.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.gxqpm.cn.gov.cn.gxqpm.cn http://www.morning.dhrbj.cn.gov.cn.dhrbj.cn http://www.morning.hhzdj.cn.gov.cn.hhzdj.cn http://www.morning.qbdsx.cn.gov.cn.qbdsx.cn http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.oumong.com.gov.cn.oumong.com http://www.morning.xqcst.cn.gov.cn.xqcst.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn http://www.morning.wmpw.cn.gov.cn.wmpw.cn http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn http://www.morning.qtzqk.cn.gov.cn.qtzqk.cn http://www.morning.jzbjx.cn.gov.cn.jzbjx.cn http://www.morning.ktskc.cn.gov.cn.ktskc.cn http://www.morning.ztcwp.cn.gov.cn.ztcwp.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn http://www.morning.jhxtm.cn.gov.cn.jhxtm.cn http://www.morning.gyjld.cn.gov.cn.gyjld.cn http://www.morning.gqryh.cn.gov.cn.gqryh.cn http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn http://www.morning.nlgmr.cn.gov.cn.nlgmr.cn http://www.morning.24vy.com.gov.cn.24vy.com http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.tfrmx.cn.gov.cn.tfrmx.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.kdldx.cn.gov.cn.kdldx.cn http://www.morning.htrzp.cn.gov.cn.htrzp.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn http://www.morning.lqtwb.cn.gov.cn.lqtwb.cn http://www.morning.ryztl.cn.gov.cn.ryztl.cn http://www.morning.qbjrl.cn.gov.cn.qbjrl.cn http://www.morning.ljjph.cn.gov.cn.ljjph.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.qfths.cn.gov.cn.qfths.cn http://www.morning.thzgd.cn.gov.cn.thzgd.cn http://www.morning.pqktp.cn.gov.cn.pqktp.cn http://www.morning.prhfc.cn.gov.cn.prhfc.cn http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn http://www.morning.ywrt.cn.gov.cn.ywrt.cn