发明内容
本发明的实施例提供一种数据特征的处理方法及装置,能够降低数据提取的成本并提高了数据提取的准确性。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供一种数据特征的处理方法,包括:
从业务日志获取明文样本,所述明文样本至少包括特殊字段和特征字段, 所述特殊字段包括用于表示执行命令和操作命令的字段;
根据预先配置的特征类,从所述特征字段获取特征明文,并记录样本签名,其中,内容相同的特殊字段对应同一个样本签名;
提取对应所述样本签名的一个特殊字段,并将所获取的特征明文,拼接至所述一个特殊字段,得到拼接后的字段;
将所述拼接后的字段作为特征样本输出。
结合第一方面,在第一方面的第一种可能的实现方式中,所述从业务日志获取明文样本,包括:
读取所述业务日志中的明文字段;
在所述明文字段中剔除第一类型字段;和/或,转换所述明文字段中的第二类型字段的字符为指定形式;
通过MapReduce框架,将经过剔除和/或转换处理后的字段以Map方式存入内存。
结合第一方面,在第一方面的第二种可能的实现方式中,所述根据预先配置的特征类从所述特征字段获取特征明文,包括:
依次读取所述特征类中的字段,所述特征类中的字段与所述明文样本中的至少一条字段的内容相同;
根据所述特征类中的字段的内容,从所述明文样本中依次读取具有相同内容的字段作为所述特征字段;
将从所述明文样本中依次读取的所述特征字段记录在特征集合中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述拼接后的字段作为特征样本输出,包括:
通过MapReduce框架,将所述特征样本和所述特征集合导入Reduce阶段;
所述将从所述明文样本中依次读取的所述特征字段记录在特征集合中,包括:将从所述明文样本中读取的相同的特征字段输出到相同计算节点。
结合第一方面,在第一方面的第四种可能的实现方式中,还包括:
读取基本特征类,并通过反射机制更新所述基本特征类;
将最近一次更新的基本特征类作为所述预先配置的特征类。
第二方面,本发明的实施例提供一种数据特征的处理装置,包括:
提取单元,用于从业务日志获取明文样本,所述明文样本至少包括特殊字段和特征字段,所述特殊字段包括用于表示执行命令和操作命令的字段;
识别单元,用于根据预先配置的特征类,从所述特征字段获取特征明文,并记录样本签名,其中,内容相同的特殊字段对应同一个样本签名;
拼接单元,用于提取对应所述样本签名的一个特殊字段,并将所获取的特征明文,拼接至所述一个特殊字段,得到拼接后的字段;
输出单元,用于将所述拼接后的字段作为特征样本输出。
结合第二方面,在第二方面的第一种可能的实现方式中,还包括预处理单元,用于读取所述业务日志中的明文字段;并在所述明文字段中剔除第一类型字段;和/或,转换所述明文字段中的第二类型字段的字符为指定形式;再通过MapReduce框架,将经过剔除和/或转换处理后的字段以Map方式存入内存。
结合第二方面,在第二方面的第二种可能的实现方式中,所述识别单元,具体用于依次读取所述特征类中的字段,所述特征类中的字段与所述明文样本中的至少一条字段的内容相同;并根据所述特征类中的字段的内容,从所述明文样本中依次读取具有相同内容的字段作为所述特征字段;再将从所述明文样本中依次读取的所述特征字段记录在特征集合中。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述输出单元,具体用于通过MapReduce框架,将所述特征样本和所述特征集合导入Reduce阶段;并将从所述明文样本中读取的相同的特征字段输出到相同计算节点。
结合第二方面,在第二方面的第四种可能的实现方式中,还包括特征类管理单元,用于读取基本特征类,并通过反射机制更新所述基本特征类;并将最近一次更新的基本特征类作为所述预先配置的特征类。
本发明实施例提供的数据特征的处理方法及装置,根据预先配置的特征类,从明文样本的特征字段获取特征明文并记录样本签名,并提取对应所述样本签名的一个特殊字段,将特征明文与特殊字段拼接,再将所述拼接后的字段作为特征样本输出,作为数据提取所用的特征样本。相对于现有技术,本实施例从海量数据中提取所需的特征,解决了现有技术中难以提取大规模且多维度的数据,缓减了需要频繁更新建模的问题,从而降低数据提取的成本并提高了数据提取的准确性。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本实施例可以采用基于MapReduce的分布式处理框架(亦可称为MapReduce框架),其中本实施例所用的MapReduce框架的具体架构可以如图1所示。在执行过程中,将待处理的数据以map方式存在内存中。若采用的具体是基于hadoop的MapReduce框架,对于特征的提取,在map阶段对数据的特征字段和特殊字段进 行提取并输出,并在reduce阶段,累计相同的特征字段;对于样本,在map阶段进行样本抽取,在reduce阶段输出记录了样本签名的特征样本。
本发明实施例提供一种数据特征的处理方法,如图2所示,包括:
S1,从业务日志获取明文样本。
其中,明文样本至少包括特殊字段和特征字段,特殊字段包括用于表示执行命令和操作命令的字段。业务日志可以是业务***运行时所记录的日志数据,例如:广告投放***运行时所记录的日志数据。明文样本可以是业务日志中的非加密字符,所获取的明文样本具体可以为符合tab分隔的文本形式,并且包括用于表示“存在展现”和“点击”的特殊字段,比如:“show”和“clk”。
过程S1-S4,具体可以由MapReduce框架中map阶段的服务器执行。
S2,根据预先配置的特征类,从所述特征字段获取特征明文,并记录样本签名。
在本实施例中,map阶段的服务器读取预先配置的特征类,特征类中包括按照先后顺序配置的字段到特征类里,特征类中的字段与明文样本中的至少一条字段的内容相同。map阶段的服务器根据预先配置的特征类,以key-value方式读取输入的明文样本,并以map方式存在内存中。其中,本实施例中所述的内存具体可以是用户的本地设备的内存,也可以是map阶段的服务器的内存。
map阶段的服务器可以先剥离明文样本中用于表示“存在展现”和“点击”的特殊字段;再根据预先配置的特征类中记载的字段内容,从明文样本中依次抽取特征字段。样本签名对应明文样本,而在明文样本中用于表示“存在展现”和“点击”的特殊字段往往会重复多次,因此同一个明文样本中的内容相同的特殊字段对应同一个样本签名。其中,样本签名可以是明文样本以map方式存在内存中时由服务器分配的,也可以是在明文样本中预先配置的。
S3,提取对应所述样本签名的一个特殊字段,并将所获取的特征明文,拼接至所述一个特殊字段,得到拼接后的字段。
例如:对于明文样本:“show clk A…,show clk B…,show clk C…,show clk D”,
其中,特殊字段为“show clk”,特征字段为“A B C D”,因此可以得到特征:A show clk、B show clk、C show clk、D show clk,经过拼接得到拼接后的字段:“show clk feaA feaB feaC feaD”。
S4,将所述拼接后的字段作为特征样本输出。
其中,map阶段的服务器可以将特征样本输出到reduce阶段的服务器。
在本实施例中,对于特征的提取,需要在map阶段根据预先配置的特征类,从特征字段获取特征明文,预先配置的特征类可以通过java中的反射机制获取,以便于用户在提取特征时,对于通用需求,无需采用现有技术基于数据表开发特征提取程序;对于特殊需求,只需采用本实施例的特征提取框架(即运行本实施执行流程的MapReduce框架),根据预先配置的特征类,从海量数据中提取所需的特征。
本实施例中采用的反射机制包括:在编译时并不确定是哪个类需要被加载,而是在程序运行的时候才加载具体的类,从而得到类的结构属性。使用在编译期并不知道的类。比如:当一个类被加载以后,Java虚拟机自动产生一个Class对象,并通过这个Class对象获取加载到虚拟机当中这个Class对象对应的方法、成员以及构造方法的声明和定义等信息。具体举例来说,通过java中的反射机制获取预先配置的特征类的过程可以包括:
利用java反射机制,定义特征类工厂类(Feature),比如下述代码所示:
并在抽取特征时在个人业务配置下配置特征类类名称,其中支持配置多个slot多个特征。且不需要提前加载。
之后调用时解析用户配置文件根据slot号得到特征类名并反射出特征解析类,供特征抽取程序使用以抽取特征。其中,可以按具体的业务需求增加任何类型的特征抽取业务类,在配置文件配置出特征类名,并特征抽取时针对不同的slot使用自己书写的特征类。进一步的,预处理类处理也单独定义了一个预处理工厂类,以利用java的反射机制。
本发明实施例提供的数据特征的处理方法,根据预先配置的特征类,从明文样本的特征字段获取特征明文并记录样本签名,并提取对应所述样本签名的一个特殊字段,将特征明文与特殊字段拼接,再将所述拼接后的字段作为特征样本输出,作为数据提取所用的特征样本。相对于现有技术,本实施例从海量数据中提取所需的特征,解决了现有技术中难以提取大规模且多维度的数据,缓减了需要频繁更新建模的问题,从而降低数据提取的成本并提高了数据提取的准确性。
在本实施例中,map阶段的服务器还可以对以map方式存在内存中的明文样本或是在明文样本存入内存之前,对明文样本中的字段进行预处理,例如:基于URL-ENCODE、base64等编码方式的字符,可以进行半角全角转换、英文大小写转换等预处理,还可以包括用户自定义的预处理过程。因此所述从业务日志获取明文样本,包括:
读取所述业务日志中的明文字段。在所述明文字段中剔除第一类型字段。 和/或,转换所述明文字段中的第二类型字段的字符为指定形式。通过MapReduce框架,将经过剔除和/或转换处理后的字段以Map方式存入内存。
其中,第一类型字段指的是存在数据错误、无法读取的字段,或是用于表示特定内容的字符(比如:特定内容的字符可以包括用于表示修改日期的字符、分割符等);第二类型字段指的是可以进行转换,比如:进行半角全角转换或英文大小写转换的字符,转换后的字符形式为用户预先设置的指定形式,或者是map阶段的服务器中预存的形式。
在本实施例中,所述根据预先配置的特征类从所述特征字段获取特征明文,包括:
依次读取所述特征类中的字段。并根据所述特征类中的字段的内容,从所述明文样本中依次读取具有相同内容的字段作为所述特征字段。再将从所述明文样本中依次读取的所述特征字段记录在特征集合中。
其中,所述特征类中的字段与所述明文样本中的至少一条字段的内容相同。具体的,map阶段的服务器获得新的明文样本集合,这里对预先配置的准备抽取的特征类做初始化,按照配置的需要抽取的特征,逐个调用特征类做特征抽取。例如:
明文样本为:“show clk A B C D”;
预先配置的特征类包括:
Feaclass=featureclass1;dpd=A;slot=1,
Feaclass=featureclass2;dpd=B;slot=2,
Feaclass=featureclass3;dpd=C;slot=3,
Feaclass=featureclass4;dpd=D;slot=4,
其中,服务器可以初始化featureclass1、featureclass2、featureclass3 和featureclass4,再按照配置顺序,依次抽取特征feaA、feaB、直至feaD。服务器抽取的特征集合{feaA,feaB,feaC,feaD},以及明文样本show clk A B C D,服务器依据特殊字段和特征字段之间的关系完成拼接的过程,字段之间的关系可以包括:{feaA show clk…},最终拼接完成得到一条特征样本:show clkfeaAfeaBfeaCfeaD。
在本实施例中,所述将所述拼接后的字段作为特征样本输出,包括:
通过MapReduce框架,将所述特征样本和所述特征集合导入Reduce阶段。所述将从所述明文样本中依次读取的所述特征字段记录在特征集合中,包括:将从所述明文样本中读取的相同的特征字段输出到相同计算节点。
例如:本实施例可以采用hadoop的MapReduce框架,由map阶段的服务器执行S1-S4,然后将执行结果(执行结果包括:特征样本和特征集合)输出到reduce阶段的服务器。具体的,若是特征样本,则直接输出到reduce,不做处理;若是特征集合,则利用MapReduce框架的分桶原理,将相同的特征分到相同计算节点里。reduce阶段的服务器,接收到特征样本,则直接输出特征样本;接收到特征集合,则累加特征集合对应的show clk值后再输出。
在本实施例中,还包括:
读取基本特征类,并通过反射机制更新所述基本特征类。
将最近一次更新的基本特征类作为所述预先配置的特征类。
本发明实施例还提供一种数据特征的处理装置,若应用在MapReduce框架中,则具体可以运行在map阶段的服务器中,如图3a所示,该处理装置包括:
提取单元,用于从业务日志获取明文样本,所述明文样本至少包括特殊字段和特征字段,所述特殊字段包括用于表示执行命令和操作命令的字段。
识别单元,用于根据预先配置的特征类,从所述特征字段获取特征明文,并记录样本签名,其中,内容相同的特殊字段对应同一个样本签名。
拼接单元,用于提取对应所述样本签名的一个特殊字段,并将所获取的特征明文,拼接至所述一个特殊字段,得到拼接后的字段。
输出单元,用于将所述拼接后的字段作为特征样本输出。
在本实施例中,所述识别单元,具体用于依次读取所述特征类中的字段,所述特征类中的字段与所述明文样本中的至少一条字段的内容相同。并根据所述特征类中的字段的内容,从所述明文样本中依次读取具有相同内容的字段作为所述特征字段。再将从所述明文样本中依次读取的所述特征字段记录在特征集合中。
在本实施例中,所述输出单元,具体用于通过MapReduce框架,将所述特征样本和所述特征集合导入Reduce阶段。并将从所述明文样本中读取的相同的特征字段输出到相同计算节点。
进一步的,如图3b所示,还包括:预处理单元,用于读取所述业务日志中的明文字段。并在所述明文字段中剔除第一类型字段。和/或,转换所述明文字段中的第二类型字段的字符为指定形式。再通过MapReduce框架,将经过剔除和/或转换处理后的字段以Map方式存入内存。
进一步的,如图3c所示,还包括特征类管理单元,用于读取基本特征类,并通过反射机制更新所述基本特征类。并将最近一次更新的基本特征类作为所述预先配置的特征类。
本发明实施例提供的数据特征的处理装置,根据预先配置的特征类,从明文样本的特征字段获取特征明文并记录样本签名,并提取对应所述样本签名的一个特殊字段,将特征明文与特殊字段拼接,再将所述拼接后的字段作为特征 样本输出,作为数据提取所用的特征样本。相对于现有技术,本实施例从海量数据中提取所需的特征,解决了现有技术中难以提取大规模且多维度的数据,缓减了需要频繁更新建模的问题,从而降低数据提取的成本并提高了数据提取的准确性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。