CN109902142A - 一种基于编辑距离的字符串模糊匹配和查询方法 - Google Patents
一种基于编辑距离的字符串模糊匹配和查询方法 Download PDFInfo
- Publication number
- CN109902142A CN109902142A CN201910145675.8A CN201910145675A CN109902142A CN 109902142 A CN109902142 A CN 109902142A CN 201910145675 A CN201910145675 A CN 201910145675A CN 109902142 A CN109902142 A CN 109902142A
- Authority
- CN
- China
- Prior art keywords
- character string
- length
- string
- matching
- editing distance
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于编辑距离的字符串模糊匹配和查询方法,包括以下步骤:先按照段落中字符串的长度对查询串依次进行划分,得查询串子串集合,当段落内的字符串与查询串中的字符串相匹配时,则该字符串对应索引的原字符串的匹配度加上该字符串的长度,当该字符串的匹配度大于预设上界值时,且该位置列表中没有重复的元素时,则将该字符串添加到结果集合中,否则,则对该字符串进行编辑距离的验证;当该字符串的匹配度小于预设下界值时,则直接过滤掉该字符串;当该字符串的匹配度在预设下界值与预设上界值之间时,则对该字符串进行编辑距离验证,该方法能够反映不同长度段落对匹配结果不影响的不同,同时编辑距离验证操作次数较少。
Description
技术领域
本发明属于计算机数据查询技术领域,涉及一种基于编辑距离的字符串模糊匹配和查询方法。
背景技术
编辑距离在一种计算字符串间相似程度的度量方法,同时也被经常使用。但是计算编辑距离采用的是一种动态规划的思想,如果在数据集中计算每一对字符串间的编辑距离来判断字符串的匹配与否将会有巨大的开销。近几年来关于字符串的模糊查询问题有很多研究,他们多数是基于一种过滤-验证框架进行的。在过滤阶段,使用一个阈值t作为一个有效的过滤器,可以用来过滤大部分不相似的字符串,得到一个候选者集合。然后在验证阶段,通过计算候选者集合中字符串与查询串之间实际的编辑距离,得到结果集合。
阿里巴巴集团控股有限公司申请的专利“模糊查询方法,装置及查询系统”(申请号:CN201710372075,公开号:CN107436911A)提供了一种模糊查询的方法,所述方法包括:提供单字符倒排索引,所述单字符倒排索引包括将文档分割为单个字符后存入倒排索引构建生成;获取查询字符串,将所述的查询字符串分割为单个字符,其所述单个字符作为词组在所述单字符倒排索引中进行词组匹配方式查询。该方法不足的是:直接将字符串完全化成单字符的操作,计算较为复杂。
清华大学李国良老师团队的一篇论文“A unified framework for stringsimilarity search with edit-distance constraint”中提到了一种HS-Search的方法进行模糊查询,他分为了过滤和验证两个阶段。首先,我们需将S按照长度进行划分组,用Sl代表长度为l|q|-t的字符串集合组。对每一个字符串集合组Sl,我们都构造一棵二叉树。我们将Sl中的字符串按照长度划分成两部分,第一个部分是s中前缀长度为的部分,第二部分是s中后缀长度为的部分,其中|s|代表字符串s的长度。按照此方法依次对字符串进行划分,得到一棵HS-Tree树。在搜索查询过程中,我们将按照过滤-验证模型结构进行。在过滤阶段分为长度过滤和匹配过滤两个阶段。我们查询的字符串数据集为Sl,输入的查询串为q,要求的阈值为τ。首先根据长度过滤,我们只需要查询长度在[|q|-τ,|q|+τ]之间的字符串即可。我们进行判断的临界值是2i-τ,如果字符串s和查询串q中的匹配段落少于2i-τ,则说明这两个字符串肯定不相似,我们可以直接过滤掉这个字符串,换句话说就是,我们仅需要验证与q有超过2i-τ个匹配段落的候选字符串。随着层数i的增加,段落中字符串的长度也就越短,同时过滤的能力也就越差,所以我们选择把进行比较的层数定在拥有最长子串长度的最小层数我们将层数定位在我们需要根据段落内字符串的长度对查询串进行划分,枚举出各个子串,构成一个集合定义为下一步,我们将要寻找与查询有至少2i-τ个匹配段落的候选字符串集合。在匹配的过程中,如果s中有和q匹配的段落,我们就将该段落对应的索引,即原字符串的id值所对应的计数器加1,最后我们只需要保留计数器值大于等于2i-τ的字符串作为候选者,它将进入到验证阶段。我们将候选者字符串集合中的每一个候选字符串和我们的查询串进行编辑距离的计算,根据阈值进行验证,最后得到我们结果的集合。该方案不足的是:在进行过滤操作的时候,只记录了匹配的次数,而段落内不同长度的字符串对结果的影响是不用的。同时,有一些“高度相似的”字符串是无需进行编辑距离验证,可以直接放在结果集合中的。
发明内容
本发明的目的在于克服上述现有技术的缺点,提供了一种基于编辑距离的字符串模糊匹配和查询方法,该方法能够反映不同长度段落对匹配结果不影响的不同,同时编辑距离验证操作次数较少。
为达到上述目的,本发明所述的基于编辑距离的字符串模糊匹配和查询方法包括以下步骤:
对数据集中的字符串按照长度进行分组,其中,将长度相同的字符串划为一个组,对每一字符串组按照长度构建一棵完全二叉树,并将该二叉树记作字符串搜索树,该字符串搜索树中的每个节点内均存储有划分后的字符串、该字符串的原字符串id、该字符串的长度及该字符串的开始位置;
当需要进行字符串查询时,则输入查询字符串的长度及距离阈值t,利用字符串的长度q及距离阈值t查找对应的字符串;
当需要进行长度过滤时,则只需查询长度在[|q|-τ,|q|+τ]之间的字符串即可;
当需要匹配过滤时,则先按照段落中字符串的长度对查询串依次进行划分,得查询串子串集合,然后进行字符串间的匹配操作,当段落内的字符串与查询串中的字符串相匹配时,则该字符串对应索引的原字符串的匹配度加上该字符串的长度,当该字符串的匹配度大于预设上界值时,则对匹配字符串在原字符串的位置列表以及在查询串中的位置列表进行验证,当该位置列表中没有重复的元素时,说明在匹配查询操作中没有引入字符串位置互换或者重复匹配的情况,则将该字符串添加到结果集合中,否则,则对该字符串进行编辑距离的验证;当该字符串的匹配度小于预设下界值时,则直接过滤掉该字符串;当该字符串的匹配度在预设下界值与预设上界值之间时,则对该字符串进行编辑距离验证,即,当该字符串的编辑距离小于等于距离阈值t时,则将该字符串添加到结果集合中,当该字符串的编辑距离大于距离阈值t时,则直接过滤掉该字符串。
字符串搜索树中的每个节点内还设置有倒序索引,该倒序索引包括该字符段落的原字符串所对应的id号。
字符串的长度为l∈[|q|-t,|q|)时,则预设上界值为|q|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表。
字符串的长度为l∈[|q|,|q|+t]时,则预设上界值为|l|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表。
本发明具有以下有益效果:
本发明所述的基于编辑距离的字符串模糊匹配和查询方法在具体操作时,将字符串划分为确定匹配的集合、可能匹配的集合以及不匹配的集合,当该字符串的编辑距离小于等于距离阈值t时,则将该字符串直接添加到结果集合中,当该字符串的编辑距离大于距离阈值t时,则直接过滤掉该字符串,从而减少编辑距离验证操作的次数;当该字符串的匹配度大于预设上界值时,则对匹配字符串在原字符串的位置列表以及在查询串中的位置列表进行验证,避免字符串互换位置及字符串段落重复匹配的问题。另外,当段落内的字符串与查询串中的字符串相匹配时,则该字符串对应索引的原字符串的匹配度加上该字符串的长度,以体现不同长度的段落对匹配度影响的不同。
附图说明
图1为本发明的字符串搜索树的结构示意图;
图2为本发明的流程图;
图3为本发明中匹配操作的流程图。
具体实施方式
下面结合附图对本发明做进一步详细描述:
参考图1,本发明在具体操作时,将字符串按照长度进行分组,对相同长度的字符串Sl,按照字符串的长度进行划分,以构造一个二叉树结构,同时为每个节点中的字符串添加一个倒序索引,通过该倒序索引指示包含该字符串的原字符串的id号,并且需要记录该字符串段落内字符串的长度及字符串的开始位置,以生成字符串搜索树,其中,以长度为7的几个字符串为例按照字符串搜索树的划分原理,得一棵字符串搜索树。
参考图2,本发明使用的数据集为具有不同长度字符串的大数据集,其中,不同长度的字符串用Sl表示,l表示该字符串的长度。
在进行匹配操作的时候,为每个id的字符串构造一个匹配度,用来显示它和查询串之间的匹配程度,当查询串子串与节点中的字符串匹配时,则将该匹配段落对应的原字符串id的匹配度加上段落的长度,同时记录匹配段落的段落号,在进行过滤时,判断匹配字符段落之间的位置关系,仅当位置关系和查询串一致且没有重复匹配时,则将该字符串直接添加到结果集合中,对于候选者集合中的字符串,需要验证他们与查询串之间的编辑距离,判断是否在距离阈值内,从而得到匹配结果。
参考图3,本发明的基于编辑距离的字符串模糊匹配和查询方法包括以下步骤:
对数据集中的字符串按照长度进行分组,其中,将长度相同的字符串划为一个组,其中,Sl代表长度为l的字符串组,对每一字符串组按照长度构建一棵完全二叉树,并将该二叉树记作字符串搜索树,该字符串搜索树中的每个节点内均存储有划分后的字符串、该字符串的原字符串id、该字符串的长度及该字符串的开始位置,具体的,将Sl中的字符串按照长度划分成两部分,第一个部分为Sl中前缀长度为的部分,第二部分为Sl中后缀长度为的部分,其中,|s|代表字符串s的长度,令及分别表示Sl中字符串的第一部分和第二部分,将第一层的两个节点记为及其中,i代表层数,j代表子串。对于树的每一个节点构建一个倒序索引用于表示该子串出现的字符串序号,然后继续划分这棵树,对于每一个节点利用上述划分方法按照长度将字符串继续进行划分,将及分别代表这两个子节点,同样构建对应的倒序索引及以实现对字符串的预处理,树的最大层数为同时,需要记录每个节点内字符串的长度并用表示该字符串在原字符串的开始位置。
当需要进行字符串查询时,则输入查询字符串的长度及距离阈值t,利用字符串的长度q及距离阈值t查找对应的字符串;
当需要进行长度过滤时,则只需查询长度在[|q|-τ,|q|+τ]之间的字符串即可;
当需要匹配过滤时,则先需要将查询的层数定位在然后按照段落中字符串的长度对查询串依次进行划分,得查询串子串集合,然后进行字符串间的匹配操作,当段落内的字符串与查询串中的字符串相匹配时,则该字符串对应索引为原字符串的匹配度与该字符串的长度之和,即Ti(s,q)=Ti(s,q)+len(s),当该字符串的匹配度大于预设上界值时,则对匹配字符串在原字符串的位置列表以及在查询串中的位置列表进行验证,当该位置列表中没有重复的元素时,则说明在匹配查询操作中没有引入字符串位置互换或者重复匹配的情况,则将该字符串添加到结果集合中,否则,则对该字符串进行编辑距离的验证;当该字符串的匹配度小于预设下界值时,则直接过滤掉该字符串;当该字符串的匹配度在预设下界值与预设上界值之间时,则对该字符串进行编辑距离验证,当该字符串的编辑距离小于等于距离阈值t时,则将该字符串添加到结果集合中,当该字符串的编辑距离大于距离阈值t时,则直接过滤掉该字符串。
字符串的长度为l∈[|q|-t,|q|)时,则预设上界值为|q|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表;字符串的长度为l∈[|q|,|q|+t]时,则预设上界值为|l|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表。
Claims (4)
1.一种基于编辑距离的字符串模糊匹配和查询方法,其特征在于,包括以下步骤:
对数据集中的字符串按照长度进行分组,其中,将长度相同的字符串划为一个组,对每一字符串组按照长度构建一棵完全二叉树,并将该二叉树记作字符串搜索树,该字符串搜索树中的每个节点内均存储有划分后的字符串、该字符串的原字符串id、该字符串的长度及该字符串的开始位置;
当需要进行字符串查询时,则输入查询字符串的长度及距离阈值t,利用字符串的长度q及距离阈值t查找对应的字符串;
当需要进行长度过滤时,则只需查询长度在[|q|-τ,|q|+τ]之间的字符串即可;
当需要匹配过滤时,则先按照段落中字符串的长度对查询串依次进行划分,得查询串子串集合,然后进行字符串间的匹配操作,当段落内的字符串与查询串中的字符串相匹配时,则该字符串对应索引的原字符串的匹配度加上该字符串的长度,当该字符串的匹配度大于预设上界值时,则对匹配字符串在原字符串的位置列表以及在查询串中的位置列表进行验证,当该位置列表中没有重复的元素时,说明在匹配查询操作中没有引入字符串位置互换或者重复匹配的情况,则将该字符串添加到结果集合中,否则,则对该字符串进行编辑距离的验证;当该字符串的匹配度小于预设下界值时,则直接过滤掉该字符串;当该字符串的匹配度在预设下界值与预设上界值之间时,则对该字符串进行编辑距离验证,即,当该字符串的编辑距离小于等于距离阈值t时,则将该字符串添加到结果集合中,当该字符串的编辑距离大于距离阈值t时,则直接过滤掉该字符串。
2.根据权利要求1所述的基于编辑距离的字符串模糊匹配和查询方法,其特征在于,字符串搜索树中的每个节点内还设置有倒序索引,该倒序索引包括该字符段落的原字符串所对应的id号。
3.根据权利要求1所述的基于编辑距离的字符串模糊匹配和查询方法,其特征在于,字符串的长度为l∈[|q|-t,|q|)时,则预设上界值为|q|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表。
4.根据权利要求1所述的基于编辑距离的字符串模糊匹配和查询方法,其特征在于,字符串的长度为l∈[|q|,|q|+t]时,则预设上界值为|l|-t,预设下界值为mi为第i层字符串的长按照降序存储的一个列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910145675.8A CN109902142B (zh) | 2019-02-27 | 2019-02-27 | 一种基于编辑距离的字符串模糊匹配和查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910145675.8A CN109902142B (zh) | 2019-02-27 | 2019-02-27 | 一种基于编辑距离的字符串模糊匹配和查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902142A true CN109902142A (zh) | 2019-06-18 |
CN109902142B CN109902142B (zh) | 2022-09-16 |
Family
ID=66945592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910145675.8A Active CN109902142B (zh) | 2019-02-27 | 2019-02-27 | 一种基于编辑距离的字符串模糊匹配和查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902142B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806315A (zh) * | 2019-11-20 | 2020-02-18 | 北京工业大学 | 一种基于倒位编辑的齿轮箱复合故障诊断方法 |
CN111309988A (zh) * | 2020-02-03 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 基于编码的字符串检索方法、装置及电子设备 |
CN111444413A (zh) * | 2020-04-08 | 2020-07-24 | 作业不凡(北京)教育科技有限公司 | 一种数据查询方法、装置和计算设备 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112632343A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
CN118069898A (zh) * | 2024-04-25 | 2024-05-24 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090226098A1 (en) * | 2006-05-19 | 2009-09-10 | Nagaoka University Of Technology | Character string updated degree evaluation program |
US20120140979A1 (en) * | 2009-09-24 | 2012-06-07 | Nec Corporation | Word recognition apparatus, word recognition method, non-transitory computer readable medium storing word recognition program, and delivery item sorting apparatus |
CN103218423A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据查询方法及装置 |
-
2019
- 2019-02-27 CN CN201910145675.8A patent/CN109902142B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090226098A1 (en) * | 2006-05-19 | 2009-09-10 | Nagaoka University Of Technology | Character string updated degree evaluation program |
US20120140979A1 (en) * | 2009-09-24 | 2012-06-07 | Nec Corporation | Word recognition apparatus, word recognition method, non-transitory computer readable medium storing word recognition program, and delivery item sorting apparatus |
CN103218423A (zh) * | 2013-04-02 | 2013-07-24 | 中国科学院信息工程研究所 | 数据查询方法及装置 |
Non-Patent Citations (4)
Title |
---|
JIAYING WANG等: "LS-join:Local Similarity join on String Collections", 《IEEE TRANSACTION ON KNOWLEDGE AND DATA ENGINEERING》 * |
MINGHE YU等: "A unified framework for string similarity search with edit-distance", 《THE VLDB JOURNAL》 * |
于长永等: "一种带有长度和位置约束的字符串索引方法", 《东北大学学报(自然科学版)》 * |
孙德才等: "近似串匹配过滤算法研究", 《计算机技术与发展》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806315A (zh) * | 2019-11-20 | 2020-02-18 | 北京工业大学 | 一种基于倒位编辑的齿轮箱复合故障诊断方法 |
CN110806315B (zh) * | 2019-11-20 | 2021-04-16 | 北京工业大学 | 一种基于倒位编辑的齿轮箱复合故障诊断方法 |
CN111309988A (zh) * | 2020-02-03 | 2020-06-19 | 北京字节跳动网络技术有限公司 | 基于编码的字符串检索方法、装置及电子设备 |
CN111309988B (zh) * | 2020-02-03 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 基于编码的字符串检索方法、装置及电子设备 |
CN111444413A (zh) * | 2020-04-08 | 2020-07-24 | 作业不凡(北京)教育科技有限公司 | 一种数据查询方法、装置和计算设备 |
CN111831869A (zh) * | 2020-06-30 | 2020-10-27 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN111831869B (zh) * | 2020-06-30 | 2023-11-03 | 深圳价值在线信息科技股份有限公司 | 一种字符串的查重方法、装置、终端设备及存储介质 |
CN112632343A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
CN112632343B (zh) * | 2020-12-30 | 2023-12-26 | 深圳大普微电子科技有限公司 | 一种字符串匹配方法、装置、设备及可读存储介质 |
CN118069898A (zh) * | 2024-04-25 | 2024-05-24 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
CN118069898B (zh) * | 2024-04-25 | 2024-06-25 | 北京长亭科技有限公司 | 一种多日志源的日志泛化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109902142B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902142A (zh) | 一种基于编辑距离的字符串模糊匹配和查询方法 | |
WO2020135048A1 (zh) | 知识图谱的数据融合方法和装置 | |
CN104216894B (zh) | 用于数据查询的方法和系统 | |
US8805861B2 (en) | Methods and systems to train models to extract and integrate information from data sources | |
US20070033165A1 (en) | Efficient evaluation of complex search queries | |
CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
WO2009095981A1 (ja) | 表からツリー構造データを構築する方法及び装置 | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN102033885A (zh) | 用于XML数据存储库中的XPath执行的方法和系统 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
Ma et al. | G-SQL: Fast query processing via graph exploration | |
CN103699647A (zh) | 一种字符串词典的索引方法及系统 | |
US8965935B2 (en) | Sequence matching algorithm | |
Vrgoc et al. | Millenniumdb: A persistent, open-source, graph database | |
US20070078874A1 (en) | Select indexing in merged inverse query evaluations | |
Demey et al. | A markup language for ORM business rules | |
CN114372174A (zh) | 一种xml文档分布式查询方法及系统 | |
CN110389953B (zh) | 基于压缩图的数据存储方法、存储介质、存储装置和服务器 | |
CN112148830A (zh) | 一种基于最大区域网格的语义数据存储与检索的方法及装置 | |
Liu et al. | Significant-attributed Community Search in Heterogeneous Information Networks | |
CN106933844A (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及系统 | |
KLAIB | A NEW METHOD FOR QUERYING XML DATA | |
Zhou et al. | Top-down keyword query processing on XML data | |
Madria et al. | Efficient processing of XPath queries using indexes |
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 |