一种特征加工脚本生成方法及装置与流程

文档序号:22545287发布日期:2020-10-17 02:13阅读:134来源:国知局
一种特征加工脚本生成方法及装置与流程

本申请涉及数据仓库技术领域,尤其涉及一种特征加工脚本生成方法及装置。



背景技术:

在大数据领域,特征工程是很多算法工程师在建模过程中遇到的第一个、也是通常最耗费时间的步骤。目前,数据工程师可以利用现有执行自动特征工程的框架(如featuretools)让用户以导入包(package)的形式来对原始输入表(inputdataframes)进行自动的关联与特征加工,方便自动输出数据建模时需要的特征。

但是在实现本发明过程中,发明人发现,现有技术不支持生成变量的加工逻辑(如sql形式的代码),因此数据工程师或算法工程师仍然需要人工编写特征加工对应的逻辑代码,耗费大量人力和时间,特征加工效率较低。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种特征加工脚本生成方法及装置。

第一方面,本申请实施例提供了一种特征加工脚本生成方法,包括:

获取输入的数据表信息,所述数据表信息包括原始字段信息;

识别所述原始字段信息对应的字段类型;

调用所述字段类型对应的第一加工函数;

确定根据所述第一加工函数对原始字段进行加工后得到的目标字段,获取所述目标字段对应的第一目标字段信息;

按照预设语法将所述数据表信息、第一加工函数及第一目标字段信息组合为特征加工脚本。

可选的,所述获取输入的数据表信息,包括:

对所述数据表信息进行校验;

当确定所述数据表信息不合法时,生成提示修改信息。

可选的,所述方法还包括:

对所述特征加工脚本进行语法检查;

当确定所述特征加工脚本不存在语法错误时,输出所述特征加工脚本。

可选的,按照预设语法将所述数据表信息、第一加工函数及第一目标字段信息组合为特征加工脚本,包括:

将所述第一目标字段信息进行展示;

当接收到对所述第一目标字段信息的变更操作时,得到变更后的第二目标字段信息;

确定所述第二目标字段信息对应的第二加工函数;

按照预设语法将所述数据表信息、第二目标字段信息及第二加工函数组合为所述特征加工脚本。

可选的,所述方法还包括:

获取对所述特征加工脚本的任务拆分操作;

根据所述任务拆分操作,将所述特征加工脚本对应的任务表拆分为至少两个可并行处理的任务子表,所述任务子表中包括的目标字段之和等于所述任务表中包括的目标字段。

可选的,所述方法还包括:

确定所述特征加工脚本中的目标字段数量;

当所述目标字段数量超过预设阈值时,将所述特征加工脚本对应的任务表拆分为至少两个可并行处理的任务子表,所述任务子表中包括的目标字段之和等于所述任务表中包括的目标字段。

可选的,所述第一加工函数包括聚合函数及命名函数;所述第一目标字段信息包括所述目标字段的字段名称;

所述确定根据所述第一加工函数对原始字段进行加工后得到目标字段的第一目标字段信息,包括:

对于通过所述聚合函数对所述原始字段进行聚合后得到的目标字段,通过所述命名函数生成所述目标字段对应的字段名称。

第二方面,本申请实施例提供了一种特征加工脚本生成装置,包括:

获取模块,用于获取输入的数据表信息,所述数据表信息包括原始字段信息;

识别模块,用于识别所述原始字段信息对应的字段类型;

调用模块,用于调用所述字段类型对应的第一加工函数;

确定模块,用于确定根据所述第一加工函数对原始字段进行加工后得到的目标字段,获取所述目标字段对应的第一目标字段信息;

生成模块,用于按照预设语法将所述数据表信息、第一加工函数及第一目标字段信息组合为特征加工脚本。

第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行计算机程序时,实现上述方法步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。

本申请实施例提供的上述技术方案与现有技术相比具有如下优点:

获得需要进行特征加工的数据表信息,自动根据数据表信息匹配一系列的字段加工逻辑,将字段加工逻辑生成特征加工脚本提供给用户,这样,用户可以在短时间内快速得到特征加工脚本,并可以直接在数据仓库中部署该特征加工脚本进行特征抽取、转换、加载工作,节约人力和时间,提高特征加工效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种特征加工脚本生成方法的流程图;

图2为本申请另一实施例提供的一种特征加工脚本生成方法的流程图;

图3为本申请另一实施例提供的一种特征加工脚本生成方法的流程图;

图4为本申请实施例提供的一种特征加工脚本生成装置的框图;

图5为本申请另一实施例提供的一种特征加工脚本生成方法的流程图;

图6为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一图形用户界面,用户可在该图形用户界面上输入或选择所要进行特征加工的数据表信息,自动根据数据表信息匹配一系列的字段加工逻辑,将字段加工逻辑以特征加工脚本(如sql代码)提供给用户,这样,用户可以直接在数据仓库中部署该特征加工脚本进行特征加工,节约人力和时间,提高特征加工效率。

本实施例的方法可以通过python(一种跨平台的计算机程序设计语言)实现,各个步骤涉及到的函数,如识别字段类型的函数、字段加工对应的函数、将目标字段信息组合为sql代码的函数、自动为字段命名的函数、语法检查函数等等,均通过底层python代码实现。

下面首先对本发明实施例所提供的一种特征加工脚本生成方法进行介绍。

图1为本申请实施例提供的一种特征加工脚本生成方法的流程图。如图1所示,该方法包括以下步骤:

步骤s11,获取输入的数据表信息,数据表信息包括原始字段信息。

可选的,可以提供一图形用户界面(graphicaluserinterface,gui),在该界面上,用户可以将特征加工需要的数据表信息输入到相应的文本输入框中。其中,数据表信息包括:表名、表结构、表与表之间的映射关系、原始字段信息、关联字段、最终加工后的对象维度等等。

可选的,该步骤中,数据表信息的输入方式包括:用户手动输入数据表信息,或从hive元数据系统中搜索得到所需的数据表信息。

步骤s12,识别原始字段信息对应的字段类型。

其中,字段类型可以包括:用户标识及业务相关的指标字段。例如,对于订单数据,指标字段包括:金额、订单号、时间、地址、商户标识、商品类型等等。

该步骤中,可以采用基于python代码编写的函数来识别字段类型。

步骤s13,调用字段类型对应的第一加工函数。

本实施例中,根据业务需求,可以预先设定字段类型对应的加工函数例如,对于“金额”等double类型的字段进行相加(sum)操作;为“商品类型”等string(可变长字符串)类型的资源进行去重(countdistinct)操作。还可以设定字段类型对应的聚合时间窗口的加工函数,例如,为“金额”字段进行近360天/近180天/近90天/近30天等不同时间窗口的聚合操作。

步骤s14,确定根据第一加工函数对原始字段进行加工后得到的目标字段,获取目标字段对应的第一目标字段信息。

每个第一加工函数对某个或某些字段类型的原始字段进行加工,得到目标字段,因此,基于第一加工函数可以获得目标字段的第一目标字段信息。该第一目标字段信息包括:字段名称、对应的原始字段信息等等。

步骤s15,按照预设语法将数据表信息、第一加工函数及第一目标字段信息组合为特征加工脚本。

获得自动生成字段对应的第一目标字段信息后,可以基于数据表信息、第一目标字段信息及第一加工函数通过符合预设语法的方式进行组合,得到相应的特征加工脚本。例如,特征加工脚本可以为hivesql代码,将数据表信息、第一目标字段信息及第一加工函数按照sql语法进行组合。

本实施例中,获得需要进行特征加工的数据表信息,自动根据数据表信息匹配一系列的字段加工逻辑,将字段加工逻辑生成特征加工脚本提供给用户,这样,用户可以在短时间内快速得到特征加工脚本,并可以直接在数据仓库中部署该特征加工脚本进行特征抽取、转换、加载工作,节约人力和时间,提高特征加工效率。

另外,在gui界面上,用户可以方便地输入信息或通过“拖拉拽”等操作进行自动特征加工,减少重复冗余的代码撰写时间,提高工作效率。

再者,相关技术通过将原始表读入服务器内存后再进行特征的自动加工与聚合操作,这对于小数量级,如mb或gb的数据集是没有问题的,但是对于tb甚至是pb级别的数据,难以通过“内存读取”的方式对特征进行加工。本实施例,在生成特征加工脚本的过程中,特征加工所需的仅是数据表信息,如表名、字段名称、字段类型等信息,无需通过内存将原始数据集读入服务器内存,节省了内存空间。

图2为本申请另一实施例提供的一种特征加工脚本生成方法的流程图。如图2所示,上述步骤s11包括以下步骤:

步骤s21,对数据表信息进行校验;

步骤s22,当确定数据表信息不合法时,生成提示修改信息。

可选的,可以再gui界面上显示该提示修改信息。

本实施例中,在gui上获得输入的数据表信息后,还对数据表信息进行校验,判断表结构、字段等是否合法,如果合法,则可对数据表信息进行后续处理,如果不合法,则可提示用户修改。

可选的,第一加工函数包括聚合函数及命名函数;第一目标字段信息包括目标字段的字段名称。上述步骤s14还包括自动为目标字段生成合理的字段名称,具体包括:对于通过聚合函数对原始字段进行聚合后得到的目标字段,通过命名函数生成目标字段对应的字段名称。

例如,聚合函数为聚合近30天内“金额”字段,则目标字段为近30天内购买的商品金额总和,通过命名函数自动命名为“user_recent_30_days_amt_sum”。

在另一个可选实施例中,上述步骤s14中,还可将目标字段展示给用户,用户可在gui上添加或删除目标字段,或者对目标字段的生成逻辑进行修改。图3为本申请另一实施例提供的一种特征加工脚本生成方法的流程图。如图3所示,步骤s14包括以下步骤:

步骤s31,将第一目标字段信息进行展示。

步骤s32,当接收到对第一目标字段信息的变更操作时,得到变更后的第二目标字段信息。

其中,该变更操作可以包括对目标字段的添加、删除、修改等等。若用户认为有额外需要添加的字段,可自行输入sql进行补充。用户在修改自动生成的字段的时,支持用户进行额外限制的casewhen(实时计算条件函数)操作。另外如果用户认为自动生成的字段太多或者没有什么业务指导意义,也可以进行删除操作。用户在图形用户界面上的操作均可通过点击、拖拉拽等形式实现。

步骤s33,确定第二目标字段信息对应的第二加工函数。

确定用户修改后目标字段的第二目标字段信息所对应的第二加工函数。

步骤s34,按照预设语法将数据表信息、第二目标字段信息及第二加工函数组合为特征加工脚本。

本实施例中,用户可以根据需求对目标字段进行自定义,选择特征加工所需的目标字段,根据用户修改后的目标字段生成特征加工脚本。这样,使用最终生成的特征加工脚本进行特征加工处理所得到的目标字段均为用户所需字段。

在另一个可选实施例中,在上述步骤s14之后,该方法还包括:

步骤a1,对特征加工脚本进行语法检查;

步骤a2,当确定特征加工脚本不存在语法错误时,输出特征加工脚本。

本实施例中,通过python代码编写的自动检查函数,对特征加工脚本进行解析及语法检查,保证自动输出的特征加工脚本代码中没有语法错误,提高脚本的准确性。

在另一个可选实施例中,对于自动生成的特征加工脚本,用户可以选择直接输入保存。同时,由于自动生成的目标字段数量较多,用户可以在图形用户界面上选择是否将包含所有目标字段的任务表拆分为多个子表。该方法还包括以下步骤:

步骤b1,获取对特征加工脚本的任务拆分操作;

步骤b2,根据任务拆分操作,将特征加工脚本对应的任务表拆分为至少两个可并行处理的任务子表,任务子表中包括的目标字段之和等于任务表中包括的目标字段。

在另一个可选实施例中,当自动生成的目标字段数量较多时,也可根据目标字段的数量自动拆分任务表。该方法还包括以下步骤:

步骤c1,确定特征加工脚本中的目标字段数量;

步骤c2,当目标字段数量超过预设阈值时,将特征加工脚本对应的任务表拆分为至少两个可并行处理的任务子表,任务子表中包括的目标字段之和等于任务表中包括的目标字段。

上述两种任务表拆分方式,均可将包含大量目标字段的任务宽表拆分为多个可并行的任务子表,缩短特征加工时间,提高特征加工效率。例如,最终特征加工脚本中包括100个目标字段,执行该任务宽表可能要耗费2个小时,若将该任务宽表拆分为10个任务子表,每个任务子表中包含10个目标字段,这10个任务子表并行执行,最终执行完所有任务可能仅需半个小时,大大缩短了特征加工任务执行时间,提高效率。

下述为本申请装置实施例,可以用于执行本申请方法实施例。

图4为本申请实施例提供的一种特征加工脚本生成装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该特征加工脚本生成装置包括:

获取模块41,用于获取输入的数据表信息,所述数据表信息包括原始字段信息;

识别模块42,用于识别所述原始字段信息对应的字段类型;

调用模块43,用于调用所述字段类型对应的第一加工函数;

确定模块44,用于确定根据所述第一加工函数对原始字段进行加工后得到的目标字段,获取所述目标字段对应的第一目标字段信息;

生成模块45,用于按照预设语法将所述数据表信息、第一加工函数及第一目标字段信息组合为特征加工脚本。

下面对本实施例具体实现流程进行详细说明。

图5为本申请另一实施例提供的一种特征加工脚本生成方法的流程图。如图5所示,具体流程如下:

步骤501,获取在gui上输入的数据表信息;

步骤502,判断数据表信息是否合法,如果是,执行步骤s504,如果否,执行步骤s503;

步骤503,生成提示修改信息,并在gui上显示,返回步骤s501;

步骤504,识别原始字段信息对应的字段类型;

步骤505,调用字段类型对应的加工函数;

步骤506,确定加工函数对原始字段加工得到的目标字段,获取目标字段对应的目标字段信息;

步骤507,自动将数据表信息、加工函数及目标字段信息组合为sql代码,执行步骤s513;

步骤508,将目标字段信息反馈到gui进行展示;

步骤509,判断gui上是否有用户变更操作,如果是,执行步骤s510,如果否,执行步骤s507;

步骤510,得到变更后的目标字段信息;

步骤511,确定变更后目标字段信息对应的加工函数;

步骤512,自动将数据表信息、变更后的加工函数及目标字段信息组合为sql代码,执行步骤s513;

步骤513,生成sql文件存储在本地或服务器。

本实施例中,在gui界面上获得用户输入需要进行特征加工的数据表信息,自动根据数据表信息匹配一系列的字段加工逻辑,将字段加工逻辑生成特征加工脚本提供给用户,这样,用户可在短时间内快速得到特征加工脚本,并可以直接在数据仓库中部署该特征加工脚本进行特征抽取、转换、加载工作,节约人力和时间,提高特征加工效率。另外,在gui界面上,用户可以方便地通过“拖拉拽”等操作进行自动特征加工,减少重复冗余的代码撰写时间,提高工作效率。

再者,相关技术通过将原始表读入服务器内存后再进行特征的自动加工与聚合操作,这对于小数量级,如mb或gb的数据集是没有问题的,但是对于tb甚至是pb级别的数据,难以通过“内存读取”的方式对特征进行加工。本实施例,在生成特征加工脚本的过程中,特征加工所需的仅是数据表信息,如表名、字段名称、字段类型等信息,无需通过内存将原始数据集读入服务器内存,节省了内存空间。

本申请实施例还提供一种电子设备,如图6所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。

存储器1503,用于存放计算机程序;

处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以下上述方法实施例的步骤。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下上述方法实施例的步骤。

需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1