|
@@ -3,6 +3,7 @@ package com.qizhen.healsphere.common.ai;
|
|
|
import cn.hutool.http.HttpRequest;
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
import cn.hutool.http.Method;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
@@ -14,7 +15,12 @@ import org.springframework.util.CollectionUtils;
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
-import java.util.*;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
public class QizhenAssistant {
|
|
|
|
|
@@ -37,6 +43,16 @@ public class QizhenAssistant {
|
|
|
}
|
|
|
}
|
|
|
public static final String domain = "https://console.bce.baidu.com/ai_apaas/personalSpace/knowledgeBase/document/detail/";
|
|
|
+
|
|
|
+ private static boolean contants(String content, String regex){
|
|
|
+ // 编译正则表达式
|
|
|
+ Pattern pattern = Pattern.compile(regex);
|
|
|
+
|
|
|
+ // 创建matcher对象
|
|
|
+ Matcher matcher = pattern.matcher(content);
|
|
|
+ return matcher.find();
|
|
|
+ }
|
|
|
+
|
|
|
private static Map<String,String> getAnswer(String userInput, String conversationId) {
|
|
|
Map<String,String> map = new HashMap<>();
|
|
|
JSONObject json = new JSONObject();
|
|
@@ -60,6 +76,7 @@ public class QizhenAssistant {
|
|
|
map.put("answer",answer == null ? noAnswer : answer);
|
|
|
JSONArray contents = JSONObject.parseObject(resposne).getJSONArray("content");
|
|
|
JSONArray docs = new JSONArray();
|
|
|
+ List<String> defaultReferences = new ArrayList<>();
|
|
|
for(int i=0;i<contents.size();i++){
|
|
|
JSONObject content = contents.getJSONObject(i);
|
|
|
if("rag".equals(content.getString("content_type"))){
|
|
@@ -69,12 +86,18 @@ public class QizhenAssistant {
|
|
|
if (references != null && references.size() > 0) {
|
|
|
for (int j = 0; j < references.size(); j++) {
|
|
|
JSONObject reference = new JSONObject();
|
|
|
- reference.put("index", references.getJSONObject(j).getString("id"));
|
|
|
- reference.put("url", domain + references.getJSONObject(j).getString("knowledgebase_id") + "/" + references.getJSONObject(j).getString("document_id"));
|
|
|
+ String id = references.getJSONObject(j).getString("id");
|
|
|
+ if(!contants(answer,"\\^(\\[\\d+\\])*\\["+id+"\\](\\[\\d+\\])*\\^")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ reference.put("index", id);
|
|
|
+ //reference.put("url", domain + references.getJSONObject(j).getString("knowledgebase_id") + "/" + references.getJSONObject(j).getString("document_id"));
|
|
|
reference.put("content", references.getJSONObject(j).getString("content"));
|
|
|
- reference.put("title", references.getJSONObject(j).getString("title"));
|
|
|
- reference.put("chunk_id", references.getJSONObject(j).getString("chunk_id"));
|
|
|
+ String title = references.getJSONObject(j).getString("title");
|
|
|
+ reference.put("title", title);
|
|
|
+ //reference.put("chunk_id", references.getJSONObject(j).getString("chunk_id"));
|
|
|
docs.add(reference);
|
|
|
+ defaultReferences.add(title);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -85,6 +108,7 @@ public class QizhenAssistant {
|
|
|
return map;
|
|
|
}
|
|
|
map.put("references", docs.toJSONString());
|
|
|
+ map.put("defaultReferences", JSON.toJSONString(defaultReferences));
|
|
|
System.out.println((System.currentTimeMillis() - l) / 1000 + userInput);
|
|
|
return map;
|
|
|
}
|
|
@@ -103,166 +127,68 @@ public class QizhenAssistant {
|
|
|
return JSONObject.parseObject(resposne).getString("conversation_id");
|
|
|
}
|
|
|
|
|
|
- public static String fileName = "C:\\Users\\17664\\Desktop\\knowleges"+System.currentTimeMillis()+".xlsx";
|
|
|
static HSSFWorkbook workbook;
|
|
|
public static void main(String[] args) {
|
|
|
String conversationId = getConversationId();
|
|
|
String accessToken = BaidubceUtil.getAccessToken();
|
|
|
+ String propertyStr = "并发症\t的并发症有哪些疾病" +
|
|
|
+ ",常见并发症\t的常见并发症有哪些疾病" +
|
|
|
+ ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
|
|
|
+ ",早期预警指标\t的早期临床预警指标有哪些" +
|
|
|
+ ",病因\t的病因或常见病因有哪些病因或致病原因" +
|
|
|
+ ",危险因素\t的危险因素或常见危险因素或危险诱发因素有哪些" +
|
|
|
+ ",遗传方式\t的遗传方式有哪些遗传方式(如果该病无遗传方式,可回答“无”)" +
|
|
|
+ ",遗传基因\t的遗传基因名称有哪些遗传基因名称" +
|
|
|
+ ",诱因\t的诱因或诱发因素或常见诱因有哪些诱因" +
|
|
|
+ ",出院标准\t的出院标准有哪些"+
|
|
|
+ ",合并症\t可能合并的疾病有哪些疾病" +
|
|
|
+ ",常合并的疾病\t常见的可能合并的疾病有哪些疾病" +
|
|
|
+ ",护理操作\t相关的护理操作有哪些护理操作名称" +
|
|
|
+ ",护理方案\t是一种疾病,请为该病做一个简要的护理方案" +
|
|
|
+ ",护理方式\t可能用到的护理方式或护理方法有哪些" +
|
|
|
+ ",分期\t的分期有哪些" +
|
|
|
+ ",分型\t的分型有哪些" +
|
|
|
+ ",分型分期标准\t的分型分期标准有哪些" +
|
|
|
+ ",父类\t的父类疾病名称或更大类的疾病名称有哪些疾病名称" +
|
|
|
+ ",严重程度\t按疾病严重程度分类有哪些" +
|
|
|
+ ",子类\t常见的子类疾病或疾病分类分型有哪些疾病" +
|
|
|
+ ",病原学检查\t的病原学检查项目名称有哪些" +
|
|
|
+ ",辅助检查\t的辅助检查项目名称有哪些" +
|
|
|
+ ",实验室检查\t的实验室检查项目名称或化验项目名称或检验项目名称有哪些" +
|
|
|
+ ",随访复查\t随访时需要复查的检查项目名称有哪些" +
|
|
|
+ ",体格检查\t的体格检查项目名称或体查项目名称有哪些" +
|
|
|
+ ",主要体格检查项目\t的主要体格检查项目名称或体查项目名称有哪些" +
|
|
|
+ ",相关B超检查\t相关的B超检查项目名称或超声检查项目名称或彩超检查项目名称有哪些" +
|
|
|
+ ",相关电学检查\t相关的心电图、脑电或肌电检查项目名称有哪些" +
|
|
|
+ ",相关检查\t相关的检查项目名称有哪些" +
|
|
|
+ ",关尿液检查\t相关的尿液检查项目名称或尿检名称有哪些" +
|
|
|
+ ",关血液检查\t相关的血液检查项目名称或血清学检查项目名称有哪些" +
|
|
|
+ ",血清学检查\t的血清学检查项目名称有哪些" +
|
|
|
+ ",相关影像学检查\t相关的影像学检查名称有哪些" +
|
|
|
+ ",诊断相关检查\t诊断相关的检查项目名称或诊断时需要的检查项目名称有哪些" +
|
|
|
+ ",治疗相关检查\t治疗相关检查项目名称或用于指导治疗的检查项目名称有哪些" +
|
|
|
+ ",与…鉴别诊断\t需要鉴别诊断的疾病名称有哪些疾病名称" +
|
|
|
+ ",就诊科室\t的就诊科室有哪些科室名称" +
|
|
|
+ ",最常见的就诊科室\t最常见的就诊科室有哪些科室名称" +
|
|
|
+ ",所属科室\t所属的科室有哪些科室名称" +
|
|
|
+ ",临床表现\t的临床表现有哪些临床表现" +
|
|
|
+ ",症状\t的症状有哪些症状" +
|
|
|
+ ",常见症状\t的常见症状有哪些症状" +
|
|
|
+ ",典型症状\t的典型症状有哪些症状" +
|
|
|
+ ",前驱症状\t的前驱症状或先兆症状有哪些症状" +
|
|
|
+ ",主要症状\t的主要症状有哪些症状";
|
|
|
|
|
|
- String propertyStr = "标识符\t的标识符有哪些" +
|
|
|
- ",ICD-10编码\t的ICD-10编码是什么" +
|
|
|
- ",临床版ICD-10编码\t临床版ICD-10编码是什么" +
|
|
|
- ",医保版ICD-10编码\t医保版ICD-10编码是什么" +
|
|
|
- ",七巧板医学术语集概念ID\t的七巧板医学术语集概念ID是是什么" +
|
|
|
- ",并发症\t的并发症有哪些" +
|
|
|
- ",常伴发…\t的常伴发…有哪些" +
|
|
|
- ",常见并发症\t的常见并发症有哪些" +
|
|
|
- ",病理过程\t的病理过程有哪些病理过程" +
|
|
|
- ",发病机制\t的发病机制有哪些" +
|
|
|
- ",形态学改变\t在器官、组织或细胞水平上的形态学异常变化有哪些(如“心脏脓肿”的形态学异常改变是“脓肿”,“眼睑下垂”的形态学异常改变是“下垂”)" +
|
|
|
- ",病情监测\t的临床病情监测措施有哪些" +
|
|
|
- ",临床预警指标\t的临床预警指标有哪些" +
|
|
|
- ",早期预警指标\t的早期临床预警指标有哪些" +
|
|
|
- ",病因\t的病因有哪些" +
|
|
|
- ",发生于…期间\t发生于…期间或诱发因素有哪些" +
|
|
|
- ",危险因素\t的危险因素或危险诱发因素有哪些" +
|
|
|
- ",遗传方式\t遗传方式有哪些(如果该病无遗传方式,可回答“无”)" +
|
|
|
- ",遗传基因\t可能引起本病的相关遗传基因名称哪些"+
|
|
|
- ",诱因\t的诱因或诱发因素有哪些" +
|
|
|
- ",致病原因\t的致病原因有哪些" +
|
|
|
- ",发生部位\t的发生部位有哪些部位" +
|
|
|
- ",主要损害部位\t的主要损害部位有哪些部位" +
|
|
|
- ",出院标准\t的出院标准有哪些" +
|
|
|
- ",传播媒介\t的传播媒介有哪些" +
|
|
|
- ",传播途径\t的传播途径有哪些" +
|
|
|
- ",传染率\t的传染率或传染比例是多少" +
|
|
|
- ",传染源\t的传染源有哪些" +
|
|
|
- ",多发季节\t的多发季节有哪些季节" +
|
|
|
- ",发病率\t的发病率或单位时间内新发病例的比例是多少" +
|
|
|
- ",感染率\t的感染率或感染比例是多少" +
|
|
|
- ",高发地区\t的高发地区、高发地域或高发地点名称有哪些(只需给出:地区、地域或地点的名称)" +
|
|
|
- ",高危人群\t的高危人群有哪些人群" +
|
|
|
- ",隔离期\t的隔离期或隔离观察期是多长时间" +
|
|
|
- ",患病率\t的患病率或患病比例是多少" +
|
|
|
- ",接触者检疫\t的接触者检疫措施有哪些" +
|
|
|
- ",流行地区\t的流行地区、流行地域或流行地点名称有哪些(只需给出:地区、地域或地点的名称)" +
|
|
|
- ",高发流行地区\t的高发流行地区有哪些" +
|
|
|
- ",潜伏期\t的潜伏期或感染潜伏期是多长时间" +
|
|
|
- ",是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
|
|
|
- ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)" +
|
|
|
- ",相关人群\t的高相关人群有哪些人群" +
|
|
|
- ",易感人群\t的易感人群有哪些人群" +
|
|
|
- ",易患人群\t的易患人群有哪些人群" +
|
|
|
- ",等同于\t等同于哪些疾病" +
|
|
|
- ",合并症\t可能合并的疾病有哪些" +
|
|
|
- ",常合并的疾病\t常见的可能合并的疾病有哪些" +
|
|
|
- ",后发于\t的后发于有哪些(操作、手术、临床所见)" +
|
|
|
- ",护理操作\t该病可能用到的护理操作有哪些护理操作名称" +
|
|
|
- ",护理方案\t是一种疾病,请为该病做一个护理方案" +
|
|
|
- ",护理方式\t该病可能用到的护理方式或护理方法有哪些" +
|
|
|
- ",疾病的分类\t疾病的分类有哪些" +
|
|
|
- ",分期\t的分期有哪些" +
|
|
|
- ",分型\t的分型有哪些" +
|
|
|
- ",分型分期标准\t的分型分期标准有哪些" +
|
|
|
- ",父类\t的父类疾病名称或大类疾病名称有哪些" +
|
|
|
- ",严重程度\t按疾病严重程度分类有哪些" +
|
|
|
- ",子类\t常见的子类疾病有哪些" +
|
|
|
- ",高峰期\t的高峰期为起病、发病后或疾病发作后多长时间" +
|
|
|
- ",临床过程\t的临床过程有哪些临床过程或时期" +
|
|
|
- ",病原学检查\t的病原学检查项目有哪些" +
|
|
|
- ",辅助检查\t的辅助检查项目有哪些" +
|
|
|
- ",实验室检查\t的实验室检查项目有哪些" +
|
|
|
- ",随访复查\t随访时需要复查的检查项目有哪些" +
|
|
|
- ",体格检查\t的体格检查项目有哪些" +
|
|
|
- ",主要体格检查项目\t的主要体格检查项目有哪些" +
|
|
|
- ",相关B超检查\t相关的B超检查项目有哪些" +
|
|
|
- ",相关电学检查\t相关的电学检查项目(如心电图、脑电图、肌电图)有哪些" +
|
|
|
- ",相关检查\t相关的检查项目有哪些" +
|
|
|
- ",关尿液检查\t相关的尿液检查项目有哪些" +
|
|
|
- ",关血液检查\t相关的血液检查项目有哪些" +
|
|
|
- ",关血液检查\t相关的体液检查项目有哪些" +
|
|
|
- ",血清学检查\t的血清学检查项目有哪些" +
|
|
|
- ",相关影像学检查\t相关的影像学检查有哪些" +
|
|
|
- ",诊断相关检查\t的诊断相关检查项目或诊断高相关检查项目有哪些" +
|
|
|
- ",治疗相关检查\t的治疗相关检查项目或用于指导治疗决策的检查项目有哪些" +
|
|
|
- ",与{需要鉴别诊断的疾病名称}的鉴别诊断\t需要鉴别诊断的疾病名称,其中的每一个疾病名称如何与本病鉴别,请简单明要的描述出来。" +
|
|
|
- ",与…鉴别诊断\t需要鉴别诊断的疾病名称有哪些疾病名称" +
|
|
|
- ",科室\t的临床科室有哪些" +
|
|
|
- ",就诊科室\t的就诊科室有哪些" +
|
|
|
- ",最常见的就诊科室\t最常见的就诊科室有哪些科室" +
|
|
|
- ",所属科室\t的所属科室有哪些" +
|
|
|
- ",链接\t疾病相关文章链接或网址有哪些" +
|
|
|
- ",临床表现\t的临床表现有哪些" +
|
|
|
- ",症状\t的症状有哪些" +
|
|
|
- ",伴随症状\t的伴随症状有哪些" +
|
|
|
- ",常见症状\t的常见症状有哪些" +
|
|
|
- ",典型症状\t的典型症状有哪些" +
|
|
|
- ",前驱症状\t的前驱症状或先兆症状有哪些" +
|
|
|
- ",少见症状\t的少见或罕见症状有哪些" +
|
|
|
- ",主要症状\t的主要症状有哪些" +
|
|
|
- ",名称\t的名称有哪些名称" +
|
|
|
- ",别称\t的别称或别名有哪些" +
|
|
|
- ",常用名称\t的常用名称有哪些" +
|
|
|
- ",英文名称\t的英文名称有哪些" +
|
|
|
- ",评价对象\t的评价对象有哪些" +
|
|
|
- ",评价结果\t的评价结果有哪些" +
|
|
|
- ",描述\t做一个简要或重要的描述或概述" +
|
|
|
- ",图片\t请找几张与本病相关性高的图片" +
|
|
|
- ",文献\t与该疾病相关性较高的文献名称有哪些" +
|
|
|
- ",专家共识\t与该疾病相关性较高的专家共识文献名称有哪些" +
|
|
|
- ",预防措施\t的预防措施有哪些" +
|
|
|
- ",二级预防\t的二级预防措施有哪些" +
|
|
|
- ",一级预防\t的一级预防措施有哪些" +
|
|
|
- ",预防性治疗措施\t的预防性治疗措施有哪些" +
|
|
|
- ",预防用药\t的预防用药有哪些药物" +
|
|
|
- ",预防原则\t的预防原则有哪几条" +
|
|
|
- ",发展为…\t的发展为…有哪些疾病转归情况" +
|
|
|
- ",后遗症\t的后遗症有哪些" +
|
|
|
- ",相关评估量表\t疾病相关的评估量表名称有哪些" +
|
|
|
- ",诊断标准\t的诊断标准有哪些" +
|
|
|
- ",诊疗操作\t的诊断性操作和治疗性操作分别有哪些" +
|
|
|
- ",诊疗依据\t的诊疗依据有哪些" +
|
|
|
- ",\t的诊断依据有哪些" +
|
|
|
- ",\t的治疗依据有哪些" +
|
|
|
- ",体征\t的体征有哪些" +
|
|
|
- ",常见体征\t的常见体征有哪些" +
|
|
|
- ",少见体征\t的少见体征有哪些" +
|
|
|
- ",知识来源\t疾病的知识来源有哪些" +
|
|
|
- ",康复治疗\t的康复治疗措施有哪些" +
|
|
|
- ",抗病毒治疗\t的抗病毒治疗的方案或方法归纳总结后有哪几个(只需回答方案或方法的名称及其解释性描述)" +
|
|
|
- ",临床路径\t疾病的临床路径名称或临床路径的文件名称有哪些" +
|
|
|
- ",免疫治疗\t的免疫治疗措施或方法归纳后有哪些" +
|
|
|
- ",手术指征\t的手术指征有哪些" +
|
|
|
- ",手术治疗\t的手术治疗有哪些手术名称" +
|
|
|
- ",治疗性操作\t的治疗性操作哪些治疗性操作名称" +
|
|
|
- ",一般治疗\t的一般治疗措施或一般治疗注意事项有哪些" +
|
|
|
- ",一线治疗\t的一线治疗措施或方法归纳后有哪些" +
|
|
|
- ",治疗场所\t的适合的治疗场所或地点有哪些" +
|
|
|
- ",治疗方案\t可选的治疗方案名称或疾病治疗的整体方案名称有哪些" +
|
|
|
- ",治疗方式\t的治疗方式或方法名称有哪些" +
|
|
|
- ",治疗目标\t的治疗目标或期望达到的最终的治疗目标有哪些" +
|
|
|
- ",治疗器械\t的治疗器械或可能用的治疗器械有哪些医疗器械或器材" +
|
|
|
- ",治疗药物\t的治疗药物归纳后有哪些药物" +
|
|
|
- ",二线用药\t的二线用药归纳后有哪些药物" +
|
|
|
- ",解热镇痛抗炎治疗\t可用的解热镇痛抗炎治疗药物有哪些药物" +
|
|
|
- ",抗病毒治疗药物\t的抗病毒治疗药物有哪些药物" +
|
|
|
- ",抗菌治疗药物\t的抗菌治疗药物有哪些药物" +
|
|
|
- ",免疫治疗药物\t的免疫治疗药物有哪些药物" +
|
|
|
- ",三线用药\t的三线用药有哪些药物" +
|
|
|
- ",一线用药\t的一线用药有哪些药物" +
|
|
|
- ",可用的中成药\t可用的中成药有哪些中成药" +
|
|
|
- ",中药方剂\t可用的中药方剂名称哪些中药方剂名称" +
|
|
|
- ",治疗原则\t的治疗原则有哪些" +
|
|
|
- ",注意事项\t的注意事项有哪些" +
|
|
|
- ",出院后注意事项\t的出院后注意事项有哪些" +
|
|
|
- ",禁忌药物\t的禁忌药物有哪些药物或药物类别" +
|
|
|
- ",转出重症病房标准\t的转出重症病房标准有哪些";
|
|
|
+ saveExel(propertyStr, conversationId, accessToken,"前半生");
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void saveExel(String propertyStr, String conversationId, String accessToken,String fileName) {
|
|
|
String[] properties = propertyStr.split(",");
|
|
|
workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
|
|
|
- HSSFSheet sheet = workbook.createSheet("全科");;//工作表
|
|
|
+ HSSFSheet sheet = workbook.createSheet(fileName);
|
|
|
+ ;//工作表
|
|
|
int rows = 0;
|
|
|
- //for(String property:properties){
|
|
|
- List<Knowlege> data = getData(conversationId, accessToken, "症状\t的症状有哪些症状");
|
|
|
+ for(String property:properties){
|
|
|
+ List<Knowlege> data = getData(conversationId, accessToken, property);
|
|
|
if(!CollectionUtils.isEmpty(data)) {
|
|
|
for (Knowlege temp:data) {
|
|
|
HSSFRow row = sheet.createRow(rows++);
|
|
@@ -272,15 +198,16 @@ public class QizhenAssistant {
|
|
|
row.createCell(3).setCellValue(temp.getQuestion() == null ? "" : temp.getQuestion());
|
|
|
row.createCell(4).setCellValue(temp.getAnswer() == null ? "" : temp.getAnswer());
|
|
|
row.createCell(5).setCellValue(temp.getChunk() == null ? "" : temp.getChunk());
|
|
|
- row.createCell(6).setCellValue(temp.getIcd10() == null ? "" : temp.getIcd10());
|
|
|
+ row.createCell(6).setCellValue(temp.getRefenrece() == null ? "" : temp.getRefenrece());
|
|
|
}
|
|
|
- //}
|
|
|
- save();
|
|
|
+ }
|
|
|
+ save(fileName);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static synchronized void save() {
|
|
|
+ private static synchronized void save(String fileName) {
|
|
|
try {
|
|
|
+ fileName="C:\\Users\\17664\\Desktop\\"+fileName+System.currentTimeMillis()+".xlsx";
|
|
|
//文档输出
|
|
|
FileOutputStream out = new FileOutputStream(new File(fileName));
|
|
|
workbook.write(out);
|
|
@@ -297,112 +224,113 @@ public class QizhenAssistant {
|
|
|
QizhenAssistant qizhenAssistant = new QizhenAssistant();
|
|
|
BaidubceUtil baidubceUtil = new BaidubceUtil();
|
|
|
|
|
|
- String diseaseStr = "Behcet病" +
|
|
|
- ",EPS库欣综合征" +
|
|
|
- ",Kell同种免疫性溶血" +
|
|
|
- ",Maroteaux-Lamy综合征" +
|
|
|
- ",Sanfillipo综合征" +
|
|
|
- ",Tangier病" +
|
|
|
- ",Tuomaala-Haapanen综合征" +
|
|
|
- ",膀胱横纹肌肉瘤" +
|
|
|
- ",膀胱损伤" +
|
|
|
- ",表皮囊肿及皮样囊肿" +
|
|
|
- ",鼻腔及鼻窦恶性肿瘤" +
|
|
|
- ",鼻咽粘连" +
|
|
|
- ",成骨细胞瘤" +
|
|
|
- ",成人早老症" +
|
|
|
- ",出血性膀胱炎" +
|
|
|
- ",单一性促性腺激素缺乏症" +
|
|
|
- ",骶管囊肿" +
|
|
|
- ",低钾性周期性瘫痪" +
|
|
|
- ",儿童的衣原体感染" +
|
|
|
- ",儿童复发性腮腺炎" +
|
|
|
- ",芳香族硝基或氨基化合物引起中毒Heinz小体的溶血性贫血" +
|
|
|
- ",分离性焦虑障碍" +
|
|
|
- ",肝结核" +
|
|
|
- ",格子状角膜营养不良" +
|
|
|
- ",肱骨上端骨骺分离或解剖颈骨折" +
|
|
|
- ",钩端螺旋体葡萄膜炎" +
|
|
|
- ",冠状动脉供血不足" +
|
|
|
- ",骨纤维结构不良" +
|
|
|
- ",颌骨朗格汉斯细胞病及其他病变颌骨朗格汉斯细胞病" +
|
|
|
- ",化脓性脑膜炎" +
|
|
|
- ",甲状旁腺功能亢进" +
|
|
|
- ",结核性指(趾)炎" +
|
|
|
- ",继发性糖尿病" +
|
|
|
- ",颈部血管瘤" +
|
|
|
- ",惊恐障碍" +
|
|
|
- ",颈淋巴结结核" +
|
|
|
+ String diseaseStr = "风湿性心脏病" +
|
|
|
+ ",原发性高血压" +
|
|
|
+ ",急性心肌梗死" +
|
|
|
+ ",急性冠脉综合征" +
|
|
|
+ ",冠状动脉粥样硬化性心脏病" +
|
|
|
+ ",心力衰竭" +
|
|
|
+ ",心源性休克" +
|
|
|
+ ",酒精中毒" +
|
|
|
+ ",咽炎" +
|
|
|
+ ",急性扁桃体炎" +
|
|
|
+ ",变应性鼻炎" +
|
|
|
+ ",慢性鼻窦炎" +
|
|
|
+ ",鼻出血" +
|
|
|
+ ",急性牙髓炎" +
|
|
|
+ ",牙周病" +
|
|
|
+ ",溃疡性口炎" +
|
|
|
+ ",反流性食管炎" +
|
|
|
+ ",胃溃疡" +
|
|
|
+ ",慢性萎缩性胃炎" +
|
|
|
+ ",功能性消化不良" +
|
|
|
+ ",急性阑尾炎" +
|
|
|
+ ",克罗恩病" +
|
|
|
+ ",肠梗阻" +
|
|
|
+ ",肝硬化" +
|
|
|
+ ",急性胰腺炎" +
|
|
|
+ ",过敏性皮炎" +
|
|
|
+ ",湿疹" +
|
|
|
+ ",银屑病" +
|
|
|
+ ",带状疱疹" +
|
|
|
+ ",类风湿性关节炎" +
|
|
|
+ ",系统性红斑狼疮" +
|
|
|
+ ",慢性肾炎" +
|
|
|
+ ",肾病综合征" +
|
|
|
+ ",慢性肾衰竭" +
|
|
|
+ ",肾结石" +
|
|
|
+ ",输尿管结石" +
|
|
|
+ ",膀胱炎" +
|
|
|
+ ",前列腺增生" +
|
|
|
+ ",子宫内膜异位症" +
|
|
|
+ ",卵巢囊肿" +
|
|
|
+ ",痛经" +
|
|
|
+ ",女性更年期综合征" +
|
|
|
+ ",异位妊娠" +
|
|
|
+ ",妊娠剧吐" +
|
|
|
+ ",鼻咽恶性肿瘤" +
|
|
|
+ ",肝恶性肿瘤" +
|
|
|
+ ",乳房恶性肿瘤" +
|
|
|
+ ",宫颈恶性肿瘤" +
|
|
|
+ ",多发性骨髓瘤" +
|
|
|
+ ",急性白血病" +
|
|
|
+ ",血管瘤" +
|
|
|
+ ",子宫平滑肌瘤" +
|
|
|
+ ",新生儿黄疸" +
|
|
|
+ ",新生儿腹泻" +
|
|
|
+ ",缺铁性贫血" +
|
|
|
+ ",地中海贫血" +
|
|
|
+ ",血友病" +
|
|
|
+ ",甲状腺功能减退症" +
|
|
|
+ ",甲状腺功能亢进症" +
|
|
|
+ ",桥本甲状腺炎" +
|
|
|
+ ",2型糖尿病" +
|
|
|
+ ",糖尿病" +
|
|
|
+ ",甲状旁腺功能减退症" +
|
|
|
+ ",卵巢早衰" +
|
|
|
+ ",坏血病" +
|
|
|
+ ",高脂血症" +
|
|
|
+ ",高尿酸血症" +
|
|
|
",精神分裂症" +
|
|
|
- ",急性泪腺炎" +
|
|
|
- ",急性心力衰竭" +
|
|
|
- ",巨唇" +
|
|
|
- ",流行性出血性结膜炎" +
|
|
|
- ",氯胺酮相关障碍" +
|
|
|
- ",卵巢恶性生殖细胞肿瘤" +
|
|
|
- ",慢性结节性耳轮软骨皮炎" +
|
|
|
- ",麻疹的口腔表现" +
|
|
|
- ",男子计划生育" +
|
|
|
- ",脑干脑炎" +
|
|
|
- ",黏多糖沉积病的视网膜病变" +
|
|
|
- ",黏膜白斑" +
|
|
|
- ",葡萄球菌脑膜炎" +
|
|
|
- ",人工性口腔颌面部皮肤及黏膜瘘管" +
|
|
|
- ",妊娠合并血友病" +
|
|
|
- ",妊娠痒疹" +
|
|
|
- ",肉碱酰基肉碱转运酶缺陷症" +
|
|
|
- ",肉碱棕榈酰转移酶Ⅰ缺陷症" +
|
|
|
- ",乳牙滞留" +
|
|
|
- ",腮腺区良性肿瘤" +
|
|
|
- ",腮腺炎性角膜炎" +
|
|
|
- ",肾钙盐沉着症" +
|
|
|
+ ",抑郁症" +
|
|
|
+ ",化脓性脑膜炎" +
|
|
|
+ ",帕金森病" +
|
|
|
+ ",癫痫" +
|
|
|
+ ",偏头痛" +
|
|
|
+ ",脑梗死" +
|
|
|
+ ",脑卒中" +
|
|
|
+ ",阻塞性睡眠呼吸暂停综合征" +
|
|
|
+ ",肺栓塞" +
|
|
|
+ ",慢性肺源性心脏病" +
|
|
|
+ ",急性上呼吸道感染" +
|
|
|
+ ",病毒性肺炎" +
|
|
|
",社区获得性肺炎" +
|
|
|
- ",史-莱-奥综合征" +
|
|
|
- ",食管胃底静脉曲张破裂出血" +
|
|
|
- ",视网膜中央静脉阻塞" +
|
|
|
- ",水合氯醛中毒" +
|
|
|
- ",损伤性腔颌面部皮肤及黏膜窦道" +
|
|
|
- ",胎盘内绒毛膜癌" +
|
|
|
- ",糖尿病酮症酸中毒" +
|
|
|
- ",外斜视" +
|
|
|
- ",外阴糜烂与湿疹" +
|
|
|
- ",外源性过敏性肺炎" +
|
|
|
- ",腕管综合征" +
|
|
|
- ",胃肠道疾病所致的嗜酸性粒细胞增多症" +
|
|
|
- ",胃大部切除术后溃疡复发" +
|
|
|
- ",维生素C缺乏病" +
|
|
|
- ",维生素C缺乏症" +
|
|
|
- ",先天性肾上腺增生症新类型—细胞色素P450氧化还原酶缺陷综合征" +
|
|
|
- ",先天性小眼球" +
|
|
|
- ",小儿急性喉炎" +
|
|
|
- ",小口病" +
|
|
|
- ",心搏呼吸骤停" +
|
|
|
- ",新生儿病理性黄疸" +
|
|
|
- ",新生儿视网膜出血" +
|
|
|
- ",系统性红斑狼疮" +
|
|
|
- ",烟草相关障碍" +
|
|
|
- ",羊水过多" +
|
|
|
- ",眼外肌病" +
|
|
|
- ",药物诱导玻璃体后脱离" +
|
|
|
- ",遗传性异常纤维蛋白原血症" +
|
|
|
- ",阴道闭锁与先天性无阴道" +
|
|
|
- ",阴道内胚窦瘤" +
|
|
|
- ",阴道炎" +
|
|
|
- ",医源性非药物性内分泌疾病" +
|
|
|
- ",远端肾小管酸中毒" +
|
|
|
- ",原发性性腺腺功能减退" +
|
|
|
- ",早产" +
|
|
|
- ",早期视神经交叉前压迫综合征" +
|
|
|
- ",枕部脑膨出" +
|
|
|
- ",植物性食物中毒" +
|
|
|
- ",转移性水泡状胎块" +
|
|
|
- ",椎动脉型颈椎病";
|
|
|
+ ",支气管肺炎" +
|
|
|
+ ",肺炎" +
|
|
|
+ ",支气管哮喘" +
|
|
|
+ ",呼吸衰竭" +
|
|
|
+ ",肺部感染" +
|
|
|
+ ",急性泪腺炎" +
|
|
|
+ ",急性泪囊炎" +
|
|
|
+ ",巩膜炎" +
|
|
|
+ ",角膜炎" +
|
|
|
+ ",中耳炎" +
|
|
|
+ ",风湿性关节炎" +
|
|
|
+ ",颈椎病" +
|
|
|
+ ",颈肩综合征" +
|
|
|
+ ",坐骨神经痛" +
|
|
|
+ ",肩周炎" +
|
|
|
+ ",骨质疏松" +
|
|
|
+ ",锁骨骨折" +
|
|
|
+ ",肱骨骨折" +
|
|
|
+ ",肩关节脱位";
|
|
|
|
|
|
//String diseaseStr1 = "表皮囊肿及皮样囊肿";
|
|
|
|
|
|
String[] diseases = diseaseStr.split(",");
|
|
|
- for (String disease : diseases) {
|
|
|
+ for (int i=0;i<diseases.length;i++) {
|
|
|
try {
|
|
|
+ String disease = diseases[i];
|
|
|
disease = disease.trim();
|
|
|
String[] split = property.split("\t");
|
|
|
if(split.length<2){
|
|
@@ -415,6 +343,8 @@ public class QizhenAssistant {
|
|
|
"\n2、知识库里没有找到相应的知识,则返回\"未找到相关知识\"!";
|
|
|
Map<String, String> result = qizhenAssistant.getChatResponse(question, conversationId);
|
|
|
String answer = result.get("answer");
|
|
|
+ String references = result.get("references");
|
|
|
+ String defaultReferences = result.get("defaultReferences");
|
|
|
String chatResponse = "";
|
|
|
if (!("failed".equals(answer) || answer.contains(noAnswer))) {
|
|
|
String format = "你是专门处理医学领域文本的关系抽取专家。你将在指定的文本中抽取其中“"+disease+"的"+relation+"。\n" +
|
|
@@ -441,9 +371,39 @@ public class QizhenAssistant {
|
|
|
System.out.println(zhiling);
|
|
|
chatResponse = baidubceUtil.getChatResponse(zhiling, accessToken);
|
|
|
chatResponse = filte(chatResponse);
|
|
|
- addNode(disease, relation, chatResponse, answer, question, result, list);
|
|
|
+ JSONArray jsonResult = new JSONArray();
|
|
|
+ if(!StringUtil.isBlank(chatResponse)){
|
|
|
+ try{
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(chatResponse);
|
|
|
+ JSONArray referenceJA = JSONArray.parseArray(references);
|
|
|
+ for(int t=0;t<jsonArray.size();t++){
|
|
|
+ String name = jsonArray.getString(t);
|
|
|
+ JSONObject temp = new JSONObject();
|
|
|
+ temp.put("name", name);
|
|
|
+ JSONArray tempReferenceJA = new JSONArray();
|
|
|
+ for(int r=0;r<referenceJA.size();r++){
|
|
|
+ JSONObject referenceJO = referenceJA.getJSONObject(r);
|
|
|
+ String content = referenceJO.getString("content");
|
|
|
+ if(content.contains(name)){
|
|
|
+ //JSONObject clone = referenceJO.clone();
|
|
|
+ tempReferenceJA.add(referenceJO.getString("title"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ temp.put("reference", tempReferenceJA);
|
|
|
+ if(tempReferenceJA.size()<1){
|
|
|
+ temp.put("defaultReferences", defaultReferences);
|
|
|
+ }
|
|
|
+ jsonResult.add(temp);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ System.out.println("######"+chatResponse);
|
|
|
+ e.printStackTrace();
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ addNode(disease, relation, chatResponse,jsonResult.toJSONString(), answer, question, result, list);
|
|
|
}else {
|
|
|
- addNode(disease, relation, "", answer, question, result, list);
|
|
|
+ addNode(disease, relation, "","", answer, question, result, list);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
System.out.println("抽取三元组失败!");
|
|
@@ -459,7 +419,7 @@ public class QizhenAssistant {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static void extracted(String accessToken, String disease, String[] split, String answer, BaidubceUtil baidubceUtil, String question, Map<String, String> result, List<Knowlege> list) {
|
|
|
+ /*private static void extracted(String accessToken, String disease, String[] split, String answer, BaidubceUtil baidubceUtil, String question, Map<String, String> result, List<Knowlege> list) {
|
|
|
String chatResponse;
|
|
|
String format = "你是一个医学专业的关系抽取专家。需要从文本中提取" + disease + "的"+ split[0] + ",请输出JSON数组格式的结果,不需要输出json之外的其他内容!按如下要求输出:" +
|
|
|
"\n" +
|
|
@@ -510,9 +470,9 @@ public class QizhenAssistant {
|
|
|
}
|
|
|
addNode(disease, split[0], resultArray2.toJSONString(), answer, question, result, list);
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
- private static void addNode(String disease, String property, String chatResponse, String answer, String question, Map<String, String> result, List<Knowlege> list) {
|
|
|
+ private static void addNode(String disease, String property, String chatResponse,String refences, String answer, String question, Map<String, String> result, List<Knowlege> list) {
|
|
|
Knowlege knowlege = new Knowlege();
|
|
|
knowlege.setEntity(disease);
|
|
|
knowlege.setProperty(property);
|
|
@@ -520,7 +480,7 @@ public class QizhenAssistant {
|
|
|
knowlege.setAnswer(answer);
|
|
|
knowlege.setQuestion(question);
|
|
|
knowlege.setChunk(result.get("references"));
|
|
|
- //knowlege.setIcd10(icd10);
|
|
|
+ knowlege.setRefenrece(refences);
|
|
|
list.add(knowlege);
|
|
|
}
|
|
|
|