CN109492218B - 一种基于确定有穷状态机的同义词快速替换方法 - Google Patents
一种基于确定有穷状态机的同义词快速替换方法 Download PDFInfo
- Publication number
- CN109492218B CN109492218B CN201811230063.0A CN201811230063A CN109492218B CN 109492218 B CN109492218 B CN 109492218B CN 201811230063 A CN201811230063 A CN 201811230063A CN 109492218 B CN109492218 B CN 109492218B
- Authority
- CN
- China
- Prior art keywords
- synonym
- hash table
- replaced
- dfa
- words
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/247—Thesauruses; Synonyms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于确定有穷状态机的同义词快速替换方法,具体方法包括首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换。本发明的一种基于确定有穷状态机的同义词快速替换方法该方法相对于传统的替代方法,查询速度更快,适合大规模语料的同义词替换,为语料相似度的计算提供了基础。
Description
技术领域
本发明涉及自然语言处理领域,具体涉及到智能问答中含有同义词的语料相似度计算中,对语料同义词的快速替换。
背景技术
在一个字符串中查找是否存在另外一个字符串最直观的算法是朴素算法。假设长串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构建同义词哈希表;
所述的同义词查找模块,用于查找并快速定位待替换词;
所述的同义词替换模块,用于替换待替换词。
进一步,优选的结构为,所述的同义词查找模块,用于在查找过程中,如果当前状态没有与所述待匹配信息的字符相匹配的下一状态,跳转到所述当前状态的失败状态继续匹配。
进一步,优选的结构为,所述的哈希表构造模块,遍历单元、获取单元以及构建单元;
遍历单元,用于遍历待替换词列表以及待替换词的所有字符;
获取单元,用于根据字符获取子表;
构建单元,用于构建叶子节点。
一种基于确定有穷状态机的同义词快速替换系统的服务器,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
本发明的一种基于确定有穷状态机的同义词快速替换方法和现有技术相比,有益效果如下:
1、本发明是基于有穷状态机,将待匹配信息在由预设的关键字构成的有穷状态及DFA中进行匹配,由此关键字的匹配变成了状态机的跳转;在匹配过程中,如果当前状态没有与所述待匹配信息的字符相匹配的下一状态,则跳转到所述当前状态的失败状态继续匹配,所述待匹配信息的匹配过程只需要随着所述DFA状态一步一步地往下一状态跳转,无需返回上一状态以匹配其他关键字,从而可以确保所述待匹配信息只需要扫描一遍即可完成匹配,极大地提高了匹配效率;
2、有状态机的速度优势,又对有穷状态机进行改进的多同义词替换算法,可以将多同义词替换时间复杂度由o(S(n+m))提高到o(n+m);
3、为智能问答语料相似度计算节约了时间,并为语料词向量计算扫除同义词干扰;
4、适用于中文字符串、英文字符串或其他特殊文本字符串的处理。
附图说明
下面结合附图对本发明进一步说明。
附图1为DFA哈希表链表结构图;
附图2为DFA哈希表的构造流程图;
附图3为同义词替换流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
DFA全称为:Deterministic Finite Automaton,即确定有穷状态机。有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。简单点说就是,它是是通过event和当前的state得到下一个state,即event+state=nextstate。理解为系统中有多个节点,通过传递进入的event,来确定走哪个路由至另一个节点,而节点是有限的。
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数 f(key)为哈希(Hash)函数。
本发明为一种基于确定有穷状态机的同义词快速替换方法,有状态机的速度优势,又对有穷状态机进行改进的多同义词替换算法,其中自然语言文本字符串的多子串的替换,多子串的哈希表构造可以是中文、英文或其他特殊字符,因此该方法适用于中文字符串、因为或其他特殊文本字符串的处理;解决了DFA 算法中没有同义词这种多对多的替换的情况。
实施例1:
首先进行同义词DFA哈希表构造:
以下面一组同义词为例,“指不胜屈”为同义词的替代词,“不计其数”、“不可胜数”、“举不胜举”为语料中待替代的同义词,以替代词列表为基础构建DFA 哈希表如附图1所示。
用json结构表示如下所示:
构造DFA哈希表的流程如附图2所示。
DFA哈希表Java代码实现如下:
然后,查找并替换同义词:
以中文语料“世博会建筑中的名作佳构是指不胜屈的”为例,查找并替换语料中的同义词。遍历语料中的每一个字符,以字符为健值在DFA哈希表中查找同义词。当匹配到“指”时,中DFA哈希表中找到该子树继续匹配查询,直到“指不胜屈”被完全匹配出来,匹配后则记录待替换词,最后一起将语料中的待替换词全部替换。
若语料中只包含DFA哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来。例如,语料“资金已经按时到位,桥梁竣工指日可待了”中包含哈希表的健值“指”,但其子树中并没有键值“日”的子树,所有并不会把单个字符匹配出。其实现流程如附图3所示。
基于DFA的同义词替换方法的Java代码实现如下:
假设知识库中待替换的知识条目有K条,平均每条有个字符,待匹配总字符数为n,即同义词词库有S个关键同义词,每个关键同义词对应个同义词,每个同义词数量为μ个,同义词词库总字符为m;则本发明从构建DFA 哈希表到匹配并替换同义词的时间复杂度为:
由表1-1的对比可以看出本发明的方法无论在单条语料还是整个知识库的同义词替换,在时间上远优于传统的方法。
表1-1
本发明的方法相对于传统的替代方法,查询速度更快,适合大规模语料的同义词替换,为语料相似度的计算提供了基础。为智能问答语料相似度计算节约了时间,并为语料词向量计算扫除同义词干扰。
本发明是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
Claims (3)
1.一种基于确定有穷状态机的同义词快速替换方法,其特征在于,首先将同义词字符列表通过有穷状态机DFA构建同义词哈希表;然后利用同义词哈希表查找并快速定位待替换词,最后将待替换词一起替换;
所述的查找流程包括遍历语料中的每一个字符,以字符为键值在DFA哈希表中查找同义词,若只匹配到一个字符,则在同义词哈希表中找到相应的子树继续匹配查询,直到完整的字符被完全匹配出来,匹配后则记录待替换词,最后将语料中的待替换词一起全部替换;
若语料中只包含DFA哈希表中的一个字符,但不包含完整的同义词,则该词不会被匹配出来;
所述的DFA哈希表的构造流程包括:
是否遍历待替换词列表,若是,结束;若否,则进入下一步;
是否遍历待替换词所有字符;若是,则构建叶子节点;若否,则进入下一步;
根据字符获取子表;判断子表是否存在,若不存在,则构建新的子节点,若存在,则DFA哈希表为当前子表;
所述的DFA哈希表适用于中文字符串或英文字符串。
2.一种基于确定有穷状态机的同义词快速替换系统,其特征在于,包括哈希表构造模块、同义词查找模块和同义词替换模块;
所述的哈希表构造模块,用于将同义词字符列表通过有穷状态机DFA构建同义词哈希表;
所述的同义词查找模块,用于查找并快速定位待替换词;
所述的同义词替换模块,用于替换待替换词;
所述的哈希表构造模块,用于在查找过程中,如果当前状态没有与所述待匹配信息的字符相匹配的下一状态,跳转到所述当前状态的失败状态继续匹配;
所述的哈希表构造模块,遍历单元、获取单元以及构建单元;
遍历单元,用于遍历待替换词列表以及待替换词的所有字符;
获取单元,用于根据字符获取子表;
构建单元,用于构建叶子节点。
3.一种基于确定有穷状态机的同义词快速替换系统的服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811230063.0A CN109492218B (zh) | 2018-10-22 | 2018-10-22 | 一种基于确定有穷状态机的同义词快速替换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811230063.0A CN109492218B (zh) | 2018-10-22 | 2018-10-22 | 一种基于确定有穷状态机的同义词快速替换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109492218A CN109492218A (zh) | 2019-03-19 |
CN109492218B true CN109492218B (zh) | 2023-03-21 |
Family
ID=65692457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811230063.0A Active CN109492218B (zh) | 2018-10-22 | 2018-10-22 | 一种基于确定有穷状态机的同义词快速替换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109492218B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521356A (zh) * | 2011-12-13 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 基于确定有限状态自动机的正则表达式匹配设备和方法 |
CN106874294A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种信息匹配方法及装置 |
CN107463666A (zh) * | 2017-08-02 | 2017-12-12 | 成都德尔塔信息科技有限公司 | 一种基于文本内容的敏感词过滤方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0413743D0 (en) * | 2004-06-19 | 2004-07-21 | Ibm | Method and system for approximate string matching |
-
2018
- 2018-10-22 CN CN201811230063.0A patent/CN109492218B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521356A (zh) * | 2011-12-13 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 基于确定有限状态自动机的正则表达式匹配设备和方法 |
CN106874294A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种信息匹配方法及装置 |
CN107463666A (zh) * | 2017-08-02 | 2017-12-12 | 成都德尔塔信息科技有限公司 | 一种基于文本内容的敏感词过滤方法 |
Non-Patent Citations (1)
Title |
---|
一种改进的基于同义词替换的中文文本信息隐藏方法;甘灿等;《东南大学学报(自然科学版)》;20070920;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109492218A (zh) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bennani-Smires et al. | Simple unsupervised keyphrase extraction using sentence embeddings | |
Efthymiou et al. | Matching web tables with knowledge base entities: from entity lookups to entity embeddings | |
US10387801B2 (en) | Method of and system for generating a prediction model and determining an accuracy of a prediction model | |
US10558754B2 (en) | Method and system for automating training of named entity recognition in natural language processing | |
Mansuri et al. | Integrating unstructured data into relational databases | |
US8510322B2 (en) | Enriched search features based in part on discovering people-centric search intent | |
US20160078047A1 (en) | Method for obtaining search suggestions from fuzzy score matching and population frequencies | |
Zhou et al. | Resolving surface forms to wikipedia topics | |
US20100325133A1 (en) | Determining a similarity measure between queries | |
US20130339001A1 (en) | Spelling candidate generation | |
US8825620B1 (en) | Behavioral word segmentation for use in processing search queries | |
JP2022024102A (ja) | 検索モデルのトレーニング方法、目標対象の検索方法及びその装置 | |
CN110321437B (zh) | 一种语料数据处理方法、装置、电子设备及介质 | |
CN107748778B (zh) | 一种提取地址的方法及装置 | |
US10810258B1 (en) | Efficient graph tree based address autocomplete and autocorrection | |
US20120330947A1 (en) | Name-Search System and Method | |
Shang et al. | A framework to construct knowledge base for cyber security | |
Abdelmageed et al. | Jentab: A toolkit for semantic table annotations | |
CN111143513A (zh) | 一种敏感词识别方法、装置及电子设备 | |
Kameya et al. | RP-growth: top-k mining of relevant patterns with minimum support raising | |
Adar et al. | Building a scientific concept hierarchy database (schbase) | |
Mukherjee et al. | Automated knowledge provider system with natural language query processing | |
CN116860991A (zh) | 面向api推荐的基于知识图谱驱动路径优化的意图澄清方法 | |
CN109492218B (zh) | 一种基于确定有穷状态机的同义词快速替换方法 | |
Gentile et al. | Early steps towards web scale information extraction with lodie |
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 | ||
CB02 | Change of applicant information |
Address after: 271000 Langchao science and Technology Park, 527 Dongyue street, Tai'an City, Shandong Province Applicant after: INSPUR SOFTWARE Co.,Ltd. Address before: No. 1036, Shandong high tech Zone wave road, Ji'nan, Shandong Applicant before: INSPUR SOFTWARE Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |