[发明专利]一种减少Lucene无字典n-gram切词占用存储空间的方法在审
申请号: | 201911307360.5 | 申请日: | 2019-12-18 |
公开(公告)号: | CN111078824A | 公开(公告)日: | 2020-04-28 |
发明(设计)人: | 母延年 | 申请(专利权)人: | 南京录信软件技术有限公司 |
主分类号: | G06F16/31 | 分类号: | G06F16/31 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210000 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 减少 lucene 字典 gram 占用 存储空间 方法 | ||
本发明涉及计算机算法技术领域,具体公开了一种减少Lucene无字典n‑gram切词占用存储空间的方法,包括如下步骤,S1:输入数据样例;S2:对数据样例进行SNGram切割,获得跳跃倒排表;S3:对步骤S2所获得的数据倒排表进行ngram切词,创建SNGram的映射;S4:完成数据样例的存储;本发明所提供的方法,先进行粗粒度级别的切词,如每隔8个字切一个词;将粗粒度的词,排重后进一步得出细粒度的词,针对细粒度的词创建索引;从而大幅度的减少倒排表的体积,并提升创建索引的性能,提升1*这种需要匹配很多倒排term的扫描性能。
技术领域
本发明涉及计算机算法技术领域,具体为一种减少Lucene无字典n-gram切词占用存储空间的方法。
背景技术
N-Gram是自然语言处理中一个非常重要的概念,通常在NLP中,人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。另外一方面,N-Gram的另外一个作用是用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段。
Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
目前Lucene中提供了N-gram切词算法,基本切词规则类似如下的方式,例如4种长度下的ngram:“1234567890”会被切成7个词:1234、2345、3456 4567、5678、6789、7890;这种切词方法的缺点如下:
1:因生成的词太多,导致倒排表过大,从而导致占用的存储空间也过大;
2:因要建立倒排,需要对每个切好的词都建立倒排表,会导致创建索引速度缓慢;
3:Ngram搜索 134,170,1*这类查询的扫描性能问题;
4:字典切词虽然膨胀率高,但搜索存在搜不全、搜不准的问题;在面对邮箱,账号,手机号,车牌号这类中文、英文、数字混合使用的场景,字典切词几乎不能使用。
发明内容
本发明的目的在于提供一种减少Lucene无字典n-gram切词占用存储空间的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种减少Lucene无字典n-gram切词占用存储空间的方法,包括如下步骤,
S1:输入数据样例;
S2:对数据样例进行SNGram切割,获得跳跃倒排表;
S3:对步骤S2所获得的数据倒排表进行ngram切词;
S4:创建SNGram的映射,完成数据样例的存储。
优选的,所述数据样例的格式包括但不限于数字、汉字、字母、标点以及空格。
优选的,所述步骤S2中,所述SNGram切割中,S代表切割文本跳跃长度,即对原始文本每间隔s长切一个词,NGram代表对切完后的每个词进行Ngram处理,对切词后的词进行二次索引,N为索引长度。
优选的,所述跳跃倒排表中每个字串的长度为S+N-1。
优选的,所述步骤S3中,所建立的映射为长度为N的索引与跳跃倒排表中的字串,其中一个索引对应不少于一个字串。
优选的,所述步骤S4中,完成存储后,可以通过索引检索步骤S1中所输入的数据样例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京录信软件技术有限公司,未经南京录信软件技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911307360.5/2.html,转载请声明来源钻瓜专利网。