|
@@ -1,84 +1,84 @@
|
|
|
-//package cn.cslg.pas.service.patentRightSplit;
|
|
|
-//
|
|
|
-//import cn.cslg.pas.common.PatentRightContent;
|
|
|
-//import cn.cslg.pas.common.model.params.PatentRightParams;
|
|
|
-//import org.springframework.stereotype.Service;
|
|
|
-//
|
|
|
-//import java.util.ArrayList;
|
|
|
-//import java.util.List;
|
|
|
-//import java.util.regex.Matcher;
|
|
|
-//import java.util.regex.Pattern;
|
|
|
-//
|
|
|
-///**
|
|
|
-// * 拆分权要类(日本专利JP)
|
|
|
-// *
|
|
|
-// * @author chenyu
|
|
|
-// * @date 2023/8/30
|
|
|
-// */
|
|
|
-//@Service
|
|
|
-//public class PatentRightSplitJPService implements PatentRightSplitService {
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public List<PatentRightContent> formatPatentRight(PatentRightParams params) {
|
|
|
-// try {
|
|
|
-// //创建一个权要集合,用于返回结果
|
|
|
-// ArrayList<PatentRightContent> patentRightContents = new ArrayList<>();
|
|
|
-// //原文
|
|
|
-// String content = params.getContent();
|
|
|
-//
|
|
|
-// //将原文从"1"截取到末尾(为了去除首行"声称的是:")
|
|
|
-// if (!content.equals("") && content.contains("声称的是") && content.contains("1")) {
|
|
|
-// content = content.substring(content.indexOf("1"));
|
|
|
-// }
|
|
|
-//
|
|
|
-// //第1步 ↓:拆分权要原文
|
|
|
-// //将原文和译文的所有换行符 "\r\n"和"\n" 替换成特殊符号 "##@@&&",这样可以使得全文连在一起,其次再根据特殊符号##@@&&拆分权要
|
|
|
-// content = content.replace("\r\n", "##@@&&").replace("\n", "##@@&&");
|
|
|
-//
|
|
|
-// //若原文没有换行符则全文按照句号"。"拆分
|
|
|
-// if (!content.contains("##@@&&")) {
|
|
|
-// if (content.contains("。")) { //若有句号"。"
|
|
|
-// content = content.replace("。", "。\n");
|
|
|
-// } else { //若没有句号"。",则全文按照权要序号如 "1." "2." "3."进行拆分
|
|
|
-// Matcher matcher = Pattern.compile("[0-9]+\\.").matcher(content);
|
|
|
-// while (matcher.find() && !matcher.group().equals("1.")) {
|
|
|
-// String macherGroup = matcher.group();
|
|
|
-// content = content.replaceFirst(macherGroup, "\n" + macherGroup);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-// //定义正则表达式
|
|
|
-// String regex = "##@@&&[0-9]+";
|
|
|
-// Matcher matcher = Pattern.compile(regex).matcher(content);
|
|
|
-// while (matcher.find()) {
|
|
|
-// String macherGroup = matcher.group();
|
|
|
-// content = content.replaceFirst(macherGroup, "\n" + macherGroup.substring(macherGroup.indexOf("##@@&&") + 6));
|
|
|
-// }
|
|
|
-// //去除所有特殊符号"##@@&&"
|
|
|
-// content = content.replace("##@@&&", "");
|
|
|
-// }
|
|
|
-// //最后按照换行符"\n"将权要拆成多个
|
|
|
-// String[] strs = content.split("\n");
|
|
|
-//
|
|
|
-//
|
|
|
-// //第2步 ↓:理出权要的类型(type为 1主权要还是 0附属权要)、权要之间的层级关系(每个权要的父级权要序号parentSort)
|
|
|
-// String regex1 = "权利要求[0-9]+";
|
|
|
-// String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
|
|
|
-// for (int i = 0; i < strs.length; i++) {
|
|
|
-// //创建权要对象装载当前权要
|
|
|
-// PatentRightContent patentRightContent = new PatentRightContent()
|
|
|
-// .setContent(strs[i])
|
|
|
-// .setSort(i);
|
|
|
-// //创建父级排序号集合,装载父级序号
|
|
|
-// ArrayList<Integer> parentSorts = new ArrayList<>();
|
|
|
-//
|
|
|
-// //判断若该权要有逗号(即超过一句话)并且它第一句话中有"权利要求"4个字 或者 该权要没有逗号(即只有一句话),并且它有"权利要求"4个字,则该权要类型为附属权要
|
|
|
-// if ((strs[i].contains(",") && strs[i].substring(0, strs[i].indexOf(",")).contains("权利要求")) || (!strs[i].contains(",") && strs[i].contains("权利要求"))) {
|
|
|
-// //则该权要为附权要
|
|
|
-// patentRightContent.setType(0);
|
|
|
-//
|
|
|
-// Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
|
|
|
-// Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
|
|
|
+package cn.cslg.pas.service.patentRightSplit;
|
|
|
+
|
|
|
+import cn.cslg.pas.common.PatentRightContent;
|
|
|
+import cn.cslg.pas.common.model.params.PatentRightParams;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 拆分权要类(日本专利JP)
|
|
|
+ *
|
|
|
+ * @author chenyu
|
|
|
+ * @date 2023/8/30
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class PatentRightSplitJPService implements PatentRightSplitService {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<PatentRightContent> formatPatentRight(PatentRightParams params) {
|
|
|
+ try {
|
|
|
+ //创建一个权要集合,用于返回结果
|
|
|
+ ArrayList<PatentRightContent> patentRightContents = new ArrayList<>();
|
|
|
+ //原文
|
|
|
+ String content = params.getContent();
|
|
|
+
|
|
|
+ //第1步 ↓:拆分权要原文
|
|
|
+ //将原文和译文的所有换行符 "\r\n"和"\n" 替换成特殊符号 "##@@&&",这样可以使得全文连在一起,其次再根据特殊符号##@@&&拆分权要
|
|
|
+ content = content.replace("\r\n", "##@@&&").replace("\n", "##@@&&");
|
|
|
+
|
|
|
+ //若原文没有换行符则全文按照句号"。"拆分
|
|
|
+ if (!content.contains("##@@&&")) {
|
|
|
+ if (content.contains("。")) { //若有句号"。"
|
|
|
+ content = content.replace("。", "。\n");
|
|
|
+ } else { //若没有句号"。",则全文按照权要序号如 "【請求項1】" "【請求項2】" "【請求項3】"进行拆分
|
|
|
+ Matcher matcher = Pattern.compile("【請求項[0-9]+】").matcher(content);
|
|
|
+ while (matcher.find()) {
|
|
|
+ String macherGroup = matcher.group(); //"【請求項1】"、"【請求項2】"
|
|
|
+ if (!macherGroup.equals("【請求項1】")) {
|
|
|
+ content = content.replaceFirst(macherGroup, "\n" + macherGroup);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //定义正则表达式
|
|
|
+ String regex = "##@@&&【請求項[0-9]+】";
|
|
|
+ Matcher matcher = Pattern.compile(regex).matcher(content);
|
|
|
+ while (matcher.find()) {
|
|
|
+ String macherGroup = matcher.group(); //"##@@&&【請求項1】"、""##@@&&【請求項2】""
|
|
|
+ content = content.replaceFirst(macherGroup, "\n" + macherGroup.substring(macherGroup.indexOf("##@@&&") + 6));
|
|
|
+ }
|
|
|
+ //去除所有特殊符号"##@@&&"
|
|
|
+ content = content.replace("##@@&&", "");
|
|
|
+ }
|
|
|
+ //最后按照换行符"\n"将权要拆成多个
|
|
|
+ String[] strs = content.split("\n");
|
|
|
+
|
|
|
+
|
|
|
+ //第2步 ↓:理出权要的类型(type为 1主权要还是 0附属权要)、权要之间的层级关系(每个权要的父级权要序号parentSort)
|
|
|
+ String regex1 = "請求項[0-9]+";
|
|
|
+ //String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
|
|
|
+ for (int i = 0; i < strs.length; i++) {
|
|
|
+ //创建权要对象装载当前权要
|
|
|
+ PatentRightContent patentRightContent = new PatentRightContent()
|
|
|
+ .setContent(strs[i])
|
|
|
+ .setSort(i);
|
|
|
+ //创建父级排序号集合,装载父级序号
|
|
|
+ ArrayList<Integer> parentSorts = new ArrayList<>();
|
|
|
+ String macherGroup;
|
|
|
+
|
|
|
+ //判断若该权要有逗号(即超过一句话)并且它第一句话中有"权利要求"4个字 或者 该权要没有逗号(即只有一句话),并且它有"权利要求"4个字,则该权要类型为附属权要
|
|
|
+ //if ((strs[i].contains("、") && strs[i].substring(strs[i].indexOf("】"), strs[i].indexOf("、")).contains("請求項")) || (!strs[i].contains("、") && strs[i].substring(strs[i].indexOf("】")).contains("請求項"))) {
|
|
|
+ //判断若不是权要1,并且含有"請求項"三个字,则为附属权要
|
|
|
+ if (i != 0 && strs[i].contains("請求項")) {
|
|
|
+ //则该权要为附权要
|
|
|
+ patentRightContent.setType(0);
|
|
|
+
|
|
|
+ Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
|
|
|
+ //Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
|
|
|
// if (matcher2.find()) { //"权利要求2~4"、权利要求"2-4"、权利要求"2至4"、权利要求"2或4"
|
|
|
// String parentNum = matcher2.group().substring(matcher2.group().indexOf("权利要求") + 4); //"2~4"、"2-4"、"2至4"、"2或4"
|
|
|
// String[] parentNumStrs = new String[0]; //[2, 4]
|
|
@@ -101,32 +101,34 @@
|
|
|
// parentSorts.add(i1 - 1); //sort:{1, 2, 3}
|
|
|
// }
|
|
|
// }
|
|
|
-// } else if (matcher1.find()) { //"权利要求4"
|
|
|
-// String parentNum = matcher1.group().substring(matcher1.group().indexOf("权利要求") + 4); //"4"
|
|
|
-// int parentSort = Integer.parseInt(parentNum) - 1;
|
|
|
-// parentSorts.add(parentSort); //sort:{3}
|
|
|
-// }
|
|
|
-//
|
|
|
-// patentRightContent.setParentSorts(parentSorts);
|
|
|
-// } else {
|
|
|
-// //否则该权要为主权要
|
|
|
-// parentSorts.add(-1); //sort:{-1}
|
|
|
-// patentRightContent
|
|
|
-// .setType(1)
|
|
|
-// .setParentSorts(parentSorts);
|
|
|
-// }
|
|
|
-//
|
|
|
-// patentRightContents.add(patentRightContent);
|
|
|
-// }
|
|
|
-//
|
|
|
-// return patentRightContents;
|
|
|
-// } catch (Exception e) {
|
|
|
-// e.printStackTrace();
|
|
|
-// ArrayList<PatentRightContent> patentRightContents = new ArrayList<>();
|
|
|
-// patentRightContents.add(new PatentRightContent().setContent(params.getContent()));
|
|
|
-// return patentRightContents;
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-//}
|
|
|
+// } else
|
|
|
+ if (matcher1.find()) { //"請求項4"
|
|
|
+ macherGroup = matcher1.group();
|
|
|
+ String parentNum = macherGroup.substring(macherGroup.indexOf("請求項") + 3); //4
|
|
|
+ int parentSort = Integer.parseInt(parentNum) - 1;
|
|
|
+ parentSorts.add(parentSort); //sort:{3}
|
|
|
+ }
|
|
|
+
|
|
|
+ patentRightContent.setParentSorts(parentSorts);
|
|
|
+ } else if (i == 0 || !strs[i].contains("請求項")) {
|
|
|
+ //否则该权要为主权要
|
|
|
+ parentSorts.add(-1); //sort:{-1}
|
|
|
+ patentRightContent
|
|
|
+ .setType(1)
|
|
|
+ .setParentSorts(parentSorts);
|
|
|
+ }
|
|
|
+
|
|
|
+ patentRightContents.add(patentRightContent);
|
|
|
+ }
|
|
|
+
|
|
|
+ return patentRightContents;
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ ArrayList<PatentRightContent> patentRightContents = new ArrayList<>();
|
|
|
+ patentRightContents.add(new PatentRightContent().setContent(params.getContent()));
|
|
|
+ return patentRightContents;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|