信贷风控四:高校地址自动化识别

信贷风控四:高校地址自动化识别

一、业务背景

恶意投诉一直是信贷从业人员面临的一个棘手问题,总有那么一些客户,或是受不良中介引导,或是自己没有道德底线,在信贷平台借到款之后,抓住一些可利用的漏洞,倒打一耙,把信贷平台投诉到监管平台上。而越是正规的信贷平台,越容易在面对监管投诉时表现弱势,导致信贷平台既失名又失利。面对这种情况,信贷平台能做的一般就是完善流程,留存证据。
大学生投诉,是我们面临的恶意投诉中的一种,有些客户,在自己还在就读高校的时候,钻了空子,在信贷平台上借到了一笔借款,一段时间以后,燃眉之急解决了,就借着平台给学生贷款这个违规操作,把平台投诉给监管了,以求白嫖这笔借款。
为了在业务中防控大学生投诉这种情况,我们对一批以学生身份投诉的案例进行了分析,发现这些投诉客户具有两个普遍特征,一是年龄普遍偏小,主要分布在22-25岁,最大的不超过28岁,二是很大一部分客户的人行征信住址或是公司填写的是高校,从这两个线索出发,我们就可以在前端风控侧做一些规则设计,结合年龄和人行征信住址,把疑似高校的客户都拦截掉,以期在一定程度上解决给学生客户放款的漏洞。于是有了这篇博客,如何做一个规则接口,识别一个地址或公司名是否为高校。
当然这样一个需求可以借助外部厂商解决,像是各种地图服务,或者直接查学籍数据,但这样一是需要费用较高,二是违背了自主化风控的初衷,所以有了下面这个自主化的探索方案。这个方案目前还不能做到百分百准确,但能做到大概率准确,在测试的几千条地址转化结果上面,准确率可以达到94%左右。这个高校识别方案,不仅可以用作贷前风控拦截的接口,也可以用于基于地址数据的数据挖掘方面。

二、解决方案

识别地址是否为高校的基本逻辑是使用正则表达式做关键词识别,在识别准入的基础上,做定向排除。
准入的关键词分为三类:

  1. “大学”、“高校”、“学院”等这类高校的关键字;
  2. “本科”、“研究生”、“学生宿舍”等学生类的关键词;
  3. 各个大学的简称,像“哈工大”、“陕西师大”、“西安交大”等。

在准入的基础上,做如下关键词的定向排除:

  1. 附属中学、附属小学等;
  2. 职工宿舍、专家楼、家属楼等;
  3. 对面、对过、旁边等方位类的关键词;
  4. 大学路、学院路、华中大街、中南大厦等街道、楼宇名;
  5. 某某大学店等分店名称;
  6. 大学村、师范镇等村镇地名;
  7. 保卫处、食堂、教务处等办公地点;
  8. 进修学校、老年大学、成人大学等非学生类学校等

基于以上逻辑,使用python实现的代码如下,供大家参考:


in_re_rule = '.*(大学|高校|学院|专科学校|卫校|师范|本科|研究生|[0-9]{2,4}级|学生宿舍|北理工|北师大|大连理工|哈工大|复旦上医|上海交大|华东师范|中科大|华科大|国科大|华南理工|电科大|西安交大|西工大|北京交大|北工大|北科大|北中医|中石大|河工大|医科大|太原理工|东北师大|哈工程|华东理工|第二军医大|南理工|南农大|中国药大|合工大|武汉理工|华中农大|华中师范|中南大|湖南师大|西南交大|川农大|陕西师大|四医大|协和医大|首师大|天工大|上中医|上海科大|南信大|南医大|南中医|南科大|西南石大|成中医|东大秦校|北航软院|北方工大|北工商|北建大|北石化|电科院|首都医科大|北二外|首经贸|信息科大|北京联大|中青院|北京警院|社科大|天津科大|中航大|天津理工|天津师大|天职师大|天津外大|天津美院|天城大|天津中德|河北工程|冀地大|华北理工|河北科大|河北农大|河北医大|河北师大|河北民师|唐山师院|沧州师院|河北科师|河北体院|河北金院|中警院|河北中医|太原科大|山西农大|山西师大|太原师院|忻州师院|山西财大|山中医|山医汾院|山西工院|内科大|包师院|内工大|内农大|内医大|内师大|内民大|内财大|集宁师院|呼和民院|沈工大|沈理工|辽科大|辽工大|辽石化|沈阳化工|大连交大|大连工大|大海大|中国医大|锦医大|辽中医|辽师大|沈师大|辽科院|沈工院|大连民大|长春工大|吉林化院|吉林农大|长中医|通化师院|吉林师大|吉林工师|白城师院|吉林财大|吉林体院|吉林商院|长工程|吉林警院|吉林医药|哈理工|黑科大|八一农大|哈医大|医药大|哈师大|牡师院|大庆师院|哈商大|哈金院|黑工业|黑工程|上海理大|上海海大|上应大|上健医|上海师大|上经贸大|工程大|二工大|江科大|徐医大|盐城师范|苏警院|苏科大|常理工|南工院|常工院|南工程|江苏理工|江苏海大|徐州工院|南京特师|森警院|东大成贤|苏大文正|江苏二师|陆工大|浙工大|浙理工|浙海大|浙农大|温医大|浙江中医|浙师大|杭师大|湖州师院|绍兴文理|浙商大|中计大|安中医|安科大|闽工院|福建农大|福医大|闽中医|福建师大|泉州师院|闽师大|厦门理工|福建警院|福技院|华东交大|江西师大|上饶师院|赣南师大|科技师大|江西警院|南大抚医|豫章师院|南昌师院|山科大|青科大|青岛理工|山建大|齐鲁工大|山理工|青岛农大|山一大|山东师大|曲阜师大|山工艺|齐鲁师院|山青院|山东管院|山工院|河南理工|郑州轻大|河科大|河南农大|河南牧院|河中医|河南师大|信阳师院|周口师院|安阳师院|南阳师院|洛阳师院|商丘师院|河南财大|郑州航院|洛阳理工|信阳农林|河工院|河南金院|南阳理工|河南城建|河南警院|郑州师范|信息工程大学|武科大|武工大|轻工大|湖工大|湖北中医院|湖北师大|黄冈师院|湖北民大|汉江师院|中南民大|湖北理工|湖医药|荆楚理工|武商院|湖北二师|海工大|湖南科大|长沙理工|湖南农大|中南林科大|湖中大|衡阳师院|湘科院|湖南人科|湖南城院|湖南工大|湖南一师|长沙师范|广药大|韩山师院|岭南师院|广师大|广东二师|深技大|广科大|桂中医|广西师大|南宁师大|广西民师院|广西民大|广西科师|桂财院|桂林旅院|广西警院|海南师大|琼台师范|重庆师大|重文理|重理工|重庆警院|陆军军医大学|西南科大|成信大|川工大|中飞院|西南医大|川师大|西华师大|绵阳师院|内江师院|四川文理|乐山师院|西南民大|成工院|四川旅院|四川民院|四川警院|成都师院|贵医大|贵中医|贵州师大|遵义师院|兴义师院|黔南师院|贵州财大|贵民大|六盘水师院|贵商院|贵州警院|贵州师院|贵州理工|云农大|西南林大|昆医大|云南师大|曲靖师院|云南民大|玉溪师院|楚雄师院|云南警院|滇西大|西安理工|西安工大|西安建大|西科大|西石大|陕科大|西工程大|陕中大|陕理工|宝文理|咸阳师院|渭南师院|西外大|西法大|西安文理|西安财大|陕师院|火工大|空工大|兰理工|兰交大|甘农大|甘肃中医药|西北师大|兰城院|天水师院|兰州财大|西北民大|甘政法|甘肃民院|兰工院|青海师大|青海民大|宁夏师院|北方民大|新农大|新医大|伊犁师大|新疆财大|新工院|新警院|新理工|新科院|西北农大|西南财大|西军电|陕师大|中央美院|上海体院|成理工|石铁大|内蒙古师大|沈阳工大|沈阳农大|长工大|长春师大|上师大|上贸大|江苏师大|江海大|浙中医|中量大|浙财大|安工大|安理工|安农大|安医科|安师大|淮师大|安财经|淮北理工|合师院|国防科大|福师大|江西农大|山工美|齐鲁师范|河南工大|湖北美院|湖北汽院|湖科大|湖南中医大|广科院|玉林师院|云南财大|西理工|西安科大|西石油|西安美院|西文理|西安邮电|安工业|安工程|安农业|安医大|安师范|淮师范|安财大|((北大|北医|人大|清华|北航|农大|民大|南大|天大|东大|吉大|复旦|同济|浙大|厦大|山大|海大|武大|湖大|中大|重大|川大|西农|兰大|北化|北邮|北林|北外|中传|央财|贸大|北体|央音|法大|华电|矿大|地大|蒙大|辽大|延大|林大|东华|上外|上财|上大|苏大|南航|河海|江大|南师|安大|福大|郑大|暨大|华师|西大|西财|贵大|云大|藏大|西电|长大|青大|宁大|新大|石大|外院|国音|央美|央戏|天中|上体|上音|南邮|南林|国美|河大|湘大|华农|广医|成理|汕大|北服|北印|北农|首体|北语|北物|国关|国戏|北影|北舞|女院|中劳|天农|天商|天财|天音|北院|承医|保院|廊师|衡院|石院|邢院|铁大|燕大|唐院|华科|警大|华航|中北|长医|同大|山传|山能|包医|赤院|河院|沈航|建大|沈农|大医|沈药|沈医|渤大|鞍师|大外|东财|沈体|沈音|鲁美|沈大|连大|长理|东电|吉建|北华|长师|吉艺|黑大|东油|佳大|牡医|齐大|绥大|哈体|齐医|黑院|哈音|华政|上戏|立信|上政|上商|南工|常大|通大|盐工|徐师|淮师|南财|南体|南艺|淮工|扬大|南审|宿院|杭电|台院|温大|嘉院|宁工|浙财|浙传|杭医|浙外|安工|安理|安农|安医|安师|安财|亳院|合师|华大|集大|闽院|武院|明院|福商|华理|昌航|江理|景陶|江农|江中|赣医|宜院|井大|江财|景院|九院|山农|潍医|滨医|济医|聊大|德院|滨院|鲁东|临大|山财|山体|山艺|烟大|潍院|山警|山交|山商|山政|华水|中工|新医|许院|平院|郑工|新院|河工|纺大|襄大|武体|湖美|汽院|武音|湘南|邵院|南华|广美|深大|广大|广工|广外|桂电|桂工|右医|桂医|玉师|广艺|百院|梧院|湾大|桂航|贺院|海医|重邮|重医|川外|西政|川美|重科|西华|西院|成体|川音|成大|成医|遵医|凯院|贵院|昆工|理大|云中|普院|红院|云财|云艺|昆院|文院|西体|西音|西美|安院|西邮|西航|西医|塔大|新艺|交医|昌大|石大|航大|天理|天外|海大|商大|安艺|湘院|韩师|海师|西外|贸大).*(校区|实验楼|实验室|研究院|学生公寓|科学楼|科研楼))).*'


def find_high_schol_final_v2(x):

    
    ##处理一下空值
    if pd.isna(x):
        return False
    ##strip一下空格和引号
    x = x.strip().strip('"').strip('”').strip("'").strip('’')
    
#     if (re.match(in_re_rule,x)!=None)|(re.match(addr_re,x)!=None):
    if re.match(in_re_rule,x):

        if re.match(r'.*(附属|附院|附小|附中|幼儿园|附医|中学|小学|医院|教师|教工|老师|员工|职工|专家|教授|人才公寓|单位宿舍|家属院|家属楼|家属区|家属宿舍|公租房|自建房|大学生公寓|小区|大学印象|学院派|学院小区|大学新村|科教新村|大学春城|大学府|家园|我的大学|大学湾|大学居|恒大学|学院府|大学时光|公司|科技有限|股份有限|本科技|集团|软件园|科技园|工业园|创意谷|科技产业园|创业园|创客大学|成人大学|创业大学|老年大学|自修大学|家里蹲大学|老干部大学|老年人大学|红豆大学|吉利大学|继续教育|工商管理|行政学院|成人教育|((干部|进修)(管理)?(学校|大学|学院))).*',x):
            return False
        if re.match(r'.*(对面|对过|边上|左手|右手|附近|靠近|隔壁|旁|傍|背后|背面|(前|后|左|右|东|西|南|北|上|下)(面|边|侧)|((东|西|南|北|前|后|左|右).*米)|(向|往|朝|最)(东|西|南|北|前|后|左|右|里|外)).*',x):
            return False
        
        ##以这些结尾的直接返回True
        if re.match(r'.*(((研究生|本科生)(宿舍|公寓))|学生宿舍|研究生|本科|本科生|在读|校区|大学|学院|高校|卫校|师范|学校|([0-9]{2,4}级))$',x):
            return True

        if re.match(r'.*(((大学|学院|高校|卫校|师范|学校)(\w){0,2}(道|路|里|街|巷|弄|区|胡同))|大学(\w){0,2}城).*',x) and not re.match(r'.*(大学|学院|高校|卫校|师范|学校)(\w){0,2}(路)?校区.*',x) and not re.match(r'.*(大学|学院|高校|卫校|师范|学校)[1-9A-Za-z东西南北一二三四五六七八九十]{1,2}区.*',x):
            return False
        if re.match(r'.*(前|后|左|右|东|西|南|北)$',x):
            return False
        if re.match(r'.*((大学|学院|高校|卫校|师范|学校)(东|西|南|北)(\)|))).*',x):
            return False
        if re.match(r'.*(大学|学院|高校|卫校|师范|学校)(\w){0,2}店.*',x):
            return False
        if re.match(r'.*(华中大|科大|中石大|哈工大|农大|山大|西外大|西工大|中南大)(\w){0,1}(道|街|厦|路).*',x):
            return False
        if re.match(r'.*(大学|学院|高校|卫校|师范|学校)(\w){0,1}(村|镇|乡|县|屯).*',x):
            return False
        if re.match(r'.*(餐厅|饭店|旅馆|宾馆|酒店|山庄|出版社|保安|安保|保卫|门卫|食堂|项目部|餐饮|物业|门诊|后勤|行政|医务|小吃一条街|工地|服务|快印|打印|文印|图书馆|管理|培训|教学|教务|教培|物流|档案|挡案|事务所|聘任人员|技术人员|招待所|超市|饮食|美食|办公室|杂志社|咨询部|委员会|菜鸟驿站|快递|排挡|校友会|驾驶|合同|生意|厨师|装潢|前台|室内设计|网咖|国医堂|勤务|就业|药房|大队|警务连|加油站|函授站|研究所|研究院).*',x):
            return False
        if re.match(r'.*(厂|店|铺|处|部|厅|局|署|办|支行|中心|支队)$',x) and not re.match(r'.*本部.*',x):
            return False
        
        return True
    else:
        return False

三、完善补充

以上逻辑还有可以补充完善的一部分,就是只写高校地址,不明确写出某某高校的情况,比如“”汉口路22号”,虽然没有明确出现大学类字样,但它就是南京大学的地址。所以我们可以在准入规则里面加入一条,所有高校的详细地址信息。对于明确指明某某路某某号的大学地址,我们同样可以用正则表达式的形式写出来。比如北京大学的详细地址是“北京市海淀区颐和园路5号”,因为我们面临的地址大多是客户手写的,导致写法比较随意,地址中区、市部分可写可不写,但同时,如果我们去掉市、区信息,只匹配某路某号,又容易造成歧义,毕竟像南京路、上海路这样的路名,全国很多城市都有,所以,为了既保证一定的精准度,又具有一定的普遍性,我们可以把上述地址的匹配逻辑写成如下的正则形式:
‘.*((北京(市)?|海淀区)颐和园路5号).*’
把地址信息的正则逻辑加到准入规则中,可以一定程度提高高校识别规则的覆盖率,但同时,这样的正则规则较长,会拖慢判断响应时间,如果做线下特征衍生,问题不大;做实时接口判断,就要考虑取舍。(全国2700多所高校的详细地址数据,可私信作者索取)

总之,本文只是从实际业务需求出发,提供了一个解决高校地址识别的思路,虽然不完善,但能够解决大部分问题,如二八原则,花费了20%的精力,能够解决80%的问题,如果想要做到100%,就需要再进一步花费80%的精力才能做到,性价比不高。大家可以在这个思路的基础上继续做完善补充,以期识别准确度能够更高。或者有任何更好的解决方案,欢迎大家讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值