|
@@ -30,7 +30,8 @@ before = '(?P<before>' \
|
|
|
'|履约期限|合同的?约定完成时限|合同的?完成日期|承诺完成日期' \
|
|
|
'|合同起始日起|合同的?履约期|履约截止日期|承包期限|合同的?完成日期|特许经营期限' \
|
|
|
'|服务期间|服务履行期|委托(管理)?期限|经营期限|数量' \
|
|
|
- '|(工期|服务期限?|交货期限?|服务履行期|合同期限?|履[行约]期限?)说明|存款期限?|存款年限' \
|
|
|
+ '|(工期|服务期限?|交货期限?|服务履行期|合同期限?|履[行约]期限?)说明|存款期限?|(存款|存放|定存)(期|年)限|服务日期' \
|
|
|
+ '|服务(有效期|年限)|本?合同有效期|协议有效期|项目期限' \
|
|
|
')'
|
|
|
|
|
|
|
|
@@ -42,10 +43,10 @@ before_wuye = '(?P<before>' \
|
|
|
# (履约期限、地点等简要信息.{0,25}(?= [\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]+([年月日]|个月)|20[21]))
|
|
|
|
|
|
before2 = '(?P<before2>' \
|
|
|
- '自合同签订之日起至|合同签订之日起|自合同签订之日起|签订合同后|系统开发' \
|
|
|
- '|合同签订之日起至|自合同签订之日|合同签定后|自签订合同之日起|自合同签订起' \
|
|
|
- '|[自从]?合同签[订定]生效之日起|自合同签订后不超过|合同签订日至' \
|
|
|
- '|合同签订生效之日起' \
|
|
|
+ '自合同签订[之次]日起至|合同签订[之次]日起|自合同签订[之次]日起|签订合同后|系统开发' \
|
|
|
+ '|合同签订[之次]日起至|自合同签订[之次]日|合同签定后|自签订合同[之次]日起|自合同签订起' \
|
|
|
+ '|[自从]?合同签[订定]生效[之次]日起|自合同签订后不超过|合同签订日至' \
|
|
|
+ '|合同签订生效[之次]日起' \
|
|
|
'|本项目招标有效期|招标有效期' \
|
|
|
'|[自从于]?签[订定署字](合同|协议书|协议)并?(期|开始履行|生效|有效期|约定|验收合格|期限|开始服务){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,4}' \
|
|
|
'|[自从于]?(采购)?(合同|协议书|协议)(正式)?签[订定署字](完[成毕])?并?(期|开始履行|生效|验收合格|开始服务|期限|有效期|约定){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,5}' \
|
|
@@ -57,7 +58,7 @@ before2 = '(?P<before2>' \
|
|
|
'|[自从于]服务(合同|协议书|协议)生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
'|(本次)?采购周期' \
|
|
|
'|(项目招标)?履行期|[自从于]?(合同|协议书|协议)生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,3}' \
|
|
|
- '|服务(有效期|年限)|本?合同有效期|(正式)?入驻(之[日后]|后|起|算)+' \
|
|
|
+ '|服务(有效期|年限)|本?合同有效期|协议有效期|(正式)?入驻(之[日后]|后|起|算)+' \
|
|
|
'|(合同|协议书|协议)生效(之[日后]|后|起|算)+' \
|
|
|
'|自?(提供服务|采购人指定|合同约定)(之[日后]|后|起|算)+' \
|
|
|
'|本?项目合同期(为|是)*' \
|
|
@@ -66,6 +67,29 @@ before2 = '(?P<before2>' \
|
|
|
# '|[^。]{0,4}[自从于][^。;;,]{0,15}(之[日后]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,5}?' \
|
|
|
# '|[自从于].{2,15}之日[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
|
|
|
+# before2 用于做开头的表达,需排除一些不合理的
|
|
|
+before2_first = '(?P<before2>' \
|
|
|
+ '自合同签订之日起至|合同签订之日起|自合同签订之日起|签订合同后' \
|
|
|
+ '|合同签订之日起至|自合同签订之日|合同签定后|自签订合同之日起|自合同签订起' \
|
|
|
+ '|[自从]?合同签[订定]生效之日起|自合同签订后不超过|合同签订日至' \
|
|
|
+ '|合同签订生效之日起' \
|
|
|
+ '|本项目招标有效期|招标有效期' \
|
|
|
+ '|[自从于]?签[订定署字](合同|协议书|协议)并?(期|开始履行|生效|有效期|约定|验收合格|期限|开始服务){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,4}' \
|
|
|
+ '|[自从于]?(采购)?(合同|协议书|协议)(正式)?签[订定署字](完[成毕])?并?(期|开始履行|生效|验收合格|开始服务|期限|有效期|约定){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,5}' \
|
|
|
+ '|服务要求' \
|
|
|
+ '|签订合同起' \
|
|
|
+ '|项目的有效期限为|项目服务为|签订合同期为' \
|
|
|
+ '|(合同|协议书)签[订定署字]生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
+ '|[自从于]服务(合同|协议书|协议)生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
+ '|(本次)?采购周期' \
|
|
|
+ '|(项目招标)?履行期|[自从于]?(合同|协议书|协议)生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,3}' \
|
|
|
+ '|服务(有效期|年限)|本?合同有效期|协议有效期|(正式)?入驻(之[日后]|后|起|算)+' \
|
|
|
+ '|(合同|协议书|协议)生效(之[日后]|后|起|算)+' \
|
|
|
+ '|自?(提供服务|采购人指定|合同约定)(之[日后]|后|起|算)+' \
|
|
|
+ '|本?项目合同期(为|是)*' \
|
|
|
+ '|交付使用(之[日后]|后|起|算)+|' \
|
|
|
+ ')'
|
|
|
+
|
|
|
before3 = '(?P<before3>' \
|
|
|
',?([\((](日历天|施工时间|单位)[\))]|[\((]天[\))]?|[\((]年[\))]?|[\((]月[\))]?)?' \
|
|
|
')'
|
|
@@ -136,7 +160,7 @@ reg2 = re.compile(before + before3 + before7 + charac + before5 + before2 + befo
|
|
|
|
|
|
reg3 = re.compile(before + before3 + before7 + charac + before5 + before2 + after2)
|
|
|
|
|
|
-reg4 = re.compile(before2[:-2]+before2[-1:] + before5 + center + after)
|
|
|
+reg4 = re.compile(before2_first[:-2]+before2_first[-1:] + before5 + center + after)
|
|
|
|
|
|
reg5 = re.compile(before + before3 + before7 + charac + before5 + before2 + before4 + before6 + center2 + after)
|
|
|
|
|
@@ -229,18 +253,18 @@ def re_service_time(text):
|
|
|
prob = 0.8
|
|
|
|
|
|
if len(output_list) == 0:
|
|
|
- output_list, text_index_list = re_find_all_result(reg4, input_str)
|
|
|
+ output_list, text_index_list = re_find_all_result(reg5, input_str)
|
|
|
if TEST_MODE:
|
|
|
- print("output_str, text_index reg4", output_list, text_index_list)
|
|
|
+ print("output_str, text_index reg5", output_list, text_index_list)
|
|
|
output_list, text_index_list = filter_service_time(output_list, text_index_list)
|
|
|
- prob = 0.5
|
|
|
+ prob = 0.8
|
|
|
|
|
|
if len(output_list) == 0:
|
|
|
- output_list, text_index_list = re_find_all_result(reg5, input_str)
|
|
|
+ output_list, text_index_list = re_find_all_result(reg4, input_str)
|
|
|
if TEST_MODE:
|
|
|
- print("output_str, text_index reg5", output_list, text_index_list)
|
|
|
+ print("output_str, text_index reg4", output_list, text_index_list)
|
|
|
output_list, text_index_list = filter_service_time(output_list, text_index_list)
|
|
|
- prob = 0.8
|
|
|
+ prob = 0.5
|
|
|
|
|
|
# 添加
|
|
|
all_output_list += output_list
|
|
@@ -298,7 +322,7 @@ def filter_service_time(output_list, text_index_list):
|
|
|
if not re.findall(reg_right_unit, output) and not re.match('^\d{1,3}$', output):
|
|
|
delete_list.append([output, text_index_list[i]])
|
|
|
continue
|
|
|
- if not re.findall("[^之]日|天|年|月|周|星期", output) or re.search("\d{4}[\-\./]\d{1,2}", output):
|
|
|
+ if not (re.findall("[^之]日|天|年|月|周|星期", output) or re.search("\d{4}[\-\./]\d{1,2}", output)):
|
|
|
delete_list.append([output, text_index_list[i]])
|
|
|
continue
|
|
|
# 包含不要的字
|
|
@@ -362,7 +386,22 @@ def re_find_all_result(reg, input, unit="", index=0):
|
|
|
if re.search("数量",i.group()) and not re.search("[年月日天周]",input[i.start()+front_len: i.end()]):
|
|
|
continue
|
|
|
# 前述表达有排除词的跳过
|
|
|
- if re.search("公告|发布",input[i.start():i.start()+front_len]):
|
|
|
+ if re.search("公告|发布|公示",input[i.start():i.start()+front_len]):
|
|
|
+ continue
|
|
|
+ # ‘服务日期’只保留x年的
|
|
|
+ if re.search("服务日期", input[i.start():i.start() + front_len]) \
|
|
|
+ and (re.search('[日月]',input[i.start()+front_len: i.end()]) or not re.search('年',input[i.start()+front_len: i.end()])):
|
|
|
+ continue
|
|
|
+ # 排除某些容易错误的表达
|
|
|
+ if re.search('^(自合同签订[之次]日起至|合同签订[之次]日起|自合同签订[之次]日起|签订合同后' \
|
|
|
+ '|合同签订[之次]日起至|自合同签订[之次]日|合同签定后|自签订合同[之次]日起|自合同签订起' \
|
|
|
+ '|[自从]?合同签[订定]生效[之次]日起|自合同签订后不超过|合同签订日至' \
|
|
|
+ '|合同签订生效[之次]日起|签订合同起' \
|
|
|
+ '|[自从于]?签[订定署字](合同|协议书|协议)并?(期|开始履行|生效|有效期|约定|验收合格|期限|开始服务){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,4}' \
|
|
|
+ '|[自从于]?(采购)?(合同|协议书|协议)(正式)?签[订定署字](完[成毕])?并?(期|开始履行|生效|验收合格|开始服务|期限|有效期|约定){0,2}(之[日后]|日期?[后起]|后|起|算|为)+[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{0,5}' \
|
|
|
+ '|(合同|协议书)签[订定署字]生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
+ '|[自从于]服务(合同|协议书|协议)生效(之[日后]|后|起)[^。\d半一二三四五六七八九十壹两叁贰肆伍陆柒捌玖拾]{1,4}' \
|
|
|
+ ')',input[i.start():i.start() + front_len]):
|
|
|
continue
|
|
|
|
|
|
text_index.append([i.start()+front_len, i.end()])
|