CN103365992B - 一种基于一维线性空间实现Trie树的词典检索方法 - Google Patents

一种基于一维线性空间实现Trie树的词典检索方法 Download PDF

Info

Publication number
CN103365992B
CN103365992B CN201310288821.5A CN201310288821A CN103365992B CN 103365992 B CN103365992 B CN 103365992B CN 201310288821 A CN201310288821 A CN 201310288821A CN 103365992 B CN103365992 B CN 103365992B
Authority
CN
China
Prior art keywords
node
trie tree
current
key
value
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
Application number
CN201310288821.5A
Other languages
English (en)
Other versions
CN103365992A (zh
Inventor
王国印
贾西贝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huaao Data Technology Co Ltd
Original Assignee
Shenzhen Huaao Data Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Huaao Data Technology Co Ltd filed Critical Shenzhen Huaao Data Technology Co Ltd
Priority to CN201310288821.5A priority Critical patent/CN103365992B/zh
Publication of CN103365992A publication Critical patent/CN103365992A/zh
Priority to PCT/CN2014/080179 priority patent/WO2015010509A1/zh
Application granted granted Critical
Publication of CN103365992B publication Critical patent/CN103365992B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于一维线性空间实现Trie树的词典检索方法,通过生成一维线性空间的Trie树词典数据;根据用户输入确定待查询词条key;根据词条key的当前状态实现查询。在一维线性空间下构建Trie树的词典数据下,提高了词典加载和检索速度,并且能够快速检索到词条的所有前缀词,另外,基于一维线性空间实现Trie树的词典检索能够解决传统Trie树词典数据检索在Tire树的构建过程中存在的因***新状态而引起的冲突问题,并能避免该冲突导致的大量词典数据的移动问题。

Description

一种基于一维线性空间实现Trie树的词典检索方法
技术领域
本发明涉及一种词典检索方法,尤其涉及一种基于一维线性空间实现Trie树的词典检索方法。
背景技术
在信息检索和自然语言处理领域,特别是基于词典的技术应用中,词典的规模一般都非常大,拥有成千上万甚至上亿条记录,尤其是搜索引擎中倒排索引词的规模最为庞大。对海量数据词典的查找,当前通常采用索引的数据结构来实现。常用的索引结构包括线性索引表、倒排表、散列(hash)表和搜索树等。对于一个记录的关键字(key)长度为n,词典的规模为N的情况下(其中N>>n)各索引结构检索的时间复杂度分析如下:
线性索引结构或倒排表一般采用顺序结构存储词典中的记录,对词典中记录的查找一般采用顺序遍历每一个记录,因此,每一次查找的时间复杂度为O(N)×l(n)(其中l(n)为两条记录的关键字因比较所花费的时间)。此种方法的改进是让词典的每一条记录按关键字(key)有序,在检索的时候用折半查找,其时间复杂度为O(logN)×l(n)。
在基于词典的自然语言处理应用,如基于词典的中文分词、基于词典的字音转换(汉字转换成拼音)、基于词典的命名实体识别、基于词典的标注(包括词性标注和语义标注等),其中的核心部分是要进行大量的查询操作。为了满足此类应用的要求,就需要一种高效的词典检索方法。现今也有基于二维数组的Trie树的词典查询方法,但是基于二维数组的这种查询方法在Trie树的构建过程中会存在因***新状态而引起的冲突,导致要移动大量存在冲突的数据问题。
发明内容
本发明旨在解决上述缺陷之一。
因此,本发明提供一种基于一维线性空间实现Trie树的词典检索方法,通过生成一维线性空间的Trie树词典数据;根据用户输入确定待查询词条key;根据词条key的当前状态实现查询。在一维线性空间下构建Trie树的词典数据下,提高了词典加载和检索速度,并且能够快速检索到词条的所有前缀词,另外,基于一维线性空间实现Trie树的词典检索能够解决传统Trie树词典数据检索在Tire树的构建过程中存在的因***新状态而引起的冲突问题,并能避免该冲突导致的大量词典数据的移动问题。
为此,本发明公开了一种基于一维线性空间实现Trie树的词典检索方法,该方法包括以下步骤:生成一维线性空间Trie树的词典数据;根据用户输入确定待查询词条key;根据词条key的当前状态实现查询。
优选地,词典数据的key转化为节点后存储在一维数组中,所述一维数组的值用来标识base值是否唯一。
优选地,所述一维线性空间的Trie树中将所有终端结点变为非终端结点,在所述终端结点后面增加一个叶子节点,并将叶子节点的check值赋上其存储位置。
优选地,所述叶子节点还包括:叶子节点的base值用以标识其是否为终端结点。
优选地,所述查询包括以下步骤:把当前结点指向根节点;根据当前输入的字符做出状态转移,获取其直接后继状态的位置;校验当前状态的前驱,确定当前状态由哪一状态转移而来;获取词条key对应的value值。
优选地,所述查询包括:词条key的查询可以获得其所有前缀词的结果。
本发明提供的一种基于一维线性空间实现Trie树的词典检索方法,通过生成一维线性空间的Trie树词典数据;根据用户输入确定待查询词条key;根据词条key的当前状态实现查询。在一维线性空间下构建Trie树的词典数据下,提高了词典加载和检索速度,并且能够快速检索到词条的所有前缀词。同时,在Trie树的构建过程中通过调整base值,使得其所有直接后继均不会发生冲突,因此避免了数据移动或存储空间分配的回溯问题。
应当理解,以上总体说明和以下详细说明都是说明性和实例性的,旨在提供对所要求的本发明的进一步说明。
附图说明
图1是本发明实施例一种基于一维线性空间实现Trie树的词典检索方法的流程图。
图2是本发明实施例根据词条key的当前状态实现查询的流程框架图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
本发明实施例提供的一种基于一维线性空间实现Trie树的词典检索方法。
如图1所示,是本发明实施例一种基于一维线性空间实现Trie树的词典检索方法的流程图。
步骤S110:生成一维线性空间Trie树的词典数据。
获取词典数据,要生成一维线性空间Trie树的词典数据包括以下具体步骤:
步骤S111:将所有词条和属性信息以key为中心按词典顺序排序,合并拥有相同key值的values,要保证key不存在重复。
遍历_Keys和_values中存储的元素,按词典顺序将Keys和_values以key为中心排序,
并合并相同key的value值,将有序的key序列和value序列存储到List<String>keys
和Collection<String>attributes中;
该步骤的伪代码如下:
步骤S112:定义起始状态,编号为0,其包含的信息值为[code=0,depth=0,start=0,end=N],其中N为词典的规模,即key的数量。
步骤S113:将起始状态放入双数组第0位置,将其base[0]=1(array[2*0]=array[0]=1),并标识base为1的值已经被占用(保证所有状态的base值唯—),check[0]=0(array[2*0+1]=array[1]=0)
步骤S114:以起始状态作为当前状态。
步骤S115:获取当前状态的所有直接后继状态的信息,若直接后继结点列表为空,即当前结点为终端结点“$”,表示从起始结点到当前结点构成的key恰好是词典中的一个完整词条,将当前结点(终端结点)的base值赋上当前key词典顺序序号的相反数,该路径上执行完毕;否则执行步骤S116。
该步骤的伪代码如下:
步骤S116:为当前结点寻找一个合适的base值,使得base值唯一,且不会导致所有直接后继结点与现有Trie树存储的结点冲突。依次将当前结点的直接后继结点***Trie树中,并将其check值赋上当前结点的base值,再依次把当前结点的直接后继结点作为当前结点,跳转到步骤S115。
该步骤的伪代码如下:
所述一维线性空间的Trie树中将所有终端结点变为非终端结点,在所述终端结点后面增加一个叶子节点,并将叶子节点的check值赋上其存储位置。
将所有的终端结点变为非终端结点,并在其后面增加一个叶子结点,叶子结点的check值赋上自己的存储位置,叶子结点的base值赋上从初始结点(0结点)到当前叶子结点路径上的输入字符组成的完整词条在整个有序词条集合中位置的相反数(即叶子结点所处的key中在所有按词典排序的词条集中序号的相反数),因此结点的base值的符号用于标识是否是终端结点(叶子结点,其base值小于0)。
步骤S120:根据用户输入待查询词条key。
Trie树构建好之后,接下来就是查询用户输入的词条是否存在Trie树,即是否是从根结点到叶子结点的一条完整路径。
步骤S130:根据词条key的当前状态实现查询。
如图2所示,是根据词条key的当前状态实现查询的流程框架图,具体步骤如下:
步骤S131:把当前结点指向根节点。
步骤S132:根据当前输入的字符做出状态转移,获取其直接后继状态的位置。
步骤S133:校验当前状态的前驱,确定当前状态由哪一状态转移而来。
步骤S134:获取词条key对应的value值。
在当前状态为s,输入的字符为c,下一状态为t的条件下,其本方法的查询过程的约束条件修改为:
check[base[s]+c]=base[s];base[s]+c=t;每个状态的base[s]值唯一。
若当前状态s可以转移到叶子结点t中,则其约束条件为:
base[s]=t;t=check[t]。
base[t]<0且base[t]的值为DFA的初始结点0到当前叶子结点经过的字符组成的词条在所有按词典顺序排序的词条集中位置的相反数。
本发明实施例中可以获取词条key的所有前缀词,并可以将检索到的每条结果信息保存在一个对象TrieResult中,该表存储的变量作如下描述:Length表示当前key的长度;Index当前key在词典中的存储序号-1,即当前key对应属性的存储位置。
本发明实施例一种基于一维线性空间实现Trie树的词典检索方法的查询速度18.3MB/s。
因此,本发明提供一种基于一维线性空间实现Trie树的词典检索方法,通过生成一维线性空间的Trie树词典数据;根据用户输入确定待查询词条key;根据词条key的当前状态实现查询。在一维线性空间下构建Trie树的词典数据下,提高了词典加载和检索速度,并且能够快速检索到词条的所有前缀词,同时,在Trie树的构建过程中通过调整base值,使得其所有直接后继均不会发生冲突,因此避免了数据移动或存储空间分配的回溯问题。

Claims (6)

1.一种基于一维线性空间实现Trie树的词典检索方法,其特征在于,该方法包括:
生成一维线性空间Trie树的词典数据;
根据用户输入确定待查询词条key;
根据词条key的当前状态实现查询;
其中,生成一维线性空间Trie树的词典数据的步骤包括:
将所有词条和属性信息以key为中心按词典顺序排序,合并拥有相同key值的values,要保证key不存在重复;
定义起始状态,编号为0;
将起始状态放入双数组第0位置,将其base[0]=1,并标识base为1的值已经被占用;
以起始状态作为当前状态;
获取当前状态的所有直接后继状态的信息,若直接后继结点列表为空,表示从起始结点到当前结点构成的key恰好是词典中的一个完整词条,将当前结点的base值赋上当前key词典顺序序号的相反数,该路径上执行完毕;
为当前结点寻找一个合适的base值,使得base值唯一,且不会导致所有直接后继结点与现有Trie树存储的结点冲突,依次将当前结点的直接后继结点***Trie树中,并将其check值赋上当前结点的base值,再依次把当前结点的直接后继结点作为当前结点。
2.根据权利要求1所述的方法,其特征在于,所述词典数据的key转化为节点后存储在一维数组中,所述一维数组的值用来标识base值是否唯一。
3.根据权利要求1所述的方法,其特征在于,所述一维线性空间Trie树中将所有终端结点变为非终端结点,在所述终端结点后面增加一个叶子节点,并将叶子节点的check值赋上其存储位置。
4.根据权利要求3所述的方法,其特征在于,所述叶子节点还包括:叶子节点的base值用以标识其是否为终端结点。
5.根据权利要求1所述的方法,其特征在于,所述查询包括以下步骤:
把当前结点指向根节点;
根据当前输入的字符做出状态转移,获取其直接后继状态的位置;
校验当前状态的前驱,确定当前状态由哪一状态转移而来;
获取词条key对应的value值。
6.根据权利要求1或权利要求5所述的方法,其特征在于,所述查询包括:
根据词条key的查询可以获得其所有前缀词的结果。
CN201310288821.5A 2013-07-03 2013-07-03 一种基于一维线性空间实现Trie树的词典检索方法 Active CN103365992B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310288821.5A CN103365992B (zh) 2013-07-03 2013-07-03 一种基于一维线性空间实现Trie树的词典检索方法
PCT/CN2014/080179 WO2015010509A1 (zh) 2013-07-03 2014-06-18 一种基于一维线性空间实现Trie树的词典检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310288821.5A CN103365992B (zh) 2013-07-03 2013-07-03 一种基于一维线性空间实现Trie树的词典检索方法

Publications (2)

Publication Number Publication Date
CN103365992A CN103365992A (zh) 2013-10-23
CN103365992B true CN103365992B (zh) 2017-02-15

Family

ID=49367333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310288821.5A Active CN103365992B (zh) 2013-07-03 2013-07-03 一种基于一维线性空间实现Trie树的词典检索方法

Country Status (2)

Country Link
CN (1) CN103365992B (zh)
WO (1) WO2015010509A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365992B (zh) * 2013-07-03 2017-02-15 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典检索方法
CN103365991B (zh) * 2013-07-03 2017-03-08 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典存储管理方法
CN107680588B (zh) * 2017-05-10 2020-10-20 平安科技(深圳)有限公司 智能语音导航方法、装置及存储介质
CN107239549A (zh) * 2017-06-07 2017-10-10 传神语联网网络科技股份有限公司 数据库术语检索的方法、装置及终端
CN107273360A (zh) * 2017-06-21 2017-10-20 成都布林特信息技术有限公司 基于语义理解的中文实词提取算法
CN108153907B (zh) * 2018-01-18 2021-01-22 中国计量大学 通过16位Trie树实现空间优化的词典存储管理方法
CN108197313B (zh) * 2018-02-01 2021-06-25 中国计量大学 通过16位Trie树实现空间优化的词典索引方法
CN108509419B (zh) * 2018-03-21 2022-02-22 山东中医药大学 中医药古籍文献分词和词性标引方法及***
CN109684439B (zh) * 2018-12-28 2020-10-30 语联网(武汉)信息技术有限公司 分词过程中进行前缀索引的方法及装置
CN109739948B (zh) * 2018-12-28 2021-08-03 北京金山安全软件有限公司 词表的存储管理方法、装置、电子设备及存储介质
CN110688483B (zh) * 2019-09-16 2022-10-18 重庆邮电大学 文景转换中基于词典的名词可视性标注方法、介质及***

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1606741A2 (en) * 2003-03-27 2005-12-21 Sand Technology Systems International, Inc. A computer implemented compact 0-complete tree dynamic storage structure and method of processing stored data
CN1786962A (zh) * 2005-12-21 2006-06-14 中国科学院计算技术研究所 完美双数组trie树词典管理与检索方法
EP1702275A1 (fr) * 2003-08-11 2006-09-20 France Telecom Dispositif de memoire trie a mecanisme de pipeline circulaire
CN101499094A (zh) * 2009-03-10 2009-08-05 焦点科技股份有限公司 一种数据压缩存储并检索的方法及***
CN101788990A (zh) * 2009-01-23 2010-07-28 北京金远见电脑技术有限公司 Trie树双数组的全局优化构造方法及***
WO2011150425A1 (en) * 2010-05-28 2011-12-01 Securitymetrics, Inc. Systems and methods for determining whether data includes strings that correspond to sensitive information
CN102651026A (zh) * 2012-04-01 2012-08-29 百度在线网络技术(北京)有限公司 通过预计算优化搜索引擎分词的方法及搜索引擎分词装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2509496A1 (en) * 2005-06-06 2006-12-06 3618633 Canada Inc. Search-enhanced trie-based syntactic pattern recognition of sequences
CN101398830B (zh) * 2007-09-27 2012-06-27 阿里巴巴集团控股有限公司 词库模糊查询方法及词库模糊查询***
JP5262864B2 (ja) * 2009-03-10 2013-08-14 富士通株式会社 記憶媒体、検索方法および検索装置
CN103365992B (zh) * 2013-07-03 2017-02-15 深圳市华傲数据技术有限公司 一种基于一维线性空间实现Trie树的词典检索方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1606741A2 (en) * 2003-03-27 2005-12-21 Sand Technology Systems International, Inc. A computer implemented compact 0-complete tree dynamic storage structure and method of processing stored data
EP1702275A1 (fr) * 2003-08-11 2006-09-20 France Telecom Dispositif de memoire trie a mecanisme de pipeline circulaire
CN1786962A (zh) * 2005-12-21 2006-06-14 中国科学院计算技术研究所 完美双数组trie树词典管理与检索方法
CN101788990A (zh) * 2009-01-23 2010-07-28 北京金远见电脑技术有限公司 Trie树双数组的全局优化构造方法及***
CN101499094A (zh) * 2009-03-10 2009-08-05 焦点科技股份有限公司 一种数据压缩存储并检索的方法及***
WO2011150425A1 (en) * 2010-05-28 2011-12-01 Securitymetrics, Inc. Systems and methods for determining whether data includes strings that correspond to sensitive information
CN102651026A (zh) * 2012-04-01 2012-08-29 百度在线网络技术(北京)有限公司 通过预计算优化搜索引擎分词的方法及搜索引擎分词装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
单数组全映射分词词典;魏进等;《计算机工程与应用》;20070811;第 184-186页 *
基于双数组丁rie树算法的字典改进和实现;戴耿毅等;《软件导刊》;20120730;第11卷(第7期);第 17-19页 *

Also Published As

Publication number Publication date
WO2015010509A1 (zh) 2015-01-29
CN103365992A (zh) 2013-10-23

Similar Documents

Publication Publication Date Title
CN103365992B (zh) 一种基于一维线性空间实现Trie树的词典检索方法
US11573996B2 (en) System and method for hierarchically organizing documents based on document portions
CN102479191B (zh) 提供多粒度分词结果的方法及其装置
US8473501B2 (en) Methods, computer systems, software and storage media for handling many data elements for search and annotation
TWI480746B (zh) 使用經結構化之資料儲存器達到較快速全文檢索
US8224809B2 (en) System and method for matching entities
Baeza-Yates Introduction to Data Structures and Algorithms Related to Information Retrieval.
CN105045852A (zh) 一种教学资源的全文搜索引擎***
US8825665B2 (en) Database index and database for indexing text documents
WO2002027563A1 (en) Method and system for query reformation
CN102867049B (zh) 一种基于单词查找树实现的汉语拼音快速分词方法
CN110795526B (zh) 一种用于检索***的数学公式索引创建方法与***
KR100835706B1 (ko) 자동 색인을 위한 한국어 형태소 분석 시스템 및 그 방법
CN109885641B (zh) 一种数据库中文全文检索的方法及***
CN103123650A (zh) 一种基于整数映射的xml数据库全文索引方法
CN109522396B (zh) 一种面向国防科技领域的知识处理方法及***
CN105843960A (zh) 基于语义树的索引方法和***
US20090234852A1 (en) Sub-linear approximate string match
CN114117242A (zh) 数据查询方法和装置、计算机设备、存储介质
CN103514287A (zh) 一种构建索引树的方法、汉语词汇搜索的方法及相关装置
CN109933787A (zh) 文本关键信息的提取方法、装置及介质
CN114817498A (zh) 用户意图识别方法、装置、设备及存储介质
CN109635075B (zh) 一种文本内容划词标识的方法及装置
Oflazer Error-tolerant retrieval of trees
CN108268517B (zh) 数据库中标签的管理方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Wang Guoyin

Inventor after: Jia Xibei

Inventor before: Wang Guoyin

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: WANG GUOYIN TO: WANG GUOYIN JIA XIBEI

C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 518000 2203/2204, Building 1, Huide Building, Beizhan Community, Minzhi Street, Longhua District, Shenzhen, Guangdong

Patentee after: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd.

Address before: 518057 Rooms 713, 715 and 716, 7/F, Software Building, No. 9, High-tech Middle Road, High-tech Zone, Nanshan District, Shenzhen, Guangdong Province

Patentee before: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd.