一种基于确定有穷状态机的同义词快速替换方法技术

技术编号:20622792 阅读:133 留言:0更新日期:2019-03-20 14:31
本发明专利技术公开了一种基于确定有穷状态机的同义词快速替换方法,具体方法包括首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。本发明专利技术的一种基于确定有穷状态机的同义词快速替换方法该方法相对于传统的替代方法,查询速度更快,适合大规模语料的同义词替换,为语料相似度的计算提供了基础。

A Fast Synonym Replacement Method Based on Determining Finite State Machine

The present invention discloses a fast synonym replacement method based on deterministic finite state machine. The method includes firstly constructing a synonym hash table through finite state machine DFA, then searching and locating the words to be replaced by synonym hash table, and finally replacing the words to be replaced together. A fast synonym replacement method based on deterministic finite state machine (FSM) of the present invention has faster query speed and is suitable for synonym replacement in large-scale corpus, which provides a basis for corpus similarity calculation.

【技术实现步骤摘要】
一种基于确定有穷状态机的同义词快速替换方法
本专利技术涉及自然语言处理领域,具体涉及到智能问答中含有同义词的语料相似度计算中,对语料同义词的快速替换。
技术介绍
在一个字符串中查找是否存在另外一个字符串最直观的算法是朴素算法。假设长串L的字符数量为n,子串l的长度为m,在长串L中查找子串需要把每个字符都做比较,最终的时间复杂度为o(n*m);在长串L中查找S个不同的子串l1,l2LlS,则时间复杂度为o(n*S*m)。朴素算法的优点是思路简单易于理解,但是存在的弊端是存在大量的重复计算。经典字符匹配算法是KMP算法,该算法是典型的字符串查找算法。假设长串L的字符数量为n,子串l的长度为m,则查找的时间复杂度为o(n+m),而对于S个子串l1,l2LlS,确认每个子串是否在长串L中的时间复杂度为o(S(n+m))。KMP算法的优点是在单个子串匹配时优势明显,但存在的弊端是在多字符串匹配时,其时间复杂度与子串的数量成正相关。DFA全称DeterministicFiniteAutomaton,即确定有穷状态机。DFA算法在敏感词搜索中应用较为广泛,可以将一个句子或一篇文章中的敏感词快速替换为特殊字符“*”,但存在的弊端是像同义词这种多对多的替换几乎没有。
技术实现思路
本专利技术的技术任务是针对以上不足之处,提供一种基于确定有穷状态机的同义词快速替换方法。本专利技术解决其技术问题所采用的技术方案是:一种基于确定有穷状态机的同义词快速替换方法,首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。进一步,优选的方法为,所述的查找流程包括遍历语料中的每一个字符,以字符为键值在DFA哈希表中查找同义词,若只匹配到一个字符,则在DFA哈希表中找到相应的子树继续匹配查询,直到完整的字符被完全匹配出来,匹配后则记录待替换词,最后将语料中的待替换词一起全部替换;若语料中只包含同义词哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来。进一步,优选的方法为,所述的同义词哈希表的构造流程包括:所述的DFA哈希表的构造流程包括:是否遍历待替换词列表,若是,结束;若否,则进入下一步;是否遍历待替换词所有字符;若是,则构建叶子节点;若否,则进入下一步;根据字符获取子表;判断子表是否存在,若不存在,则构建新的子节点,若存在,则DFA哈希表为当前子表。进一步,优选的方法为,所述的DFA哈希表适用于中文字符串或英文字符串。一种基于确定有穷状态机的同义词快速替换系统,包括哈希表构造模块、同义词查找模块和同义词替换模块;所述的哈希表构造模块,用于将同义词字符列表通过有穷状态机DFA构建同义词哈希表;所述的同义词查找模块,用于查找并快速定位待替换词;所述的同义词替换模块,用于替换待替换词。进一步,优选的结构为,所述的同义词查找模块,用于在查找过程中,如果当前状态没有与所述待匹配信息的字符相匹配的下一状态,跳转到所述当前状态的失败状态继续匹配。进一步,优选的结构为,所述的哈希表构造模块,遍历单元、获取单元以及构建单元;遍历单元,用于遍历待替换词列表以及待替换词的所有字符;获取单元,用于根据字符获取子表;构建单元,用于构建叶子节点。一种基于确定有穷状态机的同义词快速替换系统的服务器,所述服务器包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。本专利技术的一种基于确定有穷状态机的同义词快速替换方法和现有技术相比,有益效果如下:1、本专利技术是基于有穷状态机,将待匹配信息在由预设的关键字构成的有穷状态及DFA中进行匹配,由此关键字的匹配变成了状态机的跳转;在匹配过程中,如果当前状态没有与所述待匹配信息的字符相匹配的下一状态,则跳转到所述当前状态的失败状态继续匹配,所述待匹配信息的匹配过程只需要随着所述DFA状态一步一步地往下一状态跳转,无需返回上一状态以匹配其他关键字,从而可以确保所述待匹配信息只需要扫描一遍即可完成匹配,极大地提高了匹配效率;2、有状态机的速度优势,又对有穷状态机进行改进的多同义词替换算法,可以将多同义词替换时间复杂度由o(S(n+m))提高到o(n+m);3、为智能问答语料相似度计算节约了时间,并为语料词向量计算扫除同义词干扰;4、适用于中文字符串、英文字符串或其他特殊文本字符串的处理。附图说明下面结合附图对本专利技术进一步说明。附图1为DFA哈希表链表结构图;附图2为DFA哈希表的构造流程图;附图3为同义词替换流程图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步说明。DFA全称为:DeterministicFiniteAutomaton,即确定有穷状态机。有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。简单点说就是,它是是通过event和当前的state得到下一个state,即event+state=nextstate。理解为系统中有多个节点,通过传递进入的event,来确定走哪个路由至另一个节点,而节点是有限的。散列表(Hashtable,也叫哈希表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数。本专利技术为一种基于确定有穷状态机的同义词快速替换方法,有状态机的速度优势,又对有穷状态机进行改进的多同义词替换算法,其中自然语言文本字符串的多子串的替换,多子串的哈希表构造可以是中文、英文或其他特殊字符,因此该方法适用于中文字符串、因为或其他特殊文本字符串的处理;解决了DFA算法中没有同义词这种多对多的替换的情况。实施例1:首先进行同义词DFA哈希表构造:以下面一组同义词为例,“指不胜屈”为同义词的替代词,“不计其数”、“不可胜数”、“举不胜举”为语料中待替代的同义词,以替代词列表为基础构建DFA哈希表如附图1所示。用json结构表示如下所示:构造DFA哈希表的流程如附图2所示。DFA哈希表Java代码实现如下:然后,查找并替换同义词:以中文语料“世博会建筑中的名作佳构是指不胜屈的”为例,查找并替换语料中的同义词。遍历语料中的每一个字符,以字符为健值在DFA哈希表中查找同义词。当匹配到“指”时,中DFA哈希表中找到该子树继续匹配查询,直到“指不胜屈”被完全匹配出来,匹配后则记录待替换词,最后一起将语料中的待替换词全部替换。若语料中只包含DFA哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来。例如,语料“资金已经按时到位,桥梁竣工指日可待了”中包含哈希表的健值“指”,但其子树中并没有键值“日”的子树,所有并不会把单个字符匹配出。其实现流程如附图3所示。基于DFA的同义词替本文档来自技高网...

【技术保护点】
1.一种基于确定有穷状态机的同义词快速替换方法,其特征在于,首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。

【技术特征摘要】
1.一种基于确定有穷状态机的同义词快速替换方法,其特征在于,首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。2.根据权利要求1所述的一种基于确定有穷状态机的同义词快速替换方法,其特征在于,所述的查找流程包括遍历语料中的每一个字符,以字符为键值在DFA哈希表中查找同义词,若只匹配到一个字符,则在同义词哈希表中找到相应的子树继续匹配查询,直到完整的字符被完全匹配出来,匹配后则记录待替换词,最后将语料中的待替换词一起全部替换;若语料中只包含DFA哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来。3.根据权利要求1所述的一种基于确定有穷状态机的同义词快速替换方法,其特征在于,所述的DFA哈希表的构造流程包括:是否遍历待替换词列表,若是,结束;若否,则进入下一步;是否遍历待替换词所有字符;若是,则构建叶子节点;若否,则进入下一步;根据字符获取子表;判断子表是否存在,若不存在,则构建新的子节点,若存在,则DFA哈希表为当前子表。4.根据权利要求2或3所述的一种基于确定有穷状态机的同义词快速替换方法,其特征在于,所述的DFA哈希...

【专利技术属性】
技术研发人员:曾光郭运艳李明明潘心冰
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1