一种基于双数组字典树进行术语匹配的方法技术

技术编号:15294535 阅读:102 留言:0更新日期:2017-05-11 11:23
一种基于双数组字典树进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;其中,所述建索引的步骤如下:生成双数组字典树的定位,计算内存缓存系统的二级索引的ID,对术语建索引,所述用索引进行术语查询匹配的步骤如下:生成双数组字典树的定位,分词,基于索引进行术语匹配。既可以满足术语匹配的多种查询需求,又提高了整体匹配的性能。

A method of term matching based on double array dictionary tree

A method for term matching based on double array dictionary tree, which is characterized by comprising the steps of indexing, and query terms, step index; among them, the production index comprises the following steps: positioning of generated double array dictionary tree, calculate the memory cache system two level index ID, index of construction the term index for term matching query steps are as follows: positioning, create a double array dictionary tree segmentation, indexing based on term matching. It can not only meet the various query requirements, but also improve the overall matching performance.

【技术实现步骤摘要】

本专利技术属于计算机通信领域,尤其涉及一种基于双数组字典树进行术语匹配的方法
技术介绍
当前计算机辅助翻译是提高翻译一致性和效率的重要手段,它要求软件能够不断地记忆最新的术语及语料,并且在后续的翻译流程中能够及时地调出满足相应条件的术语或语料以供选择。随着术语和语料规模的不断扩大,基于传统的关系型数据库或是目前较新的非关系型数据库来直接根据原文或译文检索出完整的翻译信息都是会有明显的效率下降的,当处理比较大的待译稿时,速度自然不能接受。以mongo数据库为例,每一个文档记录都包含文档ID,原文,译文以及其他辅助信息,有些原文或译文比较长,就不适合作为索引字段,而文档ID是mongo的默认全局唯一16进制索引字段,基于文档ID的查询会非常快。基于此,我们可以实现一种外围索引,将原文或译文通过该索引与文档ID对应起来,要求外围索引支持可存储的任意长度的原文或译文,并且要足够高效。结合双数组字典树算法,辅以redis缓存和适当的数据结构设计,我们可以构建出这样一套满足需求的索引及匹配系统。传统的直接基于数据库查询某个字段会比较慢,建了索引的情况下速度会快一些,但是有的字段比较长就不适合建索引,即使建了数据库索引对于较长的字段来说,查询速度可能依然偏慢。而不管任何数据,只要基于数据库主键来查当前记录,速度都是比较快的,因此实现一种对术语快速建索引的机制,并且将该索引与数据库主键对应的字段相关联,就可以获得比较好的查询性能。此外翻译行业的术语匹配不仅仅是查出给定的术语,还需要支持前缀查询,精确查询,还有基于句子的分词查询,而双数组字典树可以实现这些功能。将一种高效的双数组字典树实现算法引入,再将数据库主键的值与双数组里每一个术语的位置信息对应起来作为辅助信息存放于缓存系统,既可以满足术语匹配的多种查询需求,又提高了整体匹配的性能,对于翻译自动化来说可以带来较好的用户体验。
技术实现思路
本专利技术所要解决的技术问题是目前基于数据库的术语匹配引擎在查词效率上速度偏慢,而改善这一问题的办法就是对数据库里的术语建一个快速索引,引入双数组字典树可以解决大量术语建索引慢以及查询慢的问题。为解决上述技术问题,本专利技术提供了一种基于双数组字典树进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;(1)生成双数组字典树的定位根据指定的双数组字典树的数目,用哈希算法,对插入术语计算哈希值,然后对双数组字典树的数目取模,计算得出双数组字典树的位置编号,用以实现双数组字典树的定位;(2)计算内存缓存系统的二级索引的ID从mongo数据库里读出术语,将术语插入双数组字典树,返回术语在双数组字典树的pos值,将所述双数组字典树的位置编号,乘以1000万,加上所述pos值,再配合程序设定的前缀字串,得出内存缓存系统里的二级索引的ID;(2)对术语建索引根据二级索引的ID查询出插入术语在数据库里对应的数据记录的术语库ID和对象ID,用术语库ID和对象ID构造键值,形成二级索引的ID和键值的映射关系,存放于内存缓冲系统;所述基于双数组字典树索引进行术语匹配的步骤包括:(1)生成双数组字典树的定位(2)分词将标点符号滤掉,对于西方语言直接按空格拆分,对于中文系列的语言按单个字拆分,用逆向最大匹配算法结合双数组字典,分出词汇,以及词汇在双数组字典树里的位置;(3)基于索引进行术语匹配根据二级索引的ID查询插入术语在数据库里对应的数据记录的术语库ID和对象ID,过滤并查询出插入术语在数据库的完整信息。进一步,所述内存缓存系统是在术语语料所在的数据库之外。进一步,所述双数组字典树是通过遍历数据库获取字符串数据的源字符串和目标字符串生成的。进一步,所述内存缓存系统包括一级索引和二级索引,所述一级索引的生成步骤是:将字符串数据插入双数组字典树,返回字符串数据在双数组字典树里的位置值,并通过位置值计算得出字符串数据ID,将字符串数据ID放入内存缓存系统里,用于实现字符串数据的一级索引;所述二级索引的生成步骤是:建立字符串数据ID与字符串数据在数据库内部已建立索引的数据记录的关键字段的对应关系,用于实现字符串数据的二级索引。进一步,所述一级索引和二级索引被定时写入硬盘。进一步,所述一级索引和二级索引达到数量阈值后被写入硬盘。进一步,所述索引为双向索引。进一步,所述字符串逆向最大匹配算法,从被处理字符串的末端开始匹配扫描,每次取最末端的2i个字符作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配。采用上述技术方案,可达到以下效果:1.用双数组字典树对术语建立外围索引,然后用将双数组建立的索引与mongo数据库里每条术语记录的Objectld(相当于数据库关键字字段)相关联并存放于redis作为二级索引缓存,最终加快对mongo数据库的查询速度;2.基于双数组字典树和内存缓存系统来存放外围索引信息,将较长的原文或译文映射为数据库内全局唯一且带有快速索引的记录ID字段,从而加速了术语的匹配,同时借助双数组的特性,也具备分词,前缀查询等翻译行业所需的功能;既可以满足术语匹配的多种查询需求,又提高了整体匹配的性能,对于可以带来较好的用户体验。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1示出了一种基于双数组字典树进行术语匹配的方法的流程示意图;图2示出了用双数组字典树建索引的流程示意图;图3示出了用索引进行术语匹配的流程示意图。具体实施方式下面结合附图和具体实施方式对本专利技术的技术方案作进一步具体说明。为解决上述技术问题,本专利技术提供了一种基于双数组字典树进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤,如图1所示;所述用双数组字典树建索引的步骤包括以下三个步骤,如图2所示:(1)生成双数组字典树的定位根据指定的双数组字典树的数目,用哈希算法,对待插入术语计算哈希值,然后对双数组字典树的数目取模,计算得出双数组字典树的位置编号,用以实现双数组字典树的定位;(2)计算内存缓存系统的二级索引的ID直接从数据库里查术语往往速度很慢,需要对数据库里的术语建立高效的外围索引,在这里就包含基于双数组的一级索引和基于内存缓存系统的二级索引;内存缓存系统里二级索引的ID即内存缓存系统里的键名,计算内存缓存系统的二级索引的ID的步骤是:从mongo数据库里读出术语,将术语插入双数组字典树,返回术语在双数组字典树的pos值,将所述双数组字典树编号,乘以1000万,加上所述pos值,再配合程序设定的前缀字串,即可得出内存缓存系统里的二级索引的ID;(2)对术语建索引根据二级索引的ID查询出插入术语在数据库里对应的数据记录的术语库ID和对象ID,用术语库ID和对象ID构造键值,形成二级索引的ID和键值的映射关系,存放于内存缓冲系统;对象ID是mongo数据库特有的;所述基于双数组字典树索引进行术语匹配的步骤包括以下三个步骤,如图3所示:(1)双数组字典树的定位(2)分词首先将标点符号滤掉,对于西方语言直接按空格拆分,对于中文或与之同一系列的语言按单个字拆分,然后用逆向最大匹配算法结合双数组字典,分出词汇,以及词汇本文档来自技高网
...
一种基于双数组字典树进行术语匹配的方法

【技术保护点】
一种基于双数组字典树进行术语匹配的方法,其特征是包括用双数组字典树建索引的步骤,及基于双数组字典树索引进行术语匹配的步骤,所述用双数组字典树建索引的步骤包括:(1)生成双数组字典树的定位根据指定的双数组字典树的数目,用哈希算法,对插入术语计算哈希值,然后对双数组字典树的数目取模,计算得出双数组字典树的位置编号,用以实现双数组字典树的定位;(2)计算内存缓存系统的二级索引的ID从mongo数据库里读出术语,将术语插入双数组字典树,返回术语在双数组字典树的pos值, 将所述双数组字典树的位置编号,乘以1000万,加上所述pos值,再配合程序设定的前缀字串,得出内存缓存系统里的二级索引的ID;(2)对术语建索引根据二级索引的ID查询出插入术语在数据库里对应的数据记录的术语库ID和对象ID,用术语库ID和对象ID构造键值,形成二级索引的ID和键值的映射关系,存放于内存缓冲系统;所述基于双数组字典树索引进行术语匹配的步骤包括:(1)生成双数组字典树的定位(2)分词将标点符号滤掉,对于西方语言直接按空格拆分,对于中文系列的语言按单个字拆分,用逆向最大匹配算法结合双数组字典,分出词汇,以及词汇在双数组字典树里的位置;(3)基于索引进行术语匹配根据二级索引的ID查询插入术语在数据库里对应的数据记录的术语库ID和对象ID,过滤并查询出插入术语在数据库的完整信息。...

【技术特征摘要】
1.一种基于双数组字典树进行术语匹配的方法,其特征是包括用双数组字典树建索引的步骤,及基于双数组字典树索引进行术语匹配的步骤,所述用双数组字典树建索引的步骤包括:(1)生成双数组字典树的定位根据指定的双数组字典树的数目,用哈希算法,对插入术语计算哈希值,然后对双数组字典树的数目取模,计算得出双数组字典树的位置编号,用以实现双数组字典树的定位;(2)计算内存缓存系统的二级索引的ID从mongo数据库里读出术语,将术语插入双数组字典树,返回术语在双数组字典树的pos值,将所述双数组字典树的位置编号,乘以1000万,加上所述pos值,再配合程序设定的前缀字串,得出内存缓存系统里的二级索引的ID;(2)对术语建索引根据二级索引的ID查询出插入术语在数据库里对应的数据记录的术语库ID和对象ID,用术语库ID和对象ID构造键值,形成二级索引的ID和键值的映射关系,存放于内存缓冲系统;所述基于双数组字典树索引进行术语匹配的步骤包括:(1)生成双数组字典树的定位(2)分词将标点符号滤掉,对于西方语言直接按空格拆分,对于中文系列的语言按单个字拆分,用逆向最大匹配算法结合双数组字典,分出词汇,以及词汇在双数组字典树里的位置;(3)基于索引进行术语匹配根据二级索引的ID查询插入术语在数据库里对应的数据记录的术语库ID和对象ID,过滤并查询出插入术语在数据库的完整信息。2.根据权利要求1所述的基于双数组...

【专利技术属性】
技术研发人员:冯泽康
申请(专利权)人:语联网武汉信息技术有限公司
类型:发明
国别省市:湖北;42

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

1