CN106528647B - 一种基于cedar双数组字典树算法进行术语匹配的方法 - Google Patents
一种基于cedar双数组字典树算法进行术语匹配的方法 Download PDFInfo
- Publication number
- CN106528647B CN106528647B CN201610897558.3A CN201610897558A CN106528647B CN 106528647 B CN106528647 B CN 106528647B CN 201610897558 A CN201610897558 A CN 201610897558A CN 106528647 B CN106528647 B CN 106528647B
- Authority
- CN
- China
- Prior art keywords
- term
- even numbers
- character
- numbers group
- pos
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/58—Use of machine translation, e.g. for multi-lingual retrieval, for server-side translation for client devices or for real-time translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Machine Translation (AREA)
Abstract
一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括包括建索引的步骤,及用索引进行术语查询匹配的步骤;其中,所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树***术语,用以形成术语集合的索引;所述cedar双数组字典树包括一个以基准值和校验值为成员的结构体数组,一个与结构体数组体量相同的循环队列;将cedar双数组算法应用于术语匹配引擎的建索引和根据索引来查询术语,极大地提升了术语匹配引擎的效率,同时该算法也避免了经典的双数组算法libdatrie对大量术语建索引时速度非常慢而不利于快速重建数据的缺点;二叉树作为一种辅助结构,可以用来快速地还原整个双数组字典树。
Description
技术领域
本发明属于计算机通信领域,尤其涉及一种基于cedar双数组字典树算法进行术语匹配的方法。
背景技术
目前翻译行业不断扩大,语料和术语的增长速度都比较快,且数目也比较大。而大量术语是翻译的基石,必须使用有效的信息化技术手段来对它们进行管理。目前公司内部关于术语的原文、译文以及其它详细信息存放于mongo数据库,直接查询数据库来获取原文或译文速度很慢,而原文或译文可能过长,也不便作为索引字段。现有一套术语匹配引擎实现,用双数组算法对术语建立***索引,然后用将双数组建立的索引与mongo数据库里每条术语记录的Objectld(相当于数据库关键字字段)相关联并存放于redis作为二级索引缓存,最终加快对mongo数据库的查询速度。而在这套匹配引擎***里,选择双数组字典树算法作为其核心模块,不论建索引还是查询速度,要求都比较高。
双数组字典树算法是翻译行业文本处理一种通用的算法,可以对术语建索引,对术语进行前缀模糊查询,对术语进行精确查询等。一般该算法扩展开来可用于高效的分词,在术语匹配引擎里我们用它来做基于mongo术语数据库快速建索引。双数组字典树,即双数组Trie(Double-ArrayTrie),主要包含base,check数组,根据不同的算法实现可能有tail数组,base数组和check数组根据算法的不同也会有不同的表现形式(比如,混合在结构体内部)。
目前通用的双数组字典树算法实现库是libdatrie,查询效率比较高,但在大量***数据的情况下就会显得速度很慢,主要就是频繁地解决***冲突以及在大量数据***的情况下不断调整tail数组导致的。libdatrie的实现由于base和check之间的关系采用加减运算关系,当存储的字符串是中文时,由于中文字符编码过长就会使得双数组base与check之间对应的下标差距过大,从而产生很多未初始化的元素,也加大了查询时遍历双数组的时间开销,以及解决***冲突的调整成本。cedar双数组算法直接采用位运算来得出base与check之间的关系,并压缩base与check之间的差距。此外cedar双数组算法在数据结构的设计上也采取了一些优化手段,减少了一些中间计算量。
发明内容
本发明所要解决的技术问题是目前基于数据库的术语匹配引擎在查词效率上速度偏慢,而改善这一问题的办法就是对数据库里的术语建一个快速索引,引入双数组字典树可以解决大量术语建索引慢以及查询慢的问题。
为解决上述技术问题,本发明提供了一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;
其中,所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树***术语,用以形成术语集合的索引;所述双数组标记为array;
遍历到的字符在术语集合中的当前位置值标记为pos,当前位置的字符在双数组中所对应的起始下标值标记为from[pos],当前位置的字符在双数组中所对应的结束下标值标记为to[pos];***术语中当前位置的字符值标记为key[pos];所述key表示要查询的术语;
所述cedar双数组字典树包括一个以基准值和校验值为成员的结构体数组以及一个循环队列;
所述循环队列标记为queue,基准值为base,校验值为check,循环队列中第一个元素成员的下标值标记为ehead;
所述调用cedar双数组字典树***术语的步骤包括:
(A)根据如下步骤(1.1)-(1.5)获取***术语和双数组字典树的初始化数值:
(1.1)初始化***术语第一个字符在双数组中所对应的起始下标值为0,即from[0]=0
(1.2)初始化***术语第一个字符在双数组中所对应的结束下标值,即to[0]=0^key[0],其中^表示异或运算;
(1.3)初始化***术语第二个字符在双数组中所对应的起始下标值,即from[1]=to[0];
(1.4)初始化***术语第一个字符在双数组中对应位置的基准值等于0,即array[0].base=0;
(1.5)初始化***术语第一个字符在双数组中对应位置的校验值等于0,即array[0].check=0;
(B)将遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的校验值check作为遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值,即:
queue[from[pos+1]].ehead=array[from[pos+1]].check
(C)遍历术语集合中的每个字符,获取***术语的字符值,根据如下步骤(3.1)-(3.4)计算得出双数组字典树的基准值base和校验值check:
(3.1)将遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的基准值base,即:
array[from[pos+1]].base=queue[from[pos+1]].ehead^key[pos]
(3.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:
to[pos+1]=array[from[pos]].base^key[pos]
(3.3)将遍历到的字符在双数组中对应起始下标值from[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应结束位置的校验值check,即:
array[to[pos+1]].check=from[pos]
(3.4)将遍历到的字符在双数组中对应结束下标值to[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应起始下标值,即:
from[pos+1]=to[pos]
其中,所述用索引进行术语查询匹配的步骤是:遍历术语集合的每一个字符,执行如下步骤(4.1)-(4.2),以array[to[pos+1]].check=from[pos]为返回条件,直到遍历完,返回该术语在双数组中的位置;
(4.1)将遍历到的字符在双数组中对应起始下标值赋值为0,即from[0]=0;
(4.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值在术语集合中的下个字符值key[pos+1]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:
to[pos+1]=array[from[pos]].base^key[pos+1]。
进一步,所述cedar双数组字典树还包括一个用来存放字符所组成的父子以及兄弟关系的二叉树数组;
所述调用cedar双数组字典树***术语的步骤还包括根据***术语构建二叉树数组,所述构建二叉树数组的方法是获取术语里的字符间的父子及兄弟关系。
进一步,所述调用cedar双数组字典树***术语的步骤还包括对双数组字典树与***术语进行冲突处理,构建双数组的过程中,如果计算出的基准值和校验值是之前已经存在了的有效值,寻找没有被占用的双数组节点,然后再遍历术语里的每个字符,算出后续的所有双数组节点。
进一步,所述数据库为mongo数据库。
进一步,所述索引为双向索引。
进一步,所述索引是建立在术语语料所在的数据库之外。
进一步,所述索引包括一级索引和二级索引。
进一步,还包括当索引达到数量阈值后写入硬盘。
进一步,所述循环队列与结构体数组体量相同。
采用上述技术方案,可达到以下效果:
将cedar双数组算法应用于术语匹配引擎的建索引和根据索引来查询术语,极大地提升了术语匹配引擎的效率,同时该算法也避免了传统算法对大量术语建索引时速度非常慢而不利于快速重建数据的缺点;二叉树作为一种辅助结构,可以用来快速地还原整个双数组字典树。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,在附图中:
图1示出了基于cedar双数组字典树算法进行术语匹配的方法的流程示意图;
图2示出了调用cedar双数组字典树***术语的步骤的的流程示意图;
图3示出了结构体数组array[n]的结构示意图;
图4示出了循环队列queue[n]的结构示意图;
图5示出了二叉树数组ninfo[n]的结构示意图;
图6示出了sibling数组的父子及兄弟关系的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步具体说明。
为解决上述技术问题,如图1所示,本发明提供了一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;
其中,
1.所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树***术语,用以形成术语集合的索引;
所述cedar双数组字典树中,每个数组元素包括一个以基准值和校验值为成员的结构体数组array[n](如图3所示),一个与结构体数组体量相同的循环队列queue[n],以及一个用来存放字符所组成的父子以及兄弟关系的二叉树数组,即sibling数组ninfo[n];
如图4所示,一个与结构体数组体量相同的循环队列,循环队列queue[n],每个元素就是一个block,ehead代表第一个打开的block的下标,chead下标对应的block是当前已满(block,num>256)的元素,fhead下标对应的block是从上一个chead下标对应的block转过来的;block包含成员int prex、int next、short num、short reject、int trial、intehead;
sibling数组ninfo[n]如图5所示,child表示遍历字符串时,当前的那个字符,sibling表示child父节点的右兄弟,sibling数组与结构体数组和循环队列没有必然的逻辑关系,可以剥离出来,目的是在构建双数组字典树的同时构建sibling数组,用于在双数组字典树损害的时候实现快速恢复还原。
sibling数组的父子及兄弟关系如图5所示,每个节点顶多只有一个子节点,就是该节点所对应的字符的一个后继字符,而节点的兄弟节点就是自它的parent节点即父节点向下的每一层的sibling节点。
如图2所示,向双数组字典树中***术语就是给双数组字典树中的元素赋值的过程,所述调用cedar双数组字典树***术语的步骤包括:
(1)根据计算式集合一获取***术语key和双数组字典树array的初始化的基准值base和校验值check,所述计算式集合一为:
from[0]=0
to[0]=0^key[0]
from[1]=to[0]
array[0].base=0
array[0].check=0。
(2)根据结构体数组的check值和计算式二,计算循环队列的ehead值,所述计算式二为:
queue[from[pos+1]].ehead=array[from[pos+1]].check
第一次check值取自步骤(1),后续check值取自步骤(3),循环队列里保存每次最新计算一个结构体数组元素之后的check成员值,每次***术语里一个新的字符时,先从循环队列里取出上一次最新的check值以计算出下一个双数组元素的ehead值;
可见,循环队列中的ehead值由结构体数组里的check值计算得出。
(3)遍历术语中的每个字符,往双数组字典树顺序每次***一个字符,就会即时产生字符在术语中的位置值,根据计算式集合三和ehead值计算得出双数组字典树的基准值和校验值,所述计算式集合三如下:
array[from[pos+1]].base=queue[from[pos+1]].ehead^key[pos]
to[pos+1]=array[from[pos]].base^key[pos]
array[to[pos+1]].check=from[pos]
from[pos+1]=to[pos]
循环队列里保存每次最新计算一个结构体数组元素之后的check成员值,每次***术语里一个新的字符时,先从循环队列里取出上一次最新的ehead值以计算出下一个双数组元素的base值。
所述pos为遍历到的字符在术语中的当前位置值,所述key[pos]为***术语中当前位置的字符值;
所述array为双数组,queue为循环队列,base为基准值,check为校验值,ehead为循环队列中第一个元素成员的下标值;
所述from[pos]和to[pos]分别为当前位置的字符在双数组中所对应的起始下标值和结束下标值。
(4)根据***术语构建sibling树即二叉树数组:
构建二叉树数组的过程就是提取术语里的字符间的父子及兄弟关系,然后以数组的形式存放。该树作为一种辅助结构,可以用来快速地还原整个双数组字典树。
(5)双数组***冲突处理:
在构建双数组的过程中,计算出的base和check可能是之前已经存在了的有效值,那么就要处理冲突的问题,解决冲突就是寻找没有被占用的双数组节点,然后再遍历术语里的每个字符,逐渐地算出后续的所有双数组节点。
2.用cedar双数组字典树形成的索引进行术语查询匹配:
用cedar双数组字典树形成的索引进行术语查询匹配就是遍历术语的每一个字符,将字符代入双数组字典树计算式集合四进行计算,满足条件则继续,直到查完,然后返回该字符串在双数组中的位置。
所述计算式集合四如下(key表示要查询的术语,pos为当前遍历到的字符在key中的位置):
from[0]=0
to[pos+1]=array[from[pos]].base^key[pos+1]
按照以上逻辑计算后,检查array[to[pos+1]].check和from[pos]是否相等,如果不相等,则直接返回失败,否则继续,直到遍历完,然后返回最后一个字符的base值。
用索引进行术语查询匹配的步骤,该base值即***术语时所设置的整数标识值,根据该整数标识值计算二级索引的ID。
在建索引的过程中,遍历mongo数据库里指定的术语,读出原文与译文并分别算出指定长度的字串前缀的hash值,根据hash值确定数据落入哪个字典树里,然后用cedar双数组算法进行建索引,建索引就是前面技术方案里所述的***术语的过程。所有的索引树都放到内存里,为防止数据丢失,会定时保存到磁盘。查询时先计算指定长度的字串前缀的hash值,根据hash值确定数据落入哪个字典树里,然后到指定的双数组树里去查询,术语查询的过程如上面技术方案里所述。
基于双数组字典树和内存缓存***来存放***索引信息,将较长的原文或译文映射为数据库内全局唯一且带有快速索引的记录ID字段,从而加速了术语的匹配,同时借助双数组的特性,也具备分词,前缀查询等翻译行业所需的功能。
本领域技术人员还应当理解,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;
其中,所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树***术语,用以形成术语集合的索引;所述双数组标记为array;
遍历到的字符在术语集合中的当前位置值标记为pos,当前位置的字符在双数组中所对应的起始下标值标记为from[pos],当前位置的字符在双数组中所对应的结束下标值标记为to[pos];***术语中当前位置的字符值标记为key[pos];所述key表示要查询的术语;
所述cedar双数组字典树包括一个以基准值和校验值为成员的结构体数组以及一个循环队列;
所述循环队列标记为queue,基准值为base,校验值为check,循环队列中第一个元素成员的下标值标记为ehead;
所述调用cedar双数组字典树***术语的步骤包括:
(A)根据如下步骤(1.1)-(1.5)获取***术语和双数组字典树的初始化数值:
(1.1)初始化***术语第一个字符在双数组中所对应的起始下标值为0,即from[0]=0
(1.2)初始化***术语第一个字符在双数组中所对应的结束下标值,即to[0]=0^key[0],其中^表示异或运算;
(1.3)初始化***术语第二个字符在双数组中所对应的起始下标值,即from[1]=to[0];
(1.4)初始化***术语第一个字符在双数组中对应位置的基准值等于0,即array[0].base=0;
(1.5)初始化***术语第一个字符在双数组中对应位置的校验值等于0,即array[0].check=0;
(B)将遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的校验值check作为遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值,即:
queue[from[pos+1]].ehead=array[from[pos+1]].check
(C)遍历术语集合中的每个字符,获取***术语的字符值,根据如下步骤(3.1)-(3.4)计算得出双数组字典树的基准值base和校验值check:
(3.1)将遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的基准值base,即:
array[from[pos+1]].base=queue[from[pos+1]].ehead^key[pos]
(3.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:
to[pos+1]=array[from[pos]].base^key[pos]
(3.3)将遍历到的字符在双数组中对应起始下标值from[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应结束位置的校验值check,即:
array[to[pos+1]].check=from[pos]
(3.4)将遍历到的字符在双数组中对应结束下标值to[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应起始下标值,即:
from[pos+1]=to[pos]
其中,所述用索引进行术语查询匹配的步骤是:遍历术语集合的每一个字符,执行如下步骤(4.1)-(4.2),以array[to[pos+1]].check=from[pos]为返回条件,直到遍历完,返回该术语在双数组中的位置;
(4.1)将遍历到的字符在双数组中对应起始下标值赋值为0,即from[0]=0;
(4.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值在术语集合中的下个字符值key[pos+1]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:
to[pos+1]=array[from[pos]].base^key[pos+1]。
2.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述cedar双数组字典树还包括一个用来存放字符所组成的父子以及兄弟关系的二叉树数组;
所述调用cedar双数组字典树***术语的步骤还包括根据***术语构建二叉树数组,所述构建二叉树数组的方法是获取术语里的字符间的父子及兄弟关系。
3.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述调用cedar双数组字典树***术语的步骤还包括对双数组字典树与***术语进行冲突处理,构建双数组的过程中,如果计算出的基准值和校验值是之前已经存在了的有效值,寻找没有被占用的双数组节点,然后再遍历术语里的每个字符,算出后续的所有双数组节点。
4.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述数据库为mongo数据库。
5.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述索引为双向索引。
6.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述索引是建立在术语语料所在的数据库之外。
7.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述索引包括一级索引和二级索引。
8.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是还包括当索引达到数量阈值后写入硬盘。
9.根据权利要求1所述的一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是所述循环队列与结构体数组体量相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610897558.3A CN106528647B (zh) | 2016-10-15 | 2016-10-15 | 一种基于cedar双数组字典树算法进行术语匹配的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610897558.3A CN106528647B (zh) | 2016-10-15 | 2016-10-15 | 一种基于cedar双数组字典树算法进行术语匹配的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106528647A CN106528647A (zh) | 2017-03-22 |
CN106528647B true CN106528647B (zh) | 2019-07-23 |
Family
ID=58332376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610897558.3A Active CN106528647B (zh) | 2016-10-15 | 2016-10-15 | 一种基于cedar双数组字典树算法进行术语匹配的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528647B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239549A (zh) * | 2017-06-07 | 2017-10-10 | 传神语联网网络科技股份有限公司 | 数据库术语检索的方法、装置及终端 |
CN109446198B (zh) * | 2018-10-16 | 2020-08-07 | 中国刑事警察学院 | 一种基于双数组的trie树节点压缩方法及装置 |
CN110147330B (zh) * | 2019-05-23 | 2023-09-01 | 深圳市创维软件有限公司 | 一种字模数据的缓存方法、装置、设备和存储介质 |
CN110516118A (zh) * | 2019-08-13 | 2019-11-29 | 出门问问(武汉)信息科技有限公司 | 一种字符串匹配方法、设备及计算机存储介质 |
CN111062682B (zh) * | 2019-11-19 | 2023-11-07 | 泰康保险集团股份有限公司 | 一种工单处理方法和装置 |
CN111581215B (zh) * | 2020-05-07 | 2020-12-15 | 钟士平 | 数组树数据储存方法、快速查找方法及可读储存介质 |
CN111737977B (zh) * | 2020-06-24 | 2022-05-17 | 平安科技(深圳)有限公司 | 数据字典生成方法、数据查询方法、装置、设备及介质 |
CN113919371B (zh) * | 2021-09-06 | 2022-05-31 | 山东智慧译百信息技术有限公司 | 一种翻译语料库的匹配方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788990A (zh) * | 2009-01-23 | 2010-07-28 | 北京金远见电脑技术有限公司 | Trie树双数组的全局优化构造方法及*** |
CN103577394A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种基于双数组搜索树的机器翻译方法和装置 |
CN105144164A (zh) * | 2013-03-13 | 2015-12-09 | 谷歌公司 | 使用深度网络对概念术语评分 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120271844A1 (en) * | 2011-04-20 | 2012-10-25 | Microsoft Corporation | Providng relevant information for a term in a user message |
US9378304B2 (en) * | 2013-01-16 | 2016-06-28 | Google Inc. | Searchable, mutable data structure |
-
2016
- 2016-10-15 CN CN201610897558.3A patent/CN106528647B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788990A (zh) * | 2009-01-23 | 2010-07-28 | 北京金远见电脑技术有限公司 | Trie树双数组的全局优化构造方法及*** |
CN103577394A (zh) * | 2012-07-31 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种基于双数组搜索树的机器翻译方法和装置 |
CN105144164A (zh) * | 2013-03-13 | 2015-12-09 | 谷歌公司 | 使用深度网络对概念术语评分 |
Also Published As
Publication number | Publication date |
---|---|
CN106528647A (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528647B (zh) | 一种基于cedar双数组字典树算法进行术语匹配的方法 | |
CN103514201B (zh) | 一种非关系型数据库的数据查询方法和装置 | |
KR102407510B1 (ko) | 데이터 저장 및 조회 방법, 장치, 기기 및 매체 | |
CN107153647B (zh) | 进行数据压缩的方法、装置、***和计算机程序产品 | |
CN105550171B (zh) | 一种垂直搜索引擎的查询信息纠错方法和*** | |
CN107918604A (zh) | 一种中文的分词方法及装置 | |
CN104239513A (zh) | 一种面向领域数据的语义检索方法 | |
CN101794307A (zh) | 基于互联网分词思想的车载导航poi搜索引擎 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
CN104112005B (zh) | 分布式海量指纹识别方法 | |
CN107291895B (zh) | 一种快速的层次化文档查询方法 | |
JP2008287533A (ja) | カップルドノードツリーの最長一致/最短一致検索方法及びプログラム | |
CN110795526B (zh) | 一种用于检索***的数学公式索引创建方法与*** | |
KR101296683B1 (ko) | 데이터 스트림에서의 다중 조인 질의 처리를 위한 2 페이즈 수행 방법 | |
Abdelmageed et al. | JenTab Meets SemTab 2021's New Challenges. | |
CN112256821B (zh) | 中文地址补全的方法、装置、设备及存储介质 | |
CN105335481A (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
CN106339481A (zh) | 基于最大置信度的中文复合新词发现方法 | |
CN113326267A (zh) | 基于倒排索引和神经网络算法的地址匹配方法 | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
Lin et al. | Initialization for network embedding: A graph partition approach | |
CN109165331A (zh) | 一种英文地名的索引建立方法及其查询方法和装置 | |
CN106484684B (zh) | 一种对数据库中的数据进行术语匹配的方法 | |
CN109800412A (zh) | 一种中文分词和大数据信息检索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190703 Address after: 430073 B2 Building (Apart from Room 101), No. 999 High-tech Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province, FutureChenglongshan Innovation Park Phase I (Wuhan Zone, Free Trade Zone) Applicant after: Expressive language, networking, Polytron Technologies Inc Address before: Room 407, 4th floor, No. 51 Zhichun Road, Haidian District, Beijing 100086 Applicant before: Beijing Union Fire Information Technology Co., Ltd. |