CN111758098A - 利用遗传编程的命名实体识别和提取 - Google Patents
利用遗传编程的命名实体识别和提取 Download PDFInfo
- Publication number
- CN111758098A CN111758098A CN202080001341.4A CN202080001341A CN111758098A CN 111758098 A CN111758098 A CN 111758098A CN 202080001341 A CN202080001341 A CN 202080001341A CN 111758098 A CN111758098 A CN 111758098A
- Authority
- CN
- China
- Prior art keywords
- candidate
- data strings
- programs
- program
- population
- 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.)
- Granted
Links
- 230000002068 genetic effect Effects 0.000 title claims abstract description 86
- 238000000605 extraction Methods 0.000 title description 37
- 238000000034 method Methods 0.000 claims abstract description 80
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 48
- 238000009402 cross-breeding Methods 0.000 claims abstract description 38
- 230000035772 mutation Effects 0.000 claims abstract description 36
- 238000010353 genetic engineering Methods 0.000 claims abstract description 16
- 230000014509 gene expression Effects 0.000 claims description 106
- 230000006870 function Effects 0.000 claims description 58
- 230000015654 memory Effects 0.000 claims description 8
- 230000002829 reductive effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 abstract description 16
- 230000008569 process Effects 0.000 description 28
- 108090000623 proteins and genes Proteins 0.000 description 17
- 230000006399 behavior Effects 0.000 description 16
- 230000015572 biosynthetic process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 14
- 238000003786 synthesis reaction Methods 0.000 description 14
- 230000009471 action Effects 0.000 description 13
- 238000012549 training Methods 0.000 description 12
- 230000006798 recombination Effects 0.000 description 9
- 238000005215 recombination Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 239000000284 extract Substances 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
- G06F40/295—Named entity recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
Abstract
本文公开了使用遗传算法生成模式程序的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。遗传算法对表示将通过命名实体识别来识别或提取的数据类别的示例数据串进行操作。在初始化阶段,基于表示将通过命名实体识别来识别或提取的数据类别的示例数据串,生成初始模式程序。从初始模式程序开始,迭代地进行遗传操作以生成多代的后代模式程序。在每一轮遗传操作中,后代模式程序是通过交叉繁殖操作和变异操作生成的。
Description
背景技术
网络和存储子系统设计的进步继续使得能够在计算机系统之间和内部处理规模越来越大的数据流。同时,这种数据流的内容也受到越来越严格的审查。例如,个人数据的收集、分析和存储受到审查和监管。组织必须确保在严格的条件下合法收集个人数据。收集和管理个人数据的组织有义务保护其免受滥用和非法使用,并有义务尊重数据所有者的权利。个人数据或其它敏感数据包括但不限于姓名、出生日期、出生地点、身份证号码、家庭住址、信用卡号码、电话号码、电子邮件地址、URL、IP地址、银行帐号等。
从数据流中分类和提取个人数据或其它敏感数据涉及命名实体识别。通常,命名实体识别是一项信息提取任务,其旨在将文本中的原子元素识别和分类为预定义类别,例如个人名称、个人身份标识(诸如社会安全号码“SSN”或居民身份证号码等)、家庭地址、电子邮件地址、银行帐号、电话号码、信用卡号码等。这些预定义的数据类别称为“命名实体”或简称“实体”。实体通常遵循某些类型的句法模式。诸如正则表达式、确定型有限状态自动机(deterministic finite automata)或符号型有限状态自动机(symbolic finiteautomata)等程序用于指定数据流中的模式。然而,生成这样的程序通常涉及大量的专家编程工作,这样既效率低下,速度又慢。在大数据和基于云的服务时代,服务提供商或平台面临着在大量种类繁多的数据流类别中处理实体识别任务的需求,而这些无法通过手动编程来处理。
因此,需要有效地生成用于命名实体识别任务的程序。
发明内容
本文描述了使用遗传算法生成模式程序的技术。遗传算法对表示将通过命名实体识别来识别或提取的数据类别的示例数据串进行操作。这样的示例数据串称为“正示例”数据串。遗传算法还可以对负示例数据串进行操作,该负示例数据串表示并非正示例数据串的数据串,例如,不是命名实体识别任务的目标。在初始化阶段,基于表示将通过命名实体识别来识别或提取的数据类别的示例数据串,生成初始模式程序。从初始模式程序开始,迭代地进行遗传操作以生成多代的后代模式程序。在每一轮遗传操作中,后代模式程序是通过交叉繁殖操作和变异操作生成的。随机生成的模式程序中的一小部分会被添加到每一代后代模式程序中。适应度函数用于确定模式程序在每一代后代模式程序中的适应度得分。适应度得分用于过滤一代中的后代模式程序,从而使每一代后代模式程序的群体大小保持稳定。例如,每一代都包括相同数量的后代模式程序。在迭代遗传操作完成后,为命名实体识别任务选择适应度得分最高的模式程序。
如果遗传操作未能生成具有期望的提取行为的模式程序,则基于例如每个示例数据串的类型或长度,将示例数据串分类为两个或更多个子组。遗传操作是对示例数据串的每个子组并行进行的,每个子组都会生成相应的模式程序。多个模式程序通过“或”功能标签链接。
适应度函数包括与以下有关的一个或多个因子:(1)模式程序的简洁性;(2)模式程序在正示例数据串上的第一匹配率;(3)模式程序在负示例数据串上的第二匹配率;或(4)模式程序与正示例数据串之间的编辑距离。
遗传算法对数据串进行处理,每个数据串都精确地表示命名实体识别的目标数据类别。这些技术特征带来了宝贵的技术优势。首先,从遗传算法生成的模式程序将具有量身定制的提取行为,因为通过遗传算法对示例数据串中包含的良好“基因”进行了有效的捕获和延续。这样,生成的模式程序将正确检测并提取目标数据类别的数据串。此外,使用这种示例数据串还减少了处理过程中的人工输入和错误,因为不需要从非代表性数据串中手动识别命名实体。而且,模式程序的初始群体主要是,例如90%是从示例数据串生成的,这显著减少了实现令人满意的模式程序所需的迭代遗传操作量。在大数据和基于云的数据服务时代,节省计算资源对于管理大规模数据流至关重要。
此外,适应度函数考虑模式程序是否匹配负示例数据串,该负示例数据串不是命名实体识别任务的目标。因此,基于适应度函数选择的模式程序将规避通过负示例数据串表示的数据类别。因此,假阳性错误将显著减少,这使得命名实体识别任务的结果更加可靠和有意义。这样,本文的技术是有效且适合于在大规模数据流上执行命名实体识别任务。
本文还提供一个或多个非暂态计算机可读存储介质,其耦接到一个或多个处理器并具有存储在其上的指令,当由一个或多个处理器执行时,该指令使得一个或多个处理器根据本文提供的方法的实施例执行操作。
本申请还提供一种用于实现本文提供的方法的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当该指令由一个或多个处理器执行时,该指令促使一个或多个处理器执行根据本文提供的方法的实施例的操作。
应当理解,根据本文的方法可以包括本文描述的方面和特征的任意组合。即,根据本文的方法不限于本文具体描述的方面和特征的组合,而是还包括所提供的方面和特征的任意组合。
以下在附图和描述中阐述了本文的一个或多个实施方案的细节。通过描述和附图以及权利要求书,本文的其他特征和优点将显现。
附图说明
图1为示出了可用于执行本文的实施例的环境的示例的示图。
图2为示出了根据本文的实施例的操作的示例的示图。
图3为根据本文的实施例生成模式程序的示例程序生成模块。
图4示意性地示出了根据本文的实施例使用遗传算法生成模式程序的示例处理。
图5A示意性地示出了根据本文实施例的使用字节对编码生成候选模式程序的示例处理。
图5B示意性地示出了根据本文实施例的使用字节对编码生成候选模式程序的示例操作。
图6示意性地示出了根据本文的实施例使用遗传算法生成模式程序的另一示例处理。
在各个附图中相同的附图标记和名称表示相似的元件。
具体实施方式
本文描述了使用遗传算法生成模式程序的技术。遗传算法对表示将通过命名实体识别来识别或提取的数据类别的示例数据串进行操作。这样的示例数据串称为“正示例”数据串。遗传算法还可以对负示例数据串进行操作,该负示例数据串表示并非正示例数据串的数据串,例如,不是命名实体识别任务的目标。在初始化阶段,基于表示将通过命名实体识别来识别或提取的数据类别的示例数据串,生成初始模式程序。在一些实施例中,字节对编码技术用于从示例数据串中提取频繁子字符串,并且在生成初始模式程序时将提取的每个频繁子字符串视为单个表达单元。从初始模式程序开始,迭代地进行遗传操作以生成多代的后代模式程序。在每一轮遗传操作中,后代模式程序是通过交叉繁殖操作和变异操作生成的。随机生成的模式程序中的一小部分会被添加到每一代后代模式程序中。适应度函数用于确定模式程序在每一代后代模式程序中的适应度得分。在一些实施例中,适应度函数针对示例数据串的长度,例如示例数据串的平均长度,来评估模式程序的长度。适应度函数针对候选程序精确匹配的负示例数据串的第二数量,来评估与候选程序完全匹配的正示例数据串的第一数量。适应度函数针对候选程序与负示例数据串匹配的字符的第四数量,来评估候选程序与正示例数据串匹配的字符的第三数量。
适应度得分用于过滤一代中的后代模式程序,从而使每一代后代模式程序的群体大小保持稳定。例如,与父/母代或初始模式程序的群体相比,每一代都包括相同数量的后代模式程序或更少数量的后代模式程序。在一些实施例中,世代的群体大小呈指数衰减。在迭代遗传操作完成后,为命名实体识别任务选择适应度得分最高的模式程序。
如果遗传操作未能生成具有期望的提取行为的模式程序,则基于例如每个示例数据串的类型或长度,将示例数据串分类为两个或更多个子组。遗传操作是对示例数据串的每个子组并行进行的,每个子组都会生成相应的模式程序。多个模式程序通过“或”功能标签链接。
适应度函数包括与以下有关的一个或多个因子:(1)模式程序的简洁性;(2)模式程序在正示例数据串上的第一匹配率;(3)模式程序在负示例数据串上的第二匹配率;或(4)模式程序与正示例数据串之间的编辑距离。在一些实施例中,模式程序的简洁性不被评估为绝对简洁性,例如模式程序的绝对长度,而是被评估为相对于正示例数据串的平均长度的相对简洁性。例如,与具有远离正示例数据串的平均长度的长度的模式程序相比,具有更接近正示例数据串的平均长度的长度的模式程序,具有更高的适应度评分,无论其长度是更大还是更小。
本文不限于本文描述的任何特定实施例、方面、构思、结构、功能或示例。相反,本文描述的任何实施例、方面、构思、结构、功能或示例都是非限制性的,并且可以以通常在计算、编程和数据管理方面提供益处和优点的各种方式来应用本文。
图1是用于从例如命名实体识别的数据流中检测目标数据类别的数据串的操作环境100。环境100包括一个或多个用户110、服务提供商120以及数据流130的一个或多个源,以上均通过网络140相互通信或逻辑连接。用户110或服务提供商120中的每一个都是计算设备,例如个人计算机“PC”、服务器、路由器、网络PC、移动设备、对等设备或其它公共网络节点。网络140可以是一个或多个局域网(“LAN”)和/或一个或多个广域网(“WAN”)或者其它网络,其均配置为企业范围的计算机网络、企业内部网或互联网或其它网络应用。基于在环境100中的对应功能对用户110、服务提供商120或数据流130的源进行分类。用户110、服务提供商120或数据流130的源可以物理上驻留在相同的计算设备上或物理上分开的计算设备中。用户110、服务提供商120或数据流130的源可以属于相同的个体或法人实体,或者不同的个体或法人实体。例如,用户110可以是金融科技公司的业务部门,并且可以具有针对数据流130执行的敏感数据检测、识别和审查任务。服务提供商120可以是同一金融科技公司的技术服务部门或提供有关命名实体识别的服务的第三方服务提供商。
图2示出了环境100中各方之间的操作或交互的处理流程200的流程图。一起参考图1和图2,在示例操作210中,用户110向服务提供商120指定或提供示例数据串的初始集合。数据串包括一个或多个字母、字符、符号和/或其它表达元素的组合。示例数据串的初始集合包含精确表示用户110期望从数据流130中提取或识别的目标数据类别的示例。也就是说,示例数据串不包含除了所表示的目标数据类别之外的任何字符或数据位。
数据流130对于用户110而言可以是特定的,或者可以多个用户110共享或可适用于多个用户110。类似地,用户110可以使用两个或更多个数据流130。用户110针对每个数据流130可以具有相同或不同的命名实体识别任务。对于不同的数据流130,用户110可以提供示例数据串的不同初始集合。这样,用户110可以将命名实体识别任务提供给服务提供商120,服务提供商120指定适用的数据流130和示例数据串的对应初始集合。该任务还可以指定待识别的数据串的数据类别。指定的数据类别可能已经由示例数据串的初始集合表示,或者可能由本文进一步描述的示例数据串表示。例如,用户110可以要求从数据流130中识别出个人数据。示例个人数据包括人的姓名、出生日期、出生地点、身份证号码、家庭住址、信用卡号码、电话号码、电子邮件地址、URL、IP地址、银行账号等。在一些实施例中,用户110将个人数据的示例数据串提供给服务提供商120。个人数据的示例数据串可以包括多个类别的个人数据,例如电话号码、个人身份证号码、信用卡号码等。个人数据的示例数据串也可包括相同类别的个人数据的各种数据格式或模式格式。例如,示例电话号码可包括以下模式:
001.234.456.7899;
+1.234.456.7899;
1 234 456 7899;
(234)456 7899;
234 456 7899
在一些实施例中,示例数据串自身均准确地包含目标数据类别。在一些实施例中,所提供的示例数据串中的至少一些示例数据串均包含表示目标数据类别的第一片段和不表示目标类别的第二片段。第二片段可提供用于识别第一片段集合中所包含的目标数据类别的上下文。用户110可以将第一片段识别为表示目标数据类别。用户110也可以为服务提供商指定命名实体识别任务,以将第一片段识别为表示目标数据类别。在一些实施例中,示例数据串也可包括表示不是用户110的命名实体识别任务的目标的数据类别的数据串。在本文的描述中,“正示例数据串”是指表示目标数据类别的示例数据串。“负示例数据串”是指表示不是命名实体识别任务的目标的数据类别的示例数据串。
在示例操作220中,程序生成模块122基于用户110使用遗传算法提供的示例数据串生成命名实体识别程序。生成的命名实体识别程序表示目标数据类别的句法数据模式,并且出于描述的目的在本文中称为“模式程序”。模式程序可以是正则表达式、确定型有限状态自动机(“DFA”)、符号型有限状态自动机(“SFA”)或表示句法数据模式的其它合适程序的形式。在一些实施例中,通过由服务提供商120的程序生成模块122实施的遗传算法来生成模式程序。在本文的描述中,正则表达式用作示例模式程序以说明服务提供商120和/或程序生成模块122的操作。
在一些实施例中,程序生成模块122执行初始化操作、合成操作和确认操作。在初始化操作中,获得候选程序的初始群体。在一些实施例中,基于正示例数据串获得初始候选程序中的大多数。例如,对于每个正示例数据串,获得一个或多个候选正则表达式,其提取行为与正示例数据串表示的目标数据类别一致。应当理解的是,对于每个目标数据类别,可以生成多个正则表达式。在一些实施例中,一些候选程序是随机生成的。基于正示例数据串获得的候选程序的数量与随机生成的候选程序的数量之间的比率为初始化操作的参数,该参数可以被调整。在一些实施例中,该比率为9:1,使得在遗传操作中容易捕获并延续所期望的正示例数据串的提取行为或良好“基因”。候选正则表达式的初始群体的群体大小,例如候选正则表达式的总数量,为初始化操作的另一可调参数。
在合成操作或遗传操作中,初始候选程序通过遗传算法的操作而进化。遗传算法以迭代的方式实现。在每一轮进化中,父/母群体中的候选程序被合成以创建候选程序的子代。合成操作可以包括交叉繁殖操作和变异操作。由交叉繁殖操作生成的子候选程序与由变异操作生成的子候选程序之间的比率是合成操作的参数,该参数可以被调整。在一些实施例中,该比率为大约9:1,并且可以将其调整为大于或小于9:1。候选程序均通过适应度函数进行评估以确定适应度得分。适应度得分表示模式程序的提取行为与由在适应度得分计算中使用的示例数据串或其它数据串表示的目标数据类别一致的程度。在一些实施例中,用于生成初始候选程序的示例数据串也用于计算初始候选程序或子候选程序的适应度得分。在一些实施例中,用户110提供的示例数据串被分为两组。一组示例数据串用于生成初始候选程序,另一组示例数据串用于计算候选程序的适应度得分。后一种方法可能有助于避免过度适应的问题(如果有的话)。在本文的描述中,出于说明的目的,用于生成初始候选程序的示例数据串也用于计算候选程序的适应度得分,这并不限制本文的范围。
在一些实施例中,候选程序的适应度得分会影响其在下一轮进化中的使用(如果有的话)。例如,可以基于现有候选程序的适应度得分来选择候选程序的新父/母群体。例如,适应度得分较低的候选程序可以因“不适合”成为下一代进化的父母而被过滤掉。在某些示例中,候选程序被选择用于进行交叉繁殖和/或变异的概率取决于候选程序的适应度得分。例如,适应度得分较高的候选程序在交叉繁殖操作中与另一候选程序配对的概率更高。适应度得分较高的候选程序通常被选择用于变异操作的概率也较高,尽管变异操作的概率变化不如交叉繁殖操作的概率变化显著。
在一些实施例中,仅从最新一代的子候选程序中选择新的父/母程序群体。在一些实施例中,新的父/母程序群体是基于适应度得分从所有现有候选程序池中选择的。例如,选择适应度得分较高的现有候选程序形成新的父/母程序群体。在本文的描述中,“父/母代”候选程序是指用于在合成操作下生成新的候选程序的一代候选程序;“子代”候选程序是指从合成操作中生成的一代候选程序。如果整个最新子代的群体都用于下一轮遗传操作,则最新子代候选程序可能与新的父/母代候选程序正好重叠。“一代”候选程序作为适用于子代或父/母代候选程序中的任一代而使用。
在一些实施例中,候选程序的生成也包括随机生成的候选程序的百分比,例如在5%至15%之间的范围内。将通过遗传操作生成的候选程序与随机生成的候选程序混合确保了“良好基因”可以逐代维持下去,并引入新的“增强基因”。因此,候选程序的适应度得分通常是逐代地提升的。当候选程序的适应度得分达到第一阈值或总进化轮数达到第二阈值时,合成操作随即完成。在合成操作完成之后,选择适应度得分最高的候选程序作为要在命名实体识别任务中使用的最终模式程序。最终程序可以不必从上一代候选程序中选择。最终程序可以从任一代候选程序中选择。
适应度函数可以具有各种形式和标准,所有形式和标准均包含在本文的范围内。在一些实施例中,适应度函数包括与以下有关的因子:候选正则表达式的简洁性,例如,候选表达式的长度;候选正则表达式在正示例数据串上的第一匹配率;候选正则表达式在负示例数据串上的第二匹配率;或候选正则表达式与示例数据串之间的编辑距离。
第一匹配率计算为100%匹配候选正则表达式的正示例数据串的数量与正示例数据串的总数之比。第二匹配率计算为100%匹配候选正则表达式的负示例数据串的数量与负示例数据串的总数之比。编辑距离确定为将提取的数据串转换为正示例数据串中所包含的目标数据类别的最小编辑数。例如,在一些实施例中,被候选正则表达式的提取行为匹配的示例数据串中的字符和被候选正则表达式的提取行为忽略的示例数据串中的字符被分析,以确定候选正则表达式的编辑距离。
在示例操作230中,提取模块124使用程序生成模块122生成的正则表达式从数据流130中提取目标数据类别。具体地说,提取模块124在数据流130中找到与正则表达式表示的模式匹配的数据串。在一些实施例中,百分比匹配阈值可用于实施提取操作。例如,如果数据流130中的数据串包括以大于55%的百分比与正则表达式匹配的字符或片段,则提取模块124将该数据串提取为属于目标数据类别。百分比匹配阈值可以基于命名实体识别任务的配置,例如,用户110所指定的针对假阳性或假阴性的容限来调整。
在示例操作240中,将提取的或识别的数据串提供给用户110。用户110可以检验所提供的提取结果,可以确认正确的提取,并且可以识别错误的提取,例如,假阳性或假阴性。
在学习操作250中,用户110将正确的提取和/或错误的提取作为训练集合提供给服务提供商120以调整合成操作。例如,在训练候选程序时,将假阳性提取用作附加的负示例数据串。可提供假阴性结果,即目标数据类别中没有被正则表达式提取的数据串,作为附加正示例数据串。利用附加示例数据串,可以重新计算候选程序在各代进化中的得分。这改变了合成操作的过程和结果。在一些实施例中,合成操作不会在其启动点处进行调整,而是在进化过程的中间一代开始对其进行训练。在一些实施例中,仅针对在进化过程中已生成的所有候选程序重新计算适应度得分,即,无需进一步的合成操作,从而使得重新计算的适应度得分可能导致选择不同的候选程序作为最终程序,而没有生成新的候选程序。附加负示例数据串或附加正示例数据串的其它用途也是可行的,并且包括在本文的范围内。例如,可以使用与操作220中初始使用的策略不同的策略来生成初始候选模式程序。结果,生成了新的正则表达式,其适应度得分比先前在操作240中使用的正则表达式的适应度得分更高。新的正则表达式和先前的正则表达式的适应度得分是使用相同的示例数据串计算的,例如,使用初始示例数据串的初始集合和附加示例数据串中的至少一个计算。
在一些实施例中,可以在学习操作250中调整遗传算法的参数。例如,可以基于用户110对提取结果的反馈来调整根据正示例数据串生成的候选程序与随机生成的候选程序之间的比率。例如,如果假阴性由初始正示例数据串表示,则学习处理可能会降低随机生成的候选程序在遗传操作中的百分比,从而在由遗传操作生成的正则表达式中更好地表示正示例数据串的“基因”。
图3为示例程序生成模块122。程序生成模块122包括初始化单元310、随机程序生成单元320、合成单元330、适应度测量单元340、控制器350和学习单元360。初始化单元310包括示例分组单元312、初始程序生成单元314和解析树单元316。初始程序生成单元314包括频繁子字符串确定单元315。合成单元330包括交叉繁殖单元332和变异单元334。控制器350包括调整单元352。
在一些实施例中,程序生成模块122及其中的各个单元是专用于各个功能和操作的计算机可执行指令。该可执行指令包括例程、程序、对象、分量和数据结构,其在由处理器执行时使处理器能够执行特定任务或实现特定抽象数据类型。程序生成模块122的各个单元可以驻留在同一计算设备上或者可以驻留在分布式计算环境中一起发挥作用的多个计算设备上。在分布式计算环境中,程序生成模块122的各个单元可以存储在包括计算机存储设备的本地或远程计算机存储介质中。
在本文中进一步描述了程序生成模块122中各个软件单元的操作和功能。
图4示出了程序生成模块122基于用户110提供的示例数据串生成正则表达式的示例处理400。在一些实施例中,示例数据串包括正示例数据串和负示例数据串。每个正示例数据串精确地包含示例目标数据类别,例如示例出生日期、示例社会安全号码、示例居民身份证号码、示例银行帐号等。使用示例目标数据类别本身作为正示例数据串将简化遗传算法的操作,并有助于在进化过程中延续示例目标数据类别的“良好基因”。每个负示例数据串都不包含目标数据类别。在一些实施例中,一些负示例数据串是反示例,其表示目标数据类别的一般特征的例外。例如,尽管数据串“10.26.2050”似乎遵循出生日期的数据格式,但是由于在操作时,没有人出生在2050这个年份,因此该数据串可以用作出生日期的反示例。在一些实施例中,每个反示例数据串精确地包含目标数据类别的反示例,而没有任何其它/附加字符。包含这样的反示例使得能够在遗传操作的进化过程中避免的“劣质基因”。可以将反示例数据串与其它负示例数据串分开识别或分类。在一些实施例中,从用户110初始接收的示例数据串不包括任何负示例数据串。在一些实施例中,从用户110接收的示例数据串仅包括正示例数据串和反示例数据串,并且不包括其它负示例数据串。
出于说明的目的,通过基于示例数据串生成正则表达式的示例任务来描述示例处理400。在示例动作410中,初始化单元310获得候选正则表达式的初始群体,出于描述目的,将该初始群体称为零代G0。示例动作410包括子动作412、414和418。在子动作412中,可选地,示例分组单元312可以将现有的示例数据串初始分组为初始组,其目标是同一初始组中的示例数据串共享将由同一正则表达式表示的特定模式特征。例如,可以基于示例数据串的字符分类,例如,示例数据串是否包含没有数字的单词字符、示例数据串是否包含没有单词字符的数字、或者示例数据串是否包含混合的数字和单词字符,进行初始分组。初始分组也可以考虑单词字符的自然语言,例如单词字符是中文、英文、日文还是韩文。初始分组也可以考虑单词字符的语系,例如,单词字符属于凯尔特语、意大利语、汉语、日耳曼语、斯拉夫语还是其它语系。初始分组也可以考虑由示例数据串表示的相关目标数据类别。例如,出生日期的示例数据串可能包含不同的格式,例如“mm-dd-yy”;“mm/dd/yy”;“dd-mm-yyyy”;“yyyy.mm.dd”;或其它格式。包含不同格式的出生日期信息的示例数据串被分组在一起。初始分组也可以考虑示例数据串的长度。
在一些实施例中,示例分组单元312为每组示例数据串分配权重。权重可能会影响候选程序在适应度得分和匹配率方面的分析。权重也可能影响每组示例数据串在遗传操作中的实际使用量。在操作220的遗传操作中或学习操作250中,分配给每组示例数据串的权重是动态可调的。为不同组的示例数据串分配权重有助于确保更重要的目标数据类别具有在遗传算法生成的正则表达式中表示的优先权。
在一些实施例中,程序生成模块122进行操作以针对由正示例数据串表示的所有目标数据类别生成单个正则表达式。示例数据串的分组并不一定导致对每组示例数据串分别进行遗传操作。然而,基于遗传操作的最终或中间结果,可以调整示例数据串的分组,并且可以相应地调整遗传操作,这在本文中会详细描述。
在一些实施例中,省略了子动作412中的初始分组操作。程序生成模块122默认情况下将先尝试生成能够提取由示例数据串表示的所有目标数据类别的单个正则表达式。示例分组单元312可以基于稍后在本文中详细描述的调整单元352在遗传算法的操作中的输入或反馈对示例数据串进行分组。
在子动作414中,初始程序生成单元314与随机程序生成单元320协调以生成候选正则表达式的初始群体,其也称为“候选程序”。具体地,在一些实施例中,初始程序生成单元314基于正示例数据串生成候选正则表达式。随机程序生成单元320随机生成候选正则表达式。在一些实施例中,基于正示例数据串生成的候选正则表达式的数量与随机生成的候选正则表达式的数量之间的比率维持在约1:7至约1:10之间的范围内。在一些实施例中,基于正示例数据串生成的候选正则表达式的数量与随机生成的候选正则表达式的数量之间的比率为1:9。在一些实施例中,该比率由控制器350控制。实验数据表明,这样的比率范围有助于确保最终的正则表达式表现出与示例数据串的提取行为一致并进一步从示例数据串的提取行为扩展的提取行为。在一些实施例中,初始群体中的所有候选正则表达式都是随机生成的,并且用户110提供的示例数据串被用于本文所述的遗传操作420、430。
正则表达式通常在描述其所表示的模式的字符串中进行描述。正则表达式可以包含以下中的一个或多个元素:诸如\a\的文字;诸如\[a-z]\的字符范围;诸如\[^a-z]\的反向字符范围;诸如\a[bc]\的级联;诸如\a?\的选项操作符;诸如\a*\的星号操作符;诸如\a+\的加号操作符;诸如\a??\、\a?\、\a+?\的非穷尽操作符;诸如\a|b\的交替操作符;或诸如\(ab)\的捕获组操作符。
对于正示例数据串中的至少一些数据串,基于其中的每一个生成两个或更多个候选正则表达式。作为说明性示例,“175.8”的示例数据串可以由以下的正则表达式表示:
r:=\d\d\d\.\d;或
r:=\d+\.\d.;或
r:r:=\[0-2]\d\d\.\d
此外,针对不同的正示例数据串生成的候选正则表达式可以重叠。可以将重叠的正则表达式从初始群体中过滤掉,或者可以将其保留在初始群体中以增加以下可能性:此类候选正则表达式或“基因”的提取行为在初始群体中被恰当地表示,并在进化过程中被充分延续。
在一些实施例中,通过使用语法树来构造所有候选正则表达式,其中叶子节点是从终点集合中选择的基本正则表达式单元,并且非叶子节点代表包括级联操作和匹配操作的操作符。终点集合可以包括:
(1)字母常量,例如“a”、“b”、…“y”、“z”、“A”、“B”、…“Y”、“Z”等;
(2)数字常量,例如“0”、“1”、…“8”、“9”等;
(3)符号常量,例如“:”、“;”、“\”、“\\”、“/”、“?”、“@”等;
(4)字母范围和数字范围,例如“a-z”、“A-Z”、“0-9”等;
(5)通用字符类,例如“\w”、“\d”等;
(6)通配符,例如“.”;
(7)其他
功能集合可以包括:
(1)级联操作符“t1t2”;
(2)组操作符“(t1)”;
(3)列表匹配操作符“[t1]”,以及列表不匹配操作符“[^t1]”;
(4)匹配一个或多个操作符“t1++”;
(5)匹配零个或多个操作符“t1*+”;
(6)匹配零个或一个操作符“t1?+”;
(7)匹配最小最大操作符“t1{n,m}+”,n为最小,m为最大;
(8)其他。
在一些实施例中,在基于正示例数据串生成正则表达式的初始群体时,考虑了各种策略。例如,策略可能对简化的正则表达式的喜好超过复杂的正则表达式。策略可以尝试减少或增加正则表达式中使用的功能标签或功能标签的类型。这些策略会影响通过遗传操作生成的最终正则表达式,这可以在学习操作250中进行调整。
在一些实施例中,候选正则表达式的初始群体的群体大小大于正示例数据串的总数量。例如,群体大小约为正示例数据串的数量n的1.5-2倍。
在一些实施例中,在子动作414的步骤415中,初始程序生成单元314基于字节对编码技术在初始群体中生成至少一些候选正则表达式。例如,示例数据串的公共连续字节对或公共集或字符被识别,并在生成初始群体的候选正则表达式时被视为单个单元。在本文的描述中,连续字节对或连续字符集可互换使用,并且出于描述目的在本文中称为子字符串。例如,在语法树的叶子节点中,公共连续字节对被表示为单个表达单元。可以将这样的公共连续字符集视为表示示例数据串的良好“基因”。通过将连续字符集而不是其多个字符保持为单个单元,在遗传算法的操作中,通过生成正则表达式来维护良好“基因”。结果,大大减少了遗传算法的运行时间。
在一些实施例中,通过使用字节对编码(“BPE”)从正示例数据串中提取频繁连续字符集。在一些实施例中,频繁连续字符集的粒度由训练时期(epoch)的超参数控制。在一些实施例中,设置频率阈值以确定连续字符集在正示例数据串中是否足够通用,使得连续字符集被识别为频繁连续字符集。下面的算法1是使用Python语言对BPE进行编码的示例。其他编程语言,例如C++、Java、Fantom,也可以实现BPE操作。
图5A示出了步骤415的示例过程。参照图5A,在示例动作510中,频繁子字符串确定单元315对正示例数据串进行分段以获得子字符串。在一些实施例中,获得连续字符的随机组合作为子字符串。在一些实施例中,规则被应用于从示例数据串获得子字符串。例如,一条规则可以规定,只有逻辑上或语言上有意义的字符集才能作为子字符串被获得。在一些实施例中,子字符串是通过随机分段和规则应用获得的。作为说明性示例,对于字符串“low”,可以获得子字符串“lo”、“ow”和“low”。
在示例动作520中,频繁子字符串确定单元315从子字符串中确定频繁子字符串。在一些实施例中,基于正示例数据串中子字符串的出现次数,计算子字符串的频率值。频率值可以计算为:
其中P表示频率,m表示所有正示例数据串中子字符串出现的次数,并且N表示正示例数据串的总数。可以设置阈值频率值。如果子字符串的频率值等于或高于阈值频率值,则将该子字符串确定为频繁子字符串。在一些实施例中,可以在确定频繁子字符串时应用规则。例如,规则可以向针对逻辑或语言上有意义的子字符串计算的频率值分配更高的权重。确定频繁子字符串的其他方式也是可能的,并且包括在本文的范围内。
在示例动作530中,初始程序生成单元314基于正示例数据串来生成候选正则表达式,其中将每个识别出的频繁子字符串视为单个表达单元。例如,所识别出的频繁子字符串将不会在正则表达式(regex)中进一步解析。图5B示出了用于对示例数据串进行的步骤415的示例操作以进行说明。参照图5B,字符串“low”、“low”、“newest”、“widest”包括所识别的频繁子字符串“lo”或“est”。在生成的正则表达式和语法树中,频繁子字符串“lo”和“est”分别表示为单个单元。其他单词字符,“low”中的“w”;“lower”中的“w”、“e”、“r”;“newest”中的“n”、“e”、“w”;“widest”中的“w”、“i”、“d”,分别由公共字符类“\w”表示,以表示单个单词字符。
在一些实施例中,在子动作414的步骤416中,适应度测量单元340针对初始群体中每个候选正则表达式计算适应度得分。适应度测量单元340可以使用各种合适的适应度算法来计算适应度得分,这些都包括在本文的范围内。在一些实施例中,适应度测量单元340使用以下算法来计算适应度得分:
其中,ti表示正示例数据串;n为正示例数据串的总数量;si表示包含在作为目标数据类别的正示例数据串ti中的片段;R(ti)表示通过正则表达式从正示例数据串ti中提取的片段;d(x1,x2)表示数据串/片段x1、x2之间的编辑距离;l(R)表示正则表达式的长度;p+表示正则表达式与正示例数据串匹配的比率,例如,R(ti)=si;p-表示正则表达式与负示例数据串匹配的比率;以及α、β、γ为常数,其可以由控制器350调整。在一些实施例中,ti=si,这是因为正示例数据串正好表示目标数据类别。应当理解的是,尽管候选正则表达式的初始群体中的很大一部分中的每个都是直接从一个或多个正示例数据串中直接生成的,但是其各自可能无法提取其它的正示例数据串。应当理解的是,用于计算适应度得分的数据串可以是与用于生成初始候选程序的数据串不同的数据串集合或组。
在一些实施例中,n可以是所有示例数据串的数量;ti表示示例数据串;si表示包含在作为目标数据类别的示例数据串ti中的片段,而针对不包含目标数据类别的负示例数据串,si=0;R(ti)表示通过正则表达式从示例数据串ti中提取的片段;d(x1,x2)表示数据串/片段x1、x2之间的编辑距离。
在一些实施例中,基于用户110的容错度来调整β、γ。例如,如果用户110朝着假阳性的超过假阴性的趋势进行平衡,则β将增加。如果用户110朝着假阴性的超过假阳性的趋势进行平衡,则γ将增加。
在一些实施例中,可以将为一组示例数据串分配的权重引入到适应度函数中。
其中,wi为示例数据串ti的权重,该权重等于分配给ti所属的组的权重;wj是分配给示例数据串组j的权重;p+j是正则表达式与组j的正示例数据串匹配的比率;p-j是正则表达式与组j的负示例数据串匹配的比率;m是示例数据串组的总数量。
在一些实施例中,适应度函数被视为多目标函数,以解决访问候选正则表达式的适应度得分的多个因素。例如,适应度函数定义满足的正则表达式应与更多的正示例数据串和更少的负示例数据串匹配。另外,从示例数据串中包含的单个字符的角度来看,满足的正则表达式应更多地与正示例数据串中的字符匹配,而更少地与负示例数据串中的字符匹配。此外,还评估候选正则表达式的长度。在一些实施例中,相对于正示例数据串的长度来评估正则表达式的长度。长度与正示例数据串相似的正则表达式的适应度得分更好。在一些实施例中,将候选正则表达式的长度与正示例数据串的平均长度进行比较。可以将平均长度确定为正示例数据串的长度的平均值、中值、众数或任何其他平均值。在一些实施例中,适应度测量单元340使用以下算法来计算候选正则表达式的适应度得分:
fitness(r)=α*Ps+β*Pc+lscore (5),
其中,P表示正示例数据串,N表示负示例数据串,len()表示字符串或正则表达式的长度,count(r,i)表示与正则表达式r匹配的示例数据串i中的字符数量,k表示正示例数据串的总数量;α和β表示可调常数。常数α和β的值可以基于特定遗传算法或命名实体提取任务来调整。
适应度函数(2)、(3)和(5)可以组合使用。此外,可以以各种方式重新组合适应度函数(2)、(3)和(5)的分量。例如,算法(2)可以被修改为包括将l(r)替换为lscore以生成:
在子动作418中,解析树单元316解析初始G0代中的每个候选正则表达式。候选正则表达式中的至少一些被解析为两个或更多个分量。在一些实施例中,解析树用于表示被解析为两个或更多个分量的正则表达式。在一些实施例中,符号型有限状态自动机用于表示被解析为两个或更多个分量的正则表达式。表示所解析的正则表达式和/或所解析的正则表达式的两个或更多个分量之间的对应关系的其它方法也是可行的,并且包括在本文的范围内。在本文的描述中,以解析树为例来说明程序生成模块122的操作,这并不限制本文的范围。
在一些实施例中,解析树是基于选区的解析树,其包括终点节点和非终点节点。解析树的叶子节点(终点节点)都标记有终点标签,表示已经被解析的正则表达式的分量。每个叶子节点都不具有任何子节点,并且无法进一步扩展。当叶子节点级联在一起时,获得候选正则表达式。解析树的每个内部或非叶子节点(非终点节点)都标记有非终点标签。非终点标签可以包括占位符标签c和功能标签。内部节点的直系子节点必须遵循语法中功能标签的生成规则的模式。占位符标签c指示关联子节点的“位置”。功能标签指示位置c的功能关系或多个位置c之间的功能关系。例如,(c1c2)指示与两个占位符c1、c2关联的子节点是级联的;c指示与占位符c关联的子节点是反向的。在一些实施例中,使用字符串转换方法形成解析树。内部节点的字符串转换是通过将占位符c替换为与该占位符c关联的子节点的字符串转换结果来实现的。基于正则表达式形成解析树的其它方法也是可行的,并且包括在本文的范围内。
在示例动作420中,合成单元330合成父/母Gp代候选程序中的候选程序,以生成子Gp+1代候选程序。合成操作包括对父/母代候选程序进行交叉繁殖和变异操作。交叉繁殖操作通过重新组合两个或更多个父/母候选程序的分量或基因值,将两个或更多个父/母候选程序交织到两个或更多个新候选程序中,以生成“子”候选程序,每个“子”候选程序均包括来自每个父母候选程序的分量。例如,在将父/母候选程序表示为解析树的情况下,可以将父/母解析树的子树或分支重新组合以生成子解析树。变异操作会更改父/母候选程序的一个或多个分量或者基因值,以生成子候选程序。例如,在将父/母候选程序表示为解析树的情况下,可以用随机生成的子树或分支来替换解析树的子树或分支以生成子候选程序。变异操作的功能是为了提高候选程序群体的多样性。
在一些实施例中,在为变异和交叉繁殖操作选择候选程序时,会考虑候选程序的适应度得分。例如,对于交叉繁殖操作而言,候选程序被选择为与另一候选程序配对的机会可与其适应度得分一致。也就是说,适应度得分较高的候选程序与适应度得分较低的候选程序相比,在交叉繁殖操作中与另一候选程序配对的机会更高。这样,可以将“良好基因”,例如合适的提取行为,延续到下一代。在一些实施例中,与选择为用于交叉繁殖操作相比,适应度得分较低的候选程序被选择为用于变异操作的概率更高。这增加了将“良好基因”引入候选程序群体的机会。在一些实施例中,适应度得分较高的候选程序与适应度得分较低的候选程序相比,会具有更高的概率被选择为用于变异操作。
在一些实施例中,子Gp+1代候选程序也包括一小部分由随机程序生成单元320随机生成的候选程序。
在一些实施例中,子Gp+1代候选程序具有与父/母Gp代候选程序数量相同的候选程序。在合成操作初始生成的候选程序多于所需数量的情况下,通过其适应度得分对生成的候选程序进行过滤。适应度得分较低的候选程序被滤除,直到子Gp+1代候选程序与父/母Gp代具有相同的群体大小为止。
在一些实施例中,子Gp+1代候选程序包括通过交叉繁殖操作生成的候选程序的第一子集;通过变异操作生成的候选程序的第二子集;以及随机生成的候选程序的第三子集。在一些实施例中,在每个子集包含的候选程序的数量中,候选程序的第一子集、第二子集和第三子集之间的比率在除初始代G0以外的所有代候选程序中保持基本相同。例如,第一子集、第二子集和第三子集之间的比率在3:1:1与18:1:1之间的范围内。可以通过由交叉繁殖操作、变异操作或随机操作各自生成的候选程序的数量来控制该比率的大小。该比率的大小也可以通过有选择性地滤除每个子集中适应度得分较低的候选程序来控制。
在一些实施例中,通过交叉繁殖操作生成的候选程序的第一子集与通过变异操作生成的候选程序的第二子集之间的比率是基于对示例数据串的初始分析来确定的。例如,在示例数据串更均匀的情况下,诸如在示例数据串的长度或由示例数据串表示的数据类别等方面,第一子集的大小将增加。在示例数据串更混杂的情况下,第二子集的大小将增加。
在示例子动作422中,交叉繁殖单元332进行交叉繁殖操作。如本文所用示例中所示,候选程序为正则表达式,并且每个正则表达式均表示为解析树,该解析树是适于交叉繁殖操作的数据结构。可以通过对配对的父/母程序的分量进行重新组合的各种方式来进行交叉繁殖操作。例如,可以使用单点交叉繁殖、两点交叉繁殖(或k点交叉繁殖)或均匀交叉繁殖中的一种或多种交叉繁殖。此外,可以在交叉繁殖操作中考虑解析树的功能标签。例如,部分匹配的交叉繁殖、循环交叉繁殖、顺序交叉繁殖、基于顺序的交叉繁殖、基于位置的交叉繁殖、投票重组交叉繁殖、交替位置交叉繁殖或序列构造交叉繁殖中的一种或多种交叉繁殖可以被用于适当处理解析树中的功能标签。
在一些实施例中,对于表示为解析树的配对候选程序,随机选择解析树的子树/分支以在交叉繁殖操作中进行重新组合。即,当选择内部节点时,所选择的内部节点下的整个分支,即内部节点下的所有子节点,都用于在交叉繁殖操作中进行重新组合。在一些其它实施例中,解析树的节点是随机选择的,并且只有所选择的节点用于在交叉繁殖操作中进行重新组合。所选择的节点的子节点(如果有的话)将不会用于重新组合。
在一些实施例中,只有解析树的叶子节点(或终点节点)可能被选择用于在交叉繁殖操作中进行重新组合。叶子节点是随机选择的,或者是基于某些限制选择的。例如,叶子节点被选择的机会与解析树的叶子节点和根节点之间的距离有关。在一些实施例中,距离根节点位置较远的叶子节点,例如其间的更多内部节点,被选择用于重新组合的机会较高。在一些其它实施例中,距离根节点位置较远的叶子节点被选择用于重新组合的机会较低。
在一些实施例中,内部节点被选择用于进行重新组合的机会与内部节点的高度有关,例如,与内部节点和内部节点下的叶子节点之间的最长距离有关。例如,高度较大的内部节点可能更有可能被选择用于进行重新组合。又如,高度较大的内部节点可能不太可能被选择用于进行重新组合。
在解析树中选择用于进行重新组合的节点的其它方法也是可行的,并且包括在本文的范围内。在一些实施例中,如本文所述,可以由控制器350来配置和调整选择用于进行重新组合的候选程序的分量的方法。
在示例子动作424中,变异单元334对为了进行变异操作而选择的候选程序进行变异操作。如本文所用示例中所示,候选程序是正则表达式,并且每个正则表达式均表示为解析树,所述解析树是适于变异操作的数据结构。可以通过控制器350控制的各种方式进行变异操作,这些均包括在本文的范围内。例如,可以使用位串变异、翻转位变异、边界变异、非均匀变异、均匀变异、高斯变异或收缩变异中的一种或多种变异。
在一些实施例中,对于表示为解析树的候选程序,随机选择解析树的子树/分支以进行变异操作。随机生成的子树或分支将替换所选的子树。即,当选择内部节点时,所选择的内部节点下的整个分支,即内部节点下的所有子节点,都由变异操作中的另一子树替换。在一些其它实施例中,解析树的节点是随机选择的,并且只有所选择的节点由另一随机生成的节点替换。例如,可以用随机生成的功能标签替换非终点标签的功能标签。所选节点的子节点(如果有的话)将不会用于变异。
在一些实施例中,只有解析树的叶子节点(或终点节点)被选择用于变异。叶子节点是随机选择的,或者是基于某些限制选择的。例如,叶子节点被选择的机会与解析树的叶子节点和根节点之间的距离有关。在一些实施例中,距离根节点位置较远的叶子节点,例如其间的更多内部节点,被选择用于变异的机会较高。在一些其它实施例中,距离根节点位置较远的叶子节点被选择用于变异的几率较低。
在一些实施例中,内部节点被选择用于变异的机会与内部节点的高度,例如,内部节点与内部节点下的叶子节点之间的最长距离有关。例如,高度较大的内部节点可能更有可能被选择用于变异。又如,高度较大的内部节点可能不太可能被选择用于变异。
在解析树中选择用于变异操作的节点的其它方法也是可行的,并且包括在本文的范围内。在一些实施例中,如本文所述,可以由控制器350来配置和调整选择用于变异的候选程序的分量的方法。
在示例子动作426中,随机程序生成单元320随机生成用于Gp+1代的候选程序。
在示例动作430中,适应度测量单元340获得针对候选程序的适应度得分。在一些实施例中,可以使用同一适应度函数,如函数(2)、(3)、(5)或(9),来获得Gp代父/母候选程序、Gp+1代子候选程序和G0代初始候选程序的适应度得分。在一些实施例中,可以使用不同的适应度函数。在一些实施例中,适应度函数包括与以下中的一个或多个因子有关的因子:候选正则表达式的简洁性,(例如,候选正则表达式的长度);候选正则表达式在正示例数据串上的第一匹配率;候选正则表达式在负示例数据串上的第二匹配率;或候选正则表达式与示例数据串之间的编辑距离。
在示例子动作432中,可选地,适应度测量单元340基于新候选程序的适应度得分过滤新候选程序。例如,可以从Gp+1代候选程序的群体中去除适应度得分较低的新候选程序。在一些实施例中,针对新候选程序的第一子集、第二子集和第三子集单独进行过滤操作,从而维护新候选程序的第一子集、第二子集和第三子集之间的比率大小。
将动作420、430一起称为一轮遗传操作或进化。遗传操作是迭代地进行的,每轮遗传操作或进化都会生成新一代的候选程序。控制器350可以设置完成或终止迭代遗传操作的阈值条件。例如,阈值条件包括迭代总数达到阈值数或候选程序的适应度得分达到阈值适应度得分。阈值条件也可以包括一轮遗传操作不会产生新收益(benefits)。新收益包括适应度得分,无论是个体得分还是平均得分都得到了提高。新收益也包括与任何现有候选程序不同的新候选程序。
在一些实施例中,控制器350在每一轮遗传操作或进化之后控制候选程序的群体大小。在一些实施例中,群体大小保持与候选程序的初始群体相同。在一些实施方案中,后代的群体大小遵循衰减算法而衰减。例如,衰减算法为:
其中,λ是衰减参数并且λ∈[0,1];E表示遗传操作的时期大小(epoch size)或迭代的总次数;Npop是初始群体的大小,并且是控制器350设置的最小群体大小。遵循衰减算法(10),后代群体的群体大小将通过参数λ不断减小,直到达到最小群体大小
算法(10)是示例指数衰减算法。其他衰减算法也是可能的,并且包括在本文的范围内。例如,衰减算法可以是线性衰减或分段衰减(staged decay),其包括针对迭代的不同阶段的不同衰减算法。以下提供示例线性衰减和交错衰减(staggered decay)算法:
或,
其中k是衰减参数并且k∈[0,1];b2是常数;并且E1表示阶段的边界。例如,E1=100。
在示例动作440中,控制器350确定是否已经满足完成迭代遗传操作的阈值条件。如果没有满足任何一个阈值条件,则控制器350控制遗传操作继续进行迭代。如果满足了一个或多个阈值条件,则控制器350控制遗传操作完成。
在示例动作450中,在遗传操作完成之后,程序生成模块选择适应度得分最高的候选程序作为最终模式程序。将最终模式程序输出到提取模块124,以对数据流130进行命名实体识别任务。
图6示出了另一示例处理600。处理600包括示例处理400之外的附加动作。示例处理600中的示例动作410、420、430、440和450与处理400中的那些动作相似,为了简单起见,对于处理600,将省略对相似动作的描述。
在完成一轮遗传操作,例如,动作420和430之后,控制器350可以使操作路由(route)至动作610,其中调整单元352评估在这一轮遗传操作中生成的候选程序以确定是否应该调整迭代遗传操作。具体地,在子动作612中,调整单元352获得Gp+1代中所有子候选程序的平均适应度得分。将该平均适应度得分与父/母Gp代候选程序的平均适应度得分进行比较。如果Gp+1代的平均适应度得分小于Gp代的平均适应度得分,则可以调整遗传算法的参数。
在子动作614中,调整单元352评估对示例数据串的重新分组。在一些实施例中,调整单元352关于正示例数据串是否与Gp+1代中的候选程序匹配来分析每个正示例数据串。针对每个正示例数据串获得匹配率,该匹配率被计算为正示例数据串和候选程序之间的匹配数与Gp+1代中候选程序的总数之比。可以由控制器350设置阈值匹配率,例如50%匹配。可以将匹配率高于阈值匹配率的正示例数据串重新分组为“突破(conquered)”组,其指示Gp+1代候选程序的提取行为或“基因”通常适合特定的正示例数据串。可以将匹配率低于阈值匹配率的正示例数据串重新分组为“未突破(unconquered)”组,其指示Gp+1代候选程序的提取行为或“基因”通常与特定正示例数据串不匹配。突破组的正示例数据串可用于进一步的遗传操作,例如,用于候选程序的适应度得分的计算。未突破组的正示例数据串可用于在单独的遗传操作中获得另一模式程序。
在子动作616中,调整单元352基于候选程序在不同组的正示例数据串上的提取行为来评估候选程序的重新分组。例如,针对每组示例数据串,计算候选程序的适应度得分和/或阳性匹配率。针对每组示例数据串,基于候选程序的适应度得分或正匹配率,对候选程序进行分组。例如,候选程序对于第一组正示例数据串具有70%的匹配率,而对于第二组正示例数据串具有20%的匹配率。可以将候选程序分组为适于提取由第一组正示例数据串表示的目标数据类别的候选程序。可以将一组候选程序用于该组内的遗传操作。例如,候选程序可能只与同一组中的另一候选程序配对以进行交叉繁殖操作。
示例数据串或候选程序的重新分组可能导致并行进行多个遗传操作,并且根据多个遗传操作生成多个最终模式程序。在一些实施例中,可以在提取任务中通过“或”函数来链接多个最终模式程序。
在示例动作620中,控制器350基于动作510的评估结果来确定是否应当对遗传操作进行调整。如果确定应当进行一个或多个调整,则控制器350实现对动作410或动作420的调整。例如,对正示例数据串的重新分组可以被用于调整从动作420开始的遗传操作。例如,多个遗传操作开始并行运行。突破组和未突破组的正示例数据串也可以用于在动作410处重塑候选程序的初始群体。调整程序生成模块122的操作的其它方法也是可行的,并且包括在本文的范围内。
学习单元360配置为在进一步训练遗传操作时与控制器350一起发挥作用。例如,可以将诸如正确的提取结果和不正确的提取结果等训练数据用作训练数据串。可以选择一代候选程序作为候选程序的初始训练群体以开始训练操作。在一些实施例中,将最后一代候选程序用作初始训练群体。在一些实施例中,图4或图6的处理400、600可以在候选程序的初始训练群体上使用训练数据串进行类似运行。训练操作生成新的最终模式程序,该程序可以克服以前的模式程序提取不正确的数据串的缺点。
前述实施例中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件接收和发送设备、游戏控制台、平板电脑、可穿戴设备或这些设备的任意组合。
对于装置中每个模块的功能和角色的实施过程,可以参照前一方法中相对应步骤的实施过程。为简单起见,这里省略了细节。
由于装置实施例基本上与方法实施例相对应,因此对于相关部件,可以参照方法实施例中的相关描述。前一描述的装置实施仅是示例。被描述为单独部分的模块可以是或可以不是物理上分离的,并且显示为模块的部分可以是或可以不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域普通技术人员在无需付出创造性努力的情况下就能理解和实现本申请的实施例。
本文描述的技术产生一种或多种技术效果。遗传算法对数据串进行处理,每个数据串都精确地表示命名实体识别的目标数据类别。这些技术特征带来了宝贵的技术优势。首先,根据遗传算法生成的模式程序将具有量身定制的提取行为,因为通过遗传算法的遗传操作对示例数据串中包含的良好“基因”进行了有效的捕获和延续。这样,生成的模式程序将正确检测并提取目标数据类别的数据串。此外,使用这种示例数据串还减少了处理过程中的人工输入和错误,因为不需要从非代表性数据串中手动识别命名实体。而且,模式程序的初始群体主要是,例如90%是从示例数据串生成的,这显著减少了实现令人满意的模式程序所需的迭代遗传操作量。在大数据和基于云的数据服务时代,节省计算资源对于管理大规模数据流至关重要。
此外,适应度函数考虑模式程序是否匹配负示例数据串,该负示例数据串不是命名实体识别任务的目标。因此,基于适应度函数选择的模式程序将规避通过负示例数据串表示的数据类别。因此,假阳性错误将显著减少,这使得命名实体识别任务的结果更加可靠和有意义。这样,本文的技术是有效且适合于在大规模数据流上执行命名实体识别任务的。
该技术在各种示例数据串上进行操作而无需在各种示例数据串之间进行区分,这就产生了模式程序,该模式程序的功能是提取由所有示例数据串表示的目标数据类别。这样,可以完全自主地进行技术性操作,而无需人工干预。如果生成单个模式程序的初始尝试失败,则可以对示例数据串进行重新分组,并且可以基于对先前操作结果的评估来调整遗传操作参数,而无需人工干预。这样,这些技术基于表示由正则表达式待匹配的数据类别的示例数据串来完全自主地生成例如正则表达式的计算机程序。
所描述的主题的实施例可以包括单独或组合的一个或多个特征。例如,在第一实施例中,一种计算机实现的方法获得候选程序的第一群体;通过对候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体;以及使用候选程序的第二群体中的第一候选程序从数据流中提取多个第二数据串。迭代遗传操作包括使用适应度函数和多个第一数据串计算候选程序的第二群体中的每个候选程序的适应度得分。适应度函数评估候选程序与多个第一数据串的匹配率。
在第二实施例中,一种计算机实现的方法接收多个第一数据串;从多个第一数据串中识别出字符的子字符串;至少部分地基于所述多个第一数据串获得候选程序的第一群体,所述子字符串被表示为所述候选程序的第一群体中的候选程序中的单个单元;通过对候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体,所述迭代遗传操作包括使用适应度函数和所述多个第一数据串计算候选程序的第二群体中的每个候选程序的适应度得分,所述适应度函数评估候选程序与所述多个第一数据串的匹配率;以及使用所述候选程序的第二群体中的第一候选程序从数据流中提取多个第二数据串。
前述和其它描述的实施例均可以可选地包括以下特征中的一个或多个。
第一特征,可与先前或以下特征中的任一特征组合,指定该方法还包括获得多个第三数据串。多个第三数据串是多个第二数据串的子集。该方法还包括通过使用多个第三数据串对候选程序的第二群体进行迭代遗传操作来生成第二候选程序。
第二特征,可与先前或以下特征中的任一特征组合,指定多个第一数据串包括多个正示例数据串,每个正示例数据串表示命名实体识别任务的目标数据类别。
第三特征,可与先前或以下特征中的任一特征组合,指定多个第一数据串包括多个负示例数据串,每个负示例数据串均表示并非目标数据类别的数据类别。
第四特征,可与先前或以下特征中的任一特征组合,指定适应度函数评估候选程序相对于多个正示例数据串的第一匹配率,以及候选程序相对于多个负示例数据串的第二匹配率。
第五特征,可与先前或以下特征中的任一特征组合,指定该方法还包括将多个第一数据串分组为第一组数据串和至少一个第二组数据串;以及使用第一组数据串或至少一个第二组数据串中的每个数据串对第一候选程序集单独进行迭代遗传操作。
第六特征,可与先前或以下特征中的任一特征组合,指定适应度函数进一步评估候选程序的简洁性以及候选程序与多个第一数据串中的数据串之间的编辑距离。
第七特征,可与先前或以下特征中的任一特征组合,指定迭代遗传操作包括交叉繁殖操作和变异操作。
第八特征,可与先前或以下特征中的任一特征组合,指定候选程序的第一群体或候选程序的第二群体中每个群体中的候选程序是正则表达式。
第九特征,可与先前或以下特征中的任一特征组合,指定为多个第一数据串中的每个数据串分配权重;以及适应度函数评估多个第一数据串中的每个数据串的权重。
第十特征,可与先前或以下特征中的任一特征组合,指定第一候选程序在候选程序的第二群体中的适应度得分最高;使用多个第三数据串对候选程序的第二群体进行迭代遗传操作生成候选程序的第三群体;以及第二候选程序在候选程序的第三群体中的适应度得分最高。
第十一特征,可与先前或以下特征中的任一特征组合,指定第二候选程序的适应度得分高于使用多个第一数据串和多个第三数据串中的至少一个数据串计算出的第一候选程序的适应度得分。
第十二特征,可与先前或以下特征中的任一特征组合,指定获得候选程序的第一群体包括基于多个第一数据串获得候选程序的第一群体中的至少一部分。
第十三特征,可与先前或以下特征中的任一特征组合,指定候选程序的第一群体包括第一数量的候选程序,候选程序的第二群体包括第二数量的候选程序,并且第二数量是从第一数量减少而来的。
第十四特征,可与先前或以下特征中的任一特征组合,指定所述第二数量是遵循指数衰减算法、线性衰减算法或交错衰减算法中的一个或多个从第一数量减少而来的。
第十五特征,可与先前或以下特征中的任一特征组合,指定所述方法为第二群体设置候选程序的最小数量。
第十六特征,可与先前或以下特征中的任一特征组合,指定适应度函数针对多个第一数据串的数据串长度来评估候选程序的长度。
第十七特征,可与先前或以下特征中的任一特征组合,指定多个第一数据串包括第一正示例数据串集,其中每个正示例数据串表示命名实体识别任务的目标数据类别,并且适应度函数针对所有第一正示例数据串集的平均长度来评估候选程序的长度。
第十八特征,可与先前或以下特征中的任一特征组合,指定多个第一数据串包括第一正示例数据串集和第二负示例数据串集,第一正示例数据串集中的每个正示例数据串表示命名实体识别任务的目标数据类别,第二负示例数据串集中的每个负示例数据串表示并非目标数据类别的数据类别;并且适应度函数评估第一正示例数据串集中与候选程序完全匹配的正示例数据串的第一数量,以及第二负示例数据串集中与候选程序完全匹配的负示例数据串的第二数量。
第十九特征,可与先前或以下特征中的任一特征组合,指定多个第一数据串包括第一正示例数据串集和第二负示例数据串集,第一正示例数据串集中的每个正示例数据串表示命名实体识别任务的目标数据类别,第二负示例数据串集中的每个负示例数据串表示并非目标数据类别的数据类别;并且适应度函数评估第一正示例字符串集中与候选程序与匹配的字符的第一数量,以及第二负示例字符串集中与候选程序匹配的字符的第二数量。
在第二实施例中,一种系统包括:一个或多个处理器;以及耦接到一个或多个处理器并在其上存储有指令的一个或多个计算机可读存储器,该指令可由一个或多个处理器执行以执行动作。该动作包括:从用户接收多个第一数据串;至少部分地基于多个第一数据串,获得候选程序的第一群体;通过对候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体,该迭代遗传操作包括使用适应度函数和多个第一数据串计算候选程序的第二群体中的每个候选程序的适应度得分;使用从候选程序的第二群体中选择的第一候选程序从数据流中提取多个第二数据串;向用户提供多个第二数据串;从用户接收多个第三数据串,所述多个第三数据串是多个第二数据串的子集;至少部分地基于多个第三数据串和候选程序的第二群体,获得第二候选程序。
在第三实施例中,一种装置包括多个模块和单元。所述多个模块和单元包括:初始程序生成单元,其进行操作以获得候选程序的第一群体;合成单元,其进行操作以通过对候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体;适应度测量单元,其进行操作以使用适应度函数和多个第一数据串计算候选程序的第二群体中的每个候选程序的适应度得分,该适应度函数评估候选程序与多个第一数据串的匹配率;以及提取模块,其进行操作以使用从候选程序的第一群体和候选程序的第二群体中选择的第一候选程序从数据流中提取多个第二数据串。
在第四实施例中,一种非暂时性计算机可读存储介质存储使处理器执行动作的可执行指令,该动作包括:获得候选程序的第一群体;通过对候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体,该迭代遗传操作包括使用适应度函数和多个第一数据串计算候选程序的第二群体中的每个候选程序的适应度得分;基于候选程序的第二群体中的候选程序的适应度得分,将多个第一数据串分为数据串的第一子集和数据串的至少一个第二子集;通过使用数据串的第一子集对候选程序的第二群体进行迭代遗传操作,生成候选程序的第三群体;使用从候选程序的第三群体中选择的第一候选程序,从数据流中提取多个第二数据串。
本文中描述的主题、以及动作和操作的实施例可以被实现在数字电子电路中、有形体现的计算机软件或固件中、包括在本文公开的结构及其结构等同物的计算机硬件中,其或者被实现在它们中的一个或多个的组合中。本文中描述的主题的实施可以被实现为一个或多个计算机程序,例如,编码在计算机程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。例如,计算机程序载体可以包括其上编码或存储有指令的一个或多个计算机可读存储介质。载体可以是有形的非暂时性计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)或其他类型的介质。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成为对信息进行编码用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或者串行访问存储器设备或者它们中的一个或多个的组合,或者是机器可读存储设备、机器可读存储基板、随机或者传送访问存储器设备或者他们中的一个或多个的组合的一部分。计算机存储介质不是传播信号。
计算机程序,也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释性语言、或声明或程序性语言;它可以配置为任何形式,包括作为独立程序,或作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可包括由数据通信网络互连的一个或多个位置上的一个或多个计算机。
计算机程序可以但是没有必需对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件中;或者多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的多个文件。
用于执行计算机程序的处理器通过示例的方式既包括通用微处理器和专用微处理器,又包括任何种类的数字计算机的任意一个或多个处理器。通常,处理器将从耦接至处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令以及数据。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,通过示例的方式包括可编程处理器、计算机或者多个处理器或计算机。数据处理装置可包括例如FPGA(现场可编程门阵列),ASIC(专用集成电路)或GPU(图形处理单元)的专用逻辑电路。除了硬件,该装置还可包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
本文中描述的处理和逻辑流程可以由执行一个或多个计算机程序的一个或多个计算机或处理器执行,以通过对输入数据进行操作并生成输出来执行操作。过程或者逻辑流程也可以由例如FPGA、ASIC、GPU的专用逻辑电路执行,或者由专用逻辑电路和一个或多个编程计算机的组合执行。
适用于执行计算机程序的计算机可以以通用或专用微处理器,或者这两者或任何其它类型的中央处理单元为基础。通常,中央处理单元将从只读存储器或随机存取存储器或者二者接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器可以补充有专用逻辑电路或集成在专用逻辑电路中。
通常,计算机还将包括或可操作地耦接为从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以例如是磁盘、磁光盘或者光盘、固态驱动器或者任何其它类型的非暂态计算机可读介质。但是,计算机不是必须具有这样的设备。因而,计算机可以耦接到一个或多个存储设备,例如位于本地和/或远程的一个或多个存储器。例如,计算机可以包括一个或多个本地存储器,该一个或多个本地存储器是计算机的集成组件;或者计算机可以耦接到位于云网络中的一个或多个远程存储器。此外,计算机也可以嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或诸如通用串行总线(USB)闪存驱动器等便携式存储设备,这只是列举几项。
组件之间可以直接地或经由一个或多个中间组件,通过彼此可通信地连接,例如电连接或光学连接,而相互“耦接”。如果组件中的一个部件被集成到另一个中,则组件也可以被彼此“耦接”。例如,集成到处理器中的存储组件(例如,L2高速缓存组件)“耦接到”处理器。
为了与用户进行交互,本文中描述的主题的实施例可以在具有显示设备和输入设备的计算机上实现,或配置为与该计算机进行通信,显示设备例如为LCD(液晶显示器)监视器,用于向用户显示信息,输入设备例如为键盘和定位设备,用户可以通过输入设备向计算机提供输入,定位设备例如为鼠标、轨迹球或触摸板。其它类型的设备也可用于与用户进行交互,例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收用户输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档并从用户使用的设备接收文档,例如,通过响应于从网页浏览器接收到的请求将网页发送到用户设备上的网页浏览器,或通过与在诸如智能手机或电子平板电脑等用户设备上运行的app进行交互,来与用户进行交互。此外,计算机可以通过向个人设备(例如,运行消息传送应用程序的智能电话)轮流发送文本消息或其他形式的消息来并且从用户接收响应消息来与用户交互。
本文使用与系统,装置和计算机程序组件有关的术语“被配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在操作中使得系统执行该操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括被数据处理装置执行时促使该装置执行该操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行该操作或动作的电子逻辑。
虽然本文包含许多具体实施例细节,但是这些细节不应被解释为由权利要求本身限定的对要求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合地实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初被如此请求保护,但是在一些情况下,可以从请求保护的组合中删除来自该组合的一个或多个特征,并且权利要求书可以涉及子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或依次执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理会是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为在所有实施例中都要求如此划分,而应当理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或打包成多个软件产品。
已描述了主题的特定实施方式。其他实施方式在以下权利要求书的范围内。例如,权利要求中记载的动作可以不同的顺序执行并且仍然实现所期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或次序来实现期望的结果。在一些情况下,多任务并行处理可能是有利的。
Claims (16)
1.一种计算机实现的方法,所述方法包括:
接收多个第一数据串;
从所述多个第一数据串中识别出字符的子字符串;
至少部分地基于所述多个第一数据串获得候选程序的第一群体,所述子字符串被表示为所述候选程序的第一群体中的候选程序中的单个单元;
通过对所述候选程序的第一群体进行迭代遗传操作来生成候选程序的第二群体,所述迭代遗传操作包括使用适应度函数和所述多个第一数据串计算所述候选程序的第二群体中的每个候选程序的适应度得分,所述适应度函数评估候选程序与所述多个第一数据串的匹配率;以及
使用所述候选程序的第二群体中的第一候选程序从数据流中提取多个第二数据串。
2.如权利要求1所述的方法,其中:
所述候选程序的第一群体包括第一数量的候选程序,
所述候选程序的第二群体包括第二数量的候选程序,并且
所述第二数量是从所述第一数量减少而来的。
3.如权利要求2所述的方法,其中,所述第二数量是遵循指数衰减算法、线性衰减算法或交错衰减算法中的一个或多个从所述第一数量减少而来的。
4.如权利要求3所述的方法,还包括为所述第二群体设置候选程序的最小数量。
5.如权利要求1所述的方法,其中,所述适应度函数针对所述多个第一数据串的数据串长度来评估候选程序的长度。
6.如权利要求5所述的方法,其中,所述多个第一数据串包括第一正示例数据串集,其中每个正示例数据串表示命名实体识别任务的目标数据类别,并且所述适应度函数针对所有所述第一正示例数据串集的平均长度来评估所述候选程序的长度。
7.如权利要求1所述的方法,其中:
所述多个第一数据串包括第一正示例数据串集和第二负示例数据串集,所述第一正示例数据串集中的每个正示例数据串表示命名实体识别任务的目标数据类别,所述第二负示例数据串集中的每个负示例数据串表示并非所述目标数据类别的数据类别;并且
所述适应度函数评估所述第一正示例数据串集中与候选程序完全匹配的正示例数据串的第一数量,以及所述第二负示例数据串集中与所述候选程序完全匹配的负示例数据串的第二数量。
8.如权利要求1所述的方法,其中:
所述多个第一数据串包括第一正示例数据串集和第二负示例数据串集,所述第一正示例数据串集中的每个正示例数据串表示命名实体识别任务的目标数据类别,所述第二负示例数据串集中的每个负示例数据串表示并非所述目标数据类别的数据类别;并且
所述适应度函数评估所述第一正示例数据串集中与候选程序匹配的字符的第一数量,以及所述第二负示例数据串集中与所述候选程序匹配的字符的第二数量。
9.如权利要求1所述的方法,还包括:
获得多个第三数据串,所述多个第三数据串是所述多个第二数据串的子集;以及
通过使用所述多个第三数据串对所述候选程序的第二群体进行所述迭代遗传操作来生成第二候选程序。
10.如前述任一权利要求所述的方法,还包括:
将所述多个第一数据串分组为第一组数据串和至少一个第二组数据串;以及
使用所述第一组数据串或所述至少一个第二组数据串中的每个数据串对所述候选程序的第一群体分别进行所述迭代遗传操作。
11.如前述任一项权利要求所述的方法,其中,所述迭代遗传操作包括交叉繁殖操作和变异操作。
12.如前述任一项权利要求所述的方法,其中,所述候选程序的第一群体或所述候选程序的第二群体中每个群体中的候选程序为正则表达式。
13.如权利要求9所述的方法,其中:
所述第一候选程序在所述候选程序的第二群体中的适应度得分最高;
使用所述多个第三数据串对所述候选程序的第二群体进行迭代遗传操作,生成候选程序的第三群体;以及
所述第二候选程序在所述候选程序的第三群体中的适应度得分最高。
14.如权利要求13所述的方法,其中,所述第二候选程序的适应度得分高于使用所述多个第一数据串和所述多个第三数据串中的至少一个数据串计算出的所述第一候选程序的适应度得分。
15.一种系统,包括:
一个或多个处理器;以及
一个或多个计算机可读存储器,耦接至所述一个或多个处理器并且其上存储有指令,所述指令能由所述一个或多个处理器执行以执行权利要求1至14中任一项所述的方法。
16.一种装置,所述装置包括用于执行权利要求1至14中任一项所述的方法的多个单元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/086780 WO2020143857A2 (en) | 2020-04-24 | 2020-04-24 | Named entity recognition and extraction using genetic programming |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111758098A true CN111758098A (zh) | 2020-10-09 |
CN111758098B CN111758098B (zh) | 2024-03-26 |
Family
ID=71522299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080001341.4A Active CN111758098B (zh) | 2020-04-24 | 2020-04-24 | 利用遗传编程的命名实体识别和提取 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11222179B2 (zh) |
EP (1) | EP3799645A4 (zh) |
CN (1) | CN111758098B (zh) |
SG (1) | SG11202013133PA (zh) |
WO (1) | WO2020143857A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463629A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种基于遗传进化的自主无人系统软件配置项调整方法 |
CN113366511A (zh) * | 2020-01-07 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 利用遗传编程的命名实体识别和提取 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111758098B (zh) * | 2020-04-24 | 2024-03-26 | 支付宝(杭州)信息技术有限公司 | 利用遗传编程的命名实体识别和提取 |
US11520831B2 (en) * | 2020-06-09 | 2022-12-06 | Servicenow, Inc. | Accuracy metric for regular expression |
US20230214591A1 (en) * | 2021-12-30 | 2023-07-06 | Huawei Technologies Co., Ltd. | Methods and devices for generating sensitive text detectors |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205201A1 (en) * | 2009-02-11 | 2010-08-12 | International Business Machines Corporation | User-Guided Regular Expression Learning |
US20120089620A1 (en) * | 2010-10-07 | 2012-04-12 | Castellanos Maria G | Extracting data |
US20150205783A1 (en) * | 2014-01-23 | 2015-07-23 | Abbyy Infopoisk Llc | Automatic training of a syntactic and semantic parser using a genetic algorithm |
CN108234347A (zh) * | 2017-12-29 | 2018-06-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种提取特征串的方法、装置、网络设备及存储介质 |
CN110188785A (zh) * | 2019-03-28 | 2019-08-30 | 山东浪潮云信息技术有限公司 | 一种基于遗传算法的数据聚类分析方法 |
US20190325316A1 (en) * | 2019-05-16 | 2019-10-24 | Intel Corporation | Apparatus and methods for program synthesis using genetic algorithms |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5055556B2 (ja) | 2005-12-05 | 2012-10-24 | 国立大学法人名古屋大学 | ハイブリッドgaによる複数パラメータの最適化方法、パターンマッチングによるデータ解析方法、放射線回折データに基づく物質構造の推定方法、ならびに関連するプログラム、記録媒体および各種装置 |
WO2007149216A2 (en) * | 2006-06-21 | 2007-12-27 | Information Extraction Systems | An apparatus, system and method for developing tools to process natural language text |
US8346534B2 (en) * | 2008-11-06 | 2013-01-01 | University of North Texas System | Method, system and apparatus for automatic keyword extraction |
CN103793747B (zh) | 2014-01-29 | 2016-09-14 | 中国人民解放军61660部队 | 网络内容安全管理中一种敏感信息模板构建方法 |
CN104408116A (zh) | 2014-11-26 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 基于遗传算法从大规模高维数据中检测离群数据的方法 |
CN105740227B (zh) | 2016-01-21 | 2019-05-07 | 云南大学 | 一种求解中文分词中新词的遗传模拟退火方法 |
CN111758098B (zh) * | 2020-04-24 | 2024-03-26 | 支付宝(杭州)信息技术有限公司 | 利用遗传编程的命名实体识别和提取 |
-
2020
- 2020-04-24 CN CN202080001341.4A patent/CN111758098B/zh active Active
- 2020-04-24 WO PCT/CN2020/086780 patent/WO2020143857A2/en unknown
- 2020-04-24 SG SG11202013133PA patent/SG11202013133PA/en unknown
- 2020-04-24 EP EP20738620.2A patent/EP3799645A4/en not_active Withdrawn
-
2021
- 2021-01-28 US US17/161,407 patent/US11222179B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205201A1 (en) * | 2009-02-11 | 2010-08-12 | International Business Machines Corporation | User-Guided Regular Expression Learning |
US20120089620A1 (en) * | 2010-10-07 | 2012-04-12 | Castellanos Maria G | Extracting data |
US20150205783A1 (en) * | 2014-01-23 | 2015-07-23 | Abbyy Infopoisk Llc | Automatic training of a syntactic and semantic parser using a genetic algorithm |
CN108234347A (zh) * | 2017-12-29 | 2018-06-29 | 北京神州绿盟信息安全科技股份有限公司 | 一种提取特征串的方法、装置、网络设备及存储介质 |
CN110188785A (zh) * | 2019-03-28 | 2019-08-30 | 山东浪潮云信息技术有限公司 | 一种基于遗传算法的数据聚类分析方法 |
US20190325316A1 (en) * | 2019-05-16 | 2019-10-24 | Intel Corporation | Apparatus and methods for program synthesis using genetic algorithms |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113366511A (zh) * | 2020-01-07 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 利用遗传编程的命名实体识别和提取 |
CN113366511B (zh) * | 2020-01-07 | 2022-03-25 | 支付宝(杭州)信息技术有限公司 | 利用遗传编程的命名实体识别和提取 |
CN112463629A (zh) * | 2020-12-11 | 2021-03-09 | 北京航空航天大学 | 一种基于遗传进化的自主无人系统软件配置项调整方法 |
Also Published As
Publication number | Publication date |
---|---|
US11222179B2 (en) | 2022-01-11 |
SG11202013133PA (en) | 2021-01-28 |
EP3799645A4 (en) | 2021-07-21 |
WO2020143857A2 (en) | 2020-07-16 |
EP3799645A2 (en) | 2021-04-07 |
WO2020143857A3 (en) | 2021-02-25 |
CN111758098B (zh) | 2024-03-26 |
US20210334463A1 (en) | 2021-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mani et al. | Deeptriage: Exploring the effectiveness of deep learning for bug triaging | |
US11341330B1 (en) | Applied artificial intelligence technology for adaptive natural language understanding with term discovery | |
US11816442B2 (en) | Multi-turn dialogue response generation with autoregressive transformer models | |
CN111758098B (zh) | 利用遗传编程的命名实体识别和提取 | |
US9654446B2 (en) | On-the fly pattern recognition with configurable bounds | |
US20180357240A1 (en) | Key-Value Memory Networks | |
Le et al. | Automated software vulnerability assessment with concept drift | |
Long et al. | Collecting indicators of compromise from unstructured text of cybersecurity articles using neural-based sequence labelling | |
Gao et al. | Data and knowledge-driven named entity recognition for cyber security | |
WO2022048363A1 (zh) | 网站分类方法、装置、计算机设备及存储介质 | |
CN111931935B (zh) | 基于One-shot 学习的网络安全知识抽取方法和装置 | |
Fan et al. | Expose your mask: smart Ponzi schemes detection on blockchain | |
Hara et al. | Machine-learning approach using solidity bytecode for smart-contract honeypot detection in the ethereum | |
Jeyakarthic et al. | Optimal bidirectional long short term memory based sentiment analysis with sarcasm detection and classification on twitter data | |
CN112765966A (zh) | 联想词去重方法及装置、计算机可读存储介质和电子设备 | |
CN113366511B (zh) | 利用遗传编程的命名实体识别和提取 | |
CN116561298A (zh) | 基于人工智能的标题生成方法、装置、设备及存储介质 | |
US20230075290A1 (en) | Method for linking a cve with at least one synthetic cpe | |
Mester et al. | Malware classification based on graph convolutional neural networks and static call graph features | |
An et al. | A CNN-based automatic vulnerability detection | |
Kang et al. | A transfer learning algorithm for automatic requirement model generation | |
Evangelista | Cybersecurity Vulnerability Classification Utilizing Natural Language Processing Methods | |
US20220374914A1 (en) | Regulatory obligation identifier | |
Sethurajan et al. | Performance analysis of semantic veracity enhance (SVE) classifier for fake news detection and demystifying the online user behaviour in social media using sentiment analysis | |
Muñoz | Literature thesis: Building a framework for retrieving information on multispecies interactions from published literature |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40039546 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |