CN113391793A - 一种面向流处理的金融欺诈建模语言的处理方法及装置 - Google Patents
一种面向流处理的金融欺诈建模语言的处理方法及装置 Download PDFInfo
- Publication number
- CN113391793A CN113391793A CN202110714151.3A CN202110714151A CN113391793A CN 113391793 A CN113391793 A CN 113391793A CN 202110714151 A CN202110714151 A CN 202110714151A CN 113391793 A CN113391793 A CN 113391793A
- Authority
- CN
- China
- Prior art keywords
- node
- event
- events
- type
- submodule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 114
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000006243 chemical reaction Methods 0.000 claims abstract description 65
- 238000001514 detection method Methods 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000012216 screening Methods 0.000 claims abstract description 18
- 230000006870 function Effects 0.000 description 20
- 238000005457 optimization Methods 0.000 description 20
- 238000012546 transfer Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 12
- 230000002776 aggregation Effects 0.000 description 9
- 238000004220 aggregation Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种面向流处理的金融欺诈建模语言的处理方法及装置,包括:根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成FFML抽象语法树;判断结点的结点类型;若结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合参数要求的事件生成第一转化数据;根据第一转化数据,生成欺诈检测规则对应的SQL代码。应用本发明能够将使用FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种面向流处理的金融欺诈建模语言的处理方法及装置。
背景技术
随着互联网和移动计算机等现代技术的进步,金融欺诈的种类的数量不断增加。为了应对新型金融欺诈,采用计算机技术的自动化金融欺诈检测方法应运而生,采用计算机技术的自动化金融欺诈检测方法分为被动性欺诈和主动性欺诈。主动性欺诈检测把实时流处理技术引入到金融欺诈检测领域,使得交易请求检测实时化。
主动性欺诈依赖于领域专家制定的检测规则,通常情况下,首先由领域专家向IT编码人员提出并解释新的欺诈检测规则,然后由IT编码人员进行实际的流平台代码编写,最后才能部署到流处理平台进行欺诈实时监测。
但是,由于领域专家与IT编码人员之间由于行业差异较大,存在沟通效率低,误解率高等问题,导致新的欺诈检测规则需要较长时间才能实现实际部署,可能造成较大的经济损失。如何将领域专家使用的针对金融欺诈的建模语言,转换为流平台能够识别的编程语言,是尚待解决的问题。
发明内容
本发明提供一种面向流处理的金融欺诈建模语言的处理方法及装置,用以克服现有技术中存在的至少一个技术问题。
根据本发明实施例的第一方面,提供一种面向流处理的金融欺诈建模语言的处理方法,包括:
根据使用金融欺诈建模语言(Financial Fraud Modelling Language,FFML)编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树;
通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;
若所述结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据;
根据所述第一转化数据,生成所述欺诈检测规则对应的结构化查询语言(Structured Query Language,SQL)代码。
根据本发明实施例的第二方面,提供一种面向流处理的金融欺诈建模语言的处理装置,包括:
第一生成模块、第一判断模块、第二生成和第三生成模块;
所述第一生成模块,用于根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树;
所述第一判断模块,用于通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;
所述第二生成模块,用于若所述结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据;
所述第三生成模块,用于根据所述第一转化数据,生成所述欺诈检测规则对应的SQL代码。
本发明实施例的创新点包括:
1、本发明能够基于使用金融欺诈建模语言FFML编写的欺诈检测规则,生成欺诈检测规则对应的FFML抽象语法树,进而根据FFML抽象语法树中各结点的结点类型,生成对应的转化数据,最终根据各转化数据,生成欺诈检测规则对应的SQL代码,能够将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性,是本发明实施例的创新点之一。
2、本发明能够根据FFML抽象语法树中的各结点的结点类型,确定对于各结点类型的结点的处理流程,以实现对使用金融欺诈建模语言FFML的精准转化,是本发明实施例的创新点之一。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例的示意图;
图2为本发明中后端设计模块的总体框架图;
图3为本发明中105步骤的子步骤处理流程图;
图4为本发明中第一个FFML抽象语法树;
图5为本发明又一个实施例的示意图;
图6为本发明中步骤511的子步骤处理流程图;
图7为本发明中第二个FFML抽象语法树;
图8为本发明的面向流处理的金融欺诈建模语言的处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着互联网和移动计算机等现代技术的进步,金融欺诈的种类的数量不断增加。为了应对新型金融欺诈,采用计算机技术的自动化金融欺诈检测方法应运而生,采用计算机技术的自动化金融欺诈检测方法分为被动性欺诈和主动性欺诈。主动性欺诈检测把实时流处理技术引入到金融欺诈检测领域,使得交易请求检测实时化。
主动性欺诈依赖于领域专家制定的检测规则,通常情况下,首先由领域专家向IT编码人员提出并解释新的欺诈检测规则,然后由IT编码人员进行实际的流平台代码编写,最后才能部署到流处理平台进行欺诈实时监测。
但是,由于领域专家与IT编码人员之间由于行业差异较大,存在沟通效率低,误解率高等问题,导致新的欺诈检测规则需要较长时间才能实现实际部署,可能造成较大的经济损失。
为了解决上述问题,本发明提出一种面向流处理的金融欺诈建模语言的处理方法及装置,能够将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
下面对本发明提出的一种面向流处理的金融欺诈建模语言的处理方法及装置进行详细说明。
参考图1,图1为本发明一个实施例的示意图。如图1所示,面向流处理的金融欺诈建模语言的处理方法包括如下处理步骤:
步骤101,根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树。
在步骤中,由领域专家使用金融欺诈建模语言FFML编写的欺诈检测规则,首先经过词法分析器生成符号流,这些符号流经过语法分析生成语法树,语法树不能直接作为语义分析的输入,因此可以将其转换为一种中间语法表示,即为FFML抽象语法树;接下来,通过后续步骤,实现基于FFML抽象语法树,进行语义分析,由代码生成其生成流平台能够识别的编程语言的技术效果。
需要说明的是,语法分析和语义分析之间需要一个桥梁,语法分析中直接得到的语法分析树(也称具体语法树)包含了许多冗余的语法结构信息,不能直接作为语音分析的输入,因此,需要在语法分析的过程中构建抽象语法树,作为连接前后端的语法中间表示。
步骤103,通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;若所述结点的结点类型为SingleEvent,则执行步骤105,若所述结点的结点类型为SingleCondition,则执行步骤107。
需要说明的是,在具体实施中,可以由面向流处理的金融欺诈建模语言的处理方法的前端设计模块实现步骤101,具体的,前端设计模块的功能是将使用金融欺诈建模语言FFML编写的欺诈检测规则,转换为欺诈检测规则对应的FFML抽象语法树。
从步骤103至步骤109可以由面向流处理的金融欺诈建模语言的处理方法的后端设计模块来实现。
后端设计模块的总体框架可以参考图2,图2为本发明中后端设计模块的总体框架图。访问者模块是整个后端设计模块中的主体模块,它遍历由前端设计模块生成的FFML抽象语法树,并在遍历过程中构造代码转化逻辑,然后通过调用模板模块来生成具体的流处理代码。在代码转化过程中,需要符号表以及内建函数模块的协同工作,并根据代码优化模块来对生成的流处理代码进行针对性优化。图2中虚线框出的部分便是整个转化后端的具体组成。
后端设计模块中每个模块的具体功能如下:
访问者模块:访问者模块将代码转化所需的语义动作集中到一起,对FFML抽象语法树进行遍历,遍历过程中与其他模块协同实现具体的语义分析。
符号表:符号表用来存储在语义分析过程中遇到的一些符号及其属性信息,方便访问者的不同部分访问公共信息。
内建函数模块:FFML语言中允许用户调用一些内置函数,如TOTALDEBIT、BADACCOUNT等,这些内置函数的代码转化由内建函数模块统一来处理。
模板模块:目标代码生成时,为了避免出错,并且统一输出形式,采用内置的代码模板,访问者填充相应模板来生成最终代码。
代码优化模块:对于不同的流处理代码,流处理系统最后生成的算子图的执行效率也不同,代码优化模板定义了几种不同的代码优化方法,指导访问者生成高效的流处理代码。
本发明的重点在于访问者模块。
不同语言的翻译转化方法主要有语法制导方法、基于规则的方法以及基于模型的方法。本发明选择基于模型的方法,比基于语法制导的方法更加灵活,比基于规则的方法更加高效易读,而且在业界更加通用。
基于模型的方法核心是通过建立一种语法的中间表示模型,然后所有的语音相关动作均围绕这一模型展开。本发明采用抽象语法树作为中间表示模型,然后采用访问者遍历抽象语法树来完成具体的语义转换动作。
访问者模式定义一个单独的访问者,将对于不同抽象语法树结点的语义动作均集中在一起,把抽象语法树结点作为参数,按照结点的不同类型来执行不同的操作。相比抽象语法树的语义动作直接嵌入到异构抽象语法树,本发明的访问者模式更加灵活,易于扩展。
使用金融欺诈建模语言FFML编写的欺诈检测规则的结构如表1所示。主要包括四部分:规则命名、事件序列、条件定义以及动作定义。“规则命名”给当前定义的规则指定一个ID;“事件序列”表示当检测到何种事件时,执行后面的操作;“条件定义”定义了当检测到触发事件时,要检查事件中的变量是否符合此处的条件;如果符合条件,则触发“动作定义”定义的相关动作。使用金融欺诈建模语言FFML编写的欺诈检测规则的主体部分是事件序列以及条件定义。
在本步骤中,访问者模块通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;若所述结点的结点类型为SingleEvent,则执行步骤105,若所述结点的结点类型为SingleCondition,则执行步骤107。
需要说明的是,这里仅对这两个结点类型的结点的处理方式进行详细说明,并不代表仅能够处理这两个结点类型的结点,对于其他结点类型的结点的处理方式见后文说明。
步骤105,根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据。
其中,所述参数要求可以包括时间参数time、事件序列参数events和操作信息,操作信息包括频道和在所述频道的操作行为。
需要说明的是,SingleEvent类型的结点包括两个孩子结点。
可选的,参考图3,图3为本发明中105步骤的子步骤处理流程图。如图3所示,步骤105具体可以包括如下子步骤:
子步骤11,访问SingleEvent类型的结点的两个孩子结点,将第一个孩子结点的返回值保存为第一变量,将第二个孩子结点的返回值保存为第二变量。
具体的,第一变量可以记为channel,第二变量可以记为params。
子步骤12,根据所述第二变量,确定所述SingleEvent类型的结点定义的事件类型。
具体的,SingleEvent类型的结点定义两类事件,包括简单独立事件和负责序列事件。可以通过第二个孩子结点的返回值,也即第二变量params的类型来判断,若第二变量params为字符串,则当前SingleEvent类型的结点定义的事件为简单独立事件,接下来进入简单独立事件对应的处理流程,若第二变量params为列表,则当前SingleEvent类型的结点定义的事件为负责序列事件,接下来进入复杂序列事件对应的处理流程。
子步骤13,通过执行所述事件类型对应的处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
具体的,根据第一变量channel或第二变量params中携带的参数要求,可以包括从全部的事件列表中,选取满足条件的目标事件,生成目标事件对应的新表,将所述新表记为第一转化数据。
具体实施中,在步骤105之后,还可以根据所述结点的左表达式子结点的左返回值、比较操作符子结点的比较返回值以及右表达式子结点的右返回值,对所述数据流中的布尔表达式进行转化,生成第二转化数据。
其中,布尔表达式包括比较表达式,比如,a>1,b<=2,即带有比较操作符,比较操作符包括:>,<,=,<=,>=,!=。
需要说明的是,SingleCondition结点类型的结点的子结点是固定的左表达式、比较操作符和右表达式的形式。
具体的,当所述结点的结点类型为SingleCondition时,首先,访问第一个子结点,即左表达式结点,得到其返回值lhs,该结点递归向下处理之后分为三类子结点:简单事件变量(EventParam)、查询(Query)、历史查询(HistStatement)。
对于简单事件变量(EventParam)类的结点,直接返回其事件及变量;对于查询(Query)类的结点,采用流式窗口聚合转化方法或者流处理系统自定义函数(UDF)转化方法;对于历史查询(HistStatement)类的结点,采用HistStatement类型的结点对应的处理方式进行处理。
接下来,访问第二个子结点,也即比较操作符结点,得到其返回值op。
然后,访问第三个子结点,也即右表达式结点,得到其返回值rhs。
最后,通过lhs、op和rhs进行比较表达式代码转化,具体转化通过SQL语言中的连接(Join)及条件选择(Where)来实现,首先,通过连接(Join),将lhs和rhs进行连接,然后,通过条件选择(Where)语法进行条件判断。
举例说明,以图4中的FFML抽象语法树为例进行说明:
如图4所示,对于第一个SingleCondition结点,其对应于FFML代码QUERYTOTALDEBIT(ATM,2)<=500。
第一步,访问其第一个子结点即左表达式结点,该结点为查询结点,可以采用内建函数优化,也可以采用流式窗口聚合转化方法,若采用流式窗口聚合转化方法,具体流程如下:
(a)TOTALDEBIT函数表示查询最近n天的交易总额,此处为查询最近2天通过ATM渠道的交易总额,首先以两天为窗口,将交易额进行聚合,即:
CREATE TEMPORARY VIEW`procedure_1`AS(SELECT accountnumber,
SUM(`value`),AS totaldebit,TUMBLE_END(rowtime,INTERVAL`2`DAY)ASrowtime FROM event_8GROUP BY accountnumber,TUMBLE(rowtime,INTERVAL`2`DAY))
得到新表procedure_1.
(b)由于TOTALDEBIT只要求最近n天的数据,所以需要取上表中的最后一项,采用TOP_N语法,即
CREATE TEMPORARY VIEW`procedure_2`AS(SELECT accountnumber,totaldebit,rowtime FROM(SELECT*,ROW_NUMBER()OVER(PARTITION BY accountnumber ORDER BYrowtime DESC)as rownum FROM produce_1)WHERE rownum<=1)
(c)返回左操作数lhs为(procedure_2,totaldebit)。
第二步,访问第二个子结点,也即比较操作符结点,得到op为<=。
第三步,访问第三个子结点,也即右表达式结点,得到rhs为500.
第四步,进行比较表达式转化,采用WHERE语法,即
CREATE TEMPORARY VIEW`comparison_1`AS(SELECT accountnumber,rowtimeFROM procedure_2WHERE`totaldebit`<=500.0)
第五步,将全部信息从完整的事件表中选择出来,即:
CREATE TEMPORARY VIEW`condition_1`AS(SELECT*FROM event_7,comparison_1WHERE event_7.accountnumber=comparison_1.accountnumber AND event_7.rowtime>=comparison_1.rowtime)
如图4所示,对于第二个SingleCondition结点,其对应于transfer.`value`>=500。
第一步,访问其左表达式结点,为一简单变量结点,直接返回其事件变量即可,即(“transfer”,“value”)。
第二步,访问其比较操作符结点,得到op为>=。
第三步,访问其右表达式结点,得到rhs为500。
第四步,通过SELECT语法直接将满足该条件的事件选择出来,即:
CREATE TEMPORARY VIEW`comparison_2`AS(SELECT*FROM transfer WHERE`value`>=500.0)
第五步,读取符号表中的当前表,记为condition_1,需要对comparison_2和condition_1求交,即:
CREATE TEMPORARY VIEW`condition_2`AS(SELECT*FROM comparison_2WHERE idIN(SELECT id FROM condition_1))。
如图4所示,对于第三个SingleCondition结点,其对应于HISTORY(4)[QUERYTOTALDEBIT(ONL)>=100]>=1是历史数据查询点,其具体流程可以参考HistStatement类型的结点的相关说明。
步骤109,根据所述第一转化数据,生成所述欺诈检测规则对应的SQL代码。
在本步骤中,通过针对不同类型的结点对应的处理方式,实现了将使用金融欺诈建模语言FFML编写的欺诈检测规则,转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
具体实施中,可以根据所述第一转化数据和所述第二转化数据,生成所述欺诈检测规则对应的SQL代码。
可见,在本发明提出的一种面向流处理的金融欺诈建模语言的处理方法中,能够基于使用金融欺诈建模语言FFML编写的欺诈检测规则,生成欺诈检测规则对应的FFML抽象语法树,进而根据FFML抽象语法树中各结点的结点类型,生成对应的转化数据,最终根据各转化数据,生成欺诈检测规则对应的SQL代码,能够将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
一种实现方式中,HistStatement类型的结点用于从历史数据中查询满足条件的数据,其有两个孩子结点,一个是要查询的表项数,另一个是查询条件。
针对HistStatement类型的结点的处理方式如下:
第一步,访问HistStatement类型的结点的第一个孩子结点,获得需要查询的表项数,记为d,并将其写入符号表中hist_days处,后面访问条件结点时需要使用。
第二步,访问HistStatement类型的结点的第二个孩子结点,即条件结点,存储返回值为t和k,其中,t为新生成的表,k为查询条件对应的键值。
第三步,恢复符号表中hist_days为1。
第四步,用t中同一k的表项进行计数(COUNT)聚合,作为新的一列,创建新表并返回。
举例说明,参考图4,图4为本发明中第一个FFML抽象语法树。以图4中的FFML抽象语法树为例进行说明:
如图4所示,第一步,访问HistStatement类型的结点的第一个孩子结点,得到要查询的表项数d为4,并将符号表中hist_days置为4。
第二步,访问HistStatement类型的结点的第二个孩子结点,即条件结点,产生下列三个新表,功能分别是聚合,TOPN选择以及比较表达式数据过滤。
CREATE TEMPORARY VIEW`procedure_3`AS(SELECT accountnumber,SUM(`value`)AS totaldebit,TUMBLE_END(rowtime,INTERVAL`1`DAY)AS rowtime FROM event_9GROUP BY accountnumber,TUMBLE(rowtime,INTERVAL`1`DAY))
CREATE TEMPORARY VIEW`procedure_4`AS(SELECT accountnumber,totaldebit,rowtime FROM(SELECT*,ROW_NUMBER()OVER(PARTITION BY accountnumber ORDER BYrowtime DESC)as rownum FROM procedure_3)WHERE rownum<=4)
CREATE TEMPORARY VIEW`comparison_3`AS(SELECT accountnumber,rowtimeFROM procedure_4WHERE`totaldebit`>=100.0)
第三步,恢复符号表中hist_days为1。
第四步,对comparison_3表中的数据进行COUNT聚合,如下,生成新表count_1。
CREATE TEMPORARY VIEW`count_1`AS(SELECT accountnumber,COUNT(*)ASdaycount,MAX(rowtime)AS rowtime FROM comparison_3GROUP BY accountnumber)
在具体实施中,本发明又提出的一种面向流处理的金融欺诈建模语言的处理方法。
参考图5,图5为本发明又一个实施例的示意图。如图5所示,面向流处理的金融欺诈建模语言的处理方法包括如下处理步骤:
步骤501,根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树。
本步骤的详细说明可以参考图1所示的面向流处理的金融欺诈建模语言的处理方法中的步骤101。
步骤503,通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;若所述结点的结点类型为SingleEvent,则执行步骤505;若所述结点的结点类型为SingleCondition,则执行步骤513;若所述结点的结点类型为EventStatement,则执行步骤515;若所述结点的结点类型为ConditionStatement,则执行步骤517。
需要说明的是,这里仅对这四个结点类型的结点的处理方式进行详细说明,并不代表仅能够处理这四个结点类型的结点。
步骤505,访问SingleEvent类型的结点的两个孩子结点,将第一个孩子结点的返回值保存为第一变量,将第二个孩子结点的返回值保存为第二变量,执行步骤507。
步骤507,判断所述第二变量为字符串还是列表;若所述第二变量为字符串,则确定所述事件类型为简单独立事件,执行步骤509;若所述第二变量为列表,则确定所述事件类型为复杂序列事件,执行步骤511。
步骤509,当所述事件类型为简单独立事件时,通过执行所述简单独立事件对应的第一处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
在本步骤中,若第二变量params为字符串,则当前SingleEvent类型的结点定义的事件为简单独立事件,接下来进入简单独立事件对应的第一处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
其中,第一处理流程包括直接返回其事件及变量。简单独立事件只定义账户在某一频道c的某一操作行为a,因此可以直接采用SELECT语法从账户的所有a操作中选出通过c频道执行即可。
步骤511,当所述事件类型为复杂序列事件时,通过执行所述复杂序列事件对应的第二处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据,执行步骤521。
在本步骤中,若第二变量params为列表,则当前SingleEvent类型的结点定义的事件为负责序列事件,接下来进入复杂序列事件对应的第二处理流程。
需要说明的是,复杂序列事件由两部分组成:序列时间及序列事件组。序列事件定义序列事件发生所允许的最大时间跨度,序列事件组定义事件发生的先后关系。
第二处理流程包括:首先,通过params列表获取上述时间跨度参数time和事件序列参数events;然后,通过UNION ALL语法将events中的事件对应的表进行合并,只根据判断事件所需的公共值进行合并,判断事件所需的公共值包括事件ID、账户ID、事件类型、事件时间,合并后的表即为all_events;接下来,采用复杂事件处理(CEP)MATCH语法从all_events表中将符合序列时间和序列事件组的事件,生成新表m;最后,新表m中只存储了命中事件的基本信息,通过SELECT语法将命中事件的完整信息从对应的事件表中选取出来,创建并返回目标事件表n。
复杂序列事件包括复合事件,比如,ONL SEQ(10)(password_change,transfer)表示在10秒/分内某个账户接连在ONL渠道进行密码修改及转账操作。
可选的,参考图6,图6为本发明中步骤511的子步骤处理流程图。如图6所示,步骤611具体包括如下子步骤:
子步骤61,从所述第二参数params中获取时间跨度参数time和事件序列参数events。
子步骤62,将事件序列参数events中各事件对应的表进行合并,生成合并表all_events,所述合并表all_events中包括事件的基本信息。
子步骤63,从所述合并表all_events中的事件中,选取符合所述时间跨度参数time要求的目标事件,生成目标事件表。
举例说明,参考图4,图4为本发明中第一个FFML抽象语法树。以图4中的FFML抽象语法树为例进行说明:
第一步,如图4所示,对于第一个SingleEvent类型的结点,对应FFML规则中ONLSQE(5)[password_change,transfer],首先访问其两个孩子结点,得到变量channel和params,分别为“ONL”和列表[5,“password_change”,“transfer”],由于params是一个列表,因此是复杂序列事件,下面进行复杂序列处理。
(a)通过params获得时间跨度参数time和事件序列参数events分别为5和[“password_change”,“transfer”]。
(b)使用UNION ALL语法将事件进行合并,得到下面三个新表:
CREATE TEMPORARY VIEW`event_1`AS(SELECT*FROM`password_change`WHEREchange=`ONL`)
CREATE TEMPORARY VIEW`event_2`AS(SELECT*FROM`transfer`WHERE change=`ONL`)
CREATE TEMPORARY VIEW`event_3`AS(SELECT id,accountnumber,rowtime,eventtype FROM`event_1`)UNION ALL(SELECT id,accountnumber,rowtime,eventtypeFROM`event_2`))
其中,event_1将ONL频道的password_change事件选取出来,event_2将transfer事件选取出来,event_3将这两个表中共同的事件相关元信息合并为一个表。
(c)通过流处理MATCH语法进行复杂事件处理,即得到如下代码:
(d)由于表event_4中只存储了命中事件的基本信息,因此通过SELECT语法将命中事件的全部信息从对应的事件表中选取出来,并创建目标事件表event_5。
(e)返回目标事件表event_5。
第二步,如图4所示,对于第二个SingleEvent类型的结点,对应FFML规则中ATM[transfer],首先访问其两个孩子结点,得到变量channel=“ATM”,params是字符串,因此是简单独立事件,下面进行简单独立事件的处理。
(a)简单独立事件直接采用SELECT语法进行频道事件选择,即CREATE TEMPORARYVIEW`event_6`AS(SELECT*FROM transfer WHERE channel=`ATM`)
(b)得到并返回目标事件表event_6
步骤513,根据所述结点的左表达式子结点的左返回值、比较操作符子结点的比较返回值以及右表达式子结点的右返回值,对所述数据流中的布尔表达式进行转化,生成第二转化数据,执行步骤521。
本步骤的详细说明可以参考图1所示的面向流处理的金融欺诈建模语言的处理方法中的步骤107。
步骤515,通过遍历所述结点的子结点,执行所述子结点的处理流程,获得各所述子结点的SQL表名,并将所述SQL表名保存在events列表中,执行步骤516。
需要说明的是,EventStatement类型的结点支持定义多个或事件,EventStatement类型的结点的子结点的类型为SingleEvent,即单个独立事件或序列事件。
在本步骤中,当结点的结点类型为EventStatement时,首先,遍历EventStatement类型的结点的子结点,执行各SingleEvent类型的子结点对应的SingleEvent处理流程,获得各SingleEvent类型的子结点的SQL表,并将SQL表保存在events列表中。
步骤516,将events列表中的所有SQL表的内容进行合并,生成第三转化数据,执行步骤521。
在本步骤中,由于EventStatement类型的结点只支持或事件,因此可以将events列表中的所有SQL表的内容用进行合并,即SELECT单个表中的所有内容,然后通过UNIONALL操作符进行合并,生成新的流处理表,并将该新的流处理表写入到符号表中event_table处,后面条件定义相关结点的处理需要用到该值,以及将所述新的流处理表作为第三转化数据。
举例说明,参考图7,图7为本发明中第二个FFML抽象语法树。以图7中的FFML抽象语法树为例进行说明:
如图7所示,第一步,遍历EventStatement类型的结点的子结点,即两个SingleEvent类型的子结点,通过调用SingleEvent类型的结点对应的处理流程来访问SingleEvent类型的子结点,获得其返回值,分别为事件event_5和事件event_6。
第二步,可以用UNION ALL将事件event_5和事件event_6这两个事件进行合并,即
CREATE TEMPORARY VIEW`event_7`AS((SELECT*FROM event_5)UNION ALL(SELECT*FROM event_6))。
第三步,将符号表中event_table置为event_7。
步骤517,依次访问所述ConditionStatement类型的结点的各孩子结点,判断各孩子结点之后的逻辑操作是“与”操作还是“或”操作;若所述逻辑操作为“与”操作,则将符号表中的当前表更新为栈顶元素;若所述逻辑操作为“或”操作,则将所述符号表中的当前表更新为所述符号表中event_table对应的值,执行步骤519。
其中,所述ConditionStatement类型的结点包括多个SingleCondition类型的结点通过逻辑符号“与”和逻辑符号“或”连接。
在本步骤中,当结点的结点类型为ConditionStatement时,首先,依次访问ConditionStatement类型的结点的各孩子结点,直到访问完所有的孩子结点,针对各孩子结点的处理流程如下:
第一步,将孩子结点的返回值作为栈顶元素,判断该孩子结点后面的逻辑操作;若逻辑操作为“与”操作,则执行“第二步”,若逻辑操作为“或”操作,则执行“第三步”。
第二步,将符号表中当前表更新栈顶元素,并将所述栈顶元素弹出。
第三步,将符号表中当前表更新为符号表中event_table对应的值。
举例说明,以图4中的FFML抽象语法树为例进行说明:
如图4所示,第一步,访问ConditionStatement类型的结点的第一个孩子结点,通过调用SingleCondition的访问函数获得返回值condition_1,将其压到栈顶,然后通过访问第二个孩子结点,得到第二个孩子结点的逻辑操作为“与”操作。
第二步,更新符号表中当前表为condition_1,并将栈顶元素弹出。
第三步,访问第二个孩子结点,得到其返回值condition_2,将其压到栈顶,然后确定第三个孩子结点的逻辑操作为“或”操作。
第四步,更新符号表中当前表为符号表中event_table对应的值,即event_7。
第五步,访问第三个孩子结点,得到其返回值condition_3。
第六步,将栈里剩余的两个表进行合并,即:
CREATE TEMPORARY VIEW`condition_4`AS((SELECT*FROM condition_2)UNIONALL(SELECT*FROM condition_3))
步骤519,当所述ConditionStatement类型的结点的所有的孩子结点访问完成之后,将栈中的所有表进行合并生成第四转化数据。
在本步骤中,当所述ConditionStatement类型的结点的所有的孩子结点访问完成之后,对栈中的所有表通过UNION ALL进行合并得到新表,并将新表并将新表写入符号表中condition_table处。
步骤521,根据所述第一转化数据、所述第二转化数据、所述第三转化数据和第四转化数据,生成所述欺诈检测规则对应的SQL代码。
在本步骤中,通过针对不同类型的结点对应的处理方式,实现了将使用金融欺诈建模语言FFML编写的欺诈检测规则,转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
可见,在本发明提出的一种面向流处理的金融欺诈建模语言的处理方法中,能够基于使用金融欺诈建模语言FFML编写的欺诈检测规则,生成欺诈检测规则对应的FFML抽象语法树,进而根据FFML抽象语法树中各结点的结点类型,生成对应的转化数据,最终根据各转化数据,生成欺诈检测规则对应的SQL代码,能够将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
一种实现方式中,可以将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为基于Flink的流平台能够识别的SQL编程语言。本发明可以根据Flink流处理系统的特点,对生成的SQL代码进行性能优化,具体包括如下四个方面:
第一种,UNION ALL优化。
流处理系统的UNION ALL操作与数据库表的合并操作本质不同,需要特别处理。UNION ALL在流处理系统内部实际上是简单地将两条数据流合并到一起流入下个算子。由于流处理系统算子操作是由时间驱动的,比如,窗口操作只有当超过窗口结束时间的水印到达当前算子时,窗口操作才会被触发,因此,对于数据流合并,时间水印的合并与流动需要额外关注。Flink流处理系统对于有多个输入流的算子,其算子时间取输入流时间的最小值,这会导致如果有一条输入流没有数据到来,即不会有新的水印到来,那么无论其他的输入流时间如何前进,和并处的算子时间都不会前进,即不会向下游发送新的时间水印,流处理系统时间将会在该算子处阻塞,后续算子需要时间来触发的操作将不会执行。
在本发明中,生成代码中不再采用UNION ALL将数据流合并,而是为每条数据流配置一条后续算子,即通过加倍算子的方式来避免合并。
比如,以图5所示的一种面向流处理的金融欺诈建模语言的处理方法中,步骤516中的“举例说明”中的例子为例,说明在使用“UNION ALL优化”之后的处理流程的变化,具体发生变化的是“第二步”和“第三步”。
具体的,在使用“UNION ALL优化”之后,举例如下:
如图7所示,第一步,遍历EventStatement类型的结点的子结点,即两个SingleEvent类型的子结点,通过调用SingleEvent类型的结点对应的处理流程来访问SingleEvent类型的子结点,获得其返回值,分别为事件event_5和事件event_6。
第二步,将符号表中的event_table置为列表[event_5,event_6]。
又比如,以图5所示的一种面向流处理的金融欺诈建模语言的处理方法中,步骤517中的“举例说明”中的例子为例,在使用“UNION ALL优化”之后,可以不创建表event_3,将名称不同但实际内容相同的表合并为一个,可以极大减少表的数量,进而减少最终生成的算子的数量。
本发明可以通过转化时构建全局视图信息表的方法,对每个新创建的表进行检查,如果已经存在,则直接返回已经创建的表ID。全局视图信息表的键值由创建该表的模板名以及其填充项的值经过一定组合而成,从而确保能够准确且唯一地表达该表的具体意义。
具体的,在使用“UNION ALL优化”之后,修改了“第六步”,改进流程如下:
以图4中的FFML抽象语法树为例进行说明:
如图4所示,第一步,访问ConditionStatement类型的结点的第一个孩子结点,通过调用SingleCondition的访问函数获得返回值condition_1,将其压到栈顶,然后通过访问第二个孩子结点,得到第二个孩子结点的逻辑操作为“与”操作。
第二步,更新符号表中当前表为condition_1,并将栈顶元素弹出。
第三步,访问第二个孩子结点,得到其返回值condition_2,将其压到栈顶,然后确定第三个孩子结点的逻辑操作为“或”操作。
第四步,更新符号表中当前表为符号表中event_table对应的值,即event_7。
第五步,访问第三个孩子结点,得到其返回值condition_3。
第六步,对符号表中event_table中的所有表均进行一遍“第一步”到“第五步”,得到4个新表condition_1,condition_2,condition_3和condition_4.
再比如,以图5所示的一种面向流处理的金融欺诈建模语言的处理方法中,子步骤63下的“举例说明”中的例子为例,在使用“UNION ALL优化”之后,在“第一步”中的“(b)”中去掉“UNION ALL操作”,即不创建表event_3,将名称不同但实际内容相同的表合并为一个,可以极大减少表的数量,进而减少最终生成的算子的数量。
第二种,表去重优化。
表去重优化在各个结点的访问中都有涉及,会将具有相同定义的两张表进行合并。
比如,CREATE TEMPPORARY VIEW`event_4`AS(SELECT*FROM transfer WHEREchannel=`ATM`)
CREATE TEMPPORARY VIEW`event_5`AS(SELECT*FROM transfer WHERE channel=`ATM`);由于event_4和event_5是完全相同的,开启表去重优化之后,这两张表会合并为一张,即只有event_4。
第三种,内建函数优化。
虽然需要内建函数可以直接通过流处理系统的窗口函数来实现,但窗口算子的效率不一定高,其影响因素有很多,比如,流处理系统配置、流入的数据特点等等,而且窗口算子需要维护大量状态,消耗较多资源;同时,大部分内建函数需要查询的数据是比较简单的,比如,某账户最近一天的转账总额,而这种数据在实际应用中也是敏感的,原有的数据库系统也会对其进行记录,因此在对内建函数进行处理时,可以不采用流处理的方法,而是直接采用查外部数据库的方法,即采用流处理底层API创建相应过程,过程中直接查询外部数据库,返回结果。
比如,基于图6所示的步骤511的子步骤处理流程中子步骤63中的例子,说明在经过“内建函数优化”之后的处理流程,相比子步骤63中的例子,此处在“第一步”有所改进:
第一步,访问其第一个子结点即左表达式结点,该结点为查询结点,具体流程如下:
(a)采用流处理内建函数语法进行LATERAL JOIN,即:
CREATE TEMPORARY VIEW`procedure_2`AS(SELECT S.id,S.rowtime,T.v AStotaldebit FROM event_4AS S,LATERAL TABLE(TOTALDEBIT(accountnumber,`ATM`,2,1))AS T(v))
(b)返回左操作数lhs为(procedure_2,totaldebit)。
第二步,访问第二个子结点,也即比较操作符结点,得到op为<=。
第三步,访问第三个子结点,也即右表达式结点,得到rhs为500.
第四步,进行比较表达式转化,采用WHERE语法,即
CREATE TEMPORARY VIEW`comparison_1`AS(SELECT accountnumber,rowtimeFROM procedure_2WHERE`totaldebit`<=500.0)
第五步,将全部信息从完整的事件表中选择出来,即:
CREATE TEMPORARY VIEW`condition_1`AS(SELECT*FROM event_7,comparison_1WHERE event_7.accountnumber=comparison_1.accountnumber AND event_7.rowtime>=comparison_1.rowtime)
如图4所示,对于第二个SingleCondition结点,其对应于transfer.`value`>=500。
第一步,访问其左表达式结点,为一简单变量结点,直接返回其事件变量即可,即(“transfer”,“value”)。
第二步,访问其比较操作符结点,得到op为>=。
第三步,访问其右表达式结点,得到rhs为500。
第四步,通过SELECT语法直接将满足该条件的事件选择出来,即:
CREATE TEMPORARY VIEW`comparison_2`AS(SELECT*FROM transfer WHERE`value`>=500.0)
第五步,读取符号表中的当前表,记为condition_1,需要对comparison_2和condition_1求交,即:
CREATE TEMPORARY VIEW`condition_2`AS(SELECT*FROM comparison_2WHERE idIN(SELECT id FROM condition_1))。
如图4所示,对于第三个SingleCondition结点,其对应于HISTORY(4)[QUERYTOTALDEBIT(ONL)>=100]>=1是历史数据查询点,其具体流程可以参考HistStatement类型的结点的相关说明。
第四种,表更新优化:对于数据库系统而言,表的更新只需要将表中的数据改写即可,但对于流处理系统而言,由于表实际上是一条条的数据流,因此不能被改写,表项更新时需要向流中重发一条新的数据,并附带更新标识,显然,这种更新操作效率不高。如果表更新非常频繁,则流处理系统中会出现大量的流元素,使系统性能下降。因此,表更新优化将生成代码中表更新的代码转化为无需表更新的代码。
表更新优化主要体现在HistStatement类型的结点的处理流程中。
比如,以前文“针对HistStatement类型的结点的处理方式”中“举例说明”的例子为例,说明在进行“表更新优化”后的流程改进,改进点主要在“第四步”,改进后的处理流程如下:
如图4所示,第一步,访问HistStatement类型的结点的第一个孩子结点,得到要查询的表项数d为4,并将符号表中hist_days置为4。
第二步,访问HistStatement类型的结点的第二个孩子结点,即条件结点,产生下列三个新表,功能分别是聚合,TOPN选择以及比较表达式数据过滤。
CREATE TEMPORARY VIEW`procedure_3`AS(SELECT accountnumber,SUM(`value`)AS totaldebit,TUMBLE_END(rowtime,INTERVAL`1`DAY)AS rowtime FROM event_9GROUP BY accountnumber,TUMBLE(rowtime,INTERVAL`1`DAY))
CREATE TEMPORARY VIEW`procedure_4`AS(SELECT accountnumber,totaldebit,rowtime FROM(SELECT*,ROW_NUMBER()OVER(PARTITION BY accountnumber ORDER BYrowtime DESC)as rownum FROM procedure_3)WHERE rownum<=4)
CREATE TEMPORARY VIEW`comparison_3`AS(SELECT accountnumber,rowtimeFROM procedure_4WHERE`totaldebit`>=100.0)
第三步,恢复符号表中hist_days为1。
第四步,对comparison_3表中的数据进行翻滚窗口聚合,窗口时间设为1秒,不再直接采用全局COUNT聚合,即
CREATE TEMPORARY VIEW`count_1`AS(SELECT id,MAX(rowtime)AS rowtime,COUNT(*)AS daycount FROM comparison_3GROUP BY id,TUMBLE(rowtime,INTERVAL`1`SECOND))
本发明还提供一种面向流处理的金融欺诈建模语言的处理装置。参考图8,图8为本发明的面向流处理的金融欺诈建模语言的处理装置的结构示意图。
如图8所示,所述装置80包括:第一生成模块801、第一判断模块802、第二生成模块803和第三生成模块804;
所述第一生成模块801,用于根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树;
所述第一判断模块802,用于通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;
所述第二生成模块803,用于若所述结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据;
所述第三生成模块804,用于根据所述第一转化数据,生成所述欺诈检测规则对应的SQL代码。
可选的,所述第二生成模块803,具体包括:第一访问子模块、第一确定子模块和第一生成子模块;
所述第一访问子模块,用于访问SingleEvent类型的结点的两个孩子结点,将第一个孩子结点的返回值保存为第一变量,将第二个孩子结点的返回值保存为第二变量;
所述第一确定子模块,用于根据所述第二变量,确定所述SingleEvent类型的结点定义的事件类型;
所述第一生成子模块,用于通过执行所述事件类型对应的处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
可选的,所述第一确定子模块,具体包括:
第一判断子模块、第二确定子模块和第三确定子模块;
所述第一判断子模块,用于判断所述第二变量为字符串还是列表;
所述第二确定子模块,用于若所述第二变量为字符串,则确定所述事件类型为简单独立事件;
所述第三确定子模块,用于若所述第二变量为列表,则确定所述事件类型为复杂序列事件;
所述第一生成子模块,具体包括:第二生成子模块和第三生成子模块;
所述第二生成子模块,用于当所述事件类型为简单独立事件时,通过执行所述简单独立事件对应的第一处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据;
所述第三生成子模块,用于当所述事件类型为复杂序列事件时,通过执行所述复杂序列事件对应的第二处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
可选的,所述第三生成子模块,具体包括:第一获取子模块、第四生成子模块和第五生成子模块;
所述第一获取子模块,用于从所述第二参数params中获取时间跨度参数time和事件序列参数events;
所述第四生成子模块,用于将事件序列参数events中各事件对应的表进行合并,生成合并表all_events,所述合并表all_events中包括事件的基本信息;
所述第五生成子模块,用于从所述合并表all_events中的事件中,选取符合所述时间跨度参数time要求的目标事件,生成目标事件表。
可选的,所述装置还包括:执行模块和第四生成模块;
所述执行模块,用于若所述结点的结点类型为EventStatement,则通过遍历所述结点的子结点,执行所述子结点的处理流程,获得各所述子结点的SQL表,并将所述SQL表保存在events列表中;
所述第四生成模块,用于将所述events列表中的所有SQL表的内容用进行合并,生成第三转化数据。
可见,本发明提出的一种面向流处理的金融欺诈建模语言的处理装置,能够基于使用金融欺诈建模语言FFML编写的欺诈检测规则,生成欺诈检测规则对应的FFML抽象语法树,进而根据FFML抽象语法树中各结点的结点类型,生成对应的转化数据,最终根据各转化数据,生成欺诈检测规则对应的SQL代码,能够将使用金融欺诈建模语言FFML编写的欺诈检测规则快速转化为流平台能够识别的SQL编程语言,处理效率高,具有实时性。
需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (10)
1.一种面向流处理的金融欺诈建模语言的处理方法,其特征在于,包括:
根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树;
通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;
若所述结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据;
根据所述第一转化数据,生成所述欺诈检测规则对应的结构化查询语言SQL代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述SingleEvent的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据的步骤,包括:
访问SingleEvent类型的结点的两个孩子结点,将第一个孩子结点的返回值保存为第一变量,将第二个孩子结点的返回值保存为第二变量;
根据所述第二变量,确定所述SingleEvent类型的结点定义的事件类型;
通过执行所述事件类型对应的处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二变量,确定所述SingleEvent类型的结点定义的事件类型的步骤,包括:
判断所述第二变量为字符串还是列表;
若所述第二变量为字符串,则确定所述事件类型为简单独立事件;
若所述第二变量为列表,则确定所述事件类型为复杂序列事件;
所述通过执行所述事件类型对应的处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据的步骤,包括:
当所述事件类型为简单独立事件时,通过执行所述简单独立事件对应的第一处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据;
当所述事件类型为复杂序列事件时,通过执行所述复杂序列事件对应的第二处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
4.根据权利要求3所述的方法,其特征在于,所述通过执行所述复杂序列事件对应的第二处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据的步骤,包括:
从所述第二参数params中获取时间跨度参数time和事件序列参数events;
将事件序列参数events中各事件对应的表进行合并,生成合并表all_events,所述合并表all_events中包括事件的基本信息;
从所述合并表all_events中的事件中,选取符合所述时间跨度参数time要求的目标事件,生成目标事件表。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述结点的结点类型为EventStatement,则通过遍历所述结点的子结点,执行所述子结点的处理流程,获得各所述子结点的SQL表,并将所述SQL表保存在events列表中;
将所述events列表中的所有SQL表的内容用进行合并,生成第三转化数据。
6.一种面向流处理的金融欺诈建模语言的处理装置,其特征在于,所述装置包括:第一生成模块、第一判断模块、第二生成模块、第三生成模块和第三生成模块;
所述第一生成模块,用于根据使用金融欺诈建模语言FFML编写的欺诈检测规则,生成所述欺诈检测规则对应的FFML抽象语法树;
所述第一判断模块,用于通过遍历所述FFML抽象语法树中的各结点,判断所述结点的结点类型;
所述第二生成模块,用于若所述结点的结点类型为SingleEvent,则根据SingleEvent类型的结点的孩子结点的参数要求,从预设的数据流中筛选符合所述参数要求的事件,生成第一转化数据;
所述第三生成模块,用于根据所述第一转化数据,生成所述欺诈检测规则对应的SQL代码。
7.根据权利要求6所述的装置,其特征在于,所述第二生成模块,具体包括:第一访问子模块、第一确定子模块和第一生成子模块;
所述第一访问子模块,用于访问SingleEvent类型的结点的两个孩子结点,将第一个孩子结点的返回值保存为第一变量,将第二个孩子结点的返回值保存为第二变量;
所述第一确定子模块,用于根据所述第二变量,确定所述SingleEvent类型的结点定义的事件类型;
所述第一生成子模块,用于通过执行所述事件类型对应的处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
8.根据权利要求7所述的装置,其特征在于,所述第一确定子模块,具体包括:第一判断子模块、第二确定子模块和第三确定子模块;
所述第一判断子模块,用于判断所述第二变量为字符串还是列表;
所述第二确定子模块,用于若所述第二变量为字符串,则确定所述事件类型为简单独立事件;
所述第二确定子模块,用于若所述第二变量为列表,则确定所述事件类型为复杂序列事件;
所述第一生成子模块,具体包括:第二生成子模块和第三生成子模块;
所述第二生成子模块,用于当所述事件类型为简单独立事件时,通过执行所述简单独立事件对应的第一处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据;
所述第三生成子模块,用于当所述事件类型为复杂序列事件时,通过执行所述复杂序列事件对应的第二处理流程,从预设的数据流中筛选符合所述参数要求的目标事件,生成第一转化数据。
9.根据权利要求8所述的装置,其特征在于,所述第三生成子模块,具体包括:第一获取子模块、第四生成子模块和第五生成子模块;
所述第一获取子模块,用于从所述第二参数params中获取时间跨度参数time和事件序列参数events;
所述第四生成子模块,用于将事件序列参数events中各事件对应的表进行合并,生成合并表all_events,所述合并表all_events中包括事件的基本信息;
所述第五生成子模块,用于从所述合并表all_events中的事件中,选取符合所述时间跨度参数time要求的目标事件,生成目标事件表。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:执行模块和第四生成模块;
所述执行模块,用于若所述结点的结点类型为EventStatement,则通过遍历所述结点的子结点,执行所述子结点的处理流程,获得各所述子结点的SQL表,并将所述SQL表保存在events列表中;
所述第四生成模块,用于将所述events列表中的所有SQL表的内容用进行合并,生成第三转化数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110714151.3A CN113391793A (zh) | 2021-06-25 | 2021-06-25 | 一种面向流处理的金融欺诈建模语言的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110714151.3A CN113391793A (zh) | 2021-06-25 | 2021-06-25 | 一种面向流处理的金融欺诈建模语言的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391793A true CN113391793A (zh) | 2021-09-14 |
Family
ID=77624031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110714151.3A Pending CN113391793A (zh) | 2021-06-25 | 2021-06-25 | 一种面向流处理的金融欺诈建模语言的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391793A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023235073A1 (en) * | 2022-05-31 | 2023-12-07 | Mastercard International Incorporated | Identification of fraudulent healthcare providers through multipronged ai modeling |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224576A1 (en) * | 2005-04-04 | 2006-10-05 | Oracle International Corporation | Effectively and efficiently supporting XML sequence type and XQuery sequence natively in a SQL system |
CN103942719A (zh) * | 2013-01-17 | 2014-07-23 | 国际商业机器公司 | 采用个性化欺诈检测规则的欺诈检测方法和系统 |
US20140282444A1 (en) * | 2013-03-15 | 2014-09-18 | ArtinSoft Corporation | Programming language transformations with abstract syntax tree extensions |
CN105074717A (zh) * | 2013-01-16 | 2015-11-18 | 迈克菲公司 | 在网络环境中的恶意脚本语言代码的检测 |
CN108121701A (zh) * | 2017-12-26 | 2018-06-05 | 深圳市海派通讯科技有限公司 | 一种防骚扰的自动识别方法及其智能终端 |
US20180329878A1 (en) * | 2017-05-10 | 2018-11-15 | International Business Machines Corporation | Conversational authoring of event processing applications |
US20200082413A1 (en) * | 2018-09-11 | 2020-03-12 | Mastercard Technologies Canada ULC | Optimized execution of fraud detection rules |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
-
2021
- 2021-06-25 CN CN202110714151.3A patent/CN113391793A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224576A1 (en) * | 2005-04-04 | 2006-10-05 | Oracle International Corporation | Effectively and efficiently supporting XML sequence type and XQuery sequence natively in a SQL system |
CN105074717A (zh) * | 2013-01-16 | 2015-11-18 | 迈克菲公司 | 在网络环境中的恶意脚本语言代码的检测 |
US20150363598A1 (en) * | 2013-01-16 | 2015-12-17 | Mcafee, Inc. | Detection of malicious scripting language code in a network environment |
CN103942719A (zh) * | 2013-01-17 | 2014-07-23 | 国际商业机器公司 | 采用个性化欺诈检测规则的欺诈检测方法和系统 |
US20140282444A1 (en) * | 2013-03-15 | 2014-09-18 | ArtinSoft Corporation | Programming language transformations with abstract syntax tree extensions |
US20180329878A1 (en) * | 2017-05-10 | 2018-11-15 | International Business Machines Corporation | Conversational authoring of event processing applications |
CN108121701A (zh) * | 2017-12-26 | 2018-06-05 | 深圳市海派通讯科技有限公司 | 一种防骚扰的自动识别方法及其智能终端 |
US20200082413A1 (en) * | 2018-09-11 | 2020-03-12 | Mastercard Technologies Canada ULC | Optimized execution of fraud detection rules |
CN111309752A (zh) * | 2019-11-26 | 2020-06-19 | 上海金融期货信息技术有限公司 | 面向业务流式数据处理的领域特定语言组件及其运作方法 |
Non-Patent Citations (3)
Title |
---|
MICHAEL E. EDGE ET AL: "The design of FFML: A rule-based policy modelling language for proactive fraud management in financial data streams", EXPERT SYSTEMS WITH APPLICATIONS * |
王成;王昌琪;: "一种面向网络支付反欺诈的自动化特征工程方法", 计算机学报, no. 10 * |
王昌琪;: "基于滑动时间窗口的金融反欺诈检测应用", 电脑与电信, no. 12 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023235073A1 (en) * | 2022-05-31 | 2023-12-07 | Mastercard International Incorporated | Identification of fraudulent healthcare providers through multipronged ai modeling |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shi et al. | Incsql: Training incremental text-to-sql parsers with non-deterministic oracles | |
Simitsis et al. | Optimizing ETL processes in data warehouses | |
Kumar et al. | Design and management of flexible process variants using templates and rules | |
US11455306B2 (en) | Query classification and processing using neural network based machine learning | |
US20090144229A1 (en) | Static query optimization for linq | |
US7617230B2 (en) | Finding similarity among sets of coordinated tasks | |
CN113010547B (zh) | 一种基于图神经网络的数据库查询优化方法及系统 | |
CN109614413B (zh) | 一种内存流式计算平台系统 | |
CN101872449A (zh) | 一种客户信息筛选方法 | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
US20210034365A1 (en) | Method for task orchestrating, orchestrator, device and readable storage medium | |
CN116745758A (zh) | 使用基于神经网络的机器学习的智能查询编辑器 | |
CN101751385A (zh) | 一种采用层次管道过滤器体系结构的多语言信息抽取方法 | |
CN111176656B (zh) | 一种复杂数据匹配方法及介质 | |
Akila et al. | Complex event processing over uncertain events: Techniques, challenges, and future directions | |
CN115641092A (zh) | 实现数据核查计划导入自动生成逻辑核查的方法和系统 | |
CN113391793A (zh) | 一种面向流处理的金融欺诈建模语言的处理方法及装置 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
WO2022213345A1 (zh) | 一种代码段注释生成方法、系统及可读存储介质 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
Saini et al. | Domobot: An ai-empowered bot for automated and interactive domain modelling | |
CN113721896A (zh) | 一种金融欺诈建模语言的优化处理方法及装置 | |
CN115935943A (zh) | 一种支持自然语言结构计算的分析框架 | |
CN116450246A (zh) | 一种基于状态机的事件流转可配置方法 | |
CN115292347A (zh) | 一种基于规则的主动式sql算法性能检查装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |