Browse Source

处理文本相似度

zhoutg 4 years ago
parent
commit
79329c2924

+ 15 - 33
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -40,7 +40,8 @@ public class NeoFacade {
     MedicineCodeRepository medicineCodeRepository;
     MedicineCodeRepository medicineCodeRepository;
     @Autowired
     @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
-
+    @Autowired
+    NeoFacade self;
 
 
     /**
     /**
      * 返回药品缓存信息
      * 返回药品缓存信息
@@ -74,7 +75,6 @@ public class NeoFacade {
         // TODO 测试数据
         // TODO 测试数据
         res.put("泰舒达类", Arrays.asList("泰舒达"));
         res.put("泰舒达类", Arrays.asList("泰舒达"));
         res.put("青霉素类", Arrays.asList("青霉素"));
         res.put("青霉素类", Arrays.asList("青霉素"));
-
         return res;
         return res;
     }
     }
 
 
@@ -87,31 +87,10 @@ public class NeoFacade {
     @Cacheable(value = "cache", key = "'similarCache'")
     @Cacheable(value = "cache", key = "'similarCache'")
     public Map<String, List<String>> getSimilarCache() {
     public Map<String, List<String>> getSimilarCache() {
         Map<String, List<String>> res = new HashMap<>();
         Map<String, List<String>> res = new HashMap<>();
-
-        Iterator<Medicine_Code> iterator = medicineCodeRepository.findAll().iterator();
-        Medicine_Code current;
-        String med_code, med_type;
-        List<OralMedicine> sets;
-
-        while (iterator.hasNext()) {
-            current = iterator.next();
-            if (current.getMedicine_related_chem().size()>0) {
-                sets = new ArrayList<>(current.getMedicine_related_chem());
-                med_code = current.getName();
-                med_type = sets.get(0).getName();
-                if (res.get(med_type)==null) {
-                    res.put(med_type, new ArrayList<>());
-                }
-                if (res.get(med_type).indexOf(med_code)==-1) {
-                    res.get(med_type).add(med_code);
-                }
-            }
-        }
-
+        // 临床表现,诊断,化验,辅检,药品,查体,手术
         // TODO 测试数据
         // TODO 测试数据
-        res.put("泰舒达类", Arrays.asList("泰舒达"));
-        res.put("青霉素类", Arrays.asList("青霉素"));
-
+        res.put(StandConvertEnum.clinical.getName(), Arrays.asList("胸痛","咳嗽"));
+        res.put(StandConvertEnum.disease.getName(), Arrays.asList("高血压", "糖尿病"));
         return res;
         return res;
     }
     }
 
 
@@ -288,12 +267,14 @@ public class NeoFacade {
      */
      */
     public Map<String, Map<String, String>> standConvert(StandConvert standConvert) {
     public Map<String, Map<String, String>> standConvert(StandConvert standConvert) {
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
-
+        Map<String, List<String>> similarMap = self.getSimilarCache();
         /* 文本相似度模型 */
         /* 文本相似度模型 */
         ModelAI modelAI = new ModelAI();
         ModelAI modelAI = new ModelAI();
 
 
+        // 临床表现数据
         List<String> list = standConvert.getClinicalList();
         List<String> list = standConvert.getClinicalList();
-        Map<String, String> clinicalMap = getStandConvertTypeMap(modelAI, list, "chief_present");
+        Map<String, String> clinicalMap = getStandConvertTypeMap(modelAI, list,
+                similarMap.get(StandConvertEnum.clinical.getName()), "chief_present");
         map.put(StandConvertEnum.clinical.getName(), clinicalMap);
         map.put(StandConvertEnum.clinical.getName(), clinicalMap);
 
 
         return map;
         return map;
@@ -303,14 +284,15 @@ public class NeoFacade {
      * 获取指定类型的map数据
      * 获取指定类型的map数据
      *
      *
      * @param modelAI
      * @param modelAI
-     * @param list
-     * @param modelName
+     * @param text 文本内容
+     * @param cacheList 模型列表
+     * @param modelName 模块名称
      * @return
      * @return
      */
      */
-    public Map<String, String> getStandConvertTypeMap(ModelAI modelAI, List<String> list, String modelName) {
+    public Map<String, String> getStandConvertTypeMap(ModelAI modelAI, List<String> text, List<String> cacheList, String modelName) {
         Map<String, String> map = new LinkedHashMap<>();
         Map<String, String> map = new LinkedHashMap<>();
-        for (String s : list) {
-            JSONArray jsonArray = modelAI.loadSimilarAI(s, list,
+        for (String s : text) {
+            JSONArray jsonArray = modelAI.loadSimilarAI(s, cacheList,
                     false, modelName, chiefPresentSimilarityServiceClient);
                     false, modelName, chiefPresentSimilarityServiceClient);
             putMap(jsonArray, s, map);
             putMap(jsonArray, s, map);
         }
         }

+ 2 - 2
src/main/java/com/diagbot/model/ai/ModelAI.java

@@ -178,8 +178,8 @@ public class ModelAI {
     /**
     /**
      * 获取主诉现病史症状相似度返回数据
      * 获取主诉现病史症状相似度返回数据
      *
      *
-     * @param string1
-     * @param string2
+     * @param string1 需要转换的文本
+     * @param string2 模型文本
      * @return
      * @return
      */
      */
     public JSONArray loadSimilarAI(String string1, List<String> string2, boolean directionCheck
     public JSONArray loadSimilarAI(String string1, List<String> string2, boolean directionCheck