[发明专利]大规模关键词多模匹配方法、装置以及设备在审
申请号: | 201811441307.X | 申请日: | 2018-11-28 |
公开(公告)号: | CN109558521A | 公开(公告)日: | 2019-04-02 |
发明(设计)人: | 袁春峰;曲志峰;纪翀;楼方平 | 申请(专利权)人: | 南京中孚信息技术有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/9032 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 李强 |
地址: | 210000 江苏省南京市浦口区江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多模匹配 哈希函数 哈希 预设状态 文本 输出 预设 索引 关键词集合 检索效率 字符串 失败 数组 记录 存储 扫描 合成 | ||
本发明提供了一种大规模关键词多模匹配方法、装置以及设备,包括:根据预设状态机扫描待测文本,其中,预设状态机通过预设关键词集合生成;将待测文本的当前输入状态值与当前字节值合成第一字符串,利用完美哈希函数进行计算得到索引值,并通过哈希函数计算当前输入状态值以及当前字节值得到哈希值;通过判断哈希值与存储在以索引值为下标的数组中的预设哈希值的关系,进而得到记录的失败状态值以及输出状态值;将记录的失败状态值以及输出状态值分别与关键词进行对应,输出待测文本中的关键词,该方式通过运用完美哈希函数提高了关键词多模匹配的检索效率。
技术领域
本发明涉及多模匹配技术领域,尤其是涉及一种大规模关键词多模匹配方法、装置以及设备。
背景技术
AC算法是多模匹配中的经典算法,被大量应用于工业生产环境。基于状态机的多模匹配算法在状态转移过程中,需要通过输入状态和触发条件快速检索到输出状态,从而提高模式匹配的效率。
现有的AC算法通常通过使用B+树或哈希表方式来进行关键词的检索,但是B+树的存储方式在查找效率上弱于哈希表,而常用哈希表则需要开辟冗余的存储空间来避免冲突,且大规模的状态机在常用哈希的构建时更容易产生冲突,检索效率低。
发明内容
有鉴于此,本发明的目的在于提供一种大规模关键词多模匹配方法、装置以及设备,以解决现有技术中存在的多模匹配时关键词的检索效率低的技术问题。
第一方面,本发明实施例提供了一种大规模关键词多模匹配方法,包括:根据预设状态机扫描待测文本,其中,预设状态机通过预设关键词集合生成;对待测文本中的当前输入状态值以及当前字节值执行以下步骤:将当前输入状态值以及当前字节值合成第一字符串,并基于第一字符串利用完美哈希函数进行计算,得到索引值;基于当前输入状态值以及当前字节值利用哈希函数进行计算,得到哈希值;判断哈希值与预设哈希值是否相等,其中,预设哈希值存储在以索引值为下标的数组中;如果哈希值与预设哈希值相等,获取与当前输入状态值以及当前字节值对应的失败状态值,并判断与当前输入状态值以及当前字节值对应的失败状态值是否为关键词的标识值;如果是,记录与当前输入状态值以及当前字节值对应的失败状态值;如果否,不记录与当前输入状态值以及当前字节值对应的失败状态值;获取与当前输入状态值以及当前字节值对应的输出状态值,并判断与当前输入状态值以及当前字节值对应的输出状态值是否为关键词的标识值;如果是,记录与当前输入状态值以及当前字节值对应的输出状态值;如果否,不记录与当前输入状态值以及当前字节值对应的输出状态值;将与当前输入状态值以及当前字节值对应的输出状态值更新为当前输入状态值,并将当前字节值的下一字节值更新为当前字节值;如果哈希值与预设哈希值不相等,获取与当前输入状态值以及当前字节值对应的失败状态值,并判断与当前输入状态值以及当前字节值对应的失败状态值是否为关键词的标识值;如果是,记录与当前输入状态值以及当前字节值对应的失败状态值;如果否,不记录与当前输入状态值以及当前字节值对应的失败状态值;将与当前输入状态值以及当前字节值对应的失败状态值更新为当前输入状态值,将当前字节值更新为当前字节值;将记录的失败状态值以及输出状态值分别与关键词进行对应,输出待测文本中的关键词。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据预设状态机扫描待测文本之前,包括:根据预设关键词集合生成预设状态机,并为预设关键词集合中每个关键词设置小于等于关键词总个数的唯一标识值;获取预设状态机的成功状态转移表以及失败状态转移表,其中,成功状态转移表包括:输入状态值、触发值以及输出状态值,失败状态转移表包括:当前状态值以及失败状态值,失败状态转移表储存在以当前状态值为下标的数组中;将输入状态值以及触发值合成第二字符串,并基于第二字符串利用完美哈希函数进行计算,得到索引值;基于输入状态值以及触发值利用哈希函数进行计算,得到预设哈希值,并将预设哈希值存储在以索引值为下标的数组中。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,预设状态机中的初始状态值为关键词总个数加一个数值的计算结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京中孚信息技术有限公司,未经南京中孚信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811441307.X/2.html,转载请声明来源钻瓜专利网。