背景技术
近年来,人民银行、银保监会对银行的监管愈发趋严,对银行报送的数据质量要求也越来越高。银保监会就数据质量专项治理工作发布通知(银保监办发〔2020〕45号),要求包括所有银行及保险类的金融机构在2021年5月底前,落实监管数据质量专项治理方案,并制定了详细的项目进度时间表。数据质量主要包括数据真实性、准确性、完整性、及时性。
监管机构要求商业银行实施专项治理的数据包括:非现场监管(1104)、监管数据标准化(EAST)、金融基础数据、利率报备等。这些专项数据都需要银行报送客户所属行业或者资金投向行业。行业分类按照中华人民共和国国家标准GB/T 4754-2017“国民经济行业分类”(以下简称为标准版本代码)的标准执行。行业代码是行业分类的具体代码,按照一定的科学依据对从事国民经济生产和经营的单位或者个体的组织结构体系的详细划分,如林业、汽车业、银行业等,按照单位的主要经济活动确定其行业性质。
由于某些原因,银行内客户的行业代码不全都符合监管机构要求的最新版本代码,有些是2011版本或者更早版本(以下称为历史版本代码),有些则保存了中文行业名称,有些只提供了四位数字而缺失表示行业门类的字母等,这些都是不符合监管要求的行业代码,在报送的时候会被监管机构系统退回,无法正常报送。
目前业界关于数据标准化工作方面,都采用人工手动添加映射的方式,这种方式对于代码值数量比较少的情况是可以的,比如说性别,从业状况等,只有几个十几个代码值。但是对于行业代码,有上千个码值的情况,如果也采用手工添加映射的方式,则处理脚本会过于冗余,而且效率太低。
具体实施方式
容易理解,根据本发明的技术方案,在不变更本发明实质精神下,本领域的一般技术人员可以提出可相互替换的多种结构方式以及实现方式。因此,以下具体实施方式以及附图仅是对本发明的技术方案的示例性说明,而不应当视为本发明的全部或者视为对本发明技术方案的限定或限制。
根据本发明的一实施方式结合图1示出。本发明提供了一种行业代码标准化方法,包括如下步骤:
S100,获取行业数据。
S200,通过正则表达式对行业数据进行数据格式分类,针对不同分类结果进行预处理,获得数字代码和中文描述A。
参见图2,对行业数据进行预处理,具体包括:
S201,根据正则表达式“^[A-T]\d{2,4}$”,表示形式“一位字母,二到四位数字”,对行业数据进行匹配,如果匹配,则略过字母,取数字代码,否则进入下一步。例如,原始输入行业为“A0111”,则取“0111”。
S202,根据正则表达式“^\d{4}$”,表示形式“四位数字”,对行业数据进行匹配,如果匹配,则取四位数字代码,否则进入下一步。例如,原始输入行业为“8190”,则取“8190”。
S203,根据正则表达式“^[A-Z]\d{4}~[\u4e00-\u9fa5]{2,20}$”,表示形式“一位字母四位数字~二到二十位中文行业描述”,对行业数据进行匹配,如果匹配,则取符号“~”前面代码的四位数字代码,否则进入下一步。例如,原始输入行业为“C3262~铝压延加工”,则取“3262”。
S204,根据正则表达式“^[\u4e00-\u9fa5]{2,20}$”,表示形式“二到二十位中文描述”,对行业数据进行匹配,如果匹配,则取全部中文描述A。例如,原始输入行业为“铝压延加工”,则取“铝压延加工”。
S300,判断数字代码是否在标准版本中,如果在,则补齐行业门类字母,生成行业代码,否则进行下一步。
例如,数字代码“0111”在标准版本中,则按照标准版本代码补齐行业门类字母“A”,生成行业代码“A0111”。补齐门类行业字母的逻辑,参考行业门类与大类的包含关系,比如门类A包含的大类范围是01到05,门类B包含的大类范围是06到12,门类C包含的大类范围是13到43,以此类推,标准版本和历史版本略有差别。
S400,判断数字代码是否在历史版本中,如果在,则取出历史版本中对应的中文描述B,否则不做处理。
例如,数字代码为“8190”,它在标准版本代码中不存在的,但是存在于历史版本中,则按照历史版本代码取中文描述,最后输出“其他未列明服务业”。历史版本代码采用的是字典数据结构,字典用于保存一组不重复的键值对,并且可以根据输入的键来获得对应的值。键是历史行业代码,值是行业中文描述。
S500,将中文描述A或中文描述B与一标准版本中文描述进行相似度计算,重复操作,获得标准版本中最相似的中文描述C。
实际上,我们会将待比较行业的中文描述和标准版本行业的所有中文描述进行比较。这里列举两个标准行业中文描述,作为示例。
参见图3,将中文描述A或中文描述B与一标准版本中文描述进行相似度计算,包括:
S501,对需要计算相似度的两个中文描述进行拆分,列出待比较中文描述和标准版本中文描述的所有元素。
例如,待比较行业(中文描述A或中文描述B):“文体用品批发”;标准行业A描述:“文具用品批发”;标准行业B描述:“文具用品零售”。考虑到行业中文描述属于短语,一般不超过二十个字,且字间顺序影响也可以忽略。因此我们可以最细粒度拆分,上述行业拆分后得到:
待比较行业:[文,体,用,品,批,发]
标准行业A:[文,具,用,品,批,发]
标准行业B:[文,具,用,品,零,售]
S502,将拆分后的元素去重后放在同一集合中,构造出特征空间,并对特征空间的元素进行位置编码。
例如:
特征空间A:{“文”:0,“体”:1,“用”:2,“品”:3,“批”:4,“发”:5,“具”:6}
特征空间B:{“文”:0,“体”:1,“用”:2,“品”:3,“批”:4,“发”:5,“具”:6,“零”:7,“售”:8}
S503,将待比较中文描述和标准版本中文描述中的每个元素转换为特征空间元素对应的位置编码,以进行数字化。
当和标准行业A比较时,基于特征空间A得到编码如下:
待比较行业:[0,1,2,3,4,5]
标准行业A:[0,6,2,3,4,5]
当和标准行业B比较时,基于特征空间B得到编码如下:
待比较行业:[0,1,2,3,4,5]
标准行业B:[0,6,2,3,7,8]
S504,对数字化后的待比较中文描述和标准版本中文描述进行独热编码,获得两个行业向量。独热编码(OneHot编码),又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候只有一位有效。OneHot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,其它都是零值。
本案例中,即计算每个特征空间中元素在原行业中文描述中出现的次数,OneHot编码后得到的结果如下:
当和标准行业A比较时,得到基于特征空间A的OneHot编码:
待比较行业:[1,1,1,1,1,1,0]
标准行业A:[1,0,1,1,1,1,1]。
当和标准行业B比较时,得到基于特征空间B的OneHot编码:
待比较行业:[1,1,1,1,1,1,0,0,0]
标准行业B:[1,0,1,1,0,0,1,1,1]
S505,应用余弦相似度算法,计算两个行业向量之间夹角的余弦值,余弦值越大相似度越高。
余弦相似度算法:一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似,余弦相似度算法如下:
CosA表示待比较行业和标准行业A的余弦相似度,CosB表示待比较行业和标准行业B的余弦相似度。根据计算结果,待比较行业和标准行业A相似度很高。当遍历整个标准版本中文描述时,计算得到“文体用品批发”和“文具用品批发”最相似。
S600,根据中文描述C,查找出对应的标准版本行业代码并输出。例如,根行业中文描述“文具用品批发”,从标准行业代码中找出其对应的代码“F5141”,输出代码。
考虑到特征空间中的不同维度,对语义的影响不一样,比如行业“其他卫生活动”,如果单纯的从余弦相似度算法来看,得出的结果可能就是“其他保险活动”。因此,为了解决原余弦相似度算法的局限,需要对向量中的某些维度进行增强,于是最终的相似度算法为:
F是特征增强向量。我们在具体实现中,维护了一个增强维度列表,从行业门类中提取关键字,当前增强维度列表清单有:[“制造”,“建筑”,“批发”,“零售”,“卫生”。。。等]。凡是待比较行业中有关键字在这个增强维度列表中的,都会得到增强。比如待比较行业中有“卫生”,增强向量的维度数量为特征空间的维度,增强系数默认为2,其他维度值为1,形如[1,1,2,2,1,1...]
待比较行业为“其他卫生活动”,标准行业有“其他保险活动”和“其他未列明卫生服务”,特征空间1[其他卫生活动保险],维度为8,关键特征位置为2,3,因此增强向量为F=[1,1,2,2,1,1,1,1],特征空间2[其他卫生活动未列明服务],维度为11,关键特征位置为2,3,同理增强向量为F=[1,1,2,2,1,1,1,1,1,1,1]。代入新的相似度公式计算后可的Sim1 = 0.471, Sim2 = 0.745。因此“其他未列明卫生服务”更相似。
附图说明
参照附图来说明本发明的公开内容。应当了解,附图仅仅用于说明目的,而并非意在对本发明的保护范围构成限制。在附图中,相同的附图标记用于指代相同的部件。其中:
图1为本发明实施例的行业代码标准化方法的流程示意图;
图2为本发明实施例的对行业数据进行预处理的流程示意图;
图3为本发明实施例的进行相似度计算的流程示意图。