[发明专利]一种基于确定有穷状态机的同义词快速替换方法有效
申请号: | 201811230063.0 | 申请日: | 2018-10-22 |
公开(公告)号: | CN109492218B | 公开(公告)日: | 2023-03-21 |
发明(设计)人: | 曾光;郭运艳;李明明;潘心冰 | 申请(专利权)人: | 浪潮软件股份有限公司 |
主分类号: | G06F40/247 | 分类号: | G06F40/247;G06F40/289;G06F9/448 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 王守梅 |
地址: | 271000 山东省*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 确定 有穷 状态机 同义词 快速 替换 方法 | ||
本发明公开了一种基于确定有穷状态机的同义词快速替换方法,具体方法包括首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。本发明的一种基于确定有穷状态机的同义词快速替换方法该方法相对于传统的替代方法,查询速度更快,适合大规模语料的同义词替换,为语料相似度的计算提供了基础。
技术领域
本发明涉及自然语言处理领域,具体涉及到智能问答中含有同义词的语料相似度计算中,对语料同义词的快速替换。
背景技术
在一个字符串中查找是否存在另外一个字符串最直观的算法是朴素算法。假设长串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全称Deterministic Finite Automaton,即确定有穷状态机。DFA算法在敏感词搜索中应用较为广泛,可以将一个句子或一篇文章中的敏感词快速替换为特殊字符“*”,但存在的弊端是像同义词这种多对多的替换几乎没有。
发明内容
本发明的技术任务是针对以上不足之处,提供一种基于确定有穷状态机的同义词快速替换方法。
本发明解决其技术问题所采用的技术方案是:一种基于确定有穷状态机的同义词快速替换方法,首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。
进一步,优选的方法为,所述的查找流程包括遍历语料中的每一个字符,以字符为键值在DFA哈希表中查找同义词,若只匹配到一个字符,则在DFA哈希表中找到相应的子树继续匹配查询,直到完整的字符被完全匹配出来,匹配后则记录待替换词,最后将语料中的待替换词一起全部替换;
若语料中只包含同义词哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来。
进一步,优选的方法为,所述的同义词哈希表的构造流程包括:
所述的DFA哈希表的构造流程包括:
是否遍历待替换词列表,若是,结束;若否,则进入下一步;
是否遍历待替换词所有字符;若是,则构建叶子节点;若否,则进入下一步;
根据字符获取子表;判断子表是否存在,若不存在,则构建新的子节点,若存在,则DFA哈希表为当前子表。
进一步,优选的方法为,所述的DFA哈希表适用于中文字符串或英文字符串。
一种基于确定有穷状态机的同义词快速替换系统,包括哈希表构造模块、同义词查找模块和同义词替换模块;
所述的哈希表构造模块,用于将同义词字符列表通过有穷状态机DFA构建同义词哈希表;
所述的同义词查找模块,用于查找并快速定位待替换词;
所述的同义词替换模块,用于替换待替换词。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件股份有限公司,未经浪潮软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811230063.0/2.html,转载请声明来源钻瓜专利网。