diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java index 779d8217..663cbfc4 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Section.java @@ -1003,6 +1003,9 @@ public class Section { } + + + private Set findEntities(String value, String asType, boolean caseInsensitive, boolean redacted, int ruleNumber, String reason, String legalBasis, Engine engine, boolean asRecommendation) { @@ -1076,6 +1079,8 @@ public class Section { EntitySearchUtils.clearAndFindPositions(singleEntitySet, searchableText, dictionary, manualRedactions); + EntitySearchUtils.removeFalsePositives(singleEntitySet, value.toString(), dictionary.getType(type), new FindEntityDetails(type, headline, sectionNumber, false, false, Engine.RULE, EntityType.ENTITY)); + EntitySearchUtils.addEntitiesWithHigherRank(entities, entity, dictionary); EntitySearchUtils.removeEntitiesContainedInLarger(entities); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java index 80c7d57c..6340be52 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java @@ -20,6 +20,13 @@ public class EntitySearchUtils { return searchImplementation.atLeastOneMatches(sectionText); } + + public void removeFalsePositives(Set found, String inputString, DictionaryModel type, FindEntityDetails details){ + Set falsePositives = find(inputString, type.getFalsePositiveSearch(), details.withEntityType(EntityType.FALSE_POSITIVE)); + markFalsePositives(found, falsePositives); + found.stream().filter(f -> !f.isFalsePositive()).collect(Collectors.toSet()); + } + public Set findEntities(String inputString, SearchImplementation searchImplementation, DictionaryModel type, FindEntityDetails details) { Set found = find(inputString, searchImplementation, details);