Проверка на процент ключевых слов
Теперь юнит выводится только если процентное соотношение слов на которые он должен сработать в тексте больше или равно заданого значения в юните
This commit is contained in:
parent
b93caa67e2
commit
f391f37f13
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>org.sadtech.autoresponder</groupId>
|
<groupId>org.sadtech.autoresponder</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>1.1.0-RELEASE</version>
|
<version>1.1.1-SNAPSHOT</version>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.sadtech.autoresponder;
|
package org.sadtech.autoresponder;
|
||||||
|
|
||||||
|
import lombok.extern.log4j.Log4j;
|
||||||
import org.sadtech.autoresponder.entity.Person;
|
import org.sadtech.autoresponder.entity.Person;
|
||||||
import org.sadtech.autoresponder.entity.Unit;
|
import org.sadtech.autoresponder.entity.Unit;
|
||||||
import org.sadtech.autoresponder.entity.compare.UnitPriorityComparator;
|
import org.sadtech.autoresponder.entity.compare.UnitPriorityComparator;
|
||||||
@ -7,9 +8,11 @@ import org.sadtech.autoresponder.service.PersonService;
|
|||||||
import org.sadtech.autoresponder.service.UnitService;
|
import org.sadtech.autoresponder.service.UnitService;
|
||||||
import org.sadtech.autoresponder.submodule.parser.Parser;
|
import org.sadtech.autoresponder.submodule.parser.Parser;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
@Log4j
|
||||||
public class Autoresponder {
|
public class Autoresponder {
|
||||||
|
|
||||||
private UnitService unitService;
|
private UnitService unitService;
|
||||||
@ -48,10 +51,17 @@ public class Autoresponder {
|
|||||||
Parser parser = new Parser();
|
Parser parser = new Parser();
|
||||||
parser.setText(message);
|
parser.setText(message);
|
||||||
parser.parse();
|
parser.parse();
|
||||||
return nextUnits.stream().filter(nextUnit -> !Collections.disjoint(nextUnit.getKeyWords(), parser.getWords())).max(new UnitPriorityComparator()).get();
|
return nextUnits.stream().filter(nextUnit -> textPercentageMatch(nextUnit, parser.getWords()) >= nextUnit.getMatchThreshold()).max(new UnitPriorityComparator()).get();
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Double textPercentageMatch(Unit unit, Set<String> words) {
|
||||||
|
Set<String> temp = new HashSet<>(unit.getKeyWords());
|
||||||
|
temp.retainAll(words);
|
||||||
|
log.info((temp.size() / unit.getKeyWords().size()) * 100);
|
||||||
|
return (double) (temp.size() / unit.getKeyWords().size()) * 100;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user