|
|
|
@ -19,6 +19,7 @@ import com.supervision.model.AskTemplateQuestionLibrary;
|
|
|
|
|
import com.supervision.model.CommonDic;
|
|
|
|
|
import com.supervision.service.AskPatientAnswerService;
|
|
|
|
|
import com.supervision.service.AskTemplateQuestionLibraryService;
|
|
|
|
|
import com.supervision.service.AskTemplateQuestionSimilarityService;
|
|
|
|
|
import com.supervision.service.CommonDicService;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.junit.Test;
|
|
|
|
@ -47,6 +48,8 @@ public class VecTest {
|
|
|
|
|
private CommonDicService commonDicService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private AskPatientAnswerService askPatientAnswerService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private AskTemplateQuestionSimilarityService askTemplateQuestionSimilarityService;
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void questionCompareGenerateTest() {
|
|
|
|
@ -117,9 +120,9 @@ public class VecTest {
|
|
|
|
|
@Test
|
|
|
|
|
public void questionEqualGenerateTest() {
|
|
|
|
|
|
|
|
|
|
List<AskTemplateQuestionLibrary> libraries = askTemplateQuestionLibraryService.list()
|
|
|
|
|
.stream().peek(library -> library.getQuestion().forEach(StrUtil::trim))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
// askTemplateQuestionSimilarityService
|
|
|
|
|
List<AskTemplateQuestionLibrary> libraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(libraries);
|
|
|
|
|
|
|
|
|
|
List<CommonDic> commonDics = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
|
|
|
|
|
Map<Long, CommonDic> dicMap = commonDics.stream().collect(Collectors.toMap(CommonDic::getId, v -> v));
|
|
|
|
@ -127,14 +130,14 @@ public class VecTest {
|
|
|
|
|
// 构建问题map id -->> question --->> library
|
|
|
|
|
Map<String, Map<String, AskTemplateQuestionLibrary>> questionMap = new HashMap<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary library : libraries) {
|
|
|
|
|
Map<String, AskTemplateQuestionLibrary> map = library.getQuestion().stream().collect(Collectors.toMap(v -> v, v -> library));
|
|
|
|
|
Map<String, AskTemplateQuestionLibrary> map = similarQuestionMap.get(library.getId()).stream().collect(Collectors.toMap(v -> v, v -> library));
|
|
|
|
|
questionMap.put(library.getId(), map);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 循环处理数据
|
|
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary library : libraries) {
|
|
|
|
|
List<String> questionList = library.getQuestion();
|
|
|
|
|
List<String> questionList = similarQuestionMap.get(library.getId());
|
|
|
|
|
for (String sourceQuestion : questionList) {
|
|
|
|
|
//确认同组数据中是否存在相同的问题
|
|
|
|
|
long count = questionList.stream().filter(v -> StrUtil.equals(sourceQuestion, v)).count();
|
|
|
|
@ -201,6 +204,7 @@ public class VecTest {
|
|
|
|
|
public void questionSimilarityGenerateTest() {
|
|
|
|
|
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
List<CommonDic> commonDics = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
|
|
|
|
|
Map<Long, CommonDic> dicMap = commonDics.stream().collect(Collectors.toMap(CommonDic::getId, v -> v));
|
|
|
|
|
|
|
|
|
@ -209,7 +213,7 @@ public class VecTest {
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary questionLibrary : questionLibraries) {
|
|
|
|
|
List<String> questionList = questionLibrary.getQuestion();
|
|
|
|
|
List<String> questionList = similarQuestionMap.get(questionLibrary.getId());
|
|
|
|
|
for (String question : questionList) {
|
|
|
|
|
List<Map<String, Object>> maps = questionMatch(question);
|
|
|
|
|
if (CollUtil.isEmpty(maps)) {
|
|
|
|
@ -256,13 +260,14 @@ public class VecTest {
|
|
|
|
|
@Test
|
|
|
|
|
public void questionSimilarityTopGenerateTest() {
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
List<CommonDic> commonDics = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
|
|
|
|
|
Map<Long, CommonDic> dicMap = commonDics.stream().collect(Collectors.toMap(CommonDic::getId, v -> v));
|
|
|
|
|
Map<String, AskTemplateQuestionLibrary> libraryMap = questionLibraries.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, library -> library));
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary questionLibrary : questionLibraries) {
|
|
|
|
|
for (String question : questionLibrary.getQuestion()) {
|
|
|
|
|
for (String question : similarQuestionMap.get(questionLibrary.getId())) {
|
|
|
|
|
|
|
|
|
|
List<Map<String, Object>> maps = questionMatch(question);
|
|
|
|
|
// 只获取前四条数据
|
|
|
|
@ -407,12 +412,12 @@ public class VecTest {
|
|
|
|
|
@Test
|
|
|
|
|
public void initVecData() {
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
// load vec data
|
|
|
|
|
List<Map<String, Object>> vecData = questionLibraries.stream().map(library -> {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("questionCode", library.getId());
|
|
|
|
|
map.put("questionList", library.getQuestion());
|
|
|
|
|
map.put("questionList", similarQuestionMap.get(library.getId()));
|
|
|
|
|
return map;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
saveVec(vecData);
|
|
|
|
@ -434,11 +439,12 @@ public class VecTest {
|
|
|
|
|
@Test
|
|
|
|
|
public void initQuestionJoinVecData() {
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
// load vec data
|
|
|
|
|
List<Map<String, Object>> vecData = questionLibraries.stream().map(library -> {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("questionCode", library.getId());
|
|
|
|
|
List<String> joinList = library.getQuestion().stream()
|
|
|
|
|
List<String> joinList = similarQuestionMap.get(library.getId()).stream()
|
|
|
|
|
.map(question -> question + " "/* + library.getDefaultAnswer()*/).collect(Collectors.toList());
|
|
|
|
|
map.put("questionList", joinList);
|
|
|
|
|
return map;
|
|
|
|
@ -453,11 +459,12 @@ public class VecTest {
|
|
|
|
|
List<AskPatientAnswer> answerList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalId).list();
|
|
|
|
|
Map<String, AskPatientAnswer> answerMap = answerList.stream().collect(Collectors.toMap(AskPatientAnswer::getLibraryQuestionId, v -> v));
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary questionLibrary : questionLibraries) {
|
|
|
|
|
if (!questionLibrary.getDescription().contains(questionLibrary.getDescription())) {
|
|
|
|
|
/*if (!questionLibrary.getDescription().contains(questionLibrary.getDescription())) {
|
|
|
|
|
questionLibrary.getQuestion().add(questionLibrary.getDescription());
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
AskPatientAnswer askPatientAnswer = answerMap.get(questionLibrary.getId());
|
|
|
|
|
if (ObjectUtil.isEmpty(askPatientAnswer)) {
|
|
|
|
@ -466,7 +473,7 @@ public class VecTest {
|
|
|
|
|
}
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("questionCode", questionLibrary.getId());
|
|
|
|
|
map.put("questionList", questionLibrary.getQuestion());
|
|
|
|
|
map.put("questionList", similarQuestionMap.get(questionLibrary.getId()));
|
|
|
|
|
result.add(map);
|
|
|
|
|
}
|
|
|
|
|
saveVec(result);
|
|
|
|
@ -591,19 +598,19 @@ public class VecTest {
|
|
|
|
|
Map<String, AskPatientAnswer> answerMap = answerList.stream().collect(Collectors.toMap(AskPatientAnswer::getLibraryQuestionId, v -> v));
|
|
|
|
|
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.list();
|
|
|
|
|
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
List<Map<String, Object>> result = new ArrayList<>();
|
|
|
|
|
for (AskTemplateQuestionLibrary questionLibrary : questionLibraries) {
|
|
|
|
|
if (!questionLibrary.getDescription().contains(questionLibrary.getDescription())) {
|
|
|
|
|
/*if (!questionLibrary.getDescription().contains(questionLibrary.getDescription())) {
|
|
|
|
|
questionLibrary.getQuestion().add(questionLibrary.getDescription());
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
AskPatientAnswer askPatientAnswer = answerMap.get(questionLibrary.getId());
|
|
|
|
|
if (ObjectUtil.isEmpty(askPatientAnswer)) {
|
|
|
|
|
log.info("问题:id:{} desc:{},未设置回复答案,跳过", questionLibrary.getId(), questionLibrary.getDescription());
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
for (String question : questionLibrary.getQuestion()) {
|
|
|
|
|
for (String question : similarQuestionMap.get(questionLibrary.getId())) {
|
|
|
|
|
HashMap<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("Q", question);
|
|
|
|
|
map.put("A", askPatientAnswer.getAnswer());
|
|
|
|
@ -622,11 +629,11 @@ public class VecTest {
|
|
|
|
|
@Test
|
|
|
|
|
public void questionListClean() {
|
|
|
|
|
List<AskTemplateQuestionLibrary> questionLibraries = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getId, "1761963910199513090").orderByDesc(AskTemplateQuestionLibrary::getId).list();
|
|
|
|
|
|
|
|
|
|
Map<String, List<String>> similarQuestionMap = askTemplateQuestionSimilarityService.querySimilarityQuestionMapByLibraryLists(questionLibraries);
|
|
|
|
|
Console console = System.console();
|
|
|
|
|
for (AskTemplateQuestionLibrary questionLibrary : questionLibraries) {
|
|
|
|
|
String description = questionLibrary.getDescription();
|
|
|
|
|
List<String> question = questionLibrary.getQuestion();
|
|
|
|
|
List<String> question = similarQuestionMap.get(questionLibrary.getId());
|
|
|
|
|
|
|
|
|
|
List<String> addList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|