一种字段含义识别方法和装置
技术领域
本说明书涉及互联网领域,尤其涉及一种字段含义识别方法和装置。
背景技术
数据类型识别是数据库和大数据平台在做数据资产管理和数据安全管理中必不可少的一环,而数据类型的定义与其所在业务背景的相关性很强,如:交易金额,转账金额,预付金额,退款金额,虽然都是金额,但是代表着不同的业务含义。
在进行数据资产管理时,获取到一个字段后,还需要分辨这个字段所对应的具体数据类型,通常来讲,每个公司在定义数据类型的场景和口径可能不一致,单个公司中不同项目在定义数据类型的场景和口径也可能不一致。因此数据管理需要面临数据类型的识别问题。
目前市面上主流的字段含义识别方式有两种:一是基于数据自身特征确定数据类型(如通过数据自身结构识别出身份证、手机号、邮箱等数据类型),但可根据自身特征进行识别的数据类型相对较少,覆盖率低;二是基于字段自身的命名规则(例如交易金额的字段名可能包含了pay_amount关键字)进行识别,但这种方式非常依赖字段命名的规范性,如果命名不规范的话,会导致识别失败。
综上,目前缺少一种字段含义识别机制,可以在不依赖数据自身特征和字段命名规范性的前提下,针对字段的类型进行自动化识别。
发明内容
针对上述技术问题,本说明书实施例提供一种字段含义识别方法和装置,技术方案如下:
根据本说明书实施例的第一方面,提供一种字段含义识别方法,该方法包括:
获取待识别字段;
获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
根据本说明书实施例的第二方面,提供一种字段含义识别装置,该装置包括:
字段获取模块:用于获取待识别字段;
别名获取模块:用于获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
语义解析模块:用于将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
根据本说明书实施例的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现一种字段含义识别方法,该方法包括:
获取待识别字段;
获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
本说明书实施例所提供的技术方案,先将不同用户调用某个字段时对应使用的不同别名汇总为所述字段的别名数据集,再对这个字段别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。本说明书提供的字段含义识别方法的数据识别的维度有别于传统方案,可以在不依赖数据自身特征和字段命名规范性的前提下,根据用户的累积性调用行为对字段的含义进行自动化识别。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书一示例性实施例示出的字段含义识别方法的一种流程图;
图2是本说明书一示例性实施例示出的字段别名的一种示意图;
图3是本说明书一示例性实施例示出的字段含义识别方法的另一种流程图;
图4是本说明书一示例性实施例示出的字段含义识别方法的一种示意图;
图5是本说明书一示例性实施例示出的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
数据类型识别是数据库和大数据平台在做数据资产管理和数据安全管理中必不可少的一环,而数据类型的定义与其所在业务背景的相关性很强,如:交易金额,转账金额,预付金额,退款金额,虽然都是金额,但是代表着不同的业务含义。
在进行数据资产管理时,获取到一个字段后,还需要分辨这个字段所对应的具体数据类型,通常来讲,每个公司在定义数据类型的场景和口径可能不一致,单个公司中不同项目在定义数据类型的场景和口径也可能不一致。因此数据管理需要面临数据类型的识别问题。
目前市面上主流的字段含义识别方式有两种:一是基于数据自身特征确定数据类型(如通过数据自身结构识别出身份证、手机号、邮箱等数据类型),但可根据自身特征进行识别的数据类型相对较少,覆盖率低;二是基于字段自身的命名规则(例如交易金额的字段名可能包含了pay_amount关键字)进行识别,但这种方式非常依赖字段命名的规范性,如果命名不规范的话,会导致识别失败。
综上,目前缺少一种字段含义识别机制,可以在不依赖数据自身特征和字段命名规范性的前提下,针对字段的类型进行自动化识别。
针对以上问题,本说明书实施例提供一种字段含义识别方法,以及一种用于执行该方法的字段含义识别装置。下面对本实施例涉及的字段含义识别方法进行详细说明,参见图1所示,该方法可以包括以下步骤:
S101,获取待识别字段;
S102,获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
由于数据类型的定义与其所在业务背景的相关性很强,如:交易金额,转账金额,预付金额,退款金额,虽然都是金额,但是代表着不同的业务含义。在不同业务背景下,同样的字段也可能拥有不同的字段含义。作为数据库和大数据平台等数据管理方,在进行数据资产管理和数据安全管理时,必须将每种数据所表示的数据类型定义清楚。一般来说,数据包括数据字段和该数据字段对应的至少一个数据值。参考下表1所示,user_id,t_at,t_tm均为数据字段,1,100,2018-10-10均为数据值,对应同一个或同一组数据字段,可以有多个或多组不同的数据值。
user_id |
t_at |
t_tm |
1 |
100 |
2018-10-10 |
2 |
103.5 |
2018-11-11 |
表1
别名(alias)可以用于代替原有调用命令,将需要频繁使用的但又过于冗长的命令设置一个别名,设置完成后只需输入一个简短的别名就可以达到同样的输入原本整个命令的作用。举例说明:用户需要经常进入/srv/www/app/account这个目录,每次都得重复的输入这一长串路径进入该目录,显得麻烦而费时,因此可以将“cd/srv/www/app/account”这样一个命令取一个别名,每次只需输入该别名就可以进入该目录。
在一些具体应用场景下,数据库的某些数据值可能经常被用户查询,如不同时间的交易时间,交易金额等。这些数据通常存储在不同的数据表中,而这些数据的字段名并不是一个容易记忆和输入的名字,因此很多用户会为字段自行定义了一个别名,后续用户在进行字段的查询或调用时,可通过输入别名代替输入包含所述字段的调用指令。
本实施例中,可通过获取预设历史时间段内不同用户针对所述字段累计的使用行为数据,即用户查询或调用所述字段时对应使用的不同别名,作为识别该字段具体含义的基础数据。
S103,将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
具体地,对该别名数据集中的各个别名进行语义解析可包括:对别名数据集进行同义词处理,以合并所述别名数据集中包含的同义别名;使用预定的语义拆解算法拆解别名数据集内的任一别名,以获取组成所述别名的不同语义项;将同一别名数据集内拆解出的各个语义项按照语义进行归类,获取至少一个包含多个同义语义项的同义语义模块;计算同义语义模块中各个同义语义项的主题相关度,将主题相关度高于预设阈值的不同语义项组合成所述字段的识别结果。
进一步的,本说明书还提出一种更具体的字段含义识别方法,参考附图2,包括以下步骤:
S201,获取待识别字段;
S202,获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
S203,记录预设历史时间段内,所述字段的不同别名的被调用次数,将所述字段的任一别名的对应被调用次数汇总为所述字段的别名数据集;
S204,对所述别名数据集进行同义词处理,以合并所述别名数据集中包含的同义别名;
S205,使用预定的语义拆解算法拆解别名数据集内的任一别名,以获取组成所述别名的不同语义项;
S206,将同一别名数据集内拆解出的各个语义项按照语义进行归类,获取至少一个包含多个同义语义项的同义语义模块;
S207,计算同义语义模块中各个同义语义项的主题相关度,将主题相关度高于预设阈值的不同语义项组合成所述字段的识别结果。
通常来说,数据存储于数据表内,针对每一个数据表,将其中包含的字段进行提取,并针对每个字段,获取用户针对该字段进行查询时使用过的别名。参考附图3,用户A,用户B,用户C针对同一数据表tbl_transaction有过使用行为,这种使用行为会留存在历史记录中。可以看出,不同用户针对同一字段名所使用的可能是相同的,也可能是不同的,需要针对每个字段名,将该字段名被使用过的不同别名收集起来。
参见下表2,对于数据表tbl_transaction来说,无论是使用基于内容特征识别还是基于字段命名规则识别,都很难识别出tbl_transaction的t_at和t_tm这两个字段分别是什么数据类型。表2列出了不同用户调用同样字段时对应使用的不同别名,如对于数据表tbl_transaction中的字段t_at而言,用户在对t_at进行查询或调用时,使用过3次别名“transaction_amount”,10次别名“交易额”,23次别名“交易金额”,14次别名“成交金额”…等等。在实际应用中,应先设定一个历史时间段,再获取这个时间段内用户数据使用行为的历史记录,在该历史记录提取每个字段被使用过的别名和每个别名的被使用次数,汇总为所述字段的别名数据集。
表2
可以看出,用户针对同一字段使用的别名是可以粗略分为几个相似的类,例如t_at字段的别名“交易额”和“交易金额”其实可以视为同义,因此可以先针对别名数据集进行同义词处理,以合并所述别名数据集中包含的同义别名。
参见下表3,为对别名数据集进行同义词处理后获得的新的精简的数据集。具体地,可以通过NLP(Natural Language Processing),同义词模型等自然语言处理技术进行同义词处理。如下表3,判定“交易额”和“交易金额”属于同义词后,将“交易额|10,交易金额|23”合并为“交易金额|33”。即先识别别名数据集中包含的同义词,再在若干同义词中选择一个别名作为同义词合并后的最终别名。如将“交易额”和“交易金额”合并后使用“交易金额”作为最终别名;将“成交金额”和“成交额”合并后使用“成交金额”作为最终别名。
在选择最终别名时,可预设一种别名权重计算机制,将权重最高的别名作为同义词合并后的最终别名。举例说明:在本实施例中,可通过用户针对一个别名的调用或查询次数确定该别名的权重。见表2,由于别名“交易金额”被用户使用了23次,而别名“交易额”被用户使用过10次。当确定“交易金额”和“交易额”为同义词后,通过用户的使用次数确定“交易金额”权重更高,并最终将“交易额|10,交易金额|23”合并为“交易金额|33”。在实际应用中,该权重计算机制可以参考用户的使用次数,也可参考其他参数,本说明书对此不作限定。
表3
进一步地,可使用预定的语义拆解算法拆解别名数据集内的任一别名,以获取组成所述别名的不同语义项。将同一别名数据集内拆解出的各个语义项按照语义进行归类,获取至少一个包含多个同义语义项的同义语义项。并将同义语义项按照出现主题相关度进行倒序排序,选取主题相关度较高的语义项(如主题相关度>0.75)进行自动组合,如下表4,最终t_at字段使用基于用户使用行为积累的数据类型识别方法,得到的推荐结果是“交易金额”。
表4
可以看出,本实施例提出的是一种基于用户历史使用行为的字段识别方法。在实际应用过程中,可将本实施例提出的方法与传统方案中基于内容特征的识别方法和/或基于字段命名规则的识别方法结合使用。举例说明:获取到一批数据后,先检测这些数据本身的内容特征,识别出符合预定若干种内容特征类型的数据,如身份证数据,邮箱数据等,再将余下的无法通过数据本身内容特征识别的数据,通过本实施例的基于用户历史使用行为的字段识别方法进行识别。通过不同识别方法的结合使用,提高对于数据类型的识别效率。
相应于上述方法实施例,本说明书实施例还提供一种字段含义识别装置,参见图4所示,所述装置可以包括:字段获取模块410,别名获取模块420和语义解析模块430。
字段获取模块410:用于获取待识别字段;
别名获取模块420:用于获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
语义解析模块430:用于将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述字段含义识别方法,所述方法至少包括:
获取待识别字段;
获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的字段含义识别方法,所述方法至少包括:
获取待识别字段;
获取预设历史时间段内不同用户调用所述字段时对应使用的不同别名,所述别名为用户针对所述字段设置的自定义指令,用户在进行字段调用时,可通过输入别名代替输入包含所述字段的调用指令;
将不同用户调用所述字段时对应使用的不同别名汇总为所述字段的别名数据集,对所述别名数据集中的各个别名进行语义解析,根据解析结果确定所述待识别字段的识别结果。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。