首页> 中国专利> 一种海量音频数据中的字符串快速模糊匹配算法

一种海量音频数据中的字符串快速模糊匹配算法

摘要

本发明公开了一种字符串的快速模糊匹配算法。本发明首先对数据库中的文本进行数据的预处理,从而获得统计模型,并通过Hash建立索引。输入文本是一个较短的字符串,本发明遍历其中所有汉字,激活有限字符全集中对应汉字的位置。将有限字符全集的激活状态映射到每一个标签上,从而达到过滤标签的目的。对过滤出来的少量标签进行与文本的匹配,用DTW算法进行近似字符串匹配。根据匹配近似度结果进行打分,并排序,返回搜索到的结果。本发明通过高效的标签过滤方法,大幅度地提升了字符串匹配算法的计算效率;同时在对输入文本进行匹配的过程中,达到模糊匹配的效果,对于模糊语言也具有很好的匹配性能。

著录项

  • 公开/公告号CN106528599A

    专利类型发明专利

  • 公开/公告日2017-03-22

    原文格式PDF

  • 申请/专利权人 深圳凡豆信息科技有限公司;

    申请/专利号CN201610848974.4

  • 发明设计人 田学红;朱晓明;于拾全;

    申请日2016-09-23

  • 分类号G06F17/30;

  • 代理机构广州天河恒华智信专利代理事务所(普通合伙);

  • 代理人姜宗华

  • 地址 518000 广东省深圳市南山区前海深港青年梦工场7栋110室

  • 入库时间 2023-06-19 01:48:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-20

    未缴年费专利权终止 IPC(主分类):G06F16/683 专利号:ZL2016108489744 申请日:20160923 授权公告日:20190514

    专利权的终止

  • 2019-05-14

    授权

    授权

  • 2017-04-19

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160923

    实质审查的生效

  • 2017-03-22

    公开

    公开

说明书

技术领域

本发明涉及一种一种海量音频数据中的字符串快速模糊匹配算法,属于自然语言处理领域。

背景技术

字符串匹配问题是在给定符号序列(称为文本)中按照一定的匹配条件,搜索给定符号序列或给定符号序列集合中元素(称为模式)出现位置的搜索问题。该问题是计算机科学的基础问题之一,被广泛的应用于各种涉及文字和符号处理的领域中,是网络安全、信息检索、计算生物学等重要领域的关键问题。随着网络安全问题凸显、海量信息检索、计算生物学高速发展,现有串匹配算法已经无法满足应用对匹配性能的需要,急需性能更高的串匹配算法出现。

在串匹配算法中,最有影响的是KMP(knuth,morris,pratt)算法和BM(boyer,moore)算法,为提高字符串模式匹配的效率,研究人员针对这两种算法提出了很多变形、改进算法。

BF(brute-force)算法是最为经典的算法,其思想是从目标串s的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s的第二个字符起再重新和串t进行比较。依此类推,直至串t中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s中的位置就是t在s中的位置,否则模式匹配不成功。其确定也很显然,速度慢开销大,且不支持字符串的模糊搜索。

KMP算法是D.E.Knuth、J.H.Morris和V.R.Pratt这3位学者在BF(brute-force)算法基础上提出的模式匹配改进算法。该算法中模式串从左至右移动,字符比较也从左至右进行。但是其对其下一个字符的滑动位置的选定是一大难点。BM算法是Boyer和Moore两人在KMP算法的启发下提出的,是一种快速的单模式匹配算法。BM算法进行模式匹配时,模式沿着文本从左到右移动,字符比较却从右至左进行,在每次比较失败后,使用坏字符移动表与好后缀移动表来启发模式向后移动的距离,使得在扫描正文时可以尽可能地跳过多的字符,实践证明BM算法是一种快速有效的模式匹配算法。此外神经网络问答判断算法也是模糊匹配算法中的主流算法之一,其将输入文本的每一个字符对应一个节点,输出层每一节点对应一个关键词的序号,被激活的输出层节点代表当前用户描述文本中存在的有效关键词。输出转换为二进制比特序列{Oi},每一个比特对应一个关键词;通过查表法将{Oi}快速的映射到数据序号。其主要问题是当数据库内容较多时,神经网络的训练和应用对会产生比较高的要求。

发明内容

本发明为了解决上述问题而提供的一种字符串的快速模糊匹配算法,所述字符串的快速模糊匹配算法包括以下步骤:

步骤(1)确定需要匹配的M个文本,通过自然语言处理算法提取文本中的关键词标签,序号为i,并将标签存入数据库中以供后续的字符串匹配查找,关键词标签记为Keyword(m,i)(m=1,2,3,...,M)。

步骤(2)对数据库中存储的数据进行训练学习,获得数据库数据的映射关系。

步骤(2-1)读取数据库中的标签数据,建立哈希,统计标签数据中的字符,标签个数等信息,存入哈希映射表中。

步骤(2-2)获得字符到标签字符串的映射关系D1,标签字符串到文本的映射关系D2,文本到标签数量的映射关系等D3,并存入字典中。

步骤(3)读取输入长度为L个字符的搜索文本X,描述想要查找的数据库中的文本,从输入的搜索文本中提取字符集合X(l)(l=1,2,3,...,L)。

步骤(4)遍历X(1),过滤出相关的标签。

步骤(4-1)遍历X(1),读取字符到标签字符串的映射关系D1。

步骤(4-2)通过映射关系从关键词集合Keyword(m,i)(m=1,2,3,...,M)中过滤出相关的标签,从大量标签数据中过滤出少量的待处理标签,可以大大减少对标签的循环遍历工作。

步骤(4-3)将步骤(4-2)过滤出的标签存入集合队列candidate(m,i)中。

步骤(5)对标签集合candidate(m,i)采用滑动窗口法,与输入文本X通过字符串模糊匹配算法进行匹配,再一次过滤出出不符合要求的标签,最后获得命中标签集合HitLables(m,i)。

步骤(5-1)遍历输入文本字符串,将输入文本分解为长度不等的子字符串,取长度一样的关键词,candidate(m,i)中的标签与分解文本逐个比对,判断是否有命中。

步骤(5-2)遍历标签队列集合candidate(m,i)中的所有标签,采用滑动窗口法,重复上述步骤(5-1)的过程,采用DTW字符串模糊匹配算法进行匹配,记录每次匹配的得分。

步骤(5-3)对于匹配得分满足要求的标签存入命中标签集合HitLables(m,i)中。

步骤(6)判断输入文本X中含有的否定词,分析输入文本中不希望查找的信息,删除HitLables(m,i)中对应的标签。

步骤(6-1)找出输入文本X中的否定词集合N,统计输入文本X中不希望查找的关键词信息。

步骤(6-2)遍历命中标签集合HitLables(m,i)中的标签,若含有集合N中的否定词描述的关键词,则删除命中标签集合HitLables(m,i)中对应的标签,更新命中标签集合HitLables(m,i)中的标签信息。

步骤(7)遍历命中标签集合HitLables(m,i)中的标签,通过标签字符串到文本的映射关系D2找到匹配的文本集合F。

步骤(8)对查找到的匹配文本集合F中的文本序列排序,并返回搜索结果。

步骤(8-1)统计匹配文本集合F中命中标签中的总的字符个数,命中标签概率等信息。

步骤(8-2)将步骤(8-1)中的统计信息存入队列中,并以此为依据给匹配文本集合F中的文本序列打分排序。

步骤(8-3)通过数据库文本编号快速查找到对应的文本名称,并根据步骤(8-2)中的排序结果返回推荐结果。

本发明的有益效果在于:能够支持海量音频文件的检索,通过对海量文本标签的快速过滤,获得少量候选标签,以此降低匹配计算量,提高搜索的速度。能够支持模糊字符串的匹配,适合对儿童等语言描述能力欠缺的对象提供检索服务。

附图说明

图1为本发明涉及的字符串搜索流程图;

图2为本发明涉及的汉字到字符串标签的激活哈希表(Hashmap)的建立过程;

图3为本发明涉及的模糊描述语言文本与关键词标签的匹配过程。

具体实施方式

下面结合附图对本发明作进一步阐述:

如图1所示,本发明的主要流程如下:首先需要读取数据库中的标签和文本数据,对数据库中存储的数据进行训练学习,获得字符到标签字符串的映射关系D1,标签字符串到文本的映射关系D2,文本到标签数量的映射关系D3。获取用户输入的描述文本X,长度为L个字符,从输入的搜索文本中提取字符集合X(l)(l=1,2,3,...,L)。通过字符X(l)到标签字符串的映射关系D1从关键词集合中过滤出相关的标签集合,对于过滤出的标签集合和输入文本X进行模糊匹配,并保存匹配结果得分。之后查找无用词典,否定词词典,进一步过滤掉无用的,干扰的标签。最后使用获得的标签集合,通过标签字符串到文本的映射关系D2找到匹配的文本集合F。根据匹配结果得分将文本F排序,并返回推荐结果。

本发明使用自然语言处理、机器学习领域的算法进行数据的预处理,从而可以建立一些关键信息之间映射。其主要流程可见附图2,具体如下:首先读取原始数据中的标签集合,简历哈希映射表。遍历数据标签,并读取每个标签中字符串的字符,可以通过判断该字符对应的字符串映射是否已经存在于哈希映射中来决定是否需要向表中添加映射关系,如果存在则不添加,若不存在则添加入哈希映射表中。循环遍历所有标签字符串中的所有字符,知道所有的映射都存入该字符到标签的映射表中。类似的,还可以通过遍历数据库建立标签字符串到文本的映射关系,文本到标签数量的映射关系。之后通过对哈希映射的查找可以极大地提升数据搜索的速度。

在字符串标签与输入文本匹配的过程中,需要将描述文本X分解为长度不等的子字符串,取长度一样的关键词,逐个比对,判断是否有命中。遍历所有子字符串,重复上面的比对操作。具体流程参见附图3,首先读取过滤后的标签长度,对输入文本按照标签长度进行切分,获得文本子标签。通过DTW算法,将标签与文本子标签进行模糊对比,循环遍历匹配,保存匹配最高的得分。之后读取下一个标签,与文本进行对比,重复上述步骤,直到所有的标签都匹配完。注意匹配算法中也不得不遍历所有的子字符串,因为描述文本中,可能反复出现同一个名词,那么需要累计关键词命中的次数,而不是命中一次就可以提前终止。

以上所述实施例,只是本发明的较佳实例,并非来限制本发明的实施范围,故凡依本发明申请专利范围所述的构造、特征及原理所做的等效变化或修饰,均应包括于本发明专利申请范围内。

去获取专利,查看全文>
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号