Bläddra i källkod

疾病推理算法改进

gaodm 6 år sedan
förälder
incheckning
953b53b653
1 ändrade filer med 29 tillägg och 8 borttagningar
  1. 29 8
      triage-service/src/main/java/com/diagbot/facade/AIFacade.java

+ 29 - 8
triage-service/src/main/java/com/diagbot/facade/AIFacade.java

@@ -15,7 +15,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 调用AI服务业务实现
@@ -69,21 +73,38 @@ public class AIFacade {
             case "7":
                 List<FeatureRate> items = new ArrayList<>();
                 if (ListUtil.isNotEmpty(res.getData().getDis())){
-                    List<String> depts = new ArrayList<>();
-                    FeatureRate item;
+                    Double rate;
+                    Map<String, Double> map = new HashMap<>();
                     for (FeatureRate featureRate: res.getData().getDis()){
-                        if (Double.valueOf(featureRate.getRate()) > 0.2d){
+                        if (Double.valueOf(featureRate.getRate()) > 0.1d){
                             if (StringUtil.isNotBlank(featureRate.getExtraProperty())){
-                                if (!depts.contains(featureRate.getExtraProperty())){
-                                    depts.add(featureRate.getExtraProperty());
-                                    item = new FeatureRate();
-                                    item.setExtraProperty(featureRate.getExtraProperty());
-                                    items.add(item);
+                                if (null != map.get(featureRate.getExtraProperty())){
+                                    rate = map.get(featureRate.getExtraProperty())
+                                            + Double.valueOf(featureRate.getRate());
+                                    map.replace(featureRate.getExtraProperty(), rate);
+                                } else {
+                                    map.put(featureRate.getExtraProperty(), Double.valueOf(featureRate.getRate()));
                                 }
                             }
                         }
                     }
 
+                    List<Map.Entry<String,Double>> list = new ArrayList<Map.Entry<String,Double>>(map.entrySet());
+                    Collections.sort(list,new Comparator<Map.Entry<String,Double>>() {
+                                //降序排序
+                                public int compare(Map.Entry<String, Double> o1,
+                                                   Map.Entry<String, Double> o2) {
+                                    return o2.getValue().compareTo(o1.getValue());
+                                }
+                    });
+                    FeatureRate item;
+                    for (Map.Entry<String,Double> entry: list){
+                        if (items.size() < 2){
+                            item = new FeatureRate();
+                            item.setExtraProperty(entry.getKey());
+                            items.add(item);
+                        }
+                    }
                 }
                 if (ListUtil.isEmpty(items)){
                     throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "暂时无法推理出结果");