Explorar o código

1、规则处理增加标准术语转换

louhr %!s(int64=5) %!d(string=hai) anos
pai
achega
756a7067a8

+ 2 - 10
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/Pretreatment.java

@@ -23,6 +23,8 @@ public abstract class Pretreatment {
 
     abstract PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index);
 
+    abstract String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index);
+
     protected List<PreResult> analyzeDefault(String content) throws java.io.IOException{
         LexemePath<Lexeme> lexemes = ParticipleUtil.participle(content);
 
@@ -75,14 +77,4 @@ public abstract class Pretreatment {
         }
         return -1;
     }
-
-    protected String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
-        if (cursor > 0) cursor--;
-        Lexeme leftLexeme = lexemes.get(cursor);
-        if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.VITAL_INDEX,
-                NegativeEnum.VITAL_INDEX_VALUE, NegativeEnum.VITAL_RESULT, NegativeEnum.SYMPTOM})) {
-            return leftLexeme.getText();
-        }
-        return null;
-    }
 }

+ 6 - 2
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/PretreatmentLis.java

@@ -21,7 +21,7 @@ public class PretreatmentLis extends Pretreatment {
         if (cursor > 0) cursor--;
         Lexeme leftLexeme = lexemes.get(cursor);
         if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.LIS_NAME})) {
-            result.setDetailName(leftLexeme.getText());
+            result.setDetailName(NlpUtil.concept(leftLexeme, NegativeEnum.LIS_NAME));
         } else {
             return null;
         }
@@ -30,11 +30,15 @@ public class PretreatmentLis extends Pretreatment {
         while (position > -1) {
             leftLexeme = lexemes.get(position);
             if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.LIS_TYPE})) {
-                result.setName(leftLexeme.getText());
+                result.setName(NlpUtil.concept(leftLexeme, NegativeEnum.LIS_TYPE));
                 break;
             }
             position--;
         }
         return result;
     }
+
+    public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
+        return null;
+    }
 }

+ 7 - 3
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/PretreatmentPacs.java

@@ -10,7 +10,7 @@ import org.diagbot.nlp.util.NlpUtil;
 import java.util.List;
 
 public class PretreatmentPacs extends Pretreatment {
-    protected NegativeEnum[] nees_pacs_result = new NegativeEnum[]{NegativeEnum.PACS_RESULT, NegativeEnum.DISEASE};
+    protected NegativeEnum[] nees_pacs_result = new NegativeEnum[]{NegativeEnum.PACS_RESULT};
     protected NegativeEnum[] nees_pacs_name = new NegativeEnum[]{NegativeEnum.PACS_NAME};
     public List<PreResult> analyze(String content) throws java.io.IOException{
         List<PreResult> preResultList = super.analyzeDefault(content);
@@ -26,8 +26,8 @@ public class PretreatmentPacs extends Pretreatment {
                     leftLexeme = lexemes.get(c);
                     if (NlpUtil.isFeature(leftLexeme.getProperty(), nees_pacs_name)) {
                         PreResult result = new PreResult();
-                        result.setValue(l.getText());
-                        result.setDetailName(leftLexeme.getText());
+                        result.setValue(NlpUtil.concept(l, NegativeEnum.PACS_RESULT));
+                        result.setDetailName(NlpUtil.concept(leftLexeme, NegativeEnum.PACS_NAME));
                         preResultList.add(result);
                         break;
                     }
@@ -43,4 +43,8 @@ public class PretreatmentPacs extends Pretreatment {
     public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
         return super.createDefaultPreResult(lexemes, lexeme, index);
     }
+
+    public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
+        return null;
+    }
 }

+ 11 - 0
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/PretreatmentSymptom.java

@@ -3,6 +3,8 @@ package org.diagbot.common.push.filter.pretreat;
 import org.diagbot.common.push.bean.PreResult;
 import org.diagbot.nlp.participle.word.Lexeme;
 import org.diagbot.nlp.participle.word.LexemePath;
+import org.diagbot.nlp.util.NegativeEnum;
+import org.diagbot.nlp.util.NlpUtil;
 
 import java.util.List;
 
@@ -14,4 +16,13 @@ public class PretreatmentSymptom extends Pretreatment {
     public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
         return super.createDefaultPreResult(lexemes, lexeme, index);
     }
+
+    public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
+        if (cursor > 0) cursor--;
+        Lexeme leftLexeme = lexemes.get(cursor);
+        if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.SYMPTOM})) {
+            return NlpUtil.concept(leftLexeme, NegativeEnum.SYMPTOM);
+        }
+        return null;
+    }
 }

+ 12 - 0
common-push/src/main/java/org/diagbot/common/push/filter/pretreat/PretreatmentVital.java

@@ -3,6 +3,8 @@ package org.diagbot.common.push.filter.pretreat;
 import org.diagbot.common.push.bean.PreResult;
 import org.diagbot.nlp.participle.word.Lexeme;
 import org.diagbot.nlp.participle.word.LexemePath;
+import org.diagbot.nlp.util.NegativeEnum;
+import org.diagbot.nlp.util.NlpUtil;
 
 import java.util.List;
 
@@ -14,4 +16,14 @@ public class PretreatmentVital extends Pretreatment {
     public PreResult createPreResult(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
         return super.createDefaultPreResult(lexemes, lexeme, index);
     }
+
+
+    public String findBodyValue(LexemePath<Lexeme> lexemes, Lexeme lexeme, int index) {
+        if (cursor > 0) cursor--;
+        Lexeme leftLexeme = lexemes.get(cursor);
+        if (NlpUtil.isFeature(leftLexeme.getProperty(), new NegativeEnum[]{NegativeEnum.VITAL_INDEX})) {
+            return NlpUtil.concept(leftLexeme, NegativeEnum.VITAL_INDEX);
+        }
+        return null;
+    }
 }

+ 20 - 0
nlp/src/main/java/org/diagbot/nlp/util/NlpUtil.java

@@ -97,4 +97,24 @@ public class NlpUtil {
         }
         return false;
     }
+
+    /**
+     * 返回对应词性的标准术语
+     * @param lexeme
+     * @param feature
+     * @return
+     */
+    public static String concept(Lexeme lexeme, NegativeEnum feature) {
+        if (lexeme.getProperty() == null) {
+            return lexeme.getText();
+        }
+        String[] properties = lexeme.getProperty().split(",");
+        String[] concepts = lexeme.getConcept().split(",");
+        for (int i = 0; i < properties.length; i++) {
+            if (NegativeEnum.parseOfValue(properties[i]) == feature) {
+                return concepts[i];
+            }
+        }
+        return lexeme.getText();
+    }
 }