|
@@ -464,18 +464,21 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
|
String line = "";
|
|
|
|
|
|
// 3、将文件结构化
|
|
|
- while (StringUtil.isNotBlank(line = br.readLine())) {
|
|
|
- String[] arr = line.split(" |\\t");
|
|
|
- Ann ann = new Ann();
|
|
|
- ann.setId(arr[0]);
|
|
|
- ann.setType(arr[1]);
|
|
|
- ann.setStart(arr[2]);
|
|
|
- ann.setEnd(arr[3]);
|
|
|
- ann.setName(arr[4]);
|
|
|
- annList.add(ann);
|
|
|
+ while ((line = br.readLine()) != null) {
|
|
|
+ if (StringUtil.isNotBlank(line)) {
|
|
|
+ String[] arr = line.split(" |\\t");
|
|
|
+ Ann ann = new Ann();
|
|
|
+ ann.setId(arr[0]);
|
|
|
+ ann.setType(arr[1]);
|
|
|
+ ann.setStart(arr[2]);
|
|
|
+ ann.setEnd(arr[3]);
|
|
|
+ ann.setName(arr[4]);
|
|
|
+ annList.add(ann);
|
|
|
+ }
|
|
|
}
|
|
|
Map<String, List<Ann>> typeEntity = EntityUtil.makeEntityListMap(annList, "type");
|
|
|
Map<String, List<Ann>> endMap = EntityUtil.makeEntityListMap(annList, "end");
|
|
|
+ Map<String, List<Ann>> startMap = EntityUtil.makeEntityListMap(annList, "start");
|
|
|
|
|
|
// 4、以最小单元为准,读取相关属性
|
|
|
List<Ann> symptomList = typeEntity.get("min_combination_unit");
|
|
@@ -486,37 +489,22 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
|
symptomFeatureList = new SymptomFeatureList();
|
|
|
symptomFeatureList.setMinCombineElement(name);
|
|
|
}
|
|
|
- String start = ann.getStart();
|
|
|
- List<Ann> endList = new ArrayList<>();
|
|
|
- while (ListUtil.isNotEmpty(endList = endMap.get(start))) {
|
|
|
- Ann annBean = endList.get(0);
|
|
|
- start = annBean.getStart();
|
|
|
- switch (annBean.getType()) {
|
|
|
- case "location": // 部位
|
|
|
- setSymptomFeature(symptomFeatureList.getBodyPartList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "direction": // 方位
|
|
|
- setSymptomFeature(symptomFeatureList.getPositionList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "property": // 形状性质
|
|
|
- setSymptomFeature(symptomFeatureList.getShapePropetyList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "extent": // 程度
|
|
|
- setSymptomFeature(symptomFeatureList.getDegreeList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "color": // 颜色
|
|
|
- setSymptomFeature(symptomFeatureList.getColorList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "change": // 变化
|
|
|
- setSymptomFeature(symptomFeatureList.getVarietyList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "rediate": // 放射情况
|
|
|
- setSymptomFeature(symptomFeatureList.getRadiationSituationList(), annBean.getName());
|
|
|
- break;
|
|
|
- case "frequency": // 频率
|
|
|
- setSymptomFeature(symptomFeatureList.getFrequencyList(), annBean.getName());
|
|
|
- break;
|
|
|
- }
|
|
|
+
|
|
|
+ List<Ann> currentAnnList = new ArrayList<>();
|
|
|
+ String value = "";
|
|
|
+ // 从最小组合单元往上找end
|
|
|
+ value = ann.getStart();
|
|
|
+ while (ListUtil.isNotEmpty(currentAnnList = endMap.get(value))) {
|
|
|
+ Ann annBean = currentAnnList.get(0);
|
|
|
+ value = annBean.getStart();
|
|
|
+ setSymptomFeature(annBean, symptomFeatureList);
|
|
|
+ }
|
|
|
+ // 从最小组合单元往下找start
|
|
|
+ value = ann.getEnd();
|
|
|
+ while (ListUtil.isNotEmpty(currentAnnList = startMap.get(value))) {
|
|
|
+ Ann annBean = currentAnnList.get(0);
|
|
|
+ value = annBean.getEnd();
|
|
|
+ setSymptomFeature(annBean, symptomFeatureList);
|
|
|
}
|
|
|
listMap.put(name, symptomFeatureList);
|
|
|
}
|
|
@@ -531,11 +519,11 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
|
symptomFeature.setMinCombineElement(key);
|
|
|
symptomFeature.setBodyPart(StringUtils.join(sf.getBodyPartList(), "、"));
|
|
|
symptomFeature.setPosition(StringUtils.join(sf.getPositionList(), "、"));
|
|
|
- symptomFeature.setBodyPart(StringUtils.join(sf.getBodyPartList(), "、"));
|
|
|
symptomFeature.setShapePropety(StringUtils.join(sf.getShapePropetyList(), "、"));
|
|
|
symptomFeature.setDegree(StringUtils.join(sf.getDegreeList(), "、"));
|
|
|
symptomFeature.setColor(StringUtils.join(sf.getColorList(), "、"));
|
|
|
symptomFeature.setVariety(StringUtils.join(sf.getVarietyList(), "、"));
|
|
|
+ symptomFeature.setRadiationSituation(StringUtils.join(sf.getRadiationSituationList(), "、"));
|
|
|
symptomFeature.setFrequency(StringUtils.join(sf.getFrequencyList(), "、"));
|
|
|
symptomFeatureList.add(symptomFeature);
|
|
|
}
|
|
@@ -545,9 +533,38 @@ public class TestwordInfoFacade extends TestwordInfoServiceImpl {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void setSymptomFeature(List<String> list, String name) {
|
|
|
+ public void addFeature(List<String> list, String name) {
|
|
|
if (!list.contains(name)) {
|
|
|
list.add(name);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void setSymptomFeature(Ann annBean, SymptomFeatureList symptomFeatureList) {
|
|
|
+ switch (annBean.getType()) {
|
|
|
+ case "location": // 部位
|
|
|
+ addFeature(symptomFeatureList.getBodyPartList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "direction": // 方位
|
|
|
+ addFeature(symptomFeatureList.getPositionList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "property": // 形状性质
|
|
|
+ addFeature(symptomFeatureList.getShapePropetyList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "extent": // 程度
|
|
|
+ addFeature(symptomFeatureList.getDegreeList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "color": // 颜色
|
|
|
+ addFeature(symptomFeatureList.getColorList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "change": // 变化
|
|
|
+ addFeature(symptomFeatureList.getVarietyList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "rediate": // 放射情况
|
|
|
+ addFeature(symptomFeatureList.getRadiationSituationList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ case "frequency": // 频率
|
|
|
+ addFeature(symptomFeatureList.getFrequencyList(), annBean.getName());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|