CN105550298A - 一种关键词模糊匹配的方法及装置 - Google Patents
一种关键词模糊匹配的方法及装置 Download PDFInfo
- Publication number
- CN105550298A CN105550298A CN201510921094.0A CN201510921094A CN105550298A CN 105550298 A CN105550298 A CN 105550298A CN 201510921094 A CN201510921094 A CN 201510921094A CN 105550298 A CN105550298 A CN 105550298A
- Authority
- CN
- China
- Prior art keywords
- character
- keyword
- matched
- text
- belonging
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- 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/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种关键词模糊匹配的方法:对待匹配文本中的每个字符,分别根据关键词集合获取字符所属的关键词以及字符在所属关键词中的索引位;判断该字符是否为所述关键词的首字符;如果是,则在匹配信息集合中记录字符所属关键词,并在记录中标记关键词的首字符存在于所述待匹配文本中;如果不是,且匹配信息集合中存在所述字符所属关键词的记录时,获取字符所属关键词的记录,并在记录中标记所述关键词中的字符存在于待匹配文本中;当一关键词中的各字符都被标记存在于待匹配文本中时,则判定待匹配文本命中所述关键词。本发明还公开了一种关键词模糊匹配的装置,在一定程度上能够解决现有关键词匹配效率低的缺陷。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种关键词模糊匹配的方法及装置。
背景技术
随着互联网技术的迅猛发展,网络传播也得到了飞速发展。网络传播正在以不可抵挡的势头,迅速渗透到世界各国政治、经济、思想以及文化等诸多领域,改变着人们的生活,改变着社会面貌。然而,网络传播不可避免地带来了一系列负面作用,如意识形态和文化渗透、假新闻假信息传播、个人隐私遭到侵犯等等。
在管理网络传播的过程中,通常涉及到文本内容分析、网络舆情监测、入侵检测以及信息检索等领域,关键词模糊匹配技术广泛应用于上述领域中。
在现有技术中,关键词模糊匹配时,通常采用正则表达式的方式,即通过单个模式字符串来描述和匹配一系列符合特性规则的字符串,一般通过正则匹配引擎将正则表达式编译为非确定型有穷自动机(NFA)或确定型有穷自动机(DFA),再对文本进行扫描和匹配,通常正则表达式冗长,而且匹配关键词的效率低,匹配过程耗时比较长,效率低,造成网络资源浪费。
发明内容
本发明提供了一种关键词模糊匹配的方法,在一定程度上能够解决现有关键词匹配效率低的缺陷。
本发明提供了如下方案:
一种关键词模糊匹配的方法,包括:
对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;依据所述字符在所属关键词中的索引位判断所述字符是否为所述关键词的首字符;如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
可选的,所述方法还包括:对所述关键词集合中每个关键词的每个字符,分别构建对应各字符的匹配规则;所述匹配规则包含:字符、所述字符所属关键词、所述字符所属关键词包括的字符数目、以及所述字符在所属关键词中的索引位;获取关键词中每个字符对应的匹配规则,形成对应所述关键词的匹配规则集合;根据所述匹配规则集合构建从字符到匹配规则的倒排索引表;所述倒排索引表包括:字符、以及所述字符对应的所有匹配规则。
可选的,所述根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位,包括:遍历所述倒排索引表,当所述倒排索引表中包括所述字符时,获取所述字符对应的所有的匹配规则;对每条匹配规则,分别获取所述匹配规则包括的所述字符所属关键词、以及所述字符在所属关键词中的索引位。
可选的,所述如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中,包括:如果所述字符是所属关键词的首字符,新建所述字符所属关键词对应的匹配过程信息,将所述匹配过程信息保存在所述匹配信息集合中;并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中。
可选的,如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于待匹配文本中,包括:如果所述字符不是所属关键词的首字符,则查找所述匹配信息集合,判断所述匹配过程集合中是否存在所述字符所属关键词对应的匹配过程信息,如果存在,则获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中。
可选的,当所述匹配过程集合中存在所述字符所属关键词对应的匹配过程信息时,所述方法还包括:判断所述字符所属关键词对应的匹配过程信息中是否已记录过所述字符在所述待匹配文本中的索引位;如果是,复制所述字符所属关键词中匹配过程信息,并用所述字符在所述待匹配文本中的当前索引位更新所述匹配过程信息中已记录的所述字符在所述待匹配文本中的索引位;如果否,执行获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中的步骤。
可选的,所述一关键词中的各字符都被标记存在于所述待匹配文本中,包括:所述字符所属关键词对应的匹配过程信息中的每一位都被置为对应位数的字符在所述待匹配文本中的索引位。
可选的,在所述判定所述待匹配文本命中所述关键词之后,所述方法还包括:根据各字符在所述待匹配文本中的索引位从所述待匹配文本中获取匹配信息,输出所述匹配信息。
可选的,还包括:对所述关键词集合中的各关键词,分别构建字符距离规则,形成字符距离规则集合;所述字符距离规则包括:关键词包括的字符数量、所述关键词中各字符与其前一个字符的有效距离;当对所述待匹配文本进行匹配时,根据所述字符距离规则集合对当前字符所属关键词进行距离匹配校验。
可选的,所述根据所述字符距离规则集合对当前字符所属关键词进行匹配校验,包括:从所述当前字符所属关键词中获取当前字符的前一个字符在所述待匹配文本中的索引位,根据所述当前字符的前一个字符在所述待匹配文本中的索引位和所述当前字符在所述待匹配文本中的索引位,计算所述当前字符与所述当前字符的前一个字符之间的第一距离;从当前字符所属关键词对应的字符距离规则中获取所述当前字符与所述当前字符的前一个字符之间的有效距离作为第二距离;如果所述第二距离表示任一间隔长度,或者所述第二距离大于所述第一距离,则表明距离校验成功,获取当前字符的下一个字符进行匹配;如果所述第二距离表示不是任一间隔长度,并且所述第二距离小于所述第一距离,则表明所述距离校验失败,所述匹配过程信息失效,结束对所述字符所属关键词的匹配。
一种关键词模糊匹配的装置,包括:获取模块,用于对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;判断模块,用于依据所述字符在所属关键词中的索引位判断所述字符是否为所属关键词的首字符;第一标记模块,用于当所述判断模块的判断结果为是时,在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;第二标记模块,用于当所述判断模块的判断结果为否且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;确定模块,用于当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
可选的,一种用于关键词模糊匹配的装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;依据所述字符在所属关键词中的索引位判断所述字符是否为所述关键词的首字符;如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
通过本发明的一种关键词模糊匹配的方法,对获取到的待匹配文本中的每个字符,分别获取该字符所属的关键词,并判断所述字符在所属关键词中的索引位,如果是首字符,则记录所述字符所属关键词,标记所述关键词的首字符存在于所述待匹配文本中;如果不是首字符,则从已记录的关键词中查找所述字符所属关键词,标记所述关键词的中的所述字符存在于所述待匹配文本中;当一关键词中的各字符都被标记存在于待匹配文本中时,该关键词被待匹配文本命中。通过这种方法对关键词中每个字符匹配,过滤掉首字符不在待匹配文本中的关键词的方式,不必穷举每个关键词,能够快速地命中关键词,节省时间,提高效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种关键词模糊匹配的方法流程图;
图2是本发明实施例提供的一种对待匹配文本中的每个字符分别进行关键词模糊匹配的方法流程图;
图3是本发明实施例提供的一种多关键词模糊匹配的装置框图;
图4是根据一示例性实施例示出的一种用于关键词模糊匹配的装置800的框图;
图5是本发明实施例中服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种关键词模糊匹配的方法,如图1所示,包括:
步骤S101:对待匹配文本中的每个字符,分别根据关键词集合获取该字符所属的关键词以及该字符在所属关键词中的索引位;
具体的,扫描待匹配文本,每扫描到一个字符,从关键词集合中获取该字符所属的关键词,并且获取该字符在所属关键词中的索引位。待匹配文本中的一个字符可以对应一个或者多个关键词,也可以没有对应的关键词。
本实施例中还包括:对关键词集合中每个关键词的每个字符,分别构建对应各字符的匹配规则,其中,匹配规则包含:字符、字符所属关键词、字符所属关键词包括的字符数目、以及该字符在所属关键词中的索引位;获取关键词中每个字符对应的匹配规则,形成对应该关键词的匹配规则集合;根据匹配规则集合构建从字符到匹配规则集合的倒排索引表。其中,倒排索引表包括:字符、以及该字符对应的所有匹配规则;基于前述内容可知,该字符对应的匹配规则可以是指包括该字符的匹配规则。
当扫描待匹配文本中的任意一个字符时,根据上述倒排索引表获取该字符所属的关键词,以及该字符在所属关键词中的索引位。具体的,对待匹配文本中的每一个字符,分别遍历倒排索引表,当倒排索引表中包括该字符时,获取该字符对应的所有的匹配规则,并且对每条匹配规则,分别获取该匹配规则包括的该字符所属关键词、以及该字符在所属关键词中的索引位。
本申请实施例中,通过拆分关键词中的各个字符,并对每个字符建立匹配规则,建立倒排索引表,使通过遍历倒排索引表能够快速获取到该字符对应的所有的所属关键词,以及确定该字符在各个所属关键词中的索引位,不再需要对各个关键词分别进行匹配,使匹配过程更简便,更快速,效率更高。
关键词中可以包括通配符和非通配符,在本实施例中,非通配符统一称作字符,关键词中可以包含一个或者若干个通配符,这些通配符可以是连续的,也可以是间隔的,通配符的长度可以为任一字符长度。本实施例中,可以对关键词集合进行增添、修改和删除关键词操作,相应的,在对关键词集合进行增添、修改和删除操作时,按照具体的操作,更新倒排索引表中的内容。
步骤S102:依据所述字符在所属关键词中的索引位判断该字符是否是所述关键词的首字符,如果该字符是所属关键词的首字符,则执行步骤S103;如果不是首字符,则执行步骤S104;
具体的,关键词中的字符分为首字符和非首字符,其中,首字符指的是该关键词中第一个非通配符。非首字符指的是关键词中除首字符外其他的非通配符。当关键词中仅有一个非通配符时,该字符是首字符。
步骤S103:在匹配信息集合中记录该字符所属关键词,并在记录中标记该关键词的首字符存在于待匹配文本中;
具体的,步骤S103中,如果该字符是所属关键词的首字符,新建该字符所属关键词对应的匹配过程信息,将该匹配过程信息保存在匹配信息集合中;并将该字符在待匹配文本中的索引位记录到该匹配过程信息中。其中,匹配过程信息与字符所属关键词一一对应。
进一步的,将字符在待匹配文本中的索引位记录到匹配过程信息中,能够标记该所属关键词中的该字符存在于待匹配文本中,并且记录该字符在待匹配文本中的索引位,以便后续命中关键词之后,输出匹配信息时使用。
步骤S104:当匹配信息集合中存在字符所属关键词的记录时,获取该字符所属关键词的记录,并在该记录中标记关键词中的该字符存在于待匹配文本中。具体的,步骤S104中,如果该字符不是所属关键词的首字符,则查找匹配信息集合,判断所述匹配信息集合中是否存在所述字符所属关键词的记录,如果存在,则获取该字符所属关键词的记录,并在该记录中标记关键词中的该字符存在于待匹配文本中;如果不存在,则忽略该字符,继续扫描待匹配文本中的下一个字符。
本申请实施例中,步骤S104中,所述判断所述匹配信息集合中是否存在所述字符所属关键词的记录,可以为判断所述匹配过程集合中是否存在所述字符所属关键词对应的匹配过程信息,如果存在,则获取该字符所属关键词对应的匹配过程信息,并将该字符在待匹配文本中的索引位记录到该匹配过程信息中;如果不存在,则忽略该字符。
具体的,当确定该字符是非首字符时,通过判断匹配信息集合中是否存在该字符所属关键词对应的匹配过程信息,来判定是否已记录过该关键词。
如果存在该字符所属关键词对应的匹配过程信息,则判定该关键词已被记录过,则可以获取该字符所属关键词的记录,具体可以为该字符所属关键词对应的匹配过程信息,将该字符在待匹配文本中的索引位记录到该匹配过程信息中。
如果不存在该字符所属关键词对应的匹配过程信息,则判定该关键词没有被记录过,且该字符也不是该关键词的首字符,则此时可以忽略该字符,从待匹配文本中获取下一字符进行匹配。
需要说明的是,所述匹配过程信息与所述字符所属关键词一一对应,且每个匹配过程信息中包括的位数与对应的关键词包括的字符数相同;该匹配过程信息中的每一位分别用于标记对应关键词中对应位数的字符是否在待匹配文本中出现,如果出现,则该匹配过程信息中对应位被置为对应位数的字符在待匹配文本中的索引位。
由此可见,当一条匹配过程信息中的每一位都被置为对应位数的字符在待匹配文本中的索引位时,则可以确定该匹配过程信息对应的关键词的每一位字符都在待匹配文本中出现,则表明该关键词被该待匹配文本命中。该具体匹配过程在后续实施例中会详细说明。
进一步的,当确定该关键词被该待匹配文本命中时,所述方法还可以包括:输出匹配信息。
具体的,可以在确定匹配过程信息中已记录对应的关键词中所有字符在待匹配文本中的索引位时,确定待匹配文本命中该关键词,此时可以根据各字符在待匹配文本中的索引位从待匹配文本中获取匹配信息,输出匹配信息。
本申请实施例中,通过使用匹配过程信息,能够确定关键词中的每一个字符是否存在于待匹配文本中,以及在待匹配文本中的索引位。
在本实施例中,当一关键词中的各字符都被标记存在于待匹配文本中时,则判定待匹配文本命中该关键词。
具体的,字符所属关键词对应的匹配过程信息中已记录字符所属关键词中各字符在待匹配文本中的索引位时,确定待匹配文本命中该关键词。
可选的,本实施例中,步骤S104中,在所述获取该字符所属关键词对应的匹配过程信息之后,所述将该字符在待匹配文本中的索引位记录到该匹配过程信息中之前,还包括:
判断所述匹配过程信息中是否已经记录了该字符在待匹配文本中的索引位,如果已记录,则复制该匹配过程信息,并用该字符在待匹配文本中的当前索引位更新所述复制的匹配过程信息中已记录的该字符在待匹配文本中的索引位;如果没有记录,则执行将该字符在待匹配文本中的索引位记录到该匹配过程信息中的步骤。
本实施例中,还包括:
对关键词集合中的各关键词,分别构建包含关键词中字符数量、各字符与其前一个字符的有效距离的字符距离规则,形成字符距离规则集合;
当对待匹配文本进行匹配时,根据字符距离规则集合对当前字符所属关键词进行匹配校验,具体包括:
从当前字符所属关键词中获取当前字符的前一个字符在待匹配文本中的索引位,根据该索引位和当前字符在待匹配文本中的索引位,计算当前字符与当前字符的前一个字符之间的第一距离;
从当前字符所属关键词对应的字符距离规则中获取当前字符与当前字符的前一个字符之间的第二距离;
如果第二距离表示任一间隔长度,或者第二距离表示的间隔长度大于第一距离表示的间隔长度,则校验结果为添加成功,获取当前字符的下一个字符与其所属关键词进行匹配;
如果第二距离表示不是任一间隔长度,并且第二距离表示的间隔长度小于第一距离表示的间隔长度,则校验结果为失败,匹配过程信息失效,结束对字符所属关键词的匹配。
另一方面,结合上述技术方案,本实施例提供一个具体示例进行说明,具体如下:
可以预先对关键词集合中每个关键词的每个字符,分别构建包含该字符、该字符所属关键词、该字符所属关键词包括的字符数目、以及该字符在所属关键词中的索引位的匹配规则,形成匹配规则集合;根据匹配规则集合构建从字符到匹配规则集合的倒排索引表;
具体的,对关键词集合中每个关键词的每个字符,分别构建包含该字符、该字符所有的所属关键词、该字符所属关键词包括的字符数目、以及该字符在各个所属关键词中的索引位的匹配规则,关键词集合中的每个关键词的每个字符至少有一个匹配规则,由关键词集合中的每个关键词中的所有字符对应的匹配规则组成匹配规则集合,对所有的不重复的字符构建该字符到匹配规则集合的倒排索引表。
对关键词集合中的各个关键词,分别构建包含关键词中字符数量、各字符与其前一个字符的有效距离的字符距离规则,形成字符距离规则集合。每个关键词对应一个字符距离规则。其中,字符数量指的是关键词包括的非通配符数量,各字符与其前一个字符的有效距离指的是各非通配符与其前一个非通配符之间的距离。
各字符与其前一个字符可以是连续的,例如连续时可以设定字符距离为0。
各字符与其前一个字符也可以是不连续的。其中,不连续的情况可以分为两种,情况一:任意长度间隔,可以为字符与前一个字符之间包括表示任意长度的通配符“*”,此时可以设定字符距离为-1;情况二:固定长度间隔,可以为字符与前一个字符之间包括n个表示一个字符长度的通配符“??”,此时可以设定字符距离为n(n为自然数),例如,字符与前一个字符之间包括通配符“??”,则对应的字符距离即为2。
本实施例中,能够通过使用字符距离规则对关键词进行校验。字符距离规则集合也可以在对关键词进行匹配校验时生成。
例如:关键词集合中包含两个关键词,其中,关键词一为:代??开*发票,关键词二为:找??代理。
首先,对每个关键词中的各个字符构建匹配规则,匹配规则包含该字符、该字符所属关键词、该字符所属关键词包括的字符数目、以及该字符在所属关键词中的索引位;分别构建关键词一和关键词二中各字符的匹配规则,将其组成匹配规则集合,具体如表1所示,构建各字符与匹配规则集合之间的映射关系并编号,得到倒排索引表,具体如表2所示。
表1
下面结合表1所示,对匹配规则集合举例说明。如关键词“代??开*发票”,其包括4个有效字符,对应构建4条匹配规则。‘
第一个字符(character)“代”,对应关键词(keyword)为“代??开*发票”,该关键词包括字符数目(size)为4,“代”在该关键词中的索引位(index)为0。
第二个字符(character)“开”,对应关键词(keyword)为“代??开*发票”,该关键词包括字符数目(size)为4,“开”在该关键词中的索引位(index)为1。
第三个字符(character)“发”,对应关键词(keyword)为“代??开*发票”,该关键词包括字符数目(size)为4,“发”在该关键词中的索引位(index)为2。
第四个字符(character)“票”,对应关键词(keyword)为“代??开*发票”,该关键词包括字符数目(size)为4,“票”在该关键词中的索引位(index)为3。
表2
下面结合表2,对倒排索引表举例说明。
例如,字符“代”,分别存在于关键词“代??开*发票”和关键词“找??代理”中,因此对应两条匹配规则,分别构建字符“代”与两条匹配规则之间的映射关系,并编号,保存在倒排索引表中,如表2所示。
再例如,字符“开”,仅存在于关键词“代??开*发票”中,因此对应一条匹配规则,构建字符“开”与该条匹配规则之间的映射关系,并编号,保存在倒排索引表中,如表2所示。
进一步的,举例说明本申请前述实施例所述的字符距离规则。
对关键词一:代??开*发票,
其中,字符数量为4个,第二个字符“开”与第一个字符“代”之间有两个通配符“??”,即字符距离为2。第三个字符“发”与第二个字符“开”之间有任意长度间隔的通配符“*”,即字符距离为-1,第四个字符“票”与第三个字符“发”之间没有通配符,即字符距离为0。因此,构建得到的关键词一对应的字符距离规则为[4,2,-1,0]。
对关键词二:找??代理。依照对关键词一构建字符距离规则的方法,构建得到的关键词二对应的字符距离规则为[3,2,0]。
此时,字符距离规则集合中包含两个字符距离规则,分别为关键词一“代??开*发票”的字符距离规则[4,2,-1,0]和关键词二“找??代理”的字符距离规则[3,2,0]。
当需要对待匹配文本进行关键词模糊匹配时,对待匹配文本中的每个字符分别进行关键词模糊匹配,如图2所示,具体如下:
步骤201:从待匹配文本中获取一个字符作为当前字符;
例如,待匹配文本为:寻找便宜代理开营业发票。扫描待匹配文本,具体操作如下:检索字符‘寻’,将其作为当前字符。
步骤202:从倒排索引表中获取与当前字符对应的所有的匹配规则,对每个匹配规则,判断该匹配规则所属关键词的匹配过程信息集合是否为空,如果匹配过程信息集合为空,则执行步骤203;如果匹配过程信息集合不为空,则执行步骤207;
本实施例中,如果从倒排索引表中获取不到与当前字符对应的匹配规则时,则忽略当前字符,从待匹配文本中获取当前字符的下一个字符,将其作为当前字符,执行步骤202。
步骤203:判断当前字符是否是关键词的首字符,是则执行步骤204;否则从待匹配文本中获取当前字符的下一个字符,将其作为当前字符,执行步骤202。
具体的,根据匹配规则中记录的当前字符在所属关键词中的索引位进行判断。
步骤204:在匹配过程信息集合中新增一个匹配过程信息,将当前字符在待匹配文本中的索引位记录到该匹配过程信息中,执行步骤205;
本实施例中,匹配过程信息作用在于,记录一个关键词中的各个字符在待匹配文本中的索引位。本实施例中,新建匹配过程信息时,可以为该匹配过程信息中的每个元素设置初始值,匹配过程信息中的各个元素代表关键词中的各个字符是否在待匹配文本中出现,以及在待匹配文本中的索引位。
具体的,该匹配过程信息中包括的元素数等于对应关键词包括的字符数。且每个元素表示该关键词中的各个字符是否被待匹配文本包括,如果没有,则该字符对应的元素为初始值,如果有,则该字符对应的元素为该字符在待匹配文本中的索引位。
例如:扫描待匹配文本中的字符是“找”时,判断出“找”在其所属关键词“找??代理”中是首字符,此时,新建一个匹配过程信息,一个匹配过程信息与一个关键词相对应,且匹配过程信息包括的元素数等于该关键词包括的字符数,且新建的匹配过程信息中各元素均被置为初始值。例如,将新建的匹配过程信息中各个元素初始值置为-1,表示关键词中的各个字符均未出现在待匹配文本中,例如:关键词“找??代理”中有三个字符,创建包含三个元素的匹配过程信息,并将各元素置为-1,即新建的匹配过程信息为index[-1,-1,-1]。获取扫描到的字符“找”在待匹配文本中的索引位1,将匹配过程信息中与“找”对应的索引位更新为1,更新后的匹配过程信息为index[1,-1,-1]。
步骤205:根据匹配过程信息判断是否匹配完成,如果完成匹配,则执行步骤206;如果未完成匹配,则从待匹配文本中获取当前字符的下一个字符,将其作为当前字符,执行步骤202。
步骤S205中,所述根据匹配过程信息判断是否匹配完成,具体的可以包括:判断匹配过程信息中是否存在值为初始值的元素,如果是则表明未完成匹配,否则表明匹配完成。
需要说明的是,前述实施例已经表明,当待匹配文本中包括关键词中的字符时,会将该关键词对应的匹配过程信息中该字符对应的元素置为该字符在待匹配文本中的索引位,否则,该字符对应的元素保持初始值。因而,当匹配过程信息中包括的所有元素均是非初始值时,可以确定该待匹配文本中包括该关键词中所有的字符,即为匹配完成。
步骤206:根据匹配过程信息输出匹配信息。
具体的,根据该匹配过程信息中记录的第一个字符在待匹配文本中的索引位,以及最后一个字符在待匹配文本中的索引位,从待匹配文本中获取上述两个索引位之间的字符,包括这两个索引位上的字符,将其作为匹配信息,输出该匹配信息。
步骤207:判断当前字符是否为所属关键词的首字符,是则执行步骤208;否则执行步骤209;
步骤208:在匹配过程信息中添加一个新的匹配过程信息,将当前字符在待匹配文本中的索引位记录到该匹配过程信息中,执行步骤205;
步骤209:从匹配过程信息集合中获取当前字符所有的所属关键词对应的匹配过程信息,将当前字符在待匹配文本中的索引位记录到每个匹配过程信息中,执行步骤210;
本实施例中,从匹配过程信息集合中获取当前字符所有的所属关键词对应的匹配过程信息之后,将当前字符在待匹配文本中的索引位记录到每个匹配过程信息中之前,还包括,判断是否已经将当前字符在待匹配文本中的索引位记录在对应的匹配过程信息中,是则复制当前匹配过程信息,并将当前字符在待匹配文本中的索引位更新到复制后的匹配过程信息中。否则将当前字符在待匹配文本中的索引位记录到每个匹配过程信息中,执行步骤210。
步骤210:根据字符距离规则对每个匹配过程信息进行距离校验,如果校验结果成功,则执行步骤205;如果校验结果为失败,则将该关键词标记为失效,即结束对当前字符所属关键词的匹配,然后从待匹配文本中获取当前字符的下一个字符,将其作为当前字符,执行步骤202。
本实施例中,通过检验关键词中的每个字符是否都已经出现在待匹配文本中,以及关键词对应的字符距离规则与该关键词中各字符在待匹配文本中的索引位是否符合预设关系来判定字符匹配的情况。对于字符匹配来说可能存在三种情况:情况一、当前字符存在的关键词中存在未匹配的其他字符,此时需要继续匹配其他字符。情况二、当前字符存在的关键词中其他字符都已匹配过,并且当前字符在该关键词中的前一个字符与其之间的距离大于或者等于当前字符在待匹配文本中的前一个字符与其之间的距离,以此确定该关键词有效,并且被命中。情况三、当前字符存在的关键词中其他字符都已匹配过,但是当前字符在该关键词中的前一个字符与其之间的距离小于当前字符在待匹配文本中的前一个字符与其之间的距离,以此确定该关键词失效。可以通过以下方式实现:
获取当前字符所属关键词对应的字符距离规则,从字符所属关键词对应的匹配过程信息中获取当前字符的前一个字符在待匹配文本中的索引位,根据该索引位和当前字符在待匹配文本中的索引位,计算当前字符与当前字符的前一个字符之间的第一距离,从当前字符所属关键词对应的字符距离规则中获取当前字符与当前字符的前一个字符之间的第二距离,当第二距离表示任一间隔长度,或者第二距离大于第一距离时,判断匹配过程信息中是否存在值为初始值的元素,是则表示添加成功,从待匹配文本中获取当前字符的下一字符,将其作为当前字符进行匹配;否则表示匹配完成。如果第二距离表示不是任一间隔长度,并且第二距离表示的间隔长度小于第一距离表示的间隔长度时,表示当前字符所属的关键词匹配失效,结束对关键词的匹配,可以从待匹配文本中获取当前字符的下一字符进行匹配。
针对上述实施方式以对待匹配文本“寻找便宜代理开营业发票”进行模糊匹配,举例说明:
待匹配文本为:“寻找便宜代理开营业发票”。扫描待匹配文本,具体操作如下:
检索字符‘寻’,在待匹配文本中的索引位是0,
在倒排索引表中没有找到对应的匹配规则,因此忽略该字符;
检索字符‘找’,在待匹配文本中的索引位是1,
在倒排索引表中找到对应的匹配规则6,且当前字符‘找’是匹配规则6对应关键词“找??代理”的首字符。新建匹配过程信息,过程信息编号为1,并用当前字符“找”在待匹配文本的索引位1替换关键词“找??代理”对应的匹配过程信息中对应元素的初始值,如表3所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, -1, -1] | 1 |
表3
对过程信息编号1对应的匹配过程信息进行校验,匹配过程信息index[]:[1,-1,-1],只有第1位为非-1,而其它位上的数据均为初始值-1,此时,表示暂未匹配完成。对于当前字符“找”,在其所属关键词“找??代理”中是首字符,不存在对应的字符距离规则,因此不再需要根据字符距离规则进行校验。
检索字符‘便’,在待匹配文本中的索引位是2,从倒排索引表中没找到对应的匹配规则,忽略。
检索字符‘宜’,在待匹配文本中的索引位是3,从倒排索引表中没找到对应的匹配规则,忽略。
检索字符‘代’,在待匹配文本中的索引位是4,从倒排索引表中找到对应的匹配规则1和2。
处理匹配规则1,当前字符‘代’是匹配规则1对应关键词“代??开*发票”的首字符。新建匹配过程信息,过程信息编号为2,并用当前字符“代”在待匹配文本中的索引位4替换匹配过程信息2中对应元素的初始值,如表4所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, -1, -1] | 1 |
代??开*发票 | index[]:[4, -1, -1, -1] | 2 |
表4
对过程信息编号2对应的匹配过程信息进行校验,匹配过程信息index[]:[4,-1,-1,-1]中只有第1位为非初始值-1,剩余两位上的数据均为初始值-1,因此暂未匹配完成。
处理匹配规则2,当前字符‘代’不是匹配规则2对应关键词的首字符,不新建匹配过程。而其对应关键词“找??代理”已有匹配过程信息1,因此,将用当前字符“代”在待匹配文本中的索引位4替换匹配过程信息1中对应元素的初始值,更新后的匹配过程信息表如表5所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, 4, -1] | 1 |
代??开*发票 | index[]:[4, -1, -1, -1] | 2 |
表5
对匹配过程信息1进行校验,根据匹配过程信息index[]:[1,4,-1]中第1位与第2位计算第一距离,第一距离为4-1-1=2,对于匹配过程信息1对应的关键词“找??代理”,字符距离规则集合为[3,2,0];在该关键词中‘找’和‘代’之间的字符距离规则为2,表示两个字符之间的距离即第二距离等于2,因此第一距离与第二距离符合关键词“找??代理”中字符‘代’的字符距离规则。然而最末位为-1,因此暂未匹配成功。
检索字符‘理’,在待匹配文本中的索引位是5,
从倒排索引表中找到对应的匹配规则7,当前字符‘理’不是匹配规则7对应关键词的首字符,不新建匹配过程。而其对应关键词“找??代理”已有匹配过程信息1,因此,将当前字符“理”在待匹配文本中的索引位5更新到匹配过程信息1中,更新后的匹配过程信息表如表6所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, 4, 5] | 1 |
代??开*发票 | index[]:[4, -1, -1, -1] | 2 |
表6
对匹配过程信息1进行校验,根据匹配过程信息index[]中第1位与第2位之间的第一距离为4-1-1=2,对于匹配过程信息1对应的关键词“找??代理”,字符距离规则集合为[3,2,0],在该关键词中‘找’和‘代’之间的字符距离规则为2,表示两个字符之间的距离即第二距离等于2,因此第一距离与第二距离符合关键词“找??代理”中字符‘代’的距离规则,采用上述相同的方法,第2位与第3位之间的距离为5-4-1=0,符合关键词“找??代理”中字符‘理’的距离规则,距离校验通过。同时,匹配过程信息所有位全部不为-1,因此匹配成功,根据匹配过程信息的第1位和最末位输出命中的字符串“找便宜代理”。
检索字符‘开’,在代匹配文本中的索引位是6,
从倒排索引表中找到对应的匹配规则3,当前字符‘开’不是匹配规则3对应关键词的首字符,不新建匹配过程。而其对应关键词“代??开*发票”已有匹配过程信息2,因此,将当前字符“开”在待匹配文本中的索引位6更新到匹配过程信息2中,更新后的匹配过程信息表如表7所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, 4, 5] | 1 |
代??开*发票 | index[]:[4, 6, -1, -1] | 2 |
表7
对匹配过程信息2进行校验,匹配过程信息index[]中第1位与第2位之间的第一距离为6-4-1=1,匹配过程信息2对应的关键词“代??开*发票”,字符距离规则集合为[4,2,-1,0];在该关键词中‘代’和‘开’之间的字符距离规则为2,表示两个字符之间的距离即第二距离等于2,因此第一距离与第二距离符合关键词“代??开*发票”中字符‘开’的距离规则,然而第3、4位为-1,因此暂未匹配成功。
检索字符‘营’,在待匹配文本中的索引位是7,从倒排索引表中没找到对应的匹配规则,忽略。
检索字符‘业’,在待匹配文本中的索引位是8,从倒排索引表中没找到对应的匹配规则,忽略。
检索字符‘发’,在待匹配文本中的索引位是9,从倒排索引表中找到对应的匹配规则4,当前字符‘发’不是匹配规则4对应关键词的首字符,不新建匹配过程。而其对应关键词“代??开*发票”已有匹配过程信息2,因此,将当前字符“发”在待匹配文本中的索引位9更新到匹配过程信息2中,更新后的匹配过程信息表如表8所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, 4, 5] | 1 |
代??开*发票 | index[]:[4, 6, 9, -1] | 2 |
表8
对匹配过程信息2进行校验,匹配过程信息index[]中第1位与第2位之间的第一距离为6-4-1=1,匹配过程信息2对应的关键词“代??开*发票”,字符距离规则集合为[4,2,-1,0];在该关键词中‘代’和‘开’之间的字符距离规则为2,表示两个字符之间的距离即第二距离等于2,因此第一距离与第二距离符合关键词“代??开*发票”中字符‘开’的距离规则,第2位与第3位之间的第一距离为9-6-1=2,在该关键词中‘开’和‘发’之间的字符距离规则为-1,表示两个字符之间的距离即第二距离为任意间隔,此时表示添加成功,并且最末位为-1,因此暂未匹配完成。
检索字符‘票’,在待匹配文本中的索引位是10,从倒排索引表中找到对应的匹配规则5,当前字符‘票’不是匹配规则5对应关键词的首字符,不新建匹配过程。而其对应关键词“代??开*发票”已有匹配过程信息2,因此,将当前字符在待匹配文本中的索引位更新到匹配过程信息2中,更新后的匹配过程信息表如表9所示:
关键词 | 匹配过程信息 | 过程信息编号 |
找??代理 | index[]:[1, 4, 5] | 1 |
代??开*发票 | index[]:[4, 6, 9, 10] | 2 |
表9
对匹配过程信息2进行校验,匹配过程信息index[]中第1、2位之间的第一距离为6-4-1=1,匹配过程信息2对应的关键词“代??开*发票”,字符距离规则集合为[4,2,-1,0];在该关键词中‘代’和‘开’之间的字符距离规则为2,表示两个字符之间的距离即第二距离等于2,因此第一距离与第二距离符合关键词“代??开*发票”中字符‘开’的距离规则,第2、3位之间的第一距离为9-6-1=2,在该关键词中‘开’和‘发’之间的字符距离规则为-1,表示两个字符之间的距离即第二距离为任一间隔,此时表示添加成功,符合关键词“代??开*发票”中字符‘发’的距离规则。第2、3位之间的第一距离为10-9-1=0,符合关键词“代??开*发票”中字符‘票’的距离规则。同时,匹配过程信息所有位都不是-1,因此匹配完成,根据匹配过程信息的第1位和最末位输出命中的字符串“代理开营业发票”。
另一方面,待匹配文本中可能存在有多个相同字符,并且该字符有所属关键词时的情况。以待匹配文本中有两个相同字符,并且该字符有所属关键词时,进行举例说明:
比如关键词是“代??开*发票”,待匹配文本是“北京代理开营业开个税发票”。
当扫描到待匹配文本中的第一个‘开’时,更新匹配过程信息,将匹配过程信息数组的第二位更新为4,即匹配过程信息数组为[2,4,-1,-1]。继续扫描到待匹配文本中的第二个‘开’时,发现已存在的匹配过程信息中匹配过程信息数组的第二位已有值(非初始值-1),此时复制一个新的匹配过程信息,其中的匹配过程信息数组[2,7,-1,-1]。
另一方面,待匹配文本中可能存在有某一字符有所属关键词,但在所属关键词中是非首字符的情况,比如关键词是“代??开*发票”和“开*票”,待匹配文本是“北京开个税发票”。
当扫描到待匹配文本中的‘开’时,发现在所属关键词“代??开*发票”中不是首字符,忽略关键词“代??开*发票”,由于待匹配文本中的‘开’在所属关键词“开*票”中是首字符,因此,对待匹配文本中‘开’之后的其他字符进行匹配时只与关键词“开*票”进行匹配。
在本实施例中,通过拆分关键词,对每个字符建立匹配规则,建立倒排索引表,在对待匹配文本进行匹配时,通过过滤掉首字符不在待匹配文本中的关键词的方式,不必穷举所有的关键词,使匹配关键词操作更简便,通过对匹配过程信息校验,避免在匹配关键词时回溯以及关键词无效的问题,提高了匹配效率。
本实施例提供一种多关键词模糊匹配的装置,如图3所示,包括:获取模块301、判断模块302、第一标记模块303、第二标记模块304和确定模块305。
所述获取模块301,用于对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;
所述判断模块302,用于依据所述字符在所属关键词中的索引位判断所述字符是否为所属关键词的首字符;
所述第一标记模块303,用于当所述判断模块的判断结果为是时,在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;
第二标记模块304,用于当所述判断模块的判断结果为否且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;
所述确定模块305,用于当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
本申请优选实施例中,所述装置还可以包括:匹配规则构建模块、匹配规则集合构建模块和倒排索引构建模块。
所述匹配规则构建模块,用于对所述关键词集合中每个关键词的每个字符,分别构建对应各字符的匹配规则;所述匹配规则包含:字符、所述字符所属关键词、所述字符所属关键词包括的字符数目、以及所述字符在所属关键词中的索引位;
所述匹配规则集合构建模块,用于获取关键词中每个字符对应的匹配规则,形成对应所述关键词的匹配规则集合;
所述倒排索引构建模块,用于根据所述匹配规则集合构建从所述字符到所述匹配规则的倒排索引表;所述倒排索引表包括:字符、以及所述字符对应的所有匹配规则。
本申请优选实施例中,所述获取模块301可以包括:遍历单元和第一获取单元。
所述遍历单元,用于遍历倒排索引表,当所述倒排索引表中包括所述字符时,获取所述字符对应的所有的匹配规则;
所述第一获取单元,用于对每条匹配规则,分别获取所述匹配规则包括的所述字符所属关键词、以及所述字符在所属关键词中的索引位。
本申请优选实施例中,所述第一标记模块303可以包括:第一记录单元。
所述第一记录单元,用于当所述判断模块的判断结果为是时,新建所述字符所属关键词对应的匹配过程信息,将所述匹配过程信息保存在匹配过程信息集合中;并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信中。
本申请优选实施例中,所述第二标记模块304可以包括:第二记录单元。
所述第二记录单元,用于当所述判断模块的判断结果为否时,则查找匹配信息集合,判断所述匹配过程集合中是否存在所述字符所属关键词对应的匹配过程信息,如果存在,则获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中。
本申请优选实施例中,所述第二记录单元还可以包括:判断子单元、复制更新子单元和索引位记录子单元。
所述判断子单元,用于判断所述字符所属关键词对应的匹配过程信息中是否已记录过所述字符在所述待匹配文本中的索引位;
所述复制更新子单元,用于当所述判断子单元的判断结果为是时,复制所述字符所属关键词中匹配过程信息,并用所述字符在所述待匹配文本中的当前索引位更新所述匹配过程信息中已记录的所述字符在所述待匹配文本中的索引位;
所述索引位记录子单元,用于当所述判断子单元的判断结果为否时,执行获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中的步骤。
本申请优选实施例中,所述一关键词中的各字符都被标记存在于所述待匹配文本中包括:所述字符所属关键词对应的匹配过程信息中的每一位都被置为对应位数的字符在所述待匹配文本中的索引位。
本申请优选实施例中,所述装置还可以包括:输出模块。
所述输出模块,用于在所述确定模块判定所述待匹配文本命中所述关键词之后,根据各字符在待匹配文本中的索引位从所述待匹配文本中获取匹配信息,输出所述匹配信息。
本申请优选实施例中,所述装置还可以包括:字符距离构建模块和匹配校验模块。
所述字符距离构建模块,用于对所述关键词集合中的各关键词,分别构建字符距离规则,形成字符距离规则集合,所述字符距离规则包括:关键词包括的字符数量、所述关键词中各字符与其前一个字符的有效距离;
所述匹配校验模块,用于当对待匹配文本进行匹配时,根据所述字符距离规则集合对当前字符所属关键词进行距离匹配校验。
本申请优选实施例中,所述匹配校验模块可以包括:第二获取单元、第三获取单元、第一校验单元和第二校验单元。
所述第二获取单元,用于从所述当前字符所属关键词中获取当前字符的前一个字符在所述待匹配文本中的索引位,根据所述当前字符的前一个字符在所述待匹配文本中的索引位和所述当前字符在所述待匹配文本中的索引位,计算所述当前字符与所述当前字符的前一个字符之间的第一距离;
所述第三获取单元,用于从当前字符所属关键词对应的字符距离规则中获取所述当前字符与所述当前字符的前一个字符之间的有效距离作为第二距离;
所述第一校验单元,用于如果所述第二距离表示任一间隔长度,或者所述第二距离大于所述第一距离,则表明距离校验成功,获取当前字符的下一个字符进行匹配;
所述第二校验单元,用于如果所述第二距离表示不是任一间隔长度,并且所述第二距离小于所述第一距离,则表明所述距离校验失败,所述匹配过程信息失效,结束对所述字符所属关键词的匹配。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种用于关键词模糊匹配的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图4,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理部件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件806为装置800的各种组件提供电力。电力组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种用于关键词模糊匹配的方法,所述方法包括:对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;依据所述字符在所属关键词中的索引位判断所述字符是否为所述关键词的首字符;如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
图5是本发明实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,FreeBSDTM等等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种关键词模糊匹配的方法,其特征在于,包括:
对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;
依据所述字符在所属关键词中的索引位判断所述字符是否为所述关键词的首字符;
如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;
如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;
当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
对所述关键词集合中每个关键词的每个字符,分别构建对应各字符的匹配规则;所述匹配规则包含:字符、所述字符所属关键词、所述字符所属关键词包括的字符数目、以及所述字符在所属关键词中的索引位;
获取关键词中每个字符对应的匹配规则,形成对应所述关键词的匹配规则集合;
根据所述匹配规则集合构建从字符到匹配规则的倒排索引表;所述倒排索引表包括:字符、以及所述字符对应的所有匹配规则。
3.如权利要求2所述的方法,其特征在于,所述根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位,包括:
遍历所述倒排索引表,当所述倒排索引表中包括所述字符时,获取所述字符对应的所有的匹配规则;
对每条匹配规则,分别获取所述匹配规则包括的所述字符所属关键词、以及所述字符在所属关键词中的索引位。
4.如权利要求1所述的方法,其特征在于,所述如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中,包括:
如果所述字符是所属关键词的首字符,新建所述字符所属关键词对应的匹配过程信息,将所述匹配过程信息保存在所述匹配信息集合中;并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中。
5.如权利要求4所述的方法,其特征在于,如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于待匹配文本中,包括:
如果所述字符不是所属关键词的首字符,则查找所述匹配信息集合,判断所述匹配过程集合中是否存在所述字符所属关键词对应的匹配过程信息,如果存在,则获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中。
6.如权利要求5所述的方法,其特征在于,当所述匹配过程集合中存在所述字符所属关键词对应的匹配过程信息时,所述方法还包括:
判断所述字符所属关键词对应的匹配过程信息中是否已记录过所述字符在所述待匹配文本中的索引位;
如果是,复制所述字符所属关键词中匹配过程信息,并用所述字符在所述待匹配文本中的当前索引位更新所述匹配过程信息中已记录的所述字符在所述待匹配文本中的索引位;
如果否,执行获取所述字符所属关键词对应的匹配过程信息,并将所述字符在所述待匹配文本中的索引位记录到所述匹配过程信息中的步骤。
7.如权利要求4所述的方法,其特征在于,所述一关键词中的各字符都被标记存在于所述待匹配文本中,包括:
所述字符所属关键词对应的匹配过程信息中的每一位都被置为对应位数的字符在所述待匹配文本中的索引位。
8.如权利要求7所述的方法,其特征在于,在所述判定所述待匹配文本命中所述关键词之后,所述方法还包括:根据各字符在所述待匹配文本中的索引位从所述待匹配文本中获取匹配信息,输出所述匹配信息。
9.如权利要求1所述的方法,其特征在于,还包括:
对所述关键词集合中的各关键词,分别构建字符距离规则,形成字符距离规则集合;所述字符距离规则包括:关键词包括的字符数量、所述关键词中各字符与其前一个字符的有效距离;
当对所述待匹配文本进行匹配时,根据所述字符距离规则集合对当前字符所属关键词进行距离匹配校验。
10.如权利要求9所述的方法,其特征在于,所述根据所述字符距离规则集合对当前字符所属关键词进行匹配校验,包括:
从所述当前字符所属关键词中获取当前字符的前一个字符在所述待匹配文本中的索引位,根据所述当前字符的前一个字符在所述待匹配文本中的索引位和所述当前字符在所述待匹配文本中的索引位,计算所述当前字符与所述当前字符的前一个字符之间的第一距离;
从当前字符所属关键词对应的字符距离规则中获取所述当前字符与所述当前字符的前一个字符之间的有效距离作为第二距离;
如果所述第二距离表示任一间隔长度,或者所述第二距离大于所述第一距离,则表明距离校验成功,获取当前字符的下一个字符进行匹配;
如果所述第二距离表示不是任一间隔长度,并且所述第二距离小于所述第一距离,则表明所述距离校验失败,所述匹配过程信息失效,结束对所述字符所属关键词的匹配。
11.一种关键词模糊匹配的装置,其特征在于,包括:
获取模块,用于对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;
判断模块,用于依据所述字符在所属关键词中的索引位判断所述字符是否为所属关键词的首字符;
第一标记模块,用于当所述判断模块的判断结果为是时,在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;
第二标记模块,用于当所述判断模块的判断结果为否且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;
确定模块,用于当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
12.一种用于关键词模糊匹配的装置,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
对待匹配文本中的每个字符,分别根据关键词集合获取所述字符所属的关键词以及所述字符在所属关键词中的索引位;
依据所述字符在所属关键词中的索引位判断所述字符是否为所述关键词的首字符;
如果所述字符是所属关键词的首字符,则在匹配信息集合中记录所述字符所属关键词,并在记录中标记所述关键词的首字符存在于所述待匹配文本中;
如果所述字符不是所属关键词的首字符,且所述匹配信息集合中存在所述字符所属关键词的记录时,获取所述字符所属关键词的记录,并在所述记录中标记所述关键词中的所述字符存在于所述待匹配文本中;
当一关键词中的各字符都被标记存在于所述待匹配文本中时,则判定所述待匹配文本命中所述关键词。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510921094.0A CN105550298B (zh) | 2015-12-11 | 2015-12-11 | 一种关键词模糊匹配的方法及装置 |
PCT/CN2016/104693 WO2017097075A1 (zh) | 2015-12-11 | 2016-11-04 | 一种关键词模糊匹配的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510921094.0A CN105550298B (zh) | 2015-12-11 | 2015-12-11 | 一种关键词模糊匹配的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550298A true CN105550298A (zh) | 2016-05-04 |
CN105550298B CN105550298B (zh) | 2019-12-10 |
Family
ID=55829487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510921094.0A Active CN105550298B (zh) | 2015-12-11 | 2015-12-11 | 一种关键词模糊匹配的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105550298B (zh) |
WO (1) | WO2017097075A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649427A (zh) * | 2016-08-08 | 2017-05-10 | 中国移动通信集团湖北有限公司 | 一种信息识别的方法及装置 |
WO2017097075A1 (zh) * | 2015-12-11 | 2017-06-15 | 北京搜狗科技发展有限公司 | 一种关键词模糊匹配的方法及装置 |
CN109635009A (zh) * | 2018-12-27 | 2019-04-16 | 北京航天智造科技发展有限公司 | 模糊匹配查询系统及方法 |
CN110008383A (zh) * | 2019-04-11 | 2019-07-12 | 北京安护环宇科技有限公司 | 一种基于多索引的黑白名单检索方法及装置 |
CN110442570A (zh) * | 2019-06-06 | 2019-11-12 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN113420192A (zh) * | 2021-06-09 | 2021-09-21 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
CN115210708A (zh) * | 2019-08-07 | 2022-10-18 | 齐纳特科技公司 | 信息跟踪系统的数据条目特征 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783607B (zh) * | 2018-12-19 | 2023-04-25 | 南京莱斯信息技术股份有限公司 | 一种在任意文本中匹配识别海量关键词的方法 |
CN109977422A (zh) * | 2019-04-18 | 2019-07-05 | 中国石油大学(华东) | 一种基于分词技术的病历关键信息提取模型 |
CN110134686B (zh) * | 2019-05-07 | 2023-04-21 | 浪潮软件集团有限公司 | 一种中文关键词模糊查询的索引创建方法及系统 |
CN112052413B (zh) * | 2020-08-28 | 2024-02-13 | 上海谋乐网络科技有限公司 | Url模糊匹配方法、装置和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169341A1 (en) * | 2008-12-30 | 2010-07-01 | Ebay Inc. | Predictive algorithm for search box auto-complete |
CN102323929A (zh) * | 2011-08-23 | 2012-01-18 | 上海粱江通信技术有限公司 | 一种实现中文短信模糊匹配关键字的方法 |
CN102932421A (zh) * | 2012-09-28 | 2013-02-13 | 中国联合网络通信集团有限公司 | 云备份方法及装置 |
CN103902714A (zh) * | 2014-04-03 | 2014-07-02 | 北京国双科技有限公司 | 关键词过滤方法和装置 |
CN104602206A (zh) * | 2014-12-31 | 2015-05-06 | 上海大汉三通通信股份有限公司 | 一种垃圾短信识别方法与系统 |
CN104750673A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团公司 | 文本匹配过滤方法及装置 |
CN105205048A (zh) * | 2015-10-21 | 2015-12-30 | 上海迪爱斯通信设备有限公司 | 一种热词分析统计系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598464B (zh) * | 2013-10-31 | 2018-08-07 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105550298B (zh) * | 2015-12-11 | 2019-12-10 | 北京搜狗科技发展有限公司 | 一种关键词模糊匹配的方法及装置 |
-
2015
- 2015-12-11 CN CN201510921094.0A patent/CN105550298B/zh active Active
-
2016
- 2016-11-04 WO PCT/CN2016/104693 patent/WO2017097075A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169341A1 (en) * | 2008-12-30 | 2010-07-01 | Ebay Inc. | Predictive algorithm for search box auto-complete |
CN102323929A (zh) * | 2011-08-23 | 2012-01-18 | 上海粱江通信技术有限公司 | 一种实现中文短信模糊匹配关键字的方法 |
CN102932421A (zh) * | 2012-09-28 | 2013-02-13 | 中国联合网络通信集团有限公司 | 云备份方法及装置 |
CN104750673A (zh) * | 2013-12-31 | 2015-07-01 | 中国移动通信集团公司 | 文本匹配过滤方法及装置 |
CN103902714A (zh) * | 2014-04-03 | 2014-07-02 | 北京国双科技有限公司 | 关键词过滤方法和装置 |
CN104602206A (zh) * | 2014-12-31 | 2015-05-06 | 上海大汉三通通信股份有限公司 | 一种垃圾短信识别方法与系统 |
CN105205048A (zh) * | 2015-10-21 | 2015-12-30 | 上海迪爱斯通信设备有限公司 | 一种热词分析统计系统及方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017097075A1 (zh) * | 2015-12-11 | 2017-06-15 | 北京搜狗科技发展有限公司 | 一种关键词模糊匹配的方法及装置 |
CN106649427B (zh) * | 2016-08-08 | 2020-07-03 | 中国移动通信集团湖北有限公司 | 一种信息识别的方法及装置 |
CN106649427A (zh) * | 2016-08-08 | 2017-05-10 | 中国移动通信集团湖北有限公司 | 一种信息识别的方法及装置 |
CN109635009A (zh) * | 2018-12-27 | 2019-04-16 | 北京航天智造科技发展有限公司 | 模糊匹配查询系统及方法 |
CN109635009B (zh) * | 2018-12-27 | 2023-09-15 | 北京航天智造科技发展有限公司 | 模糊匹配查询系统 |
CN110008383B (zh) * | 2019-04-11 | 2021-07-27 | 北京安护环宇科技有限公司 | 一种基于多索引的黑白名单检索方法及装置 |
CN110008383A (zh) * | 2019-04-11 | 2019-07-12 | 北京安护环宇科技有限公司 | 一种基于多索引的黑白名单检索方法及装置 |
CN110442570A (zh) * | 2019-06-06 | 2019-11-12 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN110442570B (zh) * | 2019-06-06 | 2021-08-17 | 北京左江科技股份有限公司 | 一种BitMap高速模糊查找方法 |
CN115210708A (zh) * | 2019-08-07 | 2022-10-18 | 齐纳特科技公司 | 信息跟踪系统的数据条目特征 |
CN115210708B (zh) * | 2019-08-07 | 2023-09-01 | 齐纳特科技公司 | 处理文本数据的方法和系统、非暂时性计算机可读介质 |
US11783127B2 (en) | 2019-08-07 | 2023-10-10 | Zinatt Technologies, Inc. | Data entry feature for information tracking system |
CN113420192A (zh) * | 2021-06-09 | 2021-09-21 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
CN113420192B (zh) * | 2021-06-09 | 2022-04-05 | 湖南大学 | 一种基于模糊匹配的ui元素搜索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105550298B (zh) | 2019-12-10 |
WO2017097075A1 (zh) | 2017-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550298A (zh) | 一种关键词模糊匹配的方法及装置 | |
US11030311B1 (en) | Detecting and protecting against computing breaches based on lateral movement of a computer file within an enterprise | |
CN110309304A (zh) | 一种文本分类方法、装置、设备及存储介质 | |
CN105512545B (zh) | 访问权限管理方法和装置 | |
CN104021350A (zh) | 隐私信息隐藏方法及装置 | |
CN107229638A (zh) | 一种文本信息处理方法及装置 | |
CN107436691A (zh) | 一种输入法进行纠错的方法、客户端、服务器及装置 | |
CN102970402A (zh) | 一种更新移动终端通讯录联系人信息的方法及装置 | |
Shezan et al. | Read between the lines: An empirical measurement of sensitive applications of voice personal assistant systems | |
CN110414236A (zh) | 一种恶意进程的检测方法及装置 | |
CN105678238A (zh) | 指纹认证装置、方法 | |
CN108073606A (zh) | 一种新闻推荐方法和装置、一种用于新闻推荐的装置 | |
CN107729765A (zh) | 多媒体数据的管理方法、装置、存储介质及电子设备 | |
US20180218134A1 (en) | Determining computer ownership | |
CN104346550A (zh) | 一种信息处理方法以及一种电子设备 | |
CN109672666A (zh) | 一种网络攻击检测方法及装置 | |
CN106778295A (zh) | 文件存储、显示方法、装置及终端 | |
CN106528805B (zh) | 基于用户的移动互联网恶意程序url智能分析挖掘方法 | |
CN105323145A (zh) | 恶意信息识别方法、恶意信息识别装置及系统 | |
CN106209889B (zh) | 检测网页中劫持信息的方法及装置 | |
CN109871685B (zh) | 一种rtf文件的解析方法及装置 | |
CN106776812A (zh) | 更新关键字的方法及装置 | |
CN108540471B (zh) | 移动应用网络流量聚类方法、计算机可读存储介质和终端 | |
CN117009832A (zh) | 异常命令的检测方法、装置、电子设备及存储介质 | |
CN115801366A (zh) | 攻击检测的方法、装置、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |