|
|
|
@ -30,7 +30,7 @@ public class TripleConversionPipelineImpl implements TripleConversionPipeline {
|
|
|
|
|
// 先对pageNo进行排序再对layoutOrder进行排序
|
|
|
|
|
(o1, o2) -> {
|
|
|
|
|
if (o1.getPageNo().equals(o2.getPageNo())) {
|
|
|
|
|
return Integer.compare(o1.getLayoutOrder(), o2.getLayoutOrder());
|
|
|
|
|
return Integer.compare(o1.getDisplayOrder(), o2.getDisplayOrder());
|
|
|
|
|
}
|
|
|
|
|
return Integer.compare(o1.getPageNo(), o2.getPageNo());
|
|
|
|
|
}
|
|
|
|
@ -72,12 +72,12 @@ public class TripleConversionPipelineImpl implements TripleConversionPipeline {
|
|
|
|
|
@Override
|
|
|
|
|
public EREDTO doEre(TruncateDTO truncateDTO) {
|
|
|
|
|
|
|
|
|
|
if (StrUtil.equals(truncateDTO.getLayoutType(),"0")){
|
|
|
|
|
if (StrUtil.equals(truncateDTO.getLayoutType(),String.valueOf(LayoutTypeEnum.TEXT.getCode()))){
|
|
|
|
|
|
|
|
|
|
return doTextEre(truncateDTO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StrUtil.equals(truncateDTO.getLayoutType(),"1")){
|
|
|
|
|
if (StrUtil.equals(truncateDTO.getLayoutType(),String.valueOf(LayoutTypeEnum.TABLE.getCode()))){
|
|
|
|
|
return doTableEre(truncateDTO);
|
|
|
|
|
}
|
|
|
|
|
log.info("doEre:错误的布局类型: {}", truncateDTO.getLayoutType());
|
|
|
|
@ -85,21 +85,37 @@ public class TripleConversionPipelineImpl implements TripleConversionPipeline {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private EREDTO doTextEre(TruncateDTO truncateDTO) {
|
|
|
|
|
log.info("doTextEre:开始进行文本实体关系抽取,内容:{}", truncateDTO.getContent());
|
|
|
|
|
String prompt = PromptCache.promptMap.get(PromptCache.DOERE_TEXT);
|
|
|
|
|
String formatted = String.format(prompt, truncateDTO.getContent());
|
|
|
|
|
String formatted = StrUtil.format(prompt, truncateDTO.getContent());
|
|
|
|
|
String response = ollamaChatModel.call(formatted);
|
|
|
|
|
// todo:暂时不去处理异常返回
|
|
|
|
|
|
|
|
|
|
log.info("doTextEre响应结果:{}", response);
|
|
|
|
|
return EREDTO.fromTextJson(response, truncateDTO.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private EREDTO doTableEre(TruncateDTO truncateDTO) {
|
|
|
|
|
log.info("doTableEre:开始进行表格实体关系抽取,内容:{}", truncateDTO.getContent());
|
|
|
|
|
String prompt = PromptCache.promptMap.get(PromptCache.DOERE_TABLE);
|
|
|
|
|
String formatted = String.format(prompt, truncateDTO.getContent());
|
|
|
|
|
String formatted = StrUtil.format(prompt, truncateDTO.getContent());
|
|
|
|
|
String response = ollamaChatModel.call(formatted);
|
|
|
|
|
log.info("doTableEre响应结果:{}", response);
|
|
|
|
|
// todo:暂时不去处理异常返回
|
|
|
|
|
|
|
|
|
|
return EREDTO.fromTableJson(response, truncateDTO.getId());
|
|
|
|
|
EREDTO eredto = EREDTO.fromTableJson(response, truncateDTO.getId());
|
|
|
|
|
EntityExtractionDTO titleEntity = new EntityExtractionDTO();
|
|
|
|
|
titleEntity.setEntity("表");
|
|
|
|
|
titleEntity.setName(truncateDTO.getTitle());
|
|
|
|
|
//
|
|
|
|
|
// 添加关系
|
|
|
|
|
ArrayList<RelationExtractionDTO> relations = new ArrayList<>();
|
|
|
|
|
for (EntityExtractionDTO entity : eredto.getEntities()) {
|
|
|
|
|
RelationExtractionDTO relationExtractionDTO = new RelationExtractionDTO(truncateDTO.getId(),
|
|
|
|
|
titleEntity.getEntity(), titleEntity.getName(), "包含", entity.getEntity(), entity.getName(), entity.getAttributes());
|
|
|
|
|
relations.add(relationExtractionDTO);
|
|
|
|
|
}
|
|
|
|
|
eredto.getEntities().add(titleEntity);
|
|
|
|
|
eredto.setRelations(relations);
|
|
|
|
|
return eredto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|