| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- # RoleRulePredictor 的上下文角色召回规则(角色分类流程优化 Phase B)。
- #
- # 来源:dl/predictors/role.py RoleRulePredictor.__init__(约 32-116 行)
- # 的 pattern_left / pattern_whole / pattern_right 三组模式。
- #
- # 说明:
- # - 命名组后缀数字为概率权重(_55 → 0.55,_60 → 0.60),
- # 无后缀时 ser_role 默认 0.55;此处显式写入 prob 字段。
- # - applies_to 映射:left→front(实体前文)、right→behind(实体后文)、
- # whole→whole(前文+实体+后文拼接,ser_role 用 before+center+after)。
- # - 本文件为 source of truth(校验+文档);predictors 消费 YAML 须待
- # Phase C 规则注入机制就绪(见 predictors/role_context.py 模块注释)。
- version: 1
- category: ROLE
- description: >-
- 角色上下文召回规则:按实体前文(front)/后文(behind)/整句(whole)的
- 关键词模式召回 tenderee/agency/winTenderer/secondTenderer/thirdTenderer。
- 规则执行顺序 = pattern_left → pattern_whole → pattern_right(见
- RoleRulePredictor.rule_predict)。
- patterns:
- # ---- 招标人(tenderee)----
- - id: tenderee_front_60
- description: '前文出现"采购人:/招标单位:"等强表达(要求行首或句读引导)。doc 367784094 隆道-大企业采购平台'
- role: tenderee
- prob: 0.6
- applies_to: front
- pattern: '(?P<tenderee_left_60>(,|。|^)(项目)?((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包)(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行))[))]?(信息|联系方式|概况)?[,,。::]?([((]?(1|2|1.1|1.2)[))]?)?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|,|\s*)+$)'
- golden_examples:
- - input: '。采购人:'
- should_match: true
- - input: ',招标单位名称:'
- should_match: true
- - input: '供应商名称:'
- should_match: false
- - id: tenderee_front_55
- description: '前文出现"招标人/买方/业主"等表达(不要求句读引导)'
- role: tenderee
- prob: 0.55
- applies_to: front
- pattern: '(?P<tenderee_left_55>((遴选|寻源|采购|招标|竞价|议价|比选|委托|询比?价|比价|评选|谈判|邀标|邀请|洽谈|约谈|选取|抽取|抽选|项目|需求|甲方?|转让|招租|议标|合同主体|挂牌|出租|出让|出售|标卖|处置|发包|最终|建设|业主|竞卖|申购|公选)(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂|银行)|需求?方|买方|业主|权属人|甲方当事人|询价书企业|比选发起人|采购(执行|实施)单位|优选人的?)[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|\s*)+$)'
- golden_examples:
- - input: '招标人:'
- should_match: true
- - input: '买方:'
- should_match: true
- - input: '中标人:'
- should_match: false
- - id: tenderee_front_50
- description: '前文出现"采购商:/文章来源:/实施主体名称:"等弱表达'
- role: tenderee
- prob: 0.5
- applies_to: front
- pattern: '(?P<tenderee_left_50>((所需|需[用求]|购货|征集|发布|交易发起|开户|申报|填报|开票|收货|竞拍发起|发标)(人|方|单位|组织|用户|业主|主体|部门|公司|企业|工厂)|[转流]出方|文章来源|委托机构|产权所有人|承包权人|结算单位|收货地址|询价商家)[))]?(信息|联系方式|概况)?[,,::]?([((](1|2|1.1|1.2)[))])?((公司|单位)?名称)?([((](全称|盖章|异议受理部门)[))])?(是|为|:|:|\s*)+$|(采购商|招标人):(\w{2,10}-)?$|实施主体(基本情况,)?名称:$)'
- golden_examples:
- - input: '采购商:'
- should_match: true
- - input: '文章来源:'
- should_match: true
- - input: '实施主体名称:'
- should_match: true
- - input: '供应商:'
- should_match: false
- - id: tenderee_whole_center
- description: '整句出现"受…委托/签订《成交确认书》"等。doc 659470425'
- role: tenderee
- prob: 0.55
- applies_to: whole
- pattern: '(?P<tenderee_center>(受.{5,20}的?委托|现将[\w()()]{5,20}[\d年月季度至()]+采购意向|尊敬的供应商(伙伴)?:\w{5,20}(以下简称“\w{2,5}”)|与\w{5,20}签[署订]《成交确认书》))'
- golden_examples:
- - input: '受济南市城乡建设委员会的委托'
- should_match: true
- - input: '与澄迈县自然资源和规划局签订《成交确认书》'
- should_match: true
- - input: '委托代理机构办理'
- should_match: false
- - id: tenderee_behind_50
- description: '后文出现"(以下简称…招标人)/#须采购一批/作为采购人"等'
- role: tenderee
- prob: 0.5
- applies_to: behind
- pattern: '(?P<tenderee_right_50>^(机关)?,?([((](以下简称)?[,"“:]*((招标|采购|发标)(人|单位|机构)|(服务)?购买方)(名称)?[,"”]*[))]|^委托|^将于[\d年月日,::]+进行|^现委托|^的\w{2,10}正在进行|[\d年月季度至]+采购意向|^)?的招标工作已圆满结束)|^([拟须需]|计划)(采购|招标|购置|购买)|^须购[买置]一批|作为(采购|招标)(人|单位))'
- golden_examples:
- - input: '(以下简称“招标人”)'
- should_match: true
- - input: '拟采购'
- should_match: true
- - input: '须购置一批'
- should_match: true
- - input: ',中标人,'
- should_match: false
- - id: tenderee_or_agency_behind
- description: '后文"现就/拟对/现对"——招标或代理不确定,由 is_agency(实体名) 决定'
- role: tenderee
- prob: 0.55
- applies_to: behind
- pattern: '(?P<tendereeORagency_right>(^拟对|^现?就|^现对))'
- golden_examples:
- - input: '现就'
- should_match: true
- - input: '拟对'
- should_match: true
- - input: '现委托'
- should_match: false
- # ---- 代理机构(agency)----
- - id: agency_front
- description: '前文出现"代理机构:/受…委托,"'
- role: agency
- prob: 0.55
- applies_to: front
- pattern: '(?P<agency_left>((代理|拍卖)(?:人|机构|公司|企业|单位|组织)|专业采购机构|集中采购机构|招标组织机构|交易机构|集采机构|[招议))]+标机构|(采购|招标)代理)(名称|.{,4}名,?称|全称)?(是|为|:|:|[,,]?\s*)$|(受.{5,20}委托,?$))'
- golden_examples:
- - input: '代理机构:'
- should_match: true
- - input: '受某某某建设工程公司委托,'
- should_match: true
- - input: '招标人:'
- should_match: false
- - id: agency_behind
- description: '后文出现"(代理机构)/#受…委托"'
- role: agency
- prob: 0.55
- applies_to: behind
- pattern: '(?P<agency_right>^,?([((](以下简称)?[,"“]*(代理)(人|单位|机构)(名称)?[,"”]*[))])|^受.{5,20}委托|^受委?托,)'
- golden_examples:
- - input: '(代理机构)'
- should_match: true
- - input: '受某某某招标代理公司委托'
- should_match: true
- - input: '作为代理'
- should_match: false
- # ---- 中标人(winTenderer)----
- - id: winner_front_60
- description: '前文出现"中标单位:/,成交人:/第一名,"等强表达(要求句读引导)'
- role: winTenderer
- prob: 0.6
- applies_to: front
- pattern: '(?P<winTenderer_left_60>(,|。|:|^)((中标(投标)?|[拟预]中标|中选|中价|中签|成交)(公告)?(人|单位|机构|中介(服务)?机构|供应商|客户|方|公司|企业|厂商|商家?|社会资本方?|银行)|(中标候选人)?第?[一1]名|第[一1](中标|中选|成交)?候选人|服务机构)(:?单位名称|:?名称|盖章)?[,,]?([((]按综合排名排序[))]|:择优选取)?[::,,]$|选取(情况|说明):中选,中介机构名称:$|排名如下:1、$|第[一1]名,?投标(人|单位|银行|公司):$)'
- golden_examples:
- - input: ',中标单位:'
- should_match: true
- - input: '中标人:'
- should_match: true
- - input: '招标人:'
- should_match: false
- - id: winner_front_55
- description: '前文出现"中标供应商:"等表达(不要求句读引导)'
- role: winTenderer
- prob: 0.55
- applies_to: front
- pattern: '(?P<winTenderer_left_55>(中标(投标)?|[拟预]中标|中选|中价|中签|成交|入选)(人|单位|机构|中介(服务)?机构|供应商|客户|方|公司|企业|厂商|商家?|社会资本方?|银行)(:?单位名称|:?名称|盖章)?([((]按综合排名排序[))]|:择优选取|[及和](\w{,2}金额|\w{,2}价格|资格))?[::是为]+$|结果公示如下:摇出球号:\d+号,中介机构:$|(中标|成交|中选)(单位|人|供应商)及\w{,2}金额:$|确定的?中标人公告如下:$)'
- golden_examples:
- - input: '中标供应商:'
- should_match: true
- - input: '成交单位:'
- should_match: true
- - input: '采购人:'
- should_match: false
- - id: winner_front_51
- description: '前文出现"乙方/供货单位/单一来源供应商/供应商名称"等弱表达'
- role: winTenderer
- prob: 0.51
- applies_to: front
- pattern: '(?P<winTenderer_left_51>(乙|竞得|受让|签约|供货|供应?|合作|承办|承做|承包|承建|承销|承保|承接|承制|承担|承修|承租((包))?|入围|入选|竞买|拟采?用)(候选|投标)?(人|单位|机构|供应商|方|公司|企业|厂商|商|社会资本方?|银行)(:?单位名称|:?名称|盖章)?[::是为]+$|(选定单位|指定的中介服务机构|实施主体|中标银行|中标通知书,致|征集结果|选择中介|选择结果|成交对象|勘察人|(,|审计|处置|勘察|设计)服务单位|受托[人方]|(直接)?采购对象)[::是为]+$|((评审结果|名次|排名|中标结果)[::]*第?[一1]名?)[::是为]+$|成交供应商信息[,:]?(序号1)?:?|供应商名称$|竞争性选择申请人名称:$|、(中标|中选|成交)候选人:$|单一来源(采购)?(供应商|供货商|服务商|方式向)$|((中标|成交)(结果|信息))[::是为]+$|(中标|成交)供应商、(中标|成交)(金额|价格),$|合作伙伴名称:$|供应商(乙方)-?$|合作单位:$|拟选商(信息|名称):$|现(公布|宣布|公示)中标单位如下:$|现将中标单位(公布|公示)如下:$|现宣布以下(企业|单位|公司)中标:$|经讨论,决定采用$|第\d+(包件?|标段?)(中标|中选|成交)候选人:$|入围供应商如下(排名不分先后)[,:]$)'
- golden_examples:
- - input: '供应商名称'
- should_match: true
- - input: '单一来源采购供应商'
- should_match: true
- - input: '乙方:'
- should_match: true
- - input: '采购人:'
- should_match: false
- - id: winner_behind
- description: '后文出现"为中标单位,/以100.5万元中标"等。doc 244261884 633061180'
- role: winTenderer
- prob: 0.55
- applies_to: behind
- pattern: '(?P<winTenderer_right>(^[是为](首选)?((采购|中标|成交)(供应商|供货商|服务商)|(第[一1]|预)?(拟?(中标|中选|中价|成交)(候选|排序)?(人|单位|机构|供应商|公司|企业|厂商|银行)))|^((报价|价格)最低,|以\w{5,10})?(确定|成|作)?为[\w“”()]{3,25}((成交|中选|中标|服务)(人|单位|供应商|企业|公司)|供货单位|供应商|第一中标候选人)[,。]|^:贵公司参与|^:?你方于|^(胜出)?(中标|成交)[,。]|^取得中标(单位)?资格|^以\d+[\d,.]+万?元(中标|成交|中选)|^(公司)?:恭喜您中标|^通过(挂牌|拍卖)方式(以[\d.,]+万?元)?竞得|^[((](中标|成交|承包)人名?称?[))])|^确定为(中标|成交|中选)人|^,中标候选单位名次:第一中标候选人|^(分数|得分|评分|综合)排[在名]第一[位名]?|^,排名:1[^\w\d])'
- golden_examples:
- - input: '为中标单位,'
- should_match: true
- - input: '以7.63277万元中标'
- should_match: true
- - input: ',排名:2;'
- should_match: false
- - id: winner_whole_center
- description: '整句出现"确定…为…的中标单位/单一来源谈判"等'
- role: winTenderer
- prob: 0.55
- applies_to: whole
- pattern: '(?P<winTenderer_center>(贵公司|由).{,15}以\w{,15}中标|确定[\w()]{5,20}为[^,。;]{5,50}的?中标单位|选定报价最低的[“”\w()]{5,25}为[^,。;]{5,50}的?(服务|中标|成交)单位|现将中标结果公布如下:[“”\w()]{5,25}恭喜中标|拟邀请[\w()]{5,20}(进行)?单一来源谈判|(承办单位|报价人|投标人|中介机构)(名称)?:[\w()]{5,20},(中标|承办|中选)(价格|金额)|(谈判结果:|结果|最终|确定|决定)[以由为][^,。;]{5,25}(向我单位)?(供货|承担|承接|中标|竞买成功)|中标通知书.{,15}你方|单一来源方?式?[从向][()\w]{5,20}采购|供应商名称:[()\w]{5,20},独家采购原因)'
- golden_examples:
- - input: '确定山东电建三公司为该采购项目的中标单位'
- should_match: true
- - input: '现将中标结果公布如下:青岛特锐德电气股份有限公司恭喜中标'
- should_match: true
- - input: '招标人为某公司'
- should_match: false
- # ---- 第二/第三候选人 ----
- - id: second_front
- description: '前文出现"第二中标候选人:/排名:第二名,供应商:"'
- role: secondTenderer
- prob: 0.55
- applies_to: front
- pattern: '(?P<secondTenderer_left>((第[二2]名?(名|((中标|中选|中价|成交|候选)(候选)?(人|单位|机构|供应商|公司|银行))))(名称)?[::是为]+$)|((评审结果|名次|排名|排序)[::]第?[二2]名?,?(投标(供应)?商|供应商)(名称)?[::]+$))'
- golden_examples:
- - input: '第二中标候选人:'
- should_match: true
- - input: '排名:第二名,供应商:'
- should_match: true
- - input: '第一中标候选人:'
- should_match: false
- - id: second_behind
- description: '后文出现"为第二中标候选人/#,排名:2;/#,评审排名:2;"'
- role: secondTenderer
- prob: 0.55
- applies_to: behind
- pattern: '(?P<secondTenderer_right>^[是为\(]第[二2](名|(中标|中选|中价|成交)(候选)?(人|单位|机构|供应商|公司|银行))|^,中标候选单位名次:第二中标候选人|^,排名:2[^\w\d]|^,评审排名:2;)'
- golden_examples:
- - input: ',排名:2;'
- should_match: true
- - input: '为第二成交单位'
- should_match: true
- - input: ',排名:3;'
- should_match: false
- - id: third_front
- description: '前文出现"第三中标候选人:/排名:第三名,供应商:"'
- role: thirdTenderer
- prob: 0.55
- applies_to: front
- pattern: '(?P<thirdTenderer_left>(第[三3]名?(名|((中标|中选|中价|成交|候选)(候选)?(人|单位|机构|供应商|公司|银行))))(名称)?[::是为]+$|((评审结果|名次|排名|排序)[::]第?[三3]名?,?(投标(供应)?商|供应商)(名称)?[::]+$))'
- golden_examples:
- - input: '第三中标候选人:'
- should_match: true
- - input: '第二中标候选人:'
- should_match: false
- - id: third_behind
- description: '后文出现"为第三中标候选人/#,排名:3;/#,评审排名:3;"'
- role: thirdTenderer
- prob: 0.55
- applies_to: behind
- pattern: '(?P<thirdTenderer_right>^[是为\(]第[三3](名|(中标|中选|中价|成交)(候选)?(人|单位|机构|供应商|公司|银行))|^,中标候选单位名次:第三中标候选人|^,排名:3[^\w\d]|^,评审排名:3;)'
- golden_examples:
- - input: ',排名:3;'
- should_match: true
- - input: ',排名:2;'
- should_match: false
- # ---- 候选人统称 / 所有投标人 ----
- - id: candidate_front
- description: '前文出现"候选人:/投标人:"等候选人统称(不区分名次)'
- role: other
- prob: 0.55
- applies_to: front
- pattern: '(?P<candidate_left>(((中[标选商]|成交|入围|入选)?候选|投标)(人|单位|机构|中介(服务)?机构|供应商|客户|方|公司|厂商|商家?|社会资本方?|银行)|服务单位|候选企业)(1.)?(:?单位名称|:?名称|全称|(?盖\w{,5}章)?|如下|:?牵头人|[及与和]((成交|中标)?金额|资格))?[::是为【]+(1[.、])?$)'
- golden_examples:
- - input: '候选人:'
- should_match: true
- - input: '投标单位:'
- should_match: true
- - input: '招标人:'
- should_match: false
- - id: tenderer_front
- description: '前文出现"投标人/供应商/报价人"等所有投标人统称(存管类全量召回用)'
- role: other
- prob: 0.55
- applies_to: front
- pattern: '((候选|入围|入选|投标|报价|成交|中标|中选|供[货应]|应答|响应)(人|方|人?单位|机构|厂?商|商家|服务商|公司|企业)|(通过|入围)名单|第[\d一二三四五六七八九十]+名)(名称|名单|全称|\d)?[是为:]?$'
- golden_examples:
- - input: '投标人:'
- should_match: true
- - input: '供应商'
- should_match: true
- - input: '招标人:'
- should_match: false
- # ---- 金额召回(RoleRulePredictor.predict 中 money 实体分支,Phase E 迁移)----
- # 原 role.py __init__ 中 pattern_money_* / pattern_pack 类属性;
- # 命中后 label=0(招标金额)或 label=1(中标金额),概率阶梯见代码(0.5/0.55/0.6/0.62)。
- - id: money_tenderee_front
- description: '前文出现"最高限价/项目预算/预算金额/标底/资金来源"等招标金额表达'
- prob: 0.62
- applies_to: front
- pattern: '投?标?最高限价|采购计划金额|项目预算|招标金额|采购金额|项目金额|投资估算|采购(单位|人)委托价|招标限价|拦标价|预算金额|标底|总计|限额|资金来源,?[为:]+\w{2,4}资金|采购成本价|总费用约?为|(招标|采购)总?(规模|额度|资金)|资金来源|合同价暂定|包合计:$'
- golden_examples:
- - input: '项目预算'
- should_match: true
- - input: '预算金额:'
- should_match: true
- - input: '成交金额:'
- should_match: false
- - id: money_tenderer_front
- description: '前文出现"合同金额/成交总价/中标结果"等中标金额表达'
- prob: 0.6
- applies_to: front
- pattern: '((合同|成交|中标|应付款|交易|投标|验收|订单)[)\)]?(综合)?(总?金额|结果|[单报总]?价))|标的基本情况|承包价|报酬(含税):|经评审的价格|报价不?含税'
- golden_examples:
- - input: '合同金额'
- should_match: true
- - input: '成交总价:'
- should_match: true
- - input: '项目预算'
- should_match: false
- - id: money_tenderer_whole
- description: '整句出现"以金额…中标/以100万元中标"等(前后文拼接才成立的表达)'
- prob: 0.6
- applies_to: whole
- pattern: '(以金额.*中标)|中标供应商.*单价|以.*元(报价)?(中标|中选|成交)'
- golden_examples:
- - input: '以金额最低中标'
- should_match: true
- - input: '以7.63277万元中标'
- should_match: true
- - input: '预算金额'
- should_match: false
- - id: money_other_fee
- description: '排除条件:前文出现"代理费/服务费"(不计入招标或中标金额)'
- prob: 0.5
- applies_to: front
- pattern: '代理费|服务费'
- golden_examples:
- - input: '代理费'
- should_match: true
- - input: '服务费:'
- should_match: true
- - input: '合同金额'
- should_match: false
- - id: money_bank_tenderee_front
- description: '存款类项目:前文出现"存款总额/资金总量/定期存款/日均存款"等招标金额表达'
- prob: 0.6
- applies_to: front
- pattern: '存[款放](操作)?,?总?(金额|总额|规模|额度|资金)|招标的?资金总量|(项目|资金)总?(规模|额度)|现金管理的?(操作)?(额度|规模|总额)|定期存款|存款大?约|定期存储|竞争性存放|项目资金|日均存款|资金现状|存量金额|招标分配的资金量|资金总[量额]|总(规模|额度|金额)|投资金额'
- golden_examples:
- - input: '定期存款'
- should_match: true
- - input: '存款总额'
- should_match: true
- - input: '合同金额'
- should_match: false
- - id: money_bank_tenderee_behind
- description: '存款类项目:后文出现"提供定期存放服务/存款期限/结构性存款"等'
- prob: 0.55
- applies_to: behind
- pattern: '^,?(提供定期存放服务|存[款放](期限|时间)|存期|结构性存款|期限|\w{,4}(定期存款|公款存放|资金存放))'
- golden_examples:
- - input: ',提供定期存放服务'
- should_match: true
- - input: ',存款期限'
- should_match: true
- - input: ',中标人'
- should_match: false
- - id: pack_signal
- description: '金额扩展:上下文出现"包/标段/分包"编号信号(招标金额+连续未识别金额扩展为招标金额用)'
- prob: 0.5
- applies_to: whole
- pattern: '(([^承](包|标[段号的包]|分?包|包组)编?号?|项目)[::]?[\((]?[0-9A-Za-z一二三四五六七八九十]{1,4})[^至]?|(第?[0-9A-Za-z一二三四五六七八九十]{1,4}(包号|标[段号的包]|分?包))|[0-9]个(包|标[段号的包]|分?包|包组)'
- golden_examples:
- - input: ',标段一'
- should_match: true
- - input: '分包编号:2'
- should_match: true
- - input: '供应商名称'
- should_match: false
|