PatentRightSplitJPService.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //package cn.cslg.pas.service.patentRightSplit;
  2. //
  3. //import cn.cslg.pas.common.model.params.PatentRightParams;
  4. //import cn.cslg.pas.domain.PatentRight;
  5. //import org.springframework.stereotype.Service;
  6. //
  7. //import java.util.ArrayList;
  8. //import java.util.List;
  9. //import java.util.regex.Matcher;
  10. //import java.util.regex.Pattern;
  11. //
  12. ///**
  13. // * 拆分权要类(日本专利JP)
  14. // *
  15. // * @author chenyu
  16. // * @date 2023/8/30
  17. // */
  18. //@Service
  19. //public class PatentRightSplitJPService implements PatentRightSplitService {
  20. //
  21. // @Override
  22. // public List<PatentRight> formatPatentRight(PatentRightParams params) {
  23. // try {
  24. // //创建一个权要集合,用于返回结果
  25. // ArrayList<PatentRight> patentRights = new ArrayList<>();
  26. // //原文
  27. // String content = params.getContent();
  28. //
  29. // //将原文从"1"截取到末尾(为了去除首行"声称的是:\n")
  30. //// if (!content.equals("") && content.contains("声称的是") && content.contains("1")) {
  31. //// content = content.substring(content.indexOf("1"));
  32. //// }
  33. //
  34. // //第1步:拆分权要原文 ↓
  35. // //将原文和译文的所有换行符 "\r\n"和"\n" 替换成特殊符号 "##@@&&",这样可以使得全文连在一起,其次再根据特殊符号##@@&&拆分权要
  36. // content = content.replace("\r\n", "##@@&&").replace("\n", "##@@&&");
  37. //
  38. // //若原文没有换行符,则全文按照句号"。"拆分
  39. // if (!content.contains("##@@&&")) {
  40. // content = content.replace("。", "。\n");
  41. // } else {
  42. // //定义正则表达式
  43. // String regex = "##@@&&[0-9]+";
  44. // Matcher matcher = Pattern.compile(regex).matcher(content);
  45. // while (matcher.find()) {
  46. // String macherGroup = matcher.group();
  47. // content = content.replaceFirst(macherGroup, "\n" + macherGroup.substring(macherGroup.indexOf("##@@&&") + 6));
  48. // }
  49. // //去除所有特殊符号"##@@&&"
  50. // content = content.replace("##@@&&", "");
  51. // }
  52. // //最后按照换行符"\n"将权要拆成多个
  53. // String[] strs = content.split("\n");
  54. //
  55. //
  56. // //第2步:理出每个权要的类型(type为 1主权要还是 0附属权要)、理出权要之间的层级关系(每个权要的父级权要序号parentSort) ↓
  57. // String regex1 = "权利要求[0-9]+";
  58. // String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
  59. // for (int i = 0; i < strs.length; i++) {
  60. // //创建权要对象装载当前权要
  61. // PatentRight patentRight = new PatentRight()
  62. // .setContent(strs[i])
  63. // .setSort(i);
  64. //
  65. // //判断若该权要有逗号(即超过一句话)并且它第一句话中有"权利要求"4个字 或者 该权要没有逗号(即只有一句话),并且它有"权利要求"4个字,则该权要类型为附属权要
  66. // if ((strs[i].contains(",") && strs[i].substring(0, strs[i].indexOf(",")).contains("权利要求")) || (!strs[i].contains(",") && strs[i].contains("权利要求"))) {
  67. // //则该权要类型为附属权要
  68. // patentRight.setType(0);
  69. //
  70. // Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
  71. // Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
  72. // if (matcher2.find()) { //"权利要求2~4"
  73. // String parentNum = matcher2.group().substring(matcher2.group().indexOf("权利要求") + 4); //"2~4"
  74. // String[] parentNumStrs = new String[0];
  75. // if (parentNum.contains("~")) {
  76. // parentNumStrs = parentNum.split("~"); //[2, 4]
  77. // } else if (parentNum.contains("-")) {
  78. // parentNumStrs = parentNum.split("-");
  79. // } else if (parentNum.contains("至")) {
  80. // parentNumStrs = parentNum.split("至");
  81. // } else if (parentNum.contains("或")) {
  82. // parentNumStrs = parentNum.split("或");
  83. // }
  84. //
  85. // int[] parentSorts = new int[parentNumStrs.length]; //[1, 3]
  86. // for (int i1 = 0; i1 < parentSorts.length; i1++) {
  87. // parentSorts[i1] = Integer.parseInt(parentNumStrs[i1]) - 1;
  88. // }
  89. //
  90. // if (parentNum.contains("或")) {
  91. // StringBuilder builder = new StringBuilder();
  92. // for (int parentSort : parentSorts) {
  93. // builder.append(parentSort).append(",");
  94. // }
  95. // patentRight.setParentSort(builder.substring(0, builder.lastIndexOf(",")));
  96. // } else {
  97. // StringBuilder builder = new StringBuilder();
  98. // for (int j = parentSorts[0]; j <= parentSorts[parentSorts.length - 1]; j++) {
  99. // if ((builder + "").equals("")) {
  100. // builder.append(j);
  101. // } else {
  102. // builder.append(",").append(j);
  103. // }
  104. // }
  105. // patentRight.setParentSort(builder + "");
  106. // }
  107. //
  108. // } else if (matcher1.find()) {
  109. // String parentNum = matcher1.group().substring(matcher1.group().indexOf("权利要求") + 4);
  110. // patentRight.setParentSort((Integer.parseInt(parentNum) - 1) + "");
  111. // }
  112. // } else {
  113. // //否则该权要为主权要
  114. // patentRight
  115. // .setType(1)
  116. // .setParentSort("-1");
  117. // }
  118. //
  119. // patentRights.add(patentRight);
  120. // }
  121. //
  122. // return patentRights;
  123. // } catch (Exception e) {
  124. // e.printStackTrace();
  125. // ArrayList<PatentRight> patentRights = new ArrayList<>();
  126. // patentRights.add(new PatentRight().setContent(params.getContent()));
  127. // return patentRights;
  128. // }
  129. //
  130. // }
  131. //
  132. //}