CN111680489B - 目标文本的匹配方法和装置、存储介质及电子设备 - Google Patents
目标文本的匹配方法和装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111680489B CN111680489B CN202010525837.3A CN202010525837A CN111680489B CN 111680489 B CN111680489 B CN 111680489B CN 202010525837 A CN202010525837 A CN 202010525837A CN 111680489 B CN111680489 B CN 111680489B
- Authority
- CN
- China
- Prior art keywords
- entity
- type
- information
- types
- group
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种目标文本的匹配方法和装置、存储介质及电子设备。其中,该方法包括:对目标文件中当前待匹配的字符串进行匹配,首先在预先建立的目标搜索树中查找到与字符串匹配的实体,获取实体的实体名称和实体编号,再根据实体编号在信息数组中获取实体的实体类型和指代信息,实体确定为包括实体名称和实体类型以及指代信息的目的,可以理解为,将单类型有指代信息的实体的唯一的类型信息存储到对应的目标搜索树中,可以减少了与目标文本中当前待匹配字符串进行匹配的实体信息数组所占内存,提高目标文本的匹配速度,进而解决了现有技术中,目标文本匹配的内存占用较大以及效率较低的技术问题。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种目标文本的匹配方法和装置、存储介质及电子设备。
背景技术
现有多模匹配方法主要有Trie树、AC算法、VM算法等。其中,Trie树算法将每个待搜索模式串当成一个节点,由此建立前缀树,并且为每个节点都记录了一个失败节点,这样在匹配失败的时候,不是直接回溯到根节点,而是跳转到失败节点继续匹配,这样做的好处是避免不必要的回溯,保证匹配一直先前进行,从而可以大量减少匹配时间。Trie树算法的主要缺点是数据结构复杂,存储空间浪费大。
AC算法同样是借助trie树,通过建立转换函数、失败函数、输出函数来达到快速匹配的目的,AC算法比Trie树算法数据结构简单、匹配效率高,但同样需要占用比较大的内存,并且启动时间较长。VM算法的核心是建立三张表:跳转表、哈希表、前缀表,其中哈希表和前缀表用于决定是否匹配成功,跳转表则用于决定匹配失败时的跳转步数。VM算法同样数据结构简单、匹配效率高,但受模式的长度分布影响比较大,要求所有模式长度应基本相同。
另外,在实际应用场景中,我们还常常关注模式对应的信息。例如,在实体抽取任务中,我们需要了解输入的用户问句中包含的实体以及实体的类别、指代等信息。一种常见的做法是:将所有实体存储在一个方便查找的数据结构中,再将所有实体所对应的信息存储到另外一个数据结构中。例如,可以将所有实体构建成一个trie树,该trie树不仅存储了实体的文本内容,并且还将每个实体与一个数字(即id)关联起来;其次,将所有实体的类别、指代信息存储到一个数组中,数组的元素是同类型的。查找的过程便是匹配的过程,对于待匹配的单个词,首先在trie树中查找,如果查找成功则返回该词对应的id,然后取出实体信息数组中下标等于该id的元素内容作为该词的实体信息;对于输入的一个用户问句,则可以采用滑窗的形式,依次查找以每个字开头的所有候选实体,并最终对这些候选实体进行过滤。
可见,现有三种多模匹配技术(Trie树、AC算法、VM算法)主要有以下几个缺点:1、数据结构复杂(Trie树算法);2、占用内存大(Trie树算法、AC算法);3、依赖模式长度分布(VM算法);4、将所有实体的信息都存储在同一个类型的数据结构中,这样会造成大量的内存浪费。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种目标文本的匹配方法和装置、存储介质及电子设备,以至少解决现有技术中,目标文本匹配的内存占用较大以及效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种目标文本的匹配方法,包括:获取目标文本中当前待匹配的第一字符串,其中,所述第一字符串包括所述目标文本中的一个或连续多个字符;在目标搜索树中查找到与所述第一字符串匹配的第一实体,根据所述目标搜索树返回的查找结果获取所述第一实体的实体名称和实体编号;在根据所述实体编号确定出所述第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取所述第一实体的实体类型和指代信息,并将所述第一实体确定为包括所述实体名称和所述实体类型以及所述指代信息。
根据本发明实施例的另一方面,还提供了一种目标文本的匹配装置,包括:第一获取单元,用于获取目标文本中当前待匹配的第一字符串,其中,所述第一字符串包括所述目标文本中的一个或连续多个字符;第二获取单元,用于在目标搜索树中查找到与所述第一字符串匹配的第一实体的,根据所述目标搜索树返回的查找结果获取所述第一实体的实体名称和实体编号;第一确定单元,用于在根据所述实体编号确定出所述第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取所述第一实体的实体类型和指代信息,并将所述第一实体确定为包括所述实体名称和所述实体类型以及所述指代信息。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述目标文本的匹配方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的目标文本的匹配方法。
在本发明实施例中,通过获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符;在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号;在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息,达到了对目标文件中当前待匹配的字符串进行匹配,首先在预先建立的目标搜索树中查找到与字符串匹配的实体后,获取实体的实体名称和实体编号,再根据实体编号在信息数组中获取实体的实体类型和指代信息,实体确定为实体的实体名称和实体类型以及指代信息的目的,可以理解为,将单类型有指代信息的实体的唯一的类型信息存储到对应的目标搜索树中,可以减少将该实体的类型信息存储在实体信息数组的技术效果,从而减少了与目标文本中当前待匹配字符串进行匹配的实体信息数组所占内存,提高目标文本的匹配速度,进而解决了现有技术中,目标文本匹配的内存占用较大以及效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的目标文本的匹配方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的目标文本的匹配方法的流程图;
图3是根据本发明实施例的一种可选的基于双数组的受限内存场景下的多模匹配方法的算法流程图;
图4是根据本发明实施例的一种可选的目标文本的匹配装置的结构示意图;
图5是根据本发明实施例的一种可选的目标文本的匹配方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好的理解本申请中的实施例,对部分名词解释如下:
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
用户问句:用户与智能助手单轮或多轮对话中的一个请求语句,包含用户意图的短文本。例如:放首刘若英的后来;给妈妈打电话;帮我导航到天府广场等。
实体:某种相同类型的词构成的词集,比如歌手(singer)、歌曲(song)、联系人(contact)、地址(address)等词集。
多模匹配:指的是在一个字符串中查找多个模式子串的问题。常被用于实体抽取,敏感词过滤,分词等。例如,当用户问句为“放首刘若英的后来”时,利用多模匹配可以抽取出刘若英(歌手)、后来(歌曲)这两个实体;又如,当用户问句为“帮我导航到天府广场”时,多模匹配可以抽取出天府广场(地址)这个实体。
受限内存:智能助手服务在运行时需要占用大量的计算机内存。在线的服务可以部署在内存足够的超大型服务器上,而离线的服务,例如汽车、机器人等智能硬件端,其内存往往是有限的,因此部署在这些内存受限的设备上的智能服务内存要求不能太大。
Trie树:即字典树或前缀树,是一种多叉树形结构,其核心思想是利用字符串的公共前缀来减少比较次数,从而降低查询时间,可以很快地查询字典中是否有包含某个前缀的词。
双数组:一种trie树的高效实现,其核心思想是利用两个数组来实现trie树,结合了数组trie树查询效率高以及链表trie树内存空间小的优点。
根据本发明实施例的一个方面,提供了一种目标文本的匹配方法,可选地,作为一种可选的实施方式,上述目标文本的匹配方法可以但不限于应用于如图1所示的环境中。
图1中用户设备102可以用于获取目标文本。用户设备102中包含有存储器104,用于存储目标搜索树以及实体信息数组、传输装置106,用于传输数据。用户设备102可以通过网络110与服务器112之间进行数据交互。服务器112中包含有处理模块114,用于处理传输的数据。
上述用户设备104可以但不限于为可以尽心文本处理的机器人,服务器机器人等,或者为手机、平板电脑、笔记本电脑、PC机等终端,上述网络110可以包括但不限于无线网络或有线网络。其中,该无线网络包括:WIFI及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。
上述服务器112可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
时可选地,作为一种可选的实施方式,如图2所示,上述目标文本的匹配方法包括:
步骤S202,获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符。
步骤S204,在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号。
步骤S206,在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息。
可选的,在本实施例中,上述方案可以包括但不限于应用与智能助手中实体的多模匹配。在智能助手服务系统中,为了完整地响应用户的请求,不仅需要正确识别用户的意图,还需要正确提取出实体信息。其中,上述实施方案可以有效提升匹配效率以及节省内存使用。可以应用到任何需要多模匹配(包括但不限于:实体抽取,关键词提取)且内存有效的自然语言理解类的产品中,比如智能汽车、智能机器人等。
其中,上述目标文本可以是获取目标用户的语音信息,目标文本为“放首刘若英的后来”。目标搜索树可以包括但不限于双数组trie树。
可选的,在本实施例中,获取目标文本中当前待匹配的第一字符串,可以包括:以目标文本中的每个字符作为第一字符串的起始字符,从起始字符开始在目标文本中逐个字符增加,每增加一个字符,得到一个第一字符串。
以“播放赵雷的成都”为例来说明,以“播”字开头,需要依次在双数组trie树中查找模式:“播”,“播放”,“播放赵”,“播放赵雷”,“播放赵雷的”,“播放赵雷的成”,“播放赵雷的成都”;以“放”字开头,需要查找模式:“放赵”,“放赵雷”,“放赵雷的”,“放赵雷的成”,“放赵雷的成都”;依次类推,直到最后一个字“都”,得到第一字符串。
需要说明的是,在本实施例中,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号可以包括但不限于从目标搜索树中直接获取第一实体的实体名称和实体编号,可以从目标搜索树中获取实体名称,根据实体名称获取对应的实体编号,还可以包括从目标搜索树中获取实体编号,进而根据实体编号获取实体名称。
在本实施例中,可以将实体分成三类:单类型无指代信息、单类型有指代信息、多类型。
可选的,在本实施例中,在目标搜索树中查找与第一字符串匹配的实体之前,还可以包括:
S1,获取一组实体和一组实体的实体类型的实体类型编号;
S2,在一组实体中包括单类型无指代信息的第二实体的情况下,将第二实体的第二实体编号的最高N位设置为第三值,并将第二实体编号中除最高N位之外的位设置为等于第二实体的实体类型的实体类型编号;
S3,在一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将第三实体的第三实体编号的最高N位设置为第四值,并将第三实体编号中除最高N位之外的位设置为等于从0开始递增的取值,其中,N为自然数,第三值与第四值不同;
S4,根据一组实体以及一组实体的实体编号,构建目标搜索树。
下面以实体抽取中的多模匹配算法为例,这里我们以实体库中的所有实体作为模式,实体的指代、类别信息作为模式的基本信息,并且假设实体库中有以下6个实体:
1、“奶茶”:{{“type”:“singer”,“refer”:“刘若英”},{“type”:“actor”,“refer”:“刘若英”},{“type”:“drink”,“refer”:“”}};
2、“后来”:{{“type”:“song”,“refer”:“”}};
3、“angelababy”:{{“type”:“actor”,“refer”:“杨颖”}};
4、“创业时代”:{{“type”:“tvseries”,“refer”:“”}};
5、“赵雷”:{{“type”:“singer”,“refer”:“”};
6、“成都”:{{“type”:“city”,“refer”:“”},{“type”:“song”,“refer”:“”}};
构建双数组trie树(目标搜索树)的核心步骤是:首先,给每个实体建立一个编号,每个编号即对应trie树中的一个节点;其次,基于实体编号,分别构建两个数组,即base数组、check数组。其中,base数组用于记录状态转移信息,而check数组则用于检查状态转移的可行性。
下面以上面六个实体为例来说明双数组trie树的构建过程。
首先,将实体的类型(type)分别映射成一个唯一的数字编号,如表1所示,实体类型与实体类型编号。
表1
实体类型 | 实体类型编号 |
singer | 1 |
song | 2 |
actor | 3 |
tvseries | 4 |
city | 5 |
drink | 6 |
因为存储实体类型编号,可以使用无符号短整型(unsigned short),只需要占用2字节;而存储实体类型,需要使用字符串类型(string),至少需要占用8字节内存。所以,为节省内存,在进行多模匹配时,直接使用实体类型编号来替代实体。
其次,给每个实体建立编号。根据实体类型(type)个数以及是否有指代信息,我们将实体分为三种类别:单类型无指代信息(实体“奶茶”/“创业时代”/“赵雷”)、单类型有指代信息(实体“angelababy”)、多类型(实体“奶茶”/“成都”)。具体的编号规则如下:
1、选择32位整型(int);
2、最高两位作为标志位,对于单类型无指代信息的实体,其最高两位为“01”;对于其他两种类型的实体,其最高两位为“00”;
3、对于单类型无指代信息的实体,后30位的值等于其实体类型编号。
4、对于单类型有指代信息、多类型的实体,后30位的值从0开始递增。
由于采用二进制方法计数,所以最高两位为“01”等价于2的30次方(即,1073741824),因此单类型无指代信息的实体的编号等于1073741824加上实体类型编号。最终,我们得到实体以及实体编号,如表3所示,实体与实体编号。
表2
实体 | 实体编号 |
奶茶 | 0 |
后来 | 1073741826 |
angelababy | 1 |
创业时代 | 1073741828 |
赵雷 | 1073741825 |
成都 | 2 |
可选的,在本实施例中,在目标搜索树中查找与第一字符串匹配的实体之前,还可以包括:
S1,获取目标搜索树中具有的一组实体和一组实体的实体编号;
S2,在一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将第三实体中的信息记录在实体信息数组中对应的数组元素中,其中,对应的数组元素在实体信息数组中的索引值为第三实体的实体编号。
可以理解为,对于单类型无指代信息的实体,在构建trie树的时候,将其唯一的信息(实体类型)编码到其编号中了,无需再将其信息存储到数组中,进而节省存储信息的内存。
其中,上述目标搜索树是预先建立的。
通过本申请提供的实施例,获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符;在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号;在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息,达到了对目标文件中当前待匹配的字符串进行匹配,首先在预先建立的目标搜索树中查找到与字符串匹配的实体后,获取实体的实体名称和实体编号,再根据实体编号在信息数组中获取实体的实体类型和指代信息,实体确定为实体的实体名称和实体类型以及指代信息的目的,可以理解为,将单类型有指代信息的实体的唯一的类型信息存储到对应的目标搜索树中,可以减少将该实体的类型信息存储在实体信息数组的技术效果,从而减少了与目标文本中当前待匹配字符串进行匹配的实体信息数组所占内存,提高目标文本的匹配速度,进而解决了现有技术中,目标文本匹配的内存占用较大以及效率较低的技术问题。
作为一种可选的实施例,在获取第一实体的实体名称和实体编号之后,还可以包括:
在根据实体编号确定出第一实体为单类型无指代信息的实体的情况下,根据实体编号获取第一实体的实体类型,将第一实体确定为包括第一实体的实体名称和实体类型。
其中,根据实体编号获取第一实体的实体类型,可以包括:
将第一实体的实体编号与第一预设数据进行第一逻辑运算,得到第一实体类型编号;
在预先建立的数据表中获取与第一实体类型编号具有映射关系的第一实体类型,其中,第一实体类型为第一实体的实体类型,其中,数据表中记录了一组或多组具有映射关系的实体类型编号和实体类型。
需要说明的是,上述第一逻辑运算可以包括但不限于逻辑与运算,即将实体编号与0x40000000做与运算,若结果为1,则表明是单类型且无指代信息的实体,反之则表明是其他两种类别。例如,查找“赵雷”成功返回ID:1073741825,将其与0x40000000做与运算,结果为1,表明这是一个单类型实体;查找“成都”成功返回ID:2,将其与0x40000000做与运算,结果为0,表明这不是一个单类型实体。
作为一种可选的实施例,在获取第一实体的实体名称和实体编号之后,还包括:
在根据实体编号确定出第一实体为多类型的实体的情况下,在实体信息数组中获取第一实体的多个实体类型,并将第一实体确定为包括第一实体的实体名称和多个实体类型。
其中,在实体信息数组中获取第一实体的多个实体类型,并将第一实体确定为包括第一实体的实体名称和多个实体类型,可以包括:
在实体信息数组中获取到第一实体的第一组实体类型的情况下,将第一实体确定为包括第一实体的实体名称和第一组实体类型,其中,第一组实体类型中的实体类型不对应有指代信息;
在实体信息数组中获取到第一实体的第二组实体类型的情况下,将第一实体确定为包括第一实体的实体名称和第二组实体类型以及第二组实体类型分别对应的指代信息,其中,第二组实体类型中的实体类型对应有指代信息。
作为一种可选的实施例,在将第一实体确定为包括第一实体的实体名称和多个实体类型之前,还可以包括:
在实体信息数组中获取索引值为实体编号的数组元素,其中,数组元素包括第一组实体类型,和/或,第二组实体类型以及第二组实体类型分别对应的指代信息。
作为一种可选的实施例,在获取第一实体的实体名称和实体编号之后,还可以包括:
将实体编号与第二预设数据进行第二逻辑运算,得到第一运算结果;
在第一运算结果为第一值的情况下,确定第一实体为单类型无指代信息的实体;
在第一运算结果为第二值的情况下,确定第一实体为单类型有指代信息的实体或多类型的实体。
作为一种可选的实施例,本申请还提供了一种基于双数组的受限内存场景下的多模匹配方法。如图3所示,基于双数组的受限内存场景下的多模匹配方法的算法流程图。
本实施例中提出的多模匹配算法主要分为以下三个步骤:1、构建双数组trie树,将所有模式构建成一个方便快速检索的双数组trie树;2、构建模式信息存储结构,将所有模式的基本信息存储在一个内存尽可能小的存储结构中,并且为方便后面多模匹配时能够根据双数组的匹配结果查找到模式的基本信息,应保证模式在双数组trie树和模式信息存储结构中一一对应;3、多模匹配,利用步骤1和步骤2中构建好的数据结构对待匹配的文本进行多模式检索以及模式信息查找。
为方便说明,下面我们以实体抽取中的多模匹配算法为例,这里以实体库中的所有实体作为模式,实体的指代、类别信息作为模式的基本信息,并且假设实体库中有以下6个实体:
“奶茶”:{{“type”:“singer”,“refer”:“刘若英”},{“type”:“actor”,“refer”:“刘若英”},{“type”:“drink”,“refer”:“”}};
“后来”:{{“type”:“song”,“refer”:“”}};
“angelababy”:{{“type”:“actor”,“refer”:“杨颖”}};
“创业时代”:{{“type”:“tvseries”,“refer”:“”}};
“赵雷”:{{“type”:“singer”,“refer”:“”};
“成都”:{{“type”:“city”,“refer”:“”},{“type”:“song”,“refer”:“”}};
步骤1,构建双数组trie树
构建双数组trie树的核心步骤是:首先,给每个实体建立一个编号,每个编号即对应trie树中的一个节点;其次,基于实体编号,分别构建两个数组,即base数组、check数组。其中,base数组用于记录状态转移信息,而check数组则用于检查状态转移的可行性。
需要说明的是,构建双数组trie树可以包括但不限于采用darts-clone的开源实现,还可以考虑cedar的实现方式,这种实现方式可以支持动态更新数据。
下面以上面六个实体为例来说明双数组trie树的构建过程。
首先,将实体的类型(type)分别映射成一个唯一的数字编号,如表1所示,实体类型与实体类型编号。
因为存储实体类型编号,可以使用无符号短整型(unsigned short),只需要占用2字节;而存储实体类型,需要使用字符串类型(string),至少需要占用8字节内存。所以,为节省内存,在进行多模匹配时,我们直接使用实体类型编号来替代实体。
其次,给每个实体建立编号。根据实体类型(type)个数以及是否有指代信息,将实体分为三种类别:单类型无指代信息(实体“奶茶”/“创业时代”/“赵雷”)、单类型有指代信息(实体“angelababy”)、多类型(实体“奶茶”/“成都”)。具体的编号规则如下:
1、选择32位整型(int);
2、最高两位作为标志位,对于单类型无指代信息的实体,其最高两位为“01”;对于其他两种类型的实体,其最高两位为“00”;
3、对于单类型无指代信息的实体,后30位的值等于其实体类型编号。
4、对于单类型有指代信息、多类型的实体,后30位的值从0开始递增。
由于采用二进制方法计数,所以最高两位为“01”等价于2的30次方(即,1073741824),因此单类型无指代信息的实体的编号等于1073741824加上实体类型编号。最终,我们得到实体以及实体编号,如表2所示,实体与实体编号。
最后,根据上面得到的实体以及实体编号信息构建trie树。需要说明的是,本实施例中可以采用darts-clone的双数组trie树实现方式。
步骤2,构建模式信息存储结构
在步骤1中通过对实体编号,构建了方便查找实体的双数组trie树。进一步的,要构建实体信息存储结构,以便记录实体的类型/指代等信息。需要注意的是,实体在双数组trie树和实体信息存储结构中必须能够一一对应起来,这样才能保证不会映射出错。正是出于这个考虑,决定采用数组来存储实体的信息。
为了充分节省内存,对三种不同类别的实体采取三种不同的存储方式:首先,对于单类型无指代信息的实体,由于在构建trie树的时候,已经将其唯一的信息(实体类型)编码到其编号中了,因此这里无需再将其信息存储到数组中;其次,对于单类型有指代信息以及多类型的实体,根据是否包含指代信息,采用如表3所示的两种数据结构来分别存储其不同的类型记录。
表3
依然以上面6个实体为例:
“奶茶”:多类型实体,其信息需要存储在数组中。其中两种类型(singer/actor)具有指代信息,需要使用RecordY来记录,还有一种类型(drink)没有指代信息,需要使用RecordX来记录。这样我们把“奶茶”的实体信息存入数组中,作为数组的第一个元素,其下标为0,所占内存为28(12+12+4)。
“后来”:单类型且无指代信息实体,其唯一信息已经编码到其编号中,所以无需再存储到数组中。
“angelababy”:单类型且有指代信息实体,其信息需要存储在数组中。其唯一类型(actor)具有指代信息,需要使用RecordY来记录。我们把“angelababy”的实体信息存入数组中,作为数组的第二个元素,其下标为1,所占内存为12。
“创业时代”:单类型无指代信息实体,其唯一信息已经编码到其编号中,所以无需再存储到数组中。
“赵雷”:单类型无指代信息实体,其唯一信息已经编码到其编号中,所以无需再存储到数组中。
“成都”:多类型实体,其信息需要存储在数组中。其中两种类型(city/song)都无指代信息,所以都可使用RecordX来记录。同样我们把“成都”的实体信息存入数组中,作为数组的第三个元素,其下标为2,所占内存为8(4+4)。
综上,将6个实体的trie树编号,数组下标(索引值),占用内存大小汇总如表4所示。
表4
6个实体总共所占总内存为48字节,假设统一使用某种数据结构来存储实体信息,则至少需要使用72个字节的内存。因此,通过本申请提供的实施例的优化算法,至少节省了25%的内存使用。而在实际线上系统中,单类型无指代信息的实体往往占得最多,因此在实际应用中,本申请提供的算法能节省的内存更多。
步骤3,多模匹配
在步骤1和2中,分别构建了模式查找的双数组trie树以及存储实体信息的数组,接下来便是利用这两个数据结构进行多模匹配。
下面以“播放赵雷的成都”为例来说明多模字匹配过程:
首先,以每个字为开头进行逐字的查找。例如,以“播”字开头,需要依次在双数组trie树中查找模式:“播”,“播放”,“播放赵”,“播放赵雷”,“播放赵雷的”,“播放赵雷的成”,“播放赵雷的成都”;以“放”字开头,需要查找模式:“放赵”,“放赵雷”,“放赵雷的”,“放赵雷的成”,“放赵雷的成都”;依次类推,直到最后一个字“都”。在这一步中,若查找成功,则会返回实体对应的编号ID,若失败则返回结果为空。
然后,对查找成功的实体,判断其类别。判断的依据是:将实体编号与0x40000000做与运算,若结果为1,则表明是单类型且无指代信息的实体,反之则表明是其他两种类别。例如,查找“赵雷”成功返回ID:1073741825,将其与0x40000000做与运算,结果为1,表明这是一个单类型实体;查找“成都”成功返回ID:2,将其与0x40000000做与运算,结果为0,表明这不是一个单类型实体。
最后,解析实体记录。对单类型的实体,我们直接将其ID与0x3fffffff做与运算,便得到其唯一的记录类型ID,再根据表1的映射关系便可得到其唯一的记录类型。例如,将“赵雷”的ID:1073741825与0x3fffffff做与运算,结果为1,1对应的实体类型为singer。对其他两种类别的实体,我们直接在模式信息存储数组中取下标等于其ID的元素便可得到其全部信息。例如,取数组的第三个元素,我们得到实体“成都”的所有记录信息:{{“type”:“city”,“refer”:“”},{“type”:“song”,“refer”:“”}}。
综上,query:“播放赵雷的成都”的多模匹配结果如下:
1.“赵雷”:{{“type”:“singer”,“refer”:“”};
2.“成都”:{{“type”:“city”,“refer”:“”},{“type”:“song”,“refer”:“”}}。
通过本申请提供的实施例,将单类型实体的类型信息编码到trie树索引中,同时设计两种不同的数据结构来分别存储包含指代信息的实体记录以及不包含指代信息的实体记录,极大地节省了内存,使得这种多模匹配方案可以在内存比较小的硬件设施上部署起来。对项目而言具有很高的适用性。将本实施例中方案应用到离线车机等项目中后,极大节省了系统的内存使用。而在此之前,为了保证能在内存比较小的机器上使用多模匹配方案,项目组必须对数据进行精简,以便可以达到内存要求,这无疑对系统的功能是有损的。因此,本实施例中方案中提出的多模匹配方案对实际项目具有极大的意义。
需要说明的是,在智能助手服务系统中,为了完整地响应用户的请求,不仅需要正确识别用户的意图,还需要正确提取出实体信息。例如,当用户问句为:“放首刘若英的后来”,服务系统不仅需要正确识别成“播放音乐”意图,而且需要提取出实体信息:“刘若英”(歌手)、“后来”(歌曲),这样智能助手才能给用户正确播放歌手“刘若英”的歌曲“后来”。
多模匹配是一种非常简单方便的实体抽取方法。例如,一种简单的多模匹配方法是将实体库中的所有实体构建成一个trie树,然后再将所有实体信息记录在一个数组中,数组的每个元素是一个集合,记录的是该实体的所有类别、指代等信息。例如,实体“奶茶”可能是一种饮料也可能是歌手/演员“刘若英”的别名,因此,其实体信息应存为:{{“type”:“singer”,“refer”:“刘若英”},{“type”:“actor”,“refer”:“刘若英”},{“type”:“drink”,“refer”:“”}}。实体记录在trie树中的ID与其在实体信息数组中的下标(相当于索引值)是一一对应的。所以,以“奶茶”为例,实体抽取的过程可以概括为:首先,在trie树中查找“奶茶”,成功并返回其ID;然后,在实体信息数组中取出下标(相当于索引值)等于该ID的元素,即为实体“奶茶”的全部信息;最后,在实际应用中,会结合意图分类信息过滤出真正符合该场景的实体信息,例如,当用户问句为“放首奶茶的后来”,我们会将“singer”对应的那条记录作为该实体的最终信息;而当用户问句为“给我订杯奶茶”时,会将“drink”对应的信息记录作为该实体的最终信息。可以发现,当实体库中的实体越来越多的时候,负责记录实体信息的数组所占用的内存将越来越大,在内存受限场景下,这种多模匹配方案势必会受到严重的限制。
为了有效完成多模匹配并尽可能多地节省内存使用,本申请给出了一种基于双数组的受限内存场景下的多模匹配方案。首先,基于现有的多模匹配方案,将所有实体构建成双数组trie树,再将所有实体信息记录在一个数组中;其次,将所有的实体分为三类:单类型无指代信息、单类型有指代信息、多类型。对于单类型无指代信息的实体,将其唯一的类别信息存储到对应的双数组trie树ID中,这样便可以减少一个存储在实体信息数组中的元素;对于其他两种类型,定义两种不同的数据结构,其中,一种包含指代字段,另外一种不包含指代字段,将不包含指代信息的实体记录存储在不包含指代字段的数据结构中,这样便可以减少一个字段的内存占用。通过这两种存储上的优化方法,便可以大量减少内存使用。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述目标文本的匹配方法的目标文本的匹配装置。如图4所示,该目标文本的匹配装置包括:第一获取单元41、第二获取单元43以及第一确定单元45。
第一获取单元41,用于获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符。
第二获取单元43,用于在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号。
第一确定单元45,用于在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息。
可选的,在本实施例中,上述第一获取单元41可以包括:
得到模块,用于以目标文本中的每个字符作为第一字符串的起始字符,从起始字符开始在目标文本中逐个字符增加,每增加一个字符,得到一个第一字符串。
通过本申请提供的实施例,第一获取单元41获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符;第二获取单元43在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号;第一确定单元45在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息。达到了对目标文件中当前待匹配的字符串进行匹配,首先在预先建立的目标搜索树中查找到与字符串匹配的实体后,获取实体的实体名称和实体编号,再根据实体编号在信息数组中获取实体的实体类型和指代信息,实体确定为实体的实体名称和实体类型以及指代信息的目的,可以理解为,将单类型有指代信息的实体的唯一的类型信息存储到对应的目标搜索树中,可以减少将该实体的类型信息存储在实体信息数组的技术效果,从而减少了与目标文本中当前待匹配字符串进行匹配的实体信息数组所占内存,提高目标文本的匹配速度,进而解决了现有技术中,目标文本匹配的内存占用较大以及效率较低的技术问题。
作为一种可选的实施例,上述装置还可以包括:
第二确定单元,用于在获取第一实体的实体名称和实体编号之后,在根据实体编号确定出第一实体为单类型无指代信息的实体的情况下,根据实体编号获取第一实体的实体类型,将第一实体确定为包括第一实体的实体名称和实体类型。
其中,上述第二确定单元,可以包括:
运算模块,用于将第一实体的实体编号与第一预设数据进行第一逻辑运算,得到第一实体类型编号;
获取模块,用于在预先建立的数据表中获取与第一实体类型编号具有映射关系的第一实体类型,其中,第一实体类型为第一实体的实体类型,其中,数据表中记录了一组或多组具有映射关系的实体类型编号和实体类型。
作为一种可选的实施例,上述装置还可以包括:
第三确定单元,用于在获取第一实体的实体名称和实体编号之后,在根据实体编号确定出第一实体为多类型的实体的情况下,在实体信息数组中获取第一实体的多个实体类型,并将第一实体确定为包括第一实体的实体名称和多个实体类型。
其中,上述第三确定单元,可以包括:
第一确定模块,用于在实体信息数组中获取到第一实体的第一组实体类型的情况下,将第一实体确定为包括第一实体的实体名称和第一组实体类型,其中,第一组实体类型中的实体类型不对应有指代信息;
第二确定模块,用于在实体信息数组中获取到第一实体的第二组实体类型的情况下,将第一实体确定为包括第一实体的实体名称和第二组实体类型以及第二组实体类型分别对应的指代信息,其中,第二组实体类型中的实体类型对应有指代信息。
作为一种可选的实施例,上述装置还可以包括:
第三获取单元,用于在将第一实体确定为包括第一实体的实体名称和多个实体类型之前,在实体信息数组中获取索引值为实体编号的数组元素,其中,数组元素包括第一组实体类型,和/或,第二组实体类型以及第二组实体类型分别对应的指代信息。
可选的,上述装置还可以包括:
运算单元,用于在获取第一实体的实体名称和实体编号之后将实体编号与第二预设数据进行第二逻辑运算,得到第一运算结果;
第四确定单元,用于在第一运算结果为第一值的情况下,确定第一实体为单类型无指代信息的实体;
第五确定单元,用于在第一运算结果为第二值的情况下,确定第一实体为单类型有指代信息的实体或多类型的实体。
作为一种可选的实施例,上述装置还可以包括:
第四获取单元,用于在目标搜索树中查找与第一字符串匹配的实体之前,获取一组实体和一组实体的实体类型的实体类型编号;
第一设置单元,用于在一组实体中包括单类型无指代信息的第二实体的情况下,将第二实体的第二实体编号的最高N位设置为第三值,并将第二实体编号中除最高N位之外的位设置为等于第二实体的实体类型的实体类型编号;
第二设置单元,用于在一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将第三实体的第三实体编号的最高N位设置为第四值,并将第三实体编号中除最高N位之外的位设置为等于从0开始递增的取值,其中,N为自然数,第三值与第四值不同;
构建单元,用于根据一组实体以及一组实体的实体编号,构建目标搜索树。
作为一种可选的实施例,上述装置还可以包括:
第五获取单元,用于在目标搜索树中查找与第一字符串匹配的实体之前,获取目标搜索树中具有的一组实体和一组实体的实体编号;
记录单元,用于在一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将第三实体中的信息记录在实体信息数组中对应的数组元素中,其中,对应的数组元素在实体信息数组中的索引值为第三实体的实体编号。
根据本发明实施例的又一个方面,还提供了一种用于实施上述目标文本的匹配方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图5所示,该电子设备包括存储器502和处理器505,该存储器502中存储有计算机程序,该处理器505被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符;
S2,在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号;
S3,在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息。
可选地,本领域普通技术人员可以理解,图5所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图5其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图5中所示更多或者更少的组件(如网络接口等),或者具有与图5所示不同的配置。
其中,存储器502可用于存储软件程序以及模块,如本发明实施例中的目标文本的匹配方法和装置对应的程序指令/模块,处理器505通过运行存储在存储器502内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的目标文本的匹配方法。存储器502可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器502可进一步包括相对于处理器505远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器502具体可以但不限于用于存储目标搜索树以及实体信息数组的信息。作为一种示例,如图5所示,上述存储器502中可以但不限于包括上述目标文本的匹配装置中的第一获取单元41、第二获取单元43以及第一确定单元45。此外,还可以包括但不限于上述目标文本的匹配装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置506用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置506包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置506为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器508,用于显示上述待匹配的字符串;和连接总线510,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取目标文本中当前待匹配的第一字符串,其中,第一字符串包括目标文本中的一个或连续多个字符;
S2,在目标搜索树中查找到与第一字符串匹配的第一实体,根据目标搜索树返回的查找结果获取第一实体的实体名称和实体编号;
S3,在根据实体编号确定出第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取第一实体的实体类型和指代信息,并将第一实体确定为包括实体名称和实体类型以及指代信息。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种目标文本的匹配方法,其特征在于,包括:
获取目标文本中当前待匹配的第一字符串,其中,所述第一字符串包括所述目标文本中的一个或连续多个字符;
在目标搜索树中查找到与所述第一字符串匹配的第一实体,根据所述目标搜索树返回的查找结果获取所述第一实体的实体名称和实体编号;
在根据所述实体编号确定出所述第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取所述第一实体的实体类型和指代信息,并将所述第一实体确定为包括所述实体名称和所述实体类型以及所述指代信息;
在所述获取所述第一实体的实体名称和实体编号之后,所述方法还包括:在根据所述实体编号确定出所述第一实体为单类型无指代信息的实体的情况下,根据所述实体编号获取所述第一实体的实体类型,将所述第一实体确定为包括所述第一实体的所述实体名称和所述实体类型;
在所述获取所述第一实体的实体名称和实体编号之后,所述方法还包括:在根据所述实体编号确定出所述第一实体为多类型的实体的情况下,在所述实体信息数组中获取所述第一实体的多个实体类型,并将所述第一实体确定为包括所述第一实体的所述实体名称和所述多个实体类型。
2.根据权利要求1所述的方法,其特征在于,所述根据所述实体编号获取所述第一实体的实体类型,包括:
将所述第一实体的实体编号与第一预设数据进行第一逻辑运算,得到第一实体类型编号;
在预先建立的数据表中获取与所述第一实体类型编号具有映射关系的第一实体类型,其中,所述第一实体类型为所述第一实体的实体类型,其中,所述数据表中记录了一组或多组具有映射关系的实体类型编号和实体类型。
3.根据权利要求1所述的方法,其特征在于,所述在所述实体信息数组中获取所述第一实体的多个实体类型,并将所述第一实体确定为包括所述第一实体的所述实体名称和所述多个实体类型,包括:
在所述实体信息数组中获取到所述第一实体的第一组实体类型的情况下,将所述第一实体确定为包括所述第一实体的所述实体名称和所述第一组实体类型,其中,所述第一组实体类型中的实体类型不对应有指代信息;
在所述实体信息数组中获取到所述第一实体的第二组实体类型的情况下,将所述第一实体确定为包括所述第一实体的所述实体名称和所述第二组实体类型以及所述第二组实体类型分别对应的指代信息,其中,所述第二组实体类型中的实体类型对应有指代信息。
4.根据权利要求3所述的方法,其特征在于,在将所述第一实体确定为包括所述第一实体的所述实体名称和所述多个实体类型之前,所述方法还包括:
在所述实体信息数组中获取索引值为所述实体编号的数组元素,其中,所述数组元素包括所述第一组实体类型,和/或,所述第二组实体类型以及所述第二组实体类型分别对应的指代信息。
5.根据权利要求1所述的方法,其特征在于,在所述获取所述第一实体的实体名称和实体编号之后,所述方法还包括:
将所述实体编号与第二预设数据进行第二逻辑运算,得到第一运算结果;
在所述第一运算结果为第一值的情况下,确定所述第一实体为单类型无指代信息的实体;
在所述第一运算结果为第二值的情况下,确定所述第一实体为所述单类型有指代信息的实体或多类型的实体。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在目标搜索树中查找与所述第一字符串匹配的实体之前,所述方法还包括:
获取一组实体和所述一组实体的实体类型的实体类型编号;
在所述一组实体中包括单类型无指代信息的第二实体的情况下,将所述第二实体的第二实体编号的最高N位设置为第三值,并将所述第二实体编号中除所述最高N位之外的位设置为等于所述第二实体的实体类型的实体类型编号;
在所述一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将所述第三实体的第三实体编号的最高N位设置为第四值,并将所述第三实体编号中除所述最高N位之外的位设置为等于从0开始递增的取值,其中,N为自然数,所述第三值与所述第四值不同;
根据所述一组实体以及所述一组实体的实体编号,构建所述目标搜索树。
7.根据权利要求1至5中任一项所述的方法,其特征在于,在目标搜索树中查找与所述第一字符串匹配的实体之前,所述方法还包括:
获取所述目标搜索树中具有的一组实体和所述一组实体的实体编号;
在所述一组实体中包括单类型有指代信息或多类型的第三实体的情况下,将所述第三实体中的信息记录在所述实体信息数组中对应的数组元素中,其中,所述对应的数组元素在所述实体信息数组中的索引值为所述第三实体的实体编号。
8.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取目标文本中当前待匹配的第一字符串,包括:
以所述目标文本中的每个字符作为所述第一字符串的起始字符,从所述起始字符开始在所述目标文本中逐个字符增加,每增加一个字符,得到一个所述第一字符串。
9.一种目标文本的匹配装置,其特征在于,包括:
第一获取单元,用于获取目标文本中当前待匹配的第一字符串,其中,所述第一字符串包括所述目标文本中的一个或连续多个字符;
第二获取单元,用于在目标搜索树中查找到与所述第一字符串匹配的第一实体,根据所述目标搜索树返回的查找结果获取所述第一实体的实体名称和实体编号;
第一确定单元,用于在根据所述实体编号确定出所述第一实体为单类型有指代信息的实体的情况下,在实体信息数组中获取所述第一实体的实体类型和指代信息,并将所述第一实体确定为包括所述实体名称和所述实体类型以及所述指代信息;
所述装置还包括:第二确定单元,用于在所述获取所述第一实体的实体名称和实体编号之后,在根据所述实体编号确定出所述第一实体为单类型无指代信息的实体的情况下,根据所述实体编号获取所述第一实体的实体类型,将所述第一实体确定为包括所述第一实体的所述实体名称和所述实体类型;
所述装置还包括:第三确定单元,用于在根据所述实体编号确定出所述第一实体为多类型的实体的情况下,在所述实体信息数组中获取所述第一实体的多个实体类型,并将所述第一实体确定为包括所述第一实体的所述实体名称和所述多个实体类型。
10.根据权利要求9所述的装置,其特征在于,所述第二确定单元,包括:
运算模块,用于将所述第一实体的实体编号与第一预设数据进行第一逻辑运算,得到第一实体类型编号;
获取模块,用于在预先建立的数据表中获取与所述第一实体类型编号具有映射关系的第一实体类型,其中,所述第一实体类型为所述第一实体的实体类型,其中,所述数据表中记录了一组或多组具有映射关系的实体类型编号和实体类型。
11.一种计算机可读的存储介质,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至8任一项中所述的方法。
12.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至8任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010525837.3A CN111680489B (zh) | 2020-06-10 | 2020-06-10 | 目标文本的匹配方法和装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010525837.3A CN111680489B (zh) | 2020-06-10 | 2020-06-10 | 目标文本的匹配方法和装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680489A CN111680489A (zh) | 2020-09-18 |
CN111680489B true CN111680489B (zh) | 2021-11-19 |
Family
ID=72454471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010525837.3A Active CN111680489B (zh) | 2020-06-10 | 2020-06-10 | 目标文本的匹配方法和装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680489B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100132B (zh) * | 2020-09-24 | 2024-07-30 | 深圳软牛科技有限公司 | 一种已删除文件类型识别方法、装置、电子设备及存储介质 |
CN112597155B (zh) * | 2020-12-15 | 2024-08-16 | 深圳前海微众银行股份有限公司 | 数据搜索优化方法、设备、介质及计算机程序产品 |
CN112685544A (zh) * | 2020-12-25 | 2021-04-20 | 中国联合网络通信集团有限公司 | 电信信息的查询方法、装置、设备和介质 |
CN113377917A (zh) * | 2021-06-22 | 2021-09-10 | 云知声智能科技股份有限公司 | 一种多模式匹配方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365991A (zh) * | 2013-07-03 | 2013-10-23 | 深圳市华傲数据技术有限公司 | 一种基于一维线性空间实现Trie树的词典存储管理方法 |
CN108509505A (zh) * | 2018-03-05 | 2018-09-07 | 昆明理工大学 | 一种基于分区双数组Trie的字符串检索方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102768681B (zh) * | 2012-06-26 | 2014-10-22 | 北京奇虎科技有限公司 | 一种用于搜索输入的推荐系统及方法 |
CN116483973B (zh) * | 2018-08-13 | 2024-08-23 | 腾讯科技(深圳)有限公司 | 一种文本处理方法、装置以及相关设备 |
-
2020
- 2020-06-10 CN CN202010525837.3A patent/CN111680489B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365991A (zh) * | 2013-07-03 | 2013-10-23 | 深圳市华傲数据技术有限公司 | 一种基于一维线性空间实现Trie树的词典存储管理方法 |
CN108509505A (zh) * | 2018-03-05 | 2018-09-07 | 昆明理工大学 | 一种基于分区双数组Trie的字符串检索方法及装置 |
Non-Patent Citations (2)
Title |
---|
An efficient digital search algorithm by using a double-array structure;J.-I. Aoe;《IEEE Transactions on Software Engineering》;19890930;第15卷(第9期);第1066-1077页 * |
基于Trie树的个性化搜索研究;张宇翔;《北京工业大学》;20171231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111680489A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680489B (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
US20200301961A1 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
CN103186653B (zh) | 辅助查询方法和设备、查询方法和设备及命名查询系统 | |
US8495007B2 (en) | Systems and methods for hierarchical aggregation of multi-dimensional data sources | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN107391502B (zh) | 时间间隔的数据查询方法、装置及索引构建方法、装置 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
US8027961B2 (en) | System and method for composite record keys ordered in a flat key space for a distributed database | |
CN104021161A (zh) | 一种聚簇存储方法及装置 | |
US11100073B2 (en) | Method and system for data assignment in a distributed system | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN108154024B (zh) | 一种数据检索方法、装置及电子设备 | |
CN104636368A (zh) | 数据检索方法、装置及服务器 | |
CN109726295A (zh) | 品牌知识图谱显示方法、装置、图服务器及存储介质 | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN111651424A (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN104424316A (zh) | 一种数据存储方法、数据查询方法、相关装置和系统 | |
CN112199577B (zh) | 一种数据查询方法、装置及电子设备 | |
CN114741570A (zh) | 图数据库的查询方法、索引创建方法及相关设备 | |
CN106934066B (zh) | 一种元数据处理方法、装置和存储设备 | |
CN115687560B (zh) | 一种基于有限确定自动机的海量关键词查找方法 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
CN104796437A (zh) | 基于Nginx的地理位置信息查询方法、装置及系统 | |
CN116049153A (zh) | 时序数据处理方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |