|
@@ -61,7 +61,7 @@ def get_role(text, nlp_enterprise):
|
|
:param nlp_enterprise: 公告中的角色实体列表
|
|
:param nlp_enterprise: 公告中的角色实体列表
|
|
:return:
|
|
:return:
|
|
'''
|
|
'''
|
|
- text = re.sub('联合体:|联合体(成员|单位)[12345一二三四五]?:|(联合体)?成员单位[12345一二三四五]?:|特殊普通合伙:|[((][主成][))]'
|
|
|
|
|
|
+ text = re.sub('主报名人:|联合报名人:|联合体:|联合体(成员|单位)[12345一二三四五]?:|(联合体)?成员单位[12345一二三四五]?:|特殊普通合伙:|[((][主成][))]'
|
|
, ',', text)
|
|
, ',', text)
|
|
text = re.sub('\s', '', text) # 修复 370835008 表格中实体中间有\n
|
|
text = re.sub('\s', '', text) # 修复 370835008 表格中实体中间有\n
|
|
text = re.sub('[一二三四五六七八九十]+标段[::]|标段[一二三四五六七八九十]+[::]|第[一二三四五六七八九十]+名[::]', '', text) # 2024/4/22 修复 372839375 三标段:宁夏一山科技有限公司
|
|
text = re.sub('[一二三四五六七八九十]+标段[::]|标段[一二三四五六七八九十]+[::]|第[一二三四五六七八九十]+名[::]', '', text) # 2024/4/22 修复 372839375 三标段:宁夏一山科技有限公司
|
|
@@ -883,7 +883,7 @@ class PREMPredict():
|
|
elif re.search('受托人((盖章))?:$', front):
|
|
elif re.search('受托人((盖章))?:$', front):
|
|
label = 1
|
|
label = 1
|
|
values[label] = 0.501
|
|
values[label] = 0.501
|
|
- elif re.search('采用$|异议受理部门|本次招标有:$|直购企业:$', front): # 368177736 因本项目招标采用广西壮族自治区公共资源交易平台系统- 标公告,本次招标有:内黄县汇融钢材有限公司、安阳正元建筑工程有限公司、内黄县鸿业贸易有限责任公司三家合格供应商进行报名投标。 438880541 直购企业可能为多个,其中一个中标
|
|
|
|
|
|
+ elif re.search('采用$|异议受理部门|本次招标有:$|直购企业:$|主报名人:$', front): # 368177736 因本项目招标采用广西壮族自治区公共资源交易平台系统- 标公告,本次招标有:内黄县汇融钢材有限公司、安阳正元建筑工程有限公司、内黄县鸿业贸易有限责任公司三家合格供应商进行报名投标。 438880541 直购企业可能为多个,其中一个中标
|
|
label = 5
|
|
label = 5
|
|
elif re.search(',单位名称:$', front) and re.search('^,(中标|中选)价格', behind):
|
|
elif re.search(',单位名称:$', front) and re.search('^,(中标|中选)价格', behind):
|
|
label = 2
|
|
label = 2
|
|
@@ -1458,13 +1458,13 @@ class RoleRulePredictor():
|
|
# (?P<tenderee_left_w1> 正则组名 后面的 w1 为概率权重关键词
|
|
# (?P<tenderee_left_w1> 正则组名 后面的 w1 为概率权重关键词
|
|
self.pattern_tenderee_left_55 = "(?P<tenderee_left_55>((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲方?|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包|最终|建设|业主|竞卖|申购|公选)" \
|
|
self.pattern_tenderee_left_55 = "(?P<tenderee_left_55>((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲方?|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包|最终|建设|业主|竞卖|申购|公选)" \
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行)|需求?方|买方|业主|权属人|甲方当事人|询价书企业|比选发起人|采购(执行|实施)单位)"\
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行)|需求?方|买方|业主|权属人|甲方当事人|询价书企业|比选发起人|采购(执行|实施)单位)"\
|
|
- "[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章)[))])?(是|为|:|:|\s*)+$)"
|
|
|
|
|
|
+ "[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|\s*)+$)"
|
|
self.pattern_tenderee_left_60 = "(?P<tenderee_left_60>(,|。|^)(项目)?((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包)" \
|
|
self.pattern_tenderee_left_60 = "(?P<tenderee_left_60>(,|。|^)(项目)?((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包)" \
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行))"\
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行))"\
|
|
- "[))]?(信息|联系方式|概况)?[,,。::]?([((]?(1|2|1.1|1.2)[))]?)?((公司|单位)?名称)?([((](全称|盖章)[))])?(是|为|:|:|,|\s*)+$)" # 367784094 隆道-大企业采购平台 采购商:C5石油树脂-中国建材集团有限公司-四川省/成都市/市辖区
|
|
|
|
|
|
+ "[))]?(信息|联系方式|概况)?[,,。::]?([((]?(1|2|1.1|1.2)[))]?)?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|,|\s*)+$)" # 367784094 隆道-大企业采购平台 采购商:C5石油树脂-中国建材集团有限公司-四川省/成都市/市辖区
|
|
self.pattern_tenderee_left_50 = "(?P<tenderee_left_50>((所需|需[用求]|购货|征集|发布|交易发起|开户|申报|填报|开票|收货)" \
|
|
self.pattern_tenderee_left_50 = "(?P<tenderee_left_50>((所需|需[用求]|购货|征集|发布|交易发起|开户|申报|填报|开票|收货)" \
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂)|[转流]出方|文章来源|委托机构|产权所有人|承包权人|结算单位|收货地址)" \
|
|
"(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂)|[转流]出方|文章来源|委托机构|产权所有人|承包权人|结算单位|收货地址)" \
|
|
- "[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章)[))])?(是|为|:|:|\s*)+$|(采购商|招标人):(\w{2,10}-)?$)"
|
|
|
|
|
|
+ "[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|\s*)+$|(采购商|招标人):(\w{2,10}-)?$|实施主体(基本情况,)?名称:$)"
|
|
self.pattern_tenderee_center = "(?P<tenderee_center>(受.{5,20}的?委托|现将[\w()()]{5,20}[\d年月季度至()]+采购意向|尊敬的供应商(伙伴)?:\w{5,20}(以下简称“\w{2,5}”)))"
|
|
self.pattern_tenderee_center = "(?P<tenderee_center>(受.{5,20}的?委托|现将[\w()()]{5,20}[\d年月季度至()]+采购意向|尊敬的供应商(伙伴)?:\w{5,20}(以下简称“\w{2,5}”)))"
|
|
self.pattern_tenderee_right = "(?P<tenderee_right>^(机关)?([((](以下简称)?[,\"“]*((招标|采购)(人|单位|机构)|(服务)?购买方)[,\"”]*[))]|^委托|^将于[\d年月日,::]+进行|^现委托|^的\w{2,10}正在进行|[\d年月季度至]+采购意向|^)?的招标工作已圆满结束)|^([拟须需]|计划)(采购|招标|购置|购买)|^须购[买置]一批|作为(采购|招标)(人|单位)|^关于)" #|(^[^.。,,::](采购|竞价|招标|施工|监理|中标|物资)(公告|公示|项目|结果|招标))|的.*正在进行询比价)
|
|
self.pattern_tenderee_right = "(?P<tenderee_right>^(机关)?([((](以下简称)?[,\"“]*((招标|采购)(人|单位|机构)|(服务)?购买方)[,\"”]*[))]|^委托|^将于[\d年月日,::]+进行|^现委托|^的\w{2,10}正在进行|[\d年月季度至]+采购意向|^)?的招标工作已圆满结束)|^([拟须需]|计划)(采购|招标|购置|购买)|^须购[买置]一批|作为(采购|招标)(人|单位)|^关于)" #|(^[^.。,,::](采购|竞价|招标|施工|监理|中标|物资)(公告|公示|项目|结果|招标))|的.*正在进行询比价)
|
|
self.pattern_tendereeORagency_right = "(?P<tendereeORagency_right>(^拟对|^现?就|^现对))"
|
|
self.pattern_tendereeORagency_right = "(?P<tendereeORagency_right>(^拟对|^现?就|^现对))"
|
|
@@ -1529,7 +1529,7 @@ class RoleRulePredictor():
|
|
self.SET_NOT_TENDERER = set(["人民政府","人民法院","中华人民共和国","人民检察院","评标委员会","中国政府","中国海关","中华人民共和国政府"])
|
|
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 = re.compile("((合同|成交|中标|应付款|交易|投标|验收|订单)[)\)]?(综合)?(总?金额|结果|[单报总]?价))|标的基本情况|承包价|报酬(含税):|经评审的价格|报价不?含税") # 单写 总价 不能作为中标金额,很多表格有单价、总价
|
|
self.pattern_money_tenderer_whole = re.compile("(以金额.*中标)|中标供应商.*单价|以.*元(报价)?(中标|中选|成交)")
|
|
self.pattern_money_tenderer_whole = re.compile("(以金额.*中标)|中标供应商.*单价|以.*元(报价)?(中标|中选|成交)")
|
|
self.pattern_money_other = re.compile("代理费|服务费")
|
|
self.pattern_money_other = re.compile("代理费|服务费")
|
|
self.pattern_money_bank_tenderee = "存[款放](操作)?,?总?(金额|总额|规模|额度|资金)|招标的?资金总量|(项目|资金)总?(规模|额度)|现金管理的?(操作)?(额度|规模|总额)|定期存款|存款大?约|定期存储|竞争性存放|项目资金|日均存款|资金现状|存量金额|招标分配的资金量|资金总[量额]|总(规模|额度|金额)|投资金额" # 存款类招标金额
|
|
self.pattern_money_bank_tenderee = "存[款放](操作)?,?总?(金额|总额|规模|额度|资金)|招标的?资金总量|(项目|资金)总?(规模|额度)|现金管理的?(操作)?(额度|规模|总额)|定期存款|存款大?约|定期存储|竞争性存放|项目资金|日均存款|资金现状|存量金额|招标分配的资金量|资金总[量额]|总(规模|额度|金额)|投资金额" # 存款类招标金额
|
|
@@ -1799,6 +1799,8 @@ class RoleRulePredictor():
|
|
break
|
|
break
|
|
if re.search(self.condadate_left, before) and re.search('尊敬的|各', before[-10:])==None:
|
|
if re.search(self.condadate_left, before) and re.search('尊敬的|各', before[-10:])==None:
|
|
candidates.append(p_entity)
|
|
candidates.append(p_entity)
|
|
|
|
+ elif channel_dic['docchannel']['docchannel'] in ['中标信息', '候选人公示', '合同公告'] and re.search(':$', before) and re.search('^[,。]', after) and re.search('候选人', before): # 补充 577756336 候选人,三期A160、A166地块:中国建设银行成都第九支行,
|
|
|
|
+ candidates.append(p_entity)
|
|
|
|
|
|
# # 使用正则+距离解决冲突
|
|
# # 使用正则+距离解决冲突
|
|
# # 2021/6/11update center: spans[1] --> spans[0][-30:]+spans[1]
|
|
# # 2021/6/11update center: spans[1] --> spans[0][-30:]+spans[1]
|
|
@@ -2036,7 +2038,7 @@ class RoleRuleFinalAdd():
|
|
sear_ent = None
|
|
sear_ent = None
|
|
sear_ent1 = re.search('((招标|采购)联系人)[,::][A-Za-z0-9_]*(?P<entity>[\u4e00-\u9fa5()()]{4,20})', list_articles[0].content[:5000])
|
|
sear_ent1 = re.search('((招标|采购)联系人)[,::][A-Za-z0-9_]*(?P<entity>[\u4e00-\u9fa5()()]{4,20})', list_articles[0].content[:5000])
|
|
sear_ent2 = re.search('[,:](户名|开户名称|发票抬头|单位名称|名称)[::](?P<entity>[\u4e00-\u9fa5()()]{5,20})[,。]', list_articles[0].content[:5000])
|
|
sear_ent2 = re.search('[,:](户名|开户名称|发票抬头|单位名称|名称)[::](?P<entity>[\u4e00-\u9fa5()()]{5,20})[,。]', list_articles[0].content[:5000])
|
|
- if sear_ent2 and sear_ent2.group(1) in ['单位名称','名称'] and re.search('投标报价|(中标|成交|结果|候选人|评标|开标)(公告|公示)', list_articles[0].content[:5000]): # 排除 341354479 这种作为招标人
|
|
|
|
|
|
+ if sear_ent2 and sear_ent2.group(1) in ['单位名称','名称'] and re.search('报价|(中标|成交|结果|候选人|评标|开标)(公告|公示)', list_articles[0].content[:5000]): # 排除 341354479 这种作为招标人
|
|
sear_ent2 = None
|
|
sear_ent2 = None
|
|
sear_ent3 = re.search('(买家信息|所有权人|土地权属单位|报名咨询|[收送交]货地点)[,:](?P<entity>[\u4e00-\u9fa5()()]{5,20})[0-9\-]*[,。]', list_articles[0].content[:5000])
|
|
sear_ent3 = re.search('(买家信息|所有权人|土地权属单位|报名咨询|[收送交]货地点)[,:](?P<entity>[\u4e00-\u9fa5()()]{5,20})[0-9\-]*[,。]', list_articles[0].content[:5000])
|
|
sear_ent4 = re.search('(发布(?:人|单位|机构|企业)|项目业主|所属公司|寻源单位)[,::][A-Za-z0-9_]*(?P<entity>[\u4e00-\u9fa5()()]{4,20})[,。]', list_articles[0].content[:5000])
|
|
sear_ent4 = re.search('(发布(?:人|单位|机构|企业)|项目业主|所属公司|寻源单位)[,::][A-Za-z0-9_]*(?P<entity>[\u4e00-\u9fa5()()]{4,20})[,。]', list_articles[0].content[:5000])
|
|
@@ -2453,6 +2455,8 @@ class RoleGrade():
|
|
_prob -= 0.05
|
|
_prob -= 0.05
|
|
if re.search('(地址|联系方式):$', context): # 地址结尾的概率 概率降低
|
|
if re.search('(地址|联系方式):$', context): # 地址结尾的概率 概率降低
|
|
_prob -= 0.05
|
|
_prob -= 0.05
|
|
|
|
+ if _label == 0 and is_agency(entity.entity_text): # 20250116 修复 584333688 同时有招标单位 : 安徽省招标集团股份有限公司,.采购人信息 名 称:安徽开放大学
|
|
|
|
+ _prob -= 0.1
|
|
entity.values[_label] = _prob + entity.values[_label] / 20
|
|
entity.values[_label] = _prob + entity.values[_label] / 20
|
|
not_found = 0
|
|
not_found = 0
|
|
# print('规则修改角色概率后:', entity.entity_text, entity.label, entity.values)
|
|
# print('规则修改角色概率后:', entity.entity_text, entity.label, entity.values)
|
|
@@ -5545,7 +5549,9 @@ class IndustryPredictor():
|
|
self.json_data_company = json.load(fp2)
|
|
self.json_data_company = json.load(fp2)
|
|
with open(os.path.dirname(__file__)+'/industry_rule_kw_json/tw_custom_keyword/tw_custom_keyword.json', 'r', encoding='utf-8') as fp3:
|
|
with open(os.path.dirname(__file__)+'/industry_rule_kw_json/tw_custom_keyword/tw_custom_keyword.json', 'r', encoding='utf-8') as fp3:
|
|
self.json_data_custom = json.load(fp3)
|
|
self.json_data_custom = json.load(fp3)
|
|
-
|
|
|
|
|
|
+ '''下面补充行业关键词'''
|
|
|
|
+ d = {'id': 5592, 'pingmu': '工程', 'menlei': '建筑业', 'dalei': '建筑装饰和其他建筑业', 'xiaolei': '建筑物拆除和场地准备活动', 'key_word': '围蔽', 'key_word2': None, 'power': '6.00'}
|
|
|
|
+ self.json_data_industry.append(d)
|
|
|
|
|
|
def get_model(self):
|
|
def get_model(self):
|
|
with self.sess.as_default() as sess:
|
|
with self.sess.as_default() as sess:
|
|
@@ -5785,7 +5791,7 @@ class IndustryPredictor():
|
|
final_type = pinmu_type
|
|
final_type = pinmu_type
|
|
return final_type
|
|
return final_type
|
|
|
|
|
|
- def predict(self, title, project, product, prem):
|
|
|
|
|
|
+ def predict(self, title, project, product, prem, product_attrs):
|
|
def get_ree_win(prem):
|
|
def get_ree_win(prem):
|
|
tenderee = ""
|
|
tenderee = ""
|
|
win_tenderer = ""
|
|
win_tenderer = ""
|
|
@@ -5799,6 +5805,9 @@ class IndustryPredictor():
|
|
except Exception as e:
|
|
except Exception as e:
|
|
print('解析prem 获取招标人、中标人出错')
|
|
print('解析prem 获取招标人、中标人出错')
|
|
return tenderee, win_tenderer
|
|
return tenderee, win_tenderer
|
|
|
|
+ if product_attrs[0]['product_attrs'].get('data', [])!=[]: # 20250116 如果产品属性提取到产品,替换产品
|
|
|
|
+ products = [d['product'] for d in product_attrs[0]['product_attrs']['data']]
|
|
|
|
+ product = ' '.join(products)
|
|
tenderee, win_tenderer = get_ree_win(prem)
|
|
tenderee, win_tenderer = get_ree_win(prem)
|
|
result_model, prob = self.predict_model(title, project, product, tenderee)
|
|
result_model, prob = self.predict_model(title, project, product, tenderee)
|
|
industry_lst, score_lst, word_lst = self.predict_rule(title, tenderee, win_tenderer, project, product)
|
|
industry_lst, score_lst, word_lst = self.predict_rule(title, tenderee, win_tenderer, project, product)
|
|
@@ -5858,7 +5867,7 @@ class DistrictPredictor():
|
|
text = str(text).replace('(', '(').replace(')', ')')
|
|
text = str(text).replace('(', '(').replace(')', ')')
|
|
text = re.sub('\d{2,4}年度?|[\d/-]{1,5}[月日]|\d+|[a-zA-Z0-9]+', ' ', text)
|
|
text = re.sub('\d{2,4}年度?|[\d/-]{1,5}[月日]|\d+|[a-zA-Z0-9]+', ' ', text)
|
|
text = re.sub(
|
|
text = re.sub(
|
|
- '复合肥|海南岛|兴业银行|双河口|阳光|杭州湾|新城区|中粮屯河|老城(区|改造|更新|升级|翻新)|沙县小吃|北京时间|福田汽车|中山(大学|公园|纪念堂)|孙中山|海天水泥|阳光采购|示范县|珠江城',
|
|
|
|
|
|
+ '复合肥|海南岛|兴业银行|双河口|阳光|杭州湾|新城区|中粮屯河|老城(区|改造|更新|升级|翻新)|沙县小吃|北京时间|福田汽车|中山(大学|公园|纪念堂)|孙中山|海天水泥|阳光采购|示范县|珠江城|西九龙站|广州路北|安阳山村', # 570445994 广州路北侧 预测为 广州 路北
|
|
' ', text) # 544151395 赤壁市老城区燃气管道老化更新改造
|
|
' ', text) # 544151395 赤壁市老城区燃气管道老化更新改造
|
|
text = re.sub('珠海城市', '珠海', text) # 修复 426624023 珠海城市 预测为海城市
|
|
text = re.sub('珠海城市', '珠海', text) # 修复 426624023 珠海城市 预测为海城市
|
|
text = re.sub('怒江州', '怒江傈僳族自治州', text) # 修复 423589589 所属地域:怒江州 识别为广西 - 崇左 - 江州
|
|
text = re.sub('怒江州', '怒江傈僳族自治州', text) # 修复 423589589 所属地域:怒江州 识别为广西 - 崇左 - 江州
|
|
@@ -5973,6 +5982,8 @@ class DistrictPredictor():
|
|
for k, v in tmp_pro.items():
|
|
for k, v in tmp_pro.items():
|
|
if k in pro_ids:
|
|
if k in pro_ids:
|
|
pro_ids[k] += v
|
|
pro_ids[k] += v
|
|
|
|
+ else:
|
|
|
|
+ pro_ids[k] = v
|
|
else:
|
|
else:
|
|
pro_ids.update(tmp_pro)
|
|
pro_ids.update(tmp_pro)
|
|
tmp_pro = {}
|
|
tmp_pro = {}
|
|
@@ -6110,7 +6121,7 @@ class DistrictPredictor():
|
|
elif ent.entity_type in ['org', 'company']:
|
|
elif ent.entity_type in ['org', 'company']:
|
|
if ent.label in [0, 1]: # 加招标或代理
|
|
if ent.label in [0, 1]: # 加招标或代理
|
|
tenderee_l.append(ent.entity_text)
|
|
tenderee_l.append(ent.entity_text)
|
|
- return ' '.join(addr_l), ' '.join(tenderee_l)
|
|
|
|
|
|
+ return ' '.join(set(addr_l)), ' '.join(set(tenderee_l))
|
|
|
|
|
|
def predict_area(self, title, content, web_source_name, prem={}, addr_dic={}, list_entity=[]):
|
|
def predict_area(self, title, content, web_source_name, prem={}, addr_dic={}, list_entity=[]):
|
|
area_dic = {'area': '全国', 'province': '全国', 'city': '未知', 'district': '未知', "is_in_text": False}
|
|
area_dic = {'area': '全国', 'province': '全国', 'city': '未知', 'district': '未知', "is_in_text": False}
|
|
@@ -6902,7 +6913,7 @@ class TablePremExtractor(object):
|
|
if re.search('^金额((万?元))?$', text):
|
|
if re.search('^金额((万?元))?$', text):
|
|
header_dic['budget'] = (i, text)
|
|
header_dic['budget'] = (i, text)
|
|
break
|
|
break
|
|
- if all_winner and 'tenderer' not in header_dic: # 标题有存款、入库、入围等公告补充其他表达做中标人
|
|
|
|
|
|
+ if all_winner == 1 and 'tenderer' not in header_dic: # 标题有存款、入库、入围等公告补充其他表达做中标人
|
|
if other_tenderer!="":
|
|
if other_tenderer!="":
|
|
header_dic['tenderer'] = other_tenderer
|
|
header_dic['tenderer'] = other_tenderer
|
|
elif other_tenderer2!="":
|
|
elif other_tenderer2!="":
|
|
@@ -7399,7 +7410,7 @@ class CandidateExtractor(object):
|
|
:param nlp_enterprise: 公告中的角色实体列表
|
|
:param nlp_enterprise: 公告中的角色实体列表
|
|
:return:
|
|
:return:
|
|
'''
|
|
'''
|
|
- text = re.sub('联合体:|联合体(成员|单位)[12345一二三四五]?:|(联合体)?成员单位[12345一二三四五]?:|特殊普通合伙:|[((][主成][))]'
|
|
|
|
|
|
+ text = re.sub('主报名人:|联合报名人:|联合体:|联合体(成员|单位)[12345一二三四五]?:|(联合体)?成员单位[12345一二三四五]?:|特殊普通合伙:|[((][主成][))]'
|
|
, ',', text)
|
|
, ',', text)
|
|
text = re.sub('\s', '', text) # 修复 370835008 表格中实体中间有\n
|
|
text = re.sub('\s', '', text) # 修复 370835008 表格中实体中间有\n
|
|
text = re.sub('[一二三四五六七八九十]+标段[::]|标段[一二三四五六七八九十]+[::]|第[一二三四五六七八九十]+名[::]', '',
|
|
text = re.sub('[一二三四五六七八九十]+标段[::]|标段[一二三四五六七八九十]+[::]|第[一二三四五六七八九十]+名[::]', '',
|
|
@@ -8343,7 +8354,7 @@ class EntityTypeRulePredictor():
|
|
self.pattern_addr_bidopen = '([开评]标|开启|评选|比选|磋商|遴选|寻源|采购|招标|竞价|议价|委托|询比?价|比价|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选))?(会议)?地[点址区]([((]网址[))])?[:为]'
|
|
self.pattern_addr_bidopen = '([开评]标|开启|评选|比选|磋商|遴选|寻源|采购|招标|竞价|议价|委托|询比?价|比价|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选))?(会议)?地[点址区]([((]网址[))])?[:为]'
|
|
self.pattern_addr_bidsend = '((\w{,4}文件)?(提交|递交)(\w{,4}文件)?|投标)地[点址区]([((]网址[))])?[:为]'
|
|
self.pattern_addr_bidsend = '((\w{,4}文件)?(提交|递交)(\w{,4}文件)?|投标)地[点址区]([((]网址[))])?[:为]'
|
|
self.pattern_addr_delivery = '(交货|交付|收货|提货|交接|送货(安装)?|送达|到货|供货|卸货)((期|时间)[及和、])?)?地[点址区]?[:为]'
|
|
self.pattern_addr_delivery = '(交货|交付|收货|提货|交接|送货(安装)?|送达|到货|供货|卸货)((期|时间)[及和、])?)?地[点址区]?[:为]'
|
|
- self.pattern_addr_project = '(项目|施工|实施|建设|工程|服务|展示|看样|拍卖)(实施|服务)?(地[点址区]|位置|所在地区?)(位于)?[:为]|项目位于|所在(区域|地区):|存放地[点址]?[:为]'
|
|
|
|
|
|
+ self.pattern_addr_project = '(项目|施工|实施|建设|工程|服务|展示|看样|拍卖)(实施|服务|现场)?(地[点址区]|位置|所在地区?)(位于)?[:为]|项目位于|所在(区域|地区):|存放地[点址]?[:为]'
|
|
self.pattern_addr_contact = '(联系|收件人?|邮寄)地[点址区][:为]|行政区:'
|
|
self.pattern_addr_contact = '(联系|收件人?|邮寄)地[点址区][:为]|行政区:'
|
|
self.pattern_time_planned = '(计划|预计|预期)(采购|招标|发包)时间|招标(公告|文件)(预计|预期|计划)发布时间'
|
|
self.pattern_time_planned = '(计划|预计|预期)(采购|招标|发包)时间|招标(公告|文件)(预计|预期|计划)发布时间'
|
|
self.pattern_code_investment = '投资(审批)?项目[编代]码[:为]'
|
|
self.pattern_code_investment = '投资(审批)?项目[编代]码[:为]'
|