SGTY 5 mesi fa
parent
commit
d7ac2982d8

+ 113 - 77
src/main/java/com/qizhen/healsphere/common/ai/CRQizhenAssistant.java

@@ -24,8 +24,8 @@ import java.util.regex.Pattern;
 
 public class CRQizhenAssistant {
 
-    public static String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";
-    //public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";//调试
+    public static String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";//2.0
+    //public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";//1.0
     public static String noAnswer = "未找到相关知识";
     public static Map<String,String> getChatResponse(String userInput, String conversationId) {
         int retry = 0;
@@ -134,31 +134,18 @@ public class CRQizhenAssistant {
 
         String propertyStr = "";
 
-    /*    propertyStr = "传播媒介\t的传播媒介有哪些媒介" +
-                ",传播途径\t的传播途径有哪些传播途径" +
-                ",传染率\t的传染率或传染比例是多少" +
-                ",传染源\t的传染源有哪些传染源" +
-                ",多发季节\t的多发季节有哪些季节" +
-                ",发病率\t的发病率或单位时间内新发病例的比例是多少" +
-                ",感染率\t的感染率或感染比例是多少" +
-                ",高发地区\t的高发地区、高发地域或高发地点名称有哪些地点名称(只需给出:地区、地域或地点的名称)" +
-                ",高危人群\t的高危人群有哪些人群" +
-                ",隔离期\t的隔离期或隔离观察期是多长时间" +
-                ",患病率\t的患病率或患病比例是多少" +
-                ",接触者检疫\t的接触者检疫措施有哪些" +
-                ",流行地区\t的流行地区、流行地域或流行地点名称有哪些(只需给出:地区、地域或地点的名称)" +
-                ",高发流行地区\t的高发流行地区有哪些(只需给出:地区、地域或地点的名称)" +
-                ",潜伏期\t的潜伏期或感染潜伏期是多长时间" +
-                ",是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",相关人群\t的高相关人群有哪些人群" +
-                ",易感人群\t的易感人群有哪些人群" +
-                ",易患人群\t的易患人群有哪些人群";*/
+        propertyStr = "并发症\t的并发症有哪些疾病" +
+                ",常见并发症\t的常见并发症或常并发的疾病有哪些疾病" +
+                ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
+                ",早期预警指标\t的早期临床预警指标有哪些" +
+                ",病因\t的病因或常见病因有哪些病因或致病原因" +
+                ",危险因素\t的危险因素或常见危险因素或危险诱发因素有哪些" +
+                ",遗传方式\t的遗传方式有哪些遗传方式(如果该病无遗传方式,可回答“无”)" +
+                ",遗传基因\t的遗传基因名称有哪些遗传基因名称" +
+                ",诱因\t的诱因或诱发因素或常见诱因有哪些诱因" +
+                ",出院标准\t的出院标准有哪些";
 
-        propertyStr = "是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)";
-
-        saveExel(propertyStr, conversationId, accessToken,"传染");
+        saveExel(propertyStr, conversationId, accessToken,"传染优化");
     }
 
     private static void saveExel(String propertyStr, String conversationId, String accessToken,String fileName) {
@@ -204,57 +191,106 @@ public class CRQizhenAssistant {
             CRQizhenAssistant qizhenAssistant = new CRQizhenAssistant();
             BaidubceUtil baidubceUtil = new BaidubceUtil();
 
-            String diseaseStr = "霍乱" +
-                    ",伤寒" +
-                    ",副伤寒" +
-                    ",细菌性痢疾" +
-                    ",肠阿米巴病" +
-                    ",感染性腹泻" +
-                    ",急性肠炎" +
-                    ",婴儿腹泻" +
-                    ",肺结核" +
-                    ",结核性胸膜炎" +
-                    ",原发性肺结核" +
-                    ",结核性脑膜炎" +
-                    ",骨结核" +
-                    ",颈椎结核" +
-                    ",胸椎结核" +
-                    ",腰椎结核" +
-                    ",脊柱结核" +
-                    ",骶髂关节结核" +
-                    ",肾结核" +
-                    ",子宫内膜结核" +
-                    ",附睾结核" +
-                    ",颈淋巴结结核" +
-                    ",肠结核" +
-                    ",结核性腹膜炎" +
-                    ",鼠疫" +
-                    ",钩端螺旋体病" +
-                    ",麻风" +
-                    ",皮肤白喉" +
-                    ",白喉" +
-                    ",猩红热" +
-                    ",流行性脑脊髓膜炎" +
-                    ",先天性梅毒" +
-                    ",梅毒" +
-                    ",淋病" +
-                    ",流行性斑疹伤寒" +
-                    ",狂犬病" +
-                    ",流行性乙型脑炎" +
-                    ",登革热" +
-                    ",手足口病" +
-                    ",乙型病毒性肝炎" +
-                    ",慢性病毒性肝炎" +
-                    ",艾滋病" +
-                    ",疟疾" +
-                    ",内脏利什曼病" +
-                    ",黑热病" +
-                    ",埃及血吸虫病" +
-                    ",血吸虫病" +
-                    ",肺血吸虫病" +
-                    ",棘球蚴病" +
-                    ",丝虫病" +
-                    ",流行性感冒";
+            String diseaseStr = "风湿性心脏病" +
+                    ",原发性高血压" +
+                    ",急性心肌梗死" +
+                    ",急性冠脉综合征" +
+                    ",冠状动脉粥样硬化性心脏病" +
+                    ",心力衰竭" +
+                    ",心源性休克" +
+                    ",酒精中毒" +
+                    ",咽炎" +
+                    ",急性扁桃体炎" +
+                    ",变应性鼻炎" +
+                    ",慢性鼻窦炎" +
+                    ",鼻出血" +
+                    ",急性牙髓炎" +
+                    ",牙周病" +
+                    ",溃疡性口炎" +
+                    ",反流性食管炎" +
+                    ",胃溃疡" +
+                    ",慢性萎缩性胃炎" +
+                    ",功能性消化不良" +
+                    ",急性阑尾炎" +
+                    ",克罗恩病" +
+                    ",肠梗阻" +
+                    ",肝硬化" +
+                    ",急性胰腺炎" +
+                    ",过敏性皮炎" +
+                    ",湿疹" +
+                    ",银屑病" +
+                    ",带状疱疹" +
+                    ",类风湿性关节炎" +
+                    ",系统性红斑狼疮" +
+                    ",慢性肾炎" +
+                    ",肾病综合征" +
+                    ",慢性肾衰竭" +
+                    ",肾结石" +
+                    ",输尿管结石" +
+                    ",膀胱炎" +
+                    ",前列腺增生" +
+                    ",子宫内膜异位症" +
+                    ",卵巢囊肿" +
+                    ",痛经" +
+                    ",女性更年期综合征" +
+                    ",异位妊娠" +
+                    ",妊娠剧吐" +
+                    ",鼻咽恶性肿瘤" +
+                    ",肝恶性肿瘤" +
+                    ",乳房恶性肿瘤" +
+                    ",宫颈恶性肿瘤" +
+                    ",多发性骨髓瘤" +
+                    ",急性白血病" +
+                    ",血管瘤" +
+                    ",子宫平滑肌瘤" +
+                    ",新生儿黄疸" +
+                    ",新生儿腹泻" +
+                    ",缺铁性贫血" +
+                    ",地中海贫血" +
+                    ",血友病" +
+                    ",甲状腺功能减退症" +
+                    ",甲状腺功能亢进症" +
+                    ",桥本甲状腺炎" +
+                    ",2型糖尿病" +
+                    ",糖尿病" +
+                    ",甲状旁腺功能减退症" +
+                    ",卵巢早衰" +
+                    ",坏血病" +
+                    ",高脂血症" +
+                    ",高尿酸血症" +
+                    ",精神分裂症" +
+                    ",抑郁症" +
+                    ",化脓性脑膜炎" +
+                    ",帕金森病" +
+                    ",癫痫" +
+                    ",偏头痛" +
+                    ",脑梗死" +
+                    ",脑卒中" +
+                    ",阻塞性睡眠呼吸暂停综合征" +
+                    ",肺栓塞" +
+                    ",慢性肺源性心脏病" +
+                    ",急性上呼吸道感染" +
+                    ",病毒性肺炎" +
+                    ",社区获得性肺炎" +
+                    ",支气管肺炎" +
+                    ",肺炎" +
+                    ",支气管哮喘" +
+                    ",呼吸衰竭" +
+                    ",肺部感染" +
+                    ",急性泪腺炎" +
+                    ",急性泪囊炎" +
+                    ",巩膜炎" +
+                    ",角膜炎" +
+                    ",中耳炎" +
+                    ",风湿性关节炎" +
+                    ",颈椎病" +
+                    ",颈肩综合征" +
+                    ",坐骨神经痛" +
+                    ",肩周炎" +
+                    ",骨质疏松" +
+                    ",锁骨骨折" +
+                    ",肱骨骨折" +
+                    ",肩关节脱位";
 
             //String diseaseStr1 = "表皮囊肿及皮样囊肿";
 

+ 107 - 73
src/main/java/com/qizhen/healsphere/common/ai/SFCRQizhenAssistant.java

@@ -22,10 +22,10 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-public class SFCRQizhenAssistant {
+public class CRQizhenAssistant2 {
 
-    public static String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";
-    //public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";//调试
+    //public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";
+    public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";//调试
     public static String noAnswer = "未找到相关知识";
     public static Map<String,String> getChatResponse(String userInput, String conversationId) {
         int retry = 0;
@@ -134,31 +134,16 @@ public class SFCRQizhenAssistant {
 
         String propertyStr = "";
 
-    /*    propertyStr = "传播媒介\t的传播媒介有哪些媒介" +
+        propertyStr = "传播媒介\t的传播媒介有哪些媒介" +
                 ",传播途径\t的传播途径有哪些传播途径" +
-                ",传染率\t的传染率或传染比例是多少" +
                 ",传染源\t的传染源有哪些传染源" +
                 ",多发季节\t的多发季节有哪些季节" +
-                ",发病率\t的发病率或单位时间内新发病例的比例是多少" +
-                ",感染率\t的感染率或感染比例是多少" +
                 ",高发地区\t的高发地区、高发地域或高发地点名称有哪些地点名称(只需给出:地区、地域或地点的名称)" +
                 ",高危人群\t的高危人群有哪些人群" +
-                ",隔离期\t的隔离期或隔离观察期是多长时间" +
-                ",患病率\t的患病率或患病比例是多少" +
-                ",接触者检疫\t的接触者检疫措施有哪些" +
-                ",流行地区\t的流行地区、流行地域或流行地点名称有哪些(只需给出:地区、地域或地点的名称)" +
-                ",高发流行地区\t的高发流行地区有哪些(只需给出:地区、地域或地点的名称)" +
                 ",潜伏期\t的潜伏期或感染潜伏期是多长时间" +
-                ",是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",相关人群\t的高相关人群有哪些人群" +
-                ",易感人群\t的易感人群有哪些人群" +
-                ",易患人群\t的易患人群有哪些人群";*/
+                ",是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)";
 
-        propertyStr = "是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
-                ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)";
-
-        saveExel(propertyStr, conversationId, accessToken,"传染");
+        saveExel(propertyStr, conversationId, accessToken,"传染原先");
     }
 
     private static void saveExel(String propertyStr, String conversationId, String accessToken,String fileName) {
@@ -201,60 +186,109 @@ public class SFCRQizhenAssistant {
     private static List<Knowlege> getData(String conversationId, String accessToken,String property) {
         List<Knowlege> list = new ArrayList<>();
         try {
-            SFCRQizhenAssistant qizhenAssistant = new SFCRQizhenAssistant();
+            CRQizhenAssistant2 qizhenAssistant = new CRQizhenAssistant2();
             BaidubceUtil baidubceUtil = new BaidubceUtil();
 
-            String diseaseStr = "霍乱" +
-                    ",伤寒" +
-                    ",副伤寒" +
-                    ",细菌性痢疾" +
-                    ",肠阿米巴病" +
-                    ",感染性腹泻" +
-                    ",急性肠炎" +
-                    ",婴儿腹泻" +
-                    ",肺结核" +
-                    ",结核性胸膜炎" +
-                    ",原发性肺结核" +
-                    ",结核性脑膜炎" +
-                    ",骨结核" +
-                    ",颈椎结核" +
-                    ",胸椎结核" +
-                    ",腰椎结核" +
-                    ",脊柱结核" +
-                    ",骶髂关节结核" +
-                    ",肾结核" +
-                    ",子宫内膜结核" +
-                    ",附睾结核" +
-                    ",颈淋巴结结核" +
-                    ",肠结核" +
-                    ",结核性腹膜炎" +
-                    ",鼠疫" +
-                    ",钩端螺旋体病" +
-                    ",麻风" +
-                    ",皮肤白喉" +
-                    ",白喉" +
-                    ",猩红热" +
-                    ",流行性脑脊髓膜炎" +
-                    ",先天性梅毒" +
-                    ",梅毒" +
-                    ",淋病" +
-                    ",流行性斑疹伤寒" +
-                    ",狂犬病" +
-                    ",流行性乙型脑炎" +
-                    ",登革热" +
-                    ",手足口病" +
-                    ",乙型病毒性肝炎" +
-                    ",慢性病毒性肝炎" +
-                    ",艾滋病" +
-                    ",疟疾" +
-                    ",内脏利什曼病" +
-                    ",黑热病" +
-                    ",埃及血吸虫病" +
-                    ",血吸虫病" +
-                    ",肺血吸虫病" +
-                    ",棘球蚴病" +
-                    ",丝虫病" +
-                    ",流行性感冒";
+            String diseaseStr = "风湿性心脏病" +
+                    ",原发性高血压" +
+                    ",急性心肌梗死" +
+                    ",急性冠脉综合征" +
+                    ",冠状动脉粥样硬化性心脏病" +
+                    ",心力衰竭" +
+                    ",心源性休克" +
+                    ",酒精中毒" +
+                    ",咽炎" +
+                    ",急性扁桃体炎" +
+                    ",变应性鼻炎" +
+                    ",慢性鼻窦炎" +
+                    ",鼻出血" +
+                    ",急性牙髓炎" +
+                    ",牙周病" +
+                    ",溃疡性口炎" +
+                    ",反流性食管炎" +
+                    ",胃溃疡" +
+                    ",慢性萎缩性胃炎" +
+                    ",功能性消化不良" +
+                    ",急性阑尾炎" +
+                    ",克罗恩病" +
+                    ",肠梗阻" +
+                    ",肝硬化" +
+                    ",急性胰腺炎" +
+                    ",过敏性皮炎" +
+                    ",湿疹" +
+                    ",银屑病" +
+                    ",带状疱疹" +
+                    ",类风湿性关节炎" +
+                    ",系统性红斑狼疮" +
+                    ",慢性肾炎" +
+                    ",肾病综合征" +
+                    ",慢性肾衰竭" +
+                    ",肾结石" +
+                    ",输尿管结石" +
+                    ",膀胱炎" +
+                    ",前列腺增生" +
+                    ",子宫内膜异位症" +
+                    ",卵巢囊肿" +
+                    ",痛经" +
+                    ",女性更年期综合征" +
+                    ",异位妊娠" +
+                    ",妊娠剧吐" +
+                    ",鼻咽恶性肿瘤" +
+                    ",肝恶性肿瘤" +
+                    ",乳房恶性肿瘤" +
+                    ",宫颈恶性肿瘤" +
+                    ",多发性骨髓瘤" +
+                    ",急性白血病" +
+                    ",血管瘤" +
+                    ",子宫平滑肌瘤" +
+                    ",新生儿黄疸" +
+                    ",新生儿腹泻" +
+                    ",缺铁性贫血" +
+                    ",地中海贫血" +
+                    ",血友病" +
+                    ",甲状腺功能减退症" +
+                    ",甲状腺功能亢进症" +
+                    ",桥本甲状腺炎" +
+                    ",2型糖尿病" +
+                    ",糖尿病" +
+                    ",甲状旁腺功能减退症" +
+                    ",卵巢早衰" +
+                    ",坏血病" +
+                    ",高脂血症" +
+                    ",高尿酸血症" +
+                    ",精神分裂症" +
+                    ",抑郁症" +
+                    ",化脓性脑膜炎" +
+                    ",帕金森病" +
+                    ",癫痫" +
+                    ",偏头痛" +
+                    ",脑梗死" +
+                    ",脑卒中" +
+                    ",阻塞性睡眠呼吸暂停综合征" +
+                    ",肺栓塞" +
+                    ",慢性肺源性心脏病" +
+                    ",急性上呼吸道感染" +
+                    ",病毒性肺炎" +
+                    ",社区获得性肺炎" +
+                    ",支气管肺炎" +
+                    ",肺炎" +
+                    ",支气管哮喘" +
+                    ",呼吸衰竭" +
+                    ",肺部感染" +
+                    ",急性泪腺炎" +
+                    ",急性泪囊炎" +
+                    ",巩膜炎" +
+                    ",角膜炎" +
+                    ",中耳炎" +
+                    ",风湿性关节炎" +
+                    ",颈椎病" +
+                    ",颈肩综合征" +
+                    ",坐骨神经痛" +
+                    ",肩周炎" +
+                    ",骨质疏松" +
+                    ",锁骨骨折" +
+                    ",肱骨骨折" +
+                    ",肩关节脱位";
 
             //String diseaseStr1 = "表皮囊肿及皮样囊肿";
 

+ 1 - 1
src/main/java/com/qizhen/healsphere/common/ai/Knowlege.java

@@ -28,7 +28,7 @@ public class Knowlege {
 
     public static void main(String[] args) {
         String t = "并发症\t的并发症有哪些疾病" +
-                ",常见并发症\t的常见并发症有哪些疾病" +
+                ",常见并发症\t的常见并发症或常并发的疾病有哪些疾病" +
                 ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
                 ",早期预警指标\t的早期临床预警指标有哪些" +
                 ",病因\t的病因或常见病因有哪些病因或致病原因" +

+ 5 - 7
src/main/java/com/qizhen/healsphere/common/ai/QizhenAssistant.java

@@ -16,13 +16,11 @@ import java.util.regex.Pattern;
 
 public class QizhenAssistant {
 
-    public static String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";
-    //public static String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";//调试
     public static String noAnswer = "未找到相关知识";
-    public static Map<String,String> getChatResponse(String userInput, String conversationId) {
+    public static Map<String,String> getChatResponse(String userInput, String conversationId,String appId) {
         int retry = 0;
         try {
-           return getAnswer(userInput, conversationId);
+           return getAnswer(userInput, conversationId,appId);
         }catch(Exception e){
             e.printStackTrace();
             retry++;
@@ -31,7 +29,7 @@ public class QizhenAssistant {
                 map.put("answer","failed");
                 return map;
             }
-            return getAnswer(userInput, conversationId);
+            return getAnswer(userInput, conversationId,appId);
         }
     }
     public static final String domain = "https://console.bce.baidu.com/ai_apaas/personalSpace/knowledgeBase/document/detail/";
@@ -45,7 +43,7 @@ public class QizhenAssistant {
         return matcher.find();
     }
 
-    private static Map<String,String> getAnswer(String userInput, String conversationId) {
+    private static Map<String,String> getAnswer(String userInput, String conversationId,String appId) {
         Map<String,String> map = new HashMap<>();
         JSONObject json = new JSONObject();
         json.put("app_id", appId);
@@ -104,7 +102,7 @@ public class QizhenAssistant {
         System.out.println((System.currentTimeMillis() - l) / 1000 + userInput);
         return map;
     }
-    public static String getConversationId() {
+    public static String getConversationId(String appId) {
         JSONObject json = new JSONObject();
         json.put("app_id", appId);
         //json.put("app_id", "454b1634-91ad-4dde-9d2f-f9a3302fdcbe");

+ 5 - 45
src/test/java/com/qizhen/healsphere/DataWriteTest.java

@@ -221,43 +221,9 @@ public class DataWriteTest {
 
     public static void main(String[] args) {
         String accessToken = BaidubceUtil.getAccessToken();
-        String propertyStr = "常合并的疾病\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的就诊科室有哪些科室名称";
 
-        saveExel(propertyStr, accessToken,"上半段");
+        saveExel(propertyStr, accessToken,"就诊科室");
     }
 
     static HSSFWorkbook workbook;
@@ -305,6 +271,7 @@ public class DataWriteTest {
             BaidubceUtil baidubceUtil = new BaidubceUtil();
 
             String[] diseases = diseaseStr.split(",");
+            String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";
             for (int i=0;i<diseases.length;i++) {
                 try {
                     String disease = diseases[i];
@@ -315,15 +282,8 @@ public class DataWriteTest {
                     }
                     String quetionParty = split[1];
                     String relation = split[0];
-                    String question = "#角色设定\n" +
-                            "你是一个医生,你的任务是回答医学相关的问题。\n" +
-                            "\n" +
-                            "#要求\n" +
-                            "1、只根据知识库里的知识回答,不要推理,不要发散!\n" +
-                            "2、知识库里没有找到相应的知识,则返回\"未找到相关知识\"\n" +
-                            "\n" +
-                            "请回答:"+disease + quetionParty + "?";
-                    Map<String, String> result = QizhenAssistant.getChatResponse(question, QizhenAssistant.getConversationId());
+                    String question = disease + quetionParty + "?";
+                    Map<String, String> result = QizhenAssistant.getChatResponse(question, QizhenAssistant.getConversationId(appId),appId);
                     String answer = result.get("answer");
                     String references = result.get("references");
                     String defaultReferences = result.get("defaultReferences");

+ 387 - 0
src/test/java/com/qizhen/healsphere/DataWriteTest10.java

@@ -0,0 +1,387 @@
+package com.qizhen.healsphere;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.qizhen.healsphere.common.ai.BaidubceUtil;
+import com.qizhen.healsphere.common.ai.Knowlege;
+import com.qizhen.healsphere.common.ai.QizhenAssistant;
+import com.qizhen.healsphere.repository.neo4j.entity.BaseEntity;
+import com.qizhen.healsphere.service.EntityService;
+import com.qizhen.healsphere.service.RelationshipService;
+import com.qizhen.healsphere.web.vo.CreateEntityVO;
+import com.qizhen.healsphere.web.vo.RelationshipVO;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.CollectionUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@RunWith(SpringRunner.class)
+@ComponentScan(basePackages = {"com.qizhen.healsphere.model","com.qizhen.healsphere.repository"})
+@SpringBootTest
+public class DataWriteTest10 {
+    @Autowired
+    RelationshipService relationshipService;
+    @Autowired
+    EntityService entityService;
+
+    private static String diseaseStr = "风湿性心脏病" +
+            ",原发性高血压" +
+            ",急性心肌梗死" +
+            ",急性冠脉综合征" +
+            ",冠状动脉粥样硬化性心脏病" +
+            ",心力衰竭" +
+            ",心源性休克" +
+            ",酒精中毒" +
+            ",咽炎" +
+            ",急性扁桃体炎" +
+            ",变应性鼻炎" +
+            ",慢性鼻窦炎" +
+            ",鼻出血" +
+            ",急性牙髓炎" +
+            ",牙周病" +
+            ",溃疡性口炎" +
+            ",反流性食管炎" +
+            ",胃溃疡" +
+            ",慢性萎缩性胃炎" +
+            ",功能性消化不良" +
+            ",急性阑尾炎" +
+            ",克罗恩病" +
+            ",肠梗阻" +
+            ",肝硬化" +
+            ",急性胰腺炎" +
+            ",过敏性皮炎" +
+            ",湿疹" +
+            ",银屑病" +
+            ",带状疱疹" +
+            ",类风湿性关节炎" +
+            ",系统性红斑狼疮" +
+            ",慢性肾炎" +
+            ",肾病综合征" +
+            ",慢性肾衰竭" +
+            ",肾结石" +
+            ",输尿管结石" +
+            ",膀胱炎" +
+            ",前列腺增生" +
+            ",子宫内膜异位症" +
+            ",卵巢囊肿" +
+            ",痛经" +
+            ",女性更年期综合征" +
+            ",异位妊娠" +
+            ",妊娠剧吐" +
+            ",鼻咽恶性肿瘤" +
+            ",肝恶性肿瘤" +
+            ",乳房恶性肿瘤" +
+            ",宫颈恶性肿瘤" +
+            ",多发性骨髓瘤" +
+            ",急性白血病" +
+            ",血管瘤" +
+            ",子宫平滑肌瘤" +
+            ",新生儿黄疸" +
+            ",新生儿腹泻" +
+            ",缺铁性贫血" +
+            ",地中海贫血" +
+            ",血友病" +
+            ",甲状腺功能减退症" +
+            ",甲状腺功能亢进症" +
+            ",桥本甲状腺炎" +
+            ",2型糖尿病" +
+            ",糖尿病" +
+            ",甲状旁腺功能减退症" +
+            ",卵巢早衰" +
+            ",坏血病" +
+            ",高脂血症" +
+            ",高尿酸血症" +
+            ",精神分裂症" +
+            ",抑郁症" +
+            ",化脓性脑膜炎" +
+            ",帕金森病" +
+            ",癫痫" +
+            ",偏头痛" +
+            ",脑梗死" +
+            ",脑卒中" +
+            ",阻塞性睡眠呼吸暂停综合征" +
+            ",肺栓塞" +
+            ",慢性肺源性心脏病" +
+            ",急性上呼吸道感染" +
+            ",病毒性肺炎" +
+            ",社区获得性肺炎" +
+            ",支气管肺炎" +
+            ",肺炎" +
+            ",支气管哮喘" +
+            ",呼吸衰竭" +
+            ",肺部感染" +
+            ",急性泪腺炎" +
+            ",急性泪囊炎" +
+            ",巩膜炎" +
+            ",角膜炎" +
+            ",中耳炎" +
+            ",风湿性关节炎" +
+            ",颈椎病" +
+            ",颈肩综合征" +
+            ",坐骨神经痛" +
+            ",肩周炎" +
+            ",骨质疏松" +
+            ",锁骨骨折" +
+            ",肱骨骨折" +
+            ",肩关节脱位";
+
+
+    @Test
+    public void writeNeo4j() {
+        String startLabel = "疾病";
+        String propertyStr = "并发症\t的并发症有哪些疾病";
+        String[] properties = propertyStr.split(",");
+        workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
+        String fileName = "";//
+        HSSFSheet sheet = workbook.createSheet(fileName);
+        int rows = 0;
+        for(String property:properties){
+            String[] split = property.split("\t");
+            if(split.length<2){
+                continue;
+            }
+            String endLabel = split[0];
+            List<Knowlege> data = getData(BaidubceUtil.getAccessToken(), property);
+            if(!CollectionUtils.isEmpty(data)) {
+
+                for (Knowlege temp:data) {
+                    HSSFRow row = sheet.createRow(rows++);
+                    row.createCell(0).setCellValue(temp.getEntity() == null ? "" : temp.getEntity());
+                    row.createCell(1).setCellValue(temp.getProperty() == null ? "" : temp.getProperty());
+                    row.createCell(2).setCellValue(temp.getValue() == null ? "" : temp.getValue());
+                    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.getRefenrece() == null ? "" : temp.getRefenrece());
+                }
+                save(fileName);
+
+                for (Knowlege temp:data) {
+                    String value = temp.getValue();
+                    if(StringUtils.isBlank(value)){
+                        continue;
+                    }
+                    try{
+                        JSONArray jsonArray = JSONArray.parseArray(value);
+                        BaseEntity startEntity = createNoExists(startLabel, temp.getEntity());
+                        long startId = startEntity.getId();
+                        List<RelationshipVO> relationshipList = new ArrayList<>();
+                        for(int i=0;i<jsonArray.size();i++){
+                            String name = jsonArray.getString(i);
+                            if(StringUtils.isEmpty(name)){
+                                continue;
+                            }
+                            BaseEntity endEntity =  createNoExists(endLabel, name);
+                            Long endId = endEntity.getId();
+                            RelationshipVO relationshipVO = new RelationshipVO();
+                            relationshipVO.setStartId(startId);
+                            relationshipVO.setEndId(endId);
+                            relationshipVO.setStartLabel(startLabel);
+                            relationshipVO.setEndLabel(endLabel);
+                            relationshipVO.setRelationshipType(startLabel+"相关"+endLabel);
+                            relationshipList.add(relationshipVO);
+                        }
+                        if(!CollectionUtils.isEmpty(relationshipList)) {
+                            System.out.println( relationshipService.createRelationship(relationshipList));
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+    }
+
+    private BaseEntity createNoExists(String labelName, String name) {
+        BaseEntity nodeByName = entityService.findNodeByName(labelName, name);
+        if(Objects.nonNull(nodeByName)){//节点不存在
+            return nodeByName;
+        }
+        CreateEntityVO createEntity = new CreateEntityVO();
+        createEntity.setName(name);
+        createEntity.setLabel(labelName);
+        return entityService.create(createEntity);
+    }
+
+    public static void main(String[] args) {
+        String accessToken = BaidubceUtil.getAccessToken();
+        String propertyStr = "就诊科室\t的就诊科室有哪些科室名称";
+
+        saveExel(propertyStr, accessToken,"就诊科室");
+    }
+
+    static HSSFWorkbook workbook;
+
+    private static void saveExel(String propertyStr, String accessToken,String fileName) {
+        String[] properties = propertyStr.split(",");
+        workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
+        HSSFSheet sheet = workbook.createSheet(fileName);
+        ;//工作表
+        int rows = 0;
+        for(String property:properties){
+            List<Knowlege> data = getData(accessToken, property);
+            if(!CollectionUtils.isEmpty(data)) {
+                for (Knowlege temp:data) {
+                    HSSFRow row = sheet.createRow(rows++);
+                    row.createCell(0).setCellValue(temp.getEntity() == null ? "" : temp.getEntity());
+                    row.createCell(1).setCellValue(temp.getProperty() == null ? "" : temp.getProperty());
+                    row.createCell(2).setCellValue(temp.getValue() == null ? "" : temp.getValue());
+                    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.getRefenrece() == null ? "" : temp.getRefenrece());
+                }
+            }
+            save(fileName);
+        }
+    }
+
+    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);
+            out.close();
+            System.out.println(fileName + "存储完毕");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static List<Knowlege> getData(String accessToken,String property) {
+        List<Knowlege> list = new ArrayList<>();
+        try {
+            BaidubceUtil baidubceUtil = new BaidubceUtil();
+
+            String[] diseases = diseaseStr.split(",");
+            String appId= "894e7e0f-c7db-497c-a96f-a533f9230431";
+            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){
+                        continue;
+                    }
+                    String quetionParty = split[1];
+                    String relation = split[0];
+                    String question = disease + quetionParty + "?";
+
+                    Map<String, String> result = QizhenAssistant.getChatResponse(question, QizhenAssistant.getConversationId(appId),appId);
+                    String answer = result.get("answer");
+                    String references = result.get("references");
+                    String defaultReferences = result.get("defaultReferences");
+                    String chatResponse = "";
+                    if (!("failed".equals(answer) || answer.contains(QizhenAssistant.noAnswer))) {
+                        String format = "你是专门处理医学领域文本的关系抽取专家。你将在指定的文本中抽取其中“"+disease+"的"+relation+"”。\n" +
+                                "\n" +
+                                "#要求\n" +
+                                "1、抽取的结果将以JSON数组的形式呈现。每个抽取的“"+relation+"”高度简洁、高度概括,不要要描述性的文字,文字尽量保持在12个字符以内!\n" +
+                                "\n" +
+                                "#示例\n" +
+                                "以抽取主要症状为例\n" +
+                                "文本:\n" +
+                                "臭汗症的主要症状有全身或局部多汗且有臭味^[1][3][4]^。\n" +
+                                "\n" +
+                                "局部性臭汗症多发于大汗腺所在部位,如腋窝、腹股沟、足部、肛周、外阴、脐部及女性乳房下等处,以足部、腋部臭汗症最为多见。腋窝臭汗症俗称狐臭,是一种特殊的刺鼻臭味。足部臭汗症常与足部多汗伴发,有刺鼻的臭味^[1][4]^。\n" +
+                                "\n" +
+                                "全身性臭汗症为一种与种族有关的生理现象,也可见于卫生习惯不良者,服食某些食物(如葱、蒜、芥末)或某些药物(如麝香)后,在个别人中可产生臭汗^[4]^。\n" +
+                                "\n" +
+                                "输出:[\"全身或局部多汗且有臭味\",\"局部性臭汗症\",\"腋窝臭汗症\",\"足部臭汗症常\",\"全身性臭汗症\"]\n" +
+                                "\n" +
+                                "2、没有可抽取的“"+relation+"”,则返回空json数组。\n" +
+                                "\n" +
+                                "本次抽取的文本如下:\n\n";
+
+                        String zhiling = format+ answer;
+                        System.out.println(zhiling);
+                        chatResponse = baidubceUtil.getChatResponse(zhiling, accessToken);
+                        chatResponse = filte(chatResponse);
+                        JSONArray jsonResult = new JSONArray();
+                        if(!StringUtils.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");
+                                        String contentFilted = content.replaceAll("\\s+", "");
+                                        if(contentFilted.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);
+                    }
+                }catch (Exception e){
+                    System.out.println("抽取三元组失败!");
+                    e.printStackTrace();
+                }
+            }
+            return list;
+        } catch (Exception e) {
+            System.out.println("未知错误!");
+            e.printStackTrace();
+        }finally {
+            return 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);
+        knowlege.setValue(chatResponse);
+        knowlege.setAnswer(answer);
+        knowlege.setQuestion(question);
+        knowlege.setChunk(result.get("references"));
+        knowlege.setRefenrece(refences);
+        list.add(knowlege);
+    }
+
+    private static String filte(String chatResponse) {
+        if (chatResponse.startsWith("```json")) {
+            chatResponse = chatResponse.substring(7);
+        }
+        if (chatResponse.endsWith("```")) {
+            chatResponse = chatResponse.substring(0, chatResponse.length() - 3);
+        }
+        return chatResponse;
+    }
+}
+

+ 387 - 0
src/test/java/com/qizhen/healsphere/DataWriteTest20.java

@@ -0,0 +1,387 @@
+package com.qizhen.healsphere;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.qizhen.healsphere.common.ai.BaidubceUtil;
+import com.qizhen.healsphere.common.ai.Knowlege;
+import com.qizhen.healsphere.common.ai.QizhenAssistant;
+import com.qizhen.healsphere.repository.neo4j.entity.BaseEntity;
+import com.qizhen.healsphere.service.EntityService;
+import com.qizhen.healsphere.service.RelationshipService;
+import com.qizhen.healsphere.web.vo.CreateEntityVO;
+import com.qizhen.healsphere.web.vo.RelationshipVO;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.CollectionUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@RunWith(SpringRunner.class)
+@ComponentScan(basePackages = {"com.qizhen.healsphere.model","com.qizhen.healsphere.repository"})
+@SpringBootTest
+public class DataWriteTest20 {
+    @Autowired
+    RelationshipService relationshipService;
+    @Autowired
+    EntityService entityService;
+
+    private static String diseaseStr = "风湿性心脏病" +
+            ",原发性高血压" +
+            ",急性心肌梗死" +
+            ",急性冠脉综合征" +
+            ",冠状动脉粥样硬化性心脏病" +
+            ",心力衰竭" +
+            ",心源性休克" +
+            ",酒精中毒" +
+            ",咽炎" +
+            ",急性扁桃体炎" +
+            ",变应性鼻炎" +
+            ",慢性鼻窦炎" +
+            ",鼻出血" +
+            ",急性牙髓炎" +
+            ",牙周病" +
+            ",溃疡性口炎" +
+            ",反流性食管炎" +
+            ",胃溃疡" +
+            ",慢性萎缩性胃炎" +
+            ",功能性消化不良" +
+            ",急性阑尾炎" +
+            ",克罗恩病" +
+            ",肠梗阻" +
+            ",肝硬化" +
+            ",急性胰腺炎" +
+            ",过敏性皮炎" +
+            ",湿疹" +
+            ",银屑病" +
+            ",带状疱疹" +
+            ",类风湿性关节炎" +
+            ",系统性红斑狼疮" +
+            ",慢性肾炎" +
+            ",肾病综合征" +
+            ",慢性肾衰竭" +
+            ",肾结石" +
+            ",输尿管结石" +
+            ",膀胱炎" +
+            ",前列腺增生" +
+            ",子宫内膜异位症" +
+            ",卵巢囊肿" +
+            ",痛经" +
+            ",女性更年期综合征" +
+            ",异位妊娠" +
+            ",妊娠剧吐" +
+            ",鼻咽恶性肿瘤" +
+            ",肝恶性肿瘤" +
+            ",乳房恶性肿瘤" +
+            ",宫颈恶性肿瘤" +
+            ",多发性骨髓瘤" +
+            ",急性白血病" +
+            ",血管瘤" +
+            ",子宫平滑肌瘤" +
+            ",新生儿黄疸" +
+            ",新生儿腹泻" +
+            ",缺铁性贫血" +
+            ",地中海贫血" +
+            ",血友病" +
+            ",甲状腺功能减退症" +
+            ",甲状腺功能亢进症" +
+            ",桥本甲状腺炎" +
+            ",2型糖尿病" +
+            ",糖尿病" +
+            ",甲状旁腺功能减退症" +
+            ",卵巢早衰" +
+            ",坏血病" +
+            ",高脂血症" +
+            ",高尿酸血症" +
+            ",精神分裂症" +
+            ",抑郁症" +
+            ",化脓性脑膜炎" +
+            ",帕金森病" +
+            ",癫痫" +
+            ",偏头痛" +
+            ",脑梗死" +
+            ",脑卒中" +
+            ",阻塞性睡眠呼吸暂停综合征" +
+            ",肺栓塞" +
+            ",慢性肺源性心脏病" +
+            ",急性上呼吸道感染" +
+            ",病毒性肺炎" +
+            ",社区获得性肺炎" +
+            ",支气管肺炎" +
+            ",肺炎" +
+            ",支气管哮喘" +
+            ",呼吸衰竭" +
+            ",肺部感染" +
+            ",急性泪腺炎" +
+            ",急性泪囊炎" +
+            ",巩膜炎" +
+            ",角膜炎" +
+            ",中耳炎" +
+            ",风湿性关节炎" +
+            ",颈椎病" +
+            ",颈肩综合征" +
+            ",坐骨神经痛" +
+            ",肩周炎" +
+            ",骨质疏松" +
+            ",锁骨骨折" +
+            ",肱骨骨折" +
+            ",肩关节脱位";
+
+
+    @Test
+    public void writeNeo4j() {
+        String startLabel = "疾病";
+        String propertyStr = "并发症\t的并发症有哪些疾病";
+        String[] properties = propertyStr.split(",");
+        workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
+        String fileName = "";//
+        HSSFSheet sheet = workbook.createSheet(fileName);
+        int rows = 0;
+        for(String property:properties){
+            String[] split = property.split("\t");
+            if(split.length<2){
+                continue;
+            }
+            String endLabel = split[0];
+            List<Knowlege> data = getData(BaidubceUtil.getAccessToken(), property);
+            if(!CollectionUtils.isEmpty(data)) {
+
+                for (Knowlege temp:data) {
+                    HSSFRow row = sheet.createRow(rows++);
+                    row.createCell(0).setCellValue(temp.getEntity() == null ? "" : temp.getEntity());
+                    row.createCell(1).setCellValue(temp.getProperty() == null ? "" : temp.getProperty());
+                    row.createCell(2).setCellValue(temp.getValue() == null ? "" : temp.getValue());
+                    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.getRefenrece() == null ? "" : temp.getRefenrece());
+                }
+                save(fileName);
+
+                for (Knowlege temp:data) {
+                    String value = temp.getValue();
+                    if(StringUtils.isBlank(value)){
+                        continue;
+                    }
+                    try{
+                        JSONArray jsonArray = JSONArray.parseArray(value);
+                        BaseEntity startEntity = createNoExists(startLabel, temp.getEntity());
+                        long startId = startEntity.getId();
+                        List<RelationshipVO> relationshipList = new ArrayList<>();
+                        for(int i=0;i<jsonArray.size();i++){
+                            String name = jsonArray.getString(i);
+                            if(StringUtils.isEmpty(name)){
+                                continue;
+                            }
+                            BaseEntity endEntity =  createNoExists(endLabel, name);
+                            Long endId = endEntity.getId();
+                            RelationshipVO relationshipVO = new RelationshipVO();
+                            relationshipVO.setStartId(startId);
+                            relationshipVO.setEndId(endId);
+                            relationshipVO.setStartLabel(startLabel);
+                            relationshipVO.setEndLabel(endLabel);
+                            relationshipVO.setRelationshipType(startLabel+"相关"+endLabel);
+                            relationshipList.add(relationshipVO);
+                        }
+                        if(!CollectionUtils.isEmpty(relationshipList)) {
+                            System.out.println( relationshipService.createRelationship(relationshipList));
+                        }
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+    }
+
+    private BaseEntity createNoExists(String labelName, String name) {
+        BaseEntity nodeByName = entityService.findNodeByName(labelName, name);
+        if(Objects.nonNull(nodeByName)){//节点不存在
+            return nodeByName;
+        }
+        CreateEntityVO createEntity = new CreateEntityVO();
+        createEntity.setName(name);
+        createEntity.setLabel(labelName);
+        return entityService.create(createEntity);
+    }
+
+    public static void main(String[] args) {
+        String accessToken = BaidubceUtil.getAccessToken();
+        String propertyStr = "就诊科室\t的就诊科室有哪些科室名称";
+
+        saveExel(propertyStr, accessToken,"就诊科室");
+    }
+
+    static HSSFWorkbook workbook;
+
+    private static void saveExel(String propertyStr, String accessToken,String fileName) {
+        String[] properties = propertyStr.split(",");
+        workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
+        HSSFSheet sheet = workbook.createSheet(fileName);
+        ;//工作表
+        int rows = 0;
+        for(String property:properties){
+            List<Knowlege> data = getData(accessToken, property);
+            if(!CollectionUtils.isEmpty(data)) {
+                for (Knowlege temp:data) {
+                    HSSFRow row = sheet.createRow(rows++);
+                    row.createCell(0).setCellValue(temp.getEntity() == null ? "" : temp.getEntity());
+                    row.createCell(1).setCellValue(temp.getProperty() == null ? "" : temp.getProperty());
+                    row.createCell(2).setCellValue(temp.getValue() == null ? "" : temp.getValue());
+                    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.getRefenrece() == null ? "" : temp.getRefenrece());
+                }
+            }
+            save(fileName);
+        }
+    }
+
+    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);
+            out.close();
+            System.out.println(fileName + "存储完毕");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static List<Knowlege> getData(String accessToken,String property) {
+        List<Knowlege> list = new ArrayList<>();
+        try {
+            BaidubceUtil baidubceUtil = new BaidubceUtil();
+
+            String[] diseases = diseaseStr.split(",");
+            String appId= "454b1634-91ad-4dde-9d2f-f9a3302fdcbe";
+            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){
+                        continue;
+                    }
+                    String quetionParty = split[1];
+                    String relation = split[0];
+                    String question = disease + quetionParty + "?";
+
+                    Map<String, String> result = QizhenAssistant.getChatResponse(question, QizhenAssistant.getConversationId(appId),appId);
+                    String answer = result.get("answer");
+                    String references = result.get("references");
+                    String defaultReferences = result.get("defaultReferences");
+                    String chatResponse = "";
+                    if (!("failed".equals(answer) || answer.contains(QizhenAssistant.noAnswer))) {
+                        String format = "你是专门处理医学领域文本的关系抽取专家。你将在指定的文本中抽取其中“"+disease+"的"+relation+"”。\n" +
+                                "\n" +
+                                "#要求\n" +
+                                "1、抽取的结果将以JSON数组的形式呈现。每个抽取的“"+relation+"”高度简洁、高度概括,不要要描述性的文字,文字尽量保持在12个字符以内!\n" +
+                                "\n" +
+                                "#示例\n" +
+                                "以抽取主要症状为例\n" +
+                                "文本:\n" +
+                                "臭汗症的主要症状有全身或局部多汗且有臭味^[1][3][4]^。\n" +
+                                "\n" +
+                                "局部性臭汗症多发于大汗腺所在部位,如腋窝、腹股沟、足部、肛周、外阴、脐部及女性乳房下等处,以足部、腋部臭汗症最为多见。腋窝臭汗症俗称狐臭,是一种特殊的刺鼻臭味。足部臭汗症常与足部多汗伴发,有刺鼻的臭味^[1][4]^。\n" +
+                                "\n" +
+                                "全身性臭汗症为一种与种族有关的生理现象,也可见于卫生习惯不良者,服食某些食物(如葱、蒜、芥末)或某些药物(如麝香)后,在个别人中可产生臭汗^[4]^。\n" +
+                                "\n" +
+                                "输出:[\"全身或局部多汗且有臭味\",\"局部性臭汗症\",\"腋窝臭汗症\",\"足部臭汗症常\",\"全身性臭汗症\"]\n" +
+                                "\n" +
+                                "2、没有可抽取的“"+relation+"”,则返回空json数组。\n" +
+                                "\n" +
+                                "本次抽取的文本如下:\n\n";
+
+                        String zhiling = format+ answer;
+                        System.out.println(zhiling);
+                        chatResponse = baidubceUtil.getChatResponse(zhiling, accessToken);
+                        chatResponse = filte(chatResponse);
+                        JSONArray jsonResult = new JSONArray();
+                        if(!StringUtils.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");
+                                        String contentFilted = content.replaceAll("\\s+", "");
+                                        if(contentFilted.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);
+                    }
+                }catch (Exception e){
+                    System.out.println("抽取三元组失败!");
+                    e.printStackTrace();
+                }
+            }
+            return list;
+        } catch (Exception e) {
+            System.out.println("未知错误!");
+            e.printStackTrace();
+        }finally {
+            return 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);
+        knowlege.setValue(chatResponse);
+        knowlege.setAnswer(answer);
+        knowlege.setQuestion(question);
+        knowlege.setChunk(result.get("references"));
+        knowlege.setRefenrece(refences);
+        list.add(knowlege);
+    }
+
+    private static String filte(String chatResponse) {
+        if (chatResponse.startsWith("```json")) {
+            chatResponse = chatResponse.substring(7);
+        }
+        if (chatResponse.endsWith("```")) {
+            chatResponse = chatResponse.substring(0, chatResponse.length() - 3);
+        }
+        return chatResponse;
+    }
+}
+