feat(82947): 相似度匹配改为条款编号+标题+内容

This commit is contained in:
yjz
2024-03-26 19:12:56 +08:00
parent 52f73ed9dd
commit 4340de8e7e
@@ -171,17 +171,19 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
//双重循环找到相似度最高的条款做关联
for (int i = 0; i < leftItemList.size(); i++) {
String leftTxt = leftItemList.get(i).getItemsText();
String leftAllTxt = leftItemList.get(i).getItemsNum() + leftItemList.get(i).getItemsName() + leftItemList.get(i).getItemsText();
//初始化 假设未找到相似条目
leftItemList.get(i).setTargetStand(-1);
//定义初始化的相似度
double compareSimilarity = 0.0;
if (null != leftTxt && !leftTxt.isEmpty()) {
if (null != leftAllTxt && !leftAllTxt.isEmpty()) {
for (int j = 0; j < rightItemList.size(); j++) {
if(null == rightItemList.get(j).getTargetStand()){
rightItemList.get(j).setTargetStand(-1);
}
String rightTxt = rightItemList.get(j).getItemsText();
if (null != rightTxt && !rightTxt.isEmpty()) {
String rightAllTxt = rightItemList.get(j).getItemsNum() + rightItemList.get(j).getItemsName() + rightItemList.get(j).getItemsText();
if (null != rightAllTxt && !rightAllTxt.isEmpty()) {
double similarity = 0;
// 使用正则表达式判断是否是纯<img>标签,不以</p>结尾,也不以</table>结尾
String leftTxtTrim = leftTxt.trim();
@@ -190,11 +192,13 @@ public class SarFileCompareInfoServiceImpl extends ServiceImpl<SarFileCompareInf
boolean rightTxtMatches = Pattern.matches("<img[^>]+>(?<!</p>)(?<!</table>)", rightTxtTrim);
if (leftTxtMatches && rightTxtMatches){
// 如果是纯img标签直接对比内容
if (leftTxtTrim.equals(rightTxtTrim)){
if (leftTxtTrim.equals(rightTxtTrim)
&& Objects.equals(leftItemList.get(i).getItemsNum(), rightItemList.get(j).getItemsNum())
&& Objects.equals(leftItemList.get(i).getItemsName(), rightItemList.get(j).getItemsName())){
similarity = 1;
}
}else {
similarity = CompHanLPUtils.findSimilarity(leftTxt.trim(), rightTxt.trim());
similarity = CompHanLPUtils.findSimilarity(leftAllTxt.trim(), rightAllTxt.trim());
}
//如果相似度超过0.6 并且该相似度比之前的相似度还高,那么该条款目前相似度最高
if (similarity >= 0.6 && compareSimilarity < similarity) {