|
@@ -925,6 +925,8 @@ class PREMPredict():
|
|
|
values[label] = 0.5
|
|
|
elif re.search('现由$', front) and re.search('^作为\d个单位的牵头(单位|公司)?', behind): # 修复 469369884 站源批量预测错误 现由第七合同段保利长大工程有限公司作为6个单位的牵头单位,
|
|
|
label = 5
|
|
|
+ elif re.search('(中标|成交)?|结果)?)(人|公告|公示),$|中标人信息:$', front): # 20250227修复中标错误 588005167 现确定贵公司为该项目的中标人,中国二冶集团有限公司,2025年01月26日,
|
|
|
+ label = 5
|
|
|
elif re.search('是否中标:是,供应商', front) and label == 5:
|
|
|
label = 2
|
|
|
values[label] = 0.9
|
|
@@ -1475,7 +1477,7 @@ class RoleRulePredictor():
|
|
|
"(乙|竞得|受让|买受|签约|供货|供应?|合作|承做|承包|承建|承销|承保|承接|承制|承担|承修|承租((包))?|入围|入选|竞买)(候选|投标)?(人|单位|机构|供应商|方|公司|企业|厂商|商|社会资本方?|银行)(:?单位名称|:?名称|盖章)?[::是为]+$" \
|
|
|
"|(选定单位|指定的中介服务机构|实施主体|中标银行|中标通知书,致|征集结果|选择中介|选择结果|成交对象|勘察人|(,|审计|处置|勘察|设计)服务单位|受托[人方])[::是为]+$" \
|
|
|
"|((评审结果|名次|排名|中标结果)[::]*第?[一1]名?)[::是为]+$|成交供应商信息[,:]?(序号1)?:?|供应商名称$|竞争性选择申请人名称:$" \
|
|
|
- "|单一来源(采购)?(供应商|供货商|服务商|方式向)$|((中标|成交)(结果|信息))[::是为]+$|(中标|成交)供应商、(中标|成交)(金额|价格),$" \
|
|
|
+ "|单一来源(采购)?(供应商|供货商|服务商|方式向)$|((中标|成交)(结果|信息))[::是为]+$|(中标|成交)供应商、(中标|成交)(金额|价格),$|合作伙伴名称:$" \
|
|
|
"|现(公布|宣布|公示)中标单位如下:$|现将中标单位(公布|公示)如下:$|现宣布以下(企业|单位|公司)中标:$|经讨论,决定采用$|第\d+(包件?|标段?)(中标|中选|成交)候选人:$)" # 承办单位:不作为中标 83914772 |施工 单位不作为中标人 例:386692187
|
|
|
self.pattern_winTenderer_left_60 = "(?P<winTenderer_left_60>" \
|
|
|
"(,|。|:|^)((中标(投标)?|[拟预]中标|中选|中价|中签|成交)(人|单位|机构|中介(服务)?机构|供应商|客户|方|公司|企业|厂商|商家?|社会资本方?|银行)|(中标候选人)?第?[一1]名|第[一1](中标|中选|成交)?候选人|服务机构)" \
|
|
@@ -1528,7 +1530,7 @@ class RoleRulePredictor():
|
|
|
|
|
|
self.SET_NOT_TENDERER = set(["人民政府","人民法院","中华人民共和国","人民检察院","评标委员会","中国政府","中国海关","中华人民共和国政府"])
|
|
|
|
|
|
- self.pattern_money_tenderee = re.compile("投?标?最高限价|采购计划金额|项目预算|招标金额|采购金额|项目金额|投资估算|采购(单位|人)委托价|招标限价|拦标价|预算金额|标底|总计|限额|资金来源,?[为:]+\w{2,4}资金|采购成本价|总费用约?为|(招标|采购)总?(规模|额度|资金)|资金来源") # |建安费用 不作为招标金额
|
|
|
+ self.pattern_money_tenderee = re.compile("投?标?最高限价|采购计划金额|项目预算|招标金额|采购金额|项目金额|投资估算|采购(单位|人)委托价|招标限价|拦标价|预算金额|标底|总计|限额|资金来源,?[为:]+\w{2,4}资金|采购成本价|总费用约?为|(招标|采购)总?(规模|额度|资金)|资金来源|合同价暂定") # |建安费用 不作为招标金额
|
|
|
self.pattern_money_tenderer = re.compile("((合同|成交|中标|应付款|交易|投标|验收|订单)[)\)]?(综合)?(总?金额|结果|[单报总]?价))|标的基本情况|承包价|报酬(含税):|经评审的价格|报价不?含税") # 单写 总价 不能作为中标金额,很多表格有单价、总价
|
|
|
self.pattern_money_tenderer_whole = re.compile("(以金额.*中标)|中标供应商.*单价|以.*元(报价)?(中标|中选|成交)")
|
|
|
self.pattern_money_other = re.compile("代理费|服务费")
|
|
@@ -1905,6 +1907,8 @@ class RoleRulePredictor():
|
|
|
front_text = _span[0][re.search(self.pattern_money_tenderer, _span[0]).end():]
|
|
|
if re.search('\d[万亿]?元|元)?:?\d', front_text): # 当前金额与关键词中间有金额的过滤掉
|
|
|
break
|
|
|
+ elif re.search('合同价暂定为?$', _span[0]): # 20250310 修复 598504921 合同价暂定 为招标金额
|
|
|
+ break
|
|
|
if re.search(self.pattern_money_other, _span[0]) is not None:
|
|
|
if re.search(self.pattern_money_tenderer, _span[0]).span()[1] > \
|
|
|
re.search(self.pattern_money_other, _span[0]).span()[1]:
|
|
@@ -2419,7 +2423,7 @@ class RoleGrade():
|
|
|
b = entity.wordOffset_begin
|
|
|
e = entity.wordOffset_end
|
|
|
not_found = 1
|
|
|
- if re.search('(乙方:甲方:|甲方:乙方:)$', text[max(0, b-span):b]):
|
|
|
+ if re.search('(乙方:甲方:|甲方((买方)?,|:)乙方((卖方)?)?:)$', text[max(0, b-span):b]):
|
|
|
entity.label = 0 if entity.entity_type == 'org' else 5 # 修复 290777022 乙方:甲方: 重庆机场集团有限公司 错分为中标
|
|
|
entity.values[entity.label] = 0.55
|
|
|
continue
|
|
@@ -3724,6 +3728,10 @@ class ProductAttributesPredictor():
|
|
|
for link in product_link: # 预防最后一列总价为所有产品总价,列补全后所有产品总价一样情况
|
|
|
if 'total_price' in link:
|
|
|
link['total_price'] = ""
|
|
|
+ if len(demand_link) > 2 and demand_link[0].get('budget', '') != '' and len(set([d.get('budget', '') for d in demand_link])) == 1: # 20250310 去掉多项目共用招标金额 例:598019007
|
|
|
+ for d in demand_link:
|
|
|
+ if 'budget' in d:
|
|
|
+ d['budget'] = ""
|
|
|
if len(unit_price_list)>0 and len(unit_price_list)==len(product_link) and len(set(unit_price_list))/len(unit_price_list)<=0.5: # 2023/7/18 如果单价重复率高不算总产品价避免错误
|
|
|
# print('如果单价重复率高不算总产品价避免错误')
|
|
|
total_product_money = 0
|
|
@@ -5885,6 +5893,8 @@ class DistrictPredictor():
|
|
|
text = re.sub('茂名滨海新区', '茂名市', text)
|
|
|
text = re.sub('中山([东南西][部区环]|黄圃|南头|东凤|小榄|石岐|翠亨|南朗)', '中山市', text)
|
|
|
text = re.sub('横州市', '横县', text) # 例:547363890 修复广西南宁横州 不在地区表问题
|
|
|
+ text = re.sub('广东中山', '广东中山市', text)
|
|
|
+ text = re.sub('朝阳柳城经济开发区', '朝阳市', text)
|
|
|
ser = re.search('海南(昌江|白沙|乐东|陵水|保亭|琼中)(黎族)?', text)
|
|
|
if ser and '黎族' not in ser.group(0):
|
|
|
text = text.replace(ser.group(0), ser.group(0) + '黎族')
|
|
@@ -5902,7 +5912,7 @@ class DistrictPredictor():
|
|
|
for k, v in it.groupdict().items():
|
|
|
if v != None:
|
|
|
if it.end() == it.end(k) and re.search('[省市区县州旗盟]$', v) == None and re.search(
|
|
|
- '^([东南西北中一二三四五六七八九十大小]?(村|镇|街|路|道|社区)|酒店|宾馆|经济开发区|开发区|新区)',
|
|
|
+ '^([东南西北中一二三四五六七八九十大小]?(村|镇|街|路|道|社区|巷|坊)|酒店|宾馆|经济开发区|开发区|新区|公园|广场|医院|[大中小]学)',
|
|
|
# 城市不匹配为区的地址 修复 滨州北海经济开发区 北海新区 等提取为北海
|
|
|
text[it.end(k):]) != None:
|
|
|
continue
|
|
@@ -7827,6 +7837,7 @@ class WebsourceTenderee():
|
|
|
'linklist': [],
|
|
|
'serviceTime': '',
|
|
|
'address': ''})
|
|
|
+
|
|
|
else:
|
|
|
prem[0]['prem']['Project'] = {'code': '',
|
|
|
'tendereeMoney': 0,
|
|
@@ -7839,6 +7850,14 @@ class WebsourceTenderee():
|
|
|
'serviceTime': '',
|
|
|
'address': ''}
|
|
|
]}
|
|
|
+ tenderee_l = [d2['role_text'] for v in prem[0]['prem'].values() for d2 in v['roleList'] if
|
|
|
+ d2['role_name'] == 'tenderee']
|
|
|
+ winner_l = [d2['role_text'] for v in prem[0]['prem'].values() for d2 in v['roleList'] if
|
|
|
+ d2['role_name'] == 'win_tenderer']
|
|
|
+ if set(tenderee_l) & set(winner_l) and web_ree in tenderee_l: # 删除与站源招标人冲突的中标人
|
|
|
+ for k in prem[0]['prem']:
|
|
|
+ prem[0]['prem'][k]['roleList'] = [d for d in prem[0]['prem'][k]['roleList'] if
|
|
|
+ not (d['role_name'] == 'win_tenderer' and d['role_text'] in tenderee_l)]
|
|
|
return prem
|
|
|
|
|
|
def get_header_line(list_item):
|
|
@@ -8583,7 +8602,7 @@ class EntityTypeRulePredictor():
|
|
|
self.pattern_addr_bidopen = '([开评]标|开启|评选|比选|磋商|遴选|寻源|采购|招标|竞价|议价|委托|询比?价|比价|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选))?(会议)?地[点址区]([((]网址[))])?[:为]'
|
|
|
self.pattern_addr_bidsend = '((\w{,4}文件)?(提交|递交)(\w{,4}文件)?|投标)地[点址区]([((]网址[))])?[:为]'
|
|
|
self.pattern_addr_delivery = '(交货|交付|收货|提货|交接|送货(安装)?|送达|到货|供货|卸货)((期|时间)[及和、])?)?(地[点址区]?|区域)[:为]'
|
|
|
- self.pattern_addr_project = '(项目|施工|实施|建设|工程|服务|展示|看样|拍卖)(实施|服务|现场)?(地[点址区]|位置|所在地区?)(位于)?[:为]|项目位于|[^\w]所[属在](区域|地区):|存放地[点址]?[:为]' # 银行所属区域:北京市西城区 不作项目地址
|
|
|
+ self.pattern_addr_project = '(项目|施工|实施|建设|工程|服务|展示|看样|拍卖)(实施|服务|现场)?(地[点址区]|位置|所在地区?)(位于)?[:为]|项目位于|[^\w]所[属在](区域|地区?):|存放地[点址]?[:为]' # 银行所属区域:北京市西城区 不作项目地址
|
|
|
self.pattern_addr_contact = '(联系|收件人?|邮寄)地[点址区][:为]|行政区:'
|
|
|
self.pattern_time_planned = '(计划|预计|预期)(招标|采购|发标|发包)时间|招标(公告|文件)(预计|预期|计划)发布时间'
|
|
|
self.pattern_code_investment = '投资(审批)?项目[编代]码[:为]'
|