首页> 中国专利> 支持大量词库的分词方法、计算机可读存储介质及系统

支持大量词库的分词方法、计算机可读存储介质及系统

摘要

本发明提出一种支持大量词库的分词方法、计算机可读存储介质及系统,该方法包括以下步骤:构建领域词典;构建基于领域词典的离线分词模型;对于待分词的原始文本,通过离线分词模型进行分词,得到第一分词结果;对待分词的原始文本进行待搜索词提取,然后基于待搜索词在领域词典内进行一级索引搜索和二级索引搜索,最后对二级索引结果进行筛选,提取出候选词;将候选词和第一分词结果进行重组,基于重组结果构建原始文本的有向图,并基于最短路径法算出最优分词结果。本发明将单一领域分词结果与大词搜索的结果进行组合,基于组合结果构建有向图,将求解最优分词方案的问题转化为最优路径的问题快速求解,非常适合分出大词。

著录项

  • 公开/公告号CN112307753A

    专利类型发明专利

  • 公开/公告日2021-02-02

    原文格式PDF

  • 申请/专利权人 启业云大数据(南京)有限公司;

    申请/专利号CN202011592528.4

  • 发明设计人 胡小敏;

    申请日2020-12-29

  • 分类号G06F40/284(20200101);G06F40/242(20200101);

  • 代理机构11246 北京众合诚成知识产权代理有限公司;

  • 代理人刘珊珊

  • 地址 210000 江苏省南京市江北新区产业技术研创园江淼路88号腾飞大厦A座11层-14层

  • 入库时间 2023-06-19 09:47:53

说明书

技术领域

本发明涉及人工智能的NLP自然语言处理领域技术领域,具体涉及一种支持大量词库的分词方法、计算机可读存储介质及系统。

背景技术

目前的分词工具较多,比如:jieba,pyltp等,这些分词工具虽然可以有效的分词,但是,实际应用中,不同领域的用词习惯不同,则相同的语句在不同领域的分词结果也应当是不同的。而现有技术大多基于单一词典进行分词,会导致分词结果不够理想。

基于上述原因,目前的分词方案中开始考虑引入领域词典,但仍存在以下缺陷:

1、词典管理功能较弱,不支持大量词库;

2、在大量词库的场景下,缺乏搜索技术的优化,性能慢;

3、词典大词命中逻辑只是简单的权重方案,没有考虑整体,分词结果缺乏合理性。

发明内容

发明目的:本发明旨在针对现有技术的不足,提出一种支持大量词库的分词方法、计算机可读存储介质及系统,能够适应包含不同领域词语的大词量词库的需求,基于词库迅速找出最符合各领域用语习惯的分词方案。

技术方案:为实现上述目的,本发明提出以下技术方案:

首先提出一种支持大量词库的分词方法,所述方法包括以下步骤:

(1)构建领域词典,为领域词典中每一个长度大于N的词建立一级索引和二级索引;其中,一级索引的key为每个词的前M个字,一级索引的value值为词的长度;二级索引的key为每个词的头部M个与词的长度的组合,二级索引的value值为词的哈希映射结果;

(2)构建基于领域词典的离线分词模型;

(3)对于待分词的原始文本,通过离线分词模型进行分词,得到第一分词结果;

(4)从原始文本中提取出所有字数超过M的词作为待搜索词;对每个待搜索词,在用户选定的领域词典内先基于一级索引进行搜索,得到一级索引结果,再对一级索引结果进行基于二级索引的搜索,得到二级索引结果;

(5)将二级索引结果与原始文本进行匹配,去掉原始文本中没有的词;对剩下的词进行边界匹配,保留同时满足以下条件的词为候选词:

条件1:词的开始位置与第一分词结果中某一词的开始位置一致;

条件2:词的结束位置与第一分词结果中某一词的结束位置一致;

(6)将候选词和第一分词结果组合为顶点集,构建原始文本的有向图,有向图中每一条路径均表示完整的原始文本;设置无向图中所有边的权重为1,基于最短路径法算出最优分词结果。

针对所述分词方法,以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。

可选的,所述离线分词模型基于以下一种或多种分词算法实现:机械分词算法、基于n元语法的分词算法、基于隐马尔科夫模型的分词算法、基于条件随机场的分词算法。

可选的,在提取待搜索词之前,还对原始文本进行预处理,找出原始文本中的非中文字符并用空格代替,使预处理后的文本与原始文本长度一致。

可选的,提取待搜索词后还要进行去重处理。

可选的,所述步骤(6)中采用的最短路径法为Dijkstra算法。

另一方面,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述的分词方法。

再一方面,本发明还提出支持大量词库的分词系统,用于实现所述分词方法,所述分词系统包括离线模型单元、领域词典模块、领域搜索模块和分词重组模块,其中:

领域词典模块存储有预先构建好的不同领域的领域词典,领域词典中每一个长度大于N的词都建立有一级索引和二级索引;

离线模型单元用于对待分词的原始文本进行基于领域词典的分词处理,以得到第一分词结果;

领域搜索模块用于对待分词的原始文本进行待搜索词提取,然后基于待搜索词在领域词典内进行一级索引搜索和二级索引搜索,最后对二级索引结果进行筛选,提取出候选词;

分词重组模块用于将候选词和第一分词结果进行重组,基于重组结果构建原始文本的有向图,并基于最短路径法算出最优分词结果。

针对所述分词系统,以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。

可选的,所述领域词典模块还具有新词登录功能,即根据用户指令将用户输入的新词登录进用户所选取的领域词典中,并为长度大于N的新登录词语补充索引。

可选的,所述领域词典模块还具有离线分词模型更新功能,即根据用户标注的新登录词语控制离线模型单元对原有的离线分词模型进行重新训练,得到更新后的离线分词模型。

可选的,所述新登录的词语采用4-tag法进行标注。

有益效果:与现有技术相比,本发明具有以下优势:

本发明提出的索引构建方式,可在包含多领域词典的大词库场景下迅速查找到相应内容;本发明还将单一领域分词结果与大词搜索的结果进行组合,然后基于组合结果构建有向图,将求解最优分词方案的问题转化为最优路径的问题,可采用动态规划方案快速求解,在提高分词效率的基础上,还增加了分词的合理性,非常适合分出大词。

附图说明

图1为实施例1的整体流程图;

图2为实施例1涉及的第一分词结果示意图;

图3为实施例1涉及的原始文本匹配结果示意图;

图4为实施例1涉及的分词重组结果示意图;

图5为实施例1涉及的最优路径结果图。

具体实施方式

下面将结合附图和具体实施例对本发明作更进一步的说明。但应当理解的是,本发明可以以各种形式实施,以下在附图中出示并且在下文中描述的一些示例性和非限制性实施例,并不意图将本发明限制于所说明的具体实施例。

应当理解的是,在技术上可行的情况下,以上针对不同实施例所列举的技术特征可以相互组合,从而形成本发明范围内的另外的实施例。此外,本发明所述的特定示例和实施例是非限制性的,并且可以对以上所阐述的结构、步骤、顺序做出相应修改而不脱离本发明的保护范围。

实施例1:

本实施例提出一种支持大量词库的分词方法,其流程如图1所示,包括以下步骤:

步骤1:构建领域词典,为领域词典中每一个长度大于N的词建立一级索引和二级索引;其中,一级索引的key为每个词的前M个字,一级索引的value值为词的长度;二级索引的key为每个词的头部M个与词的长度的组合,二级索引的value值为词的哈希映射结果。

具体来说,领域词典可以是一个领域的领域词典,也可以是不同领域的多个领域词典,各个领域词典都具有表示相应领域的标识。

领域词典中,对大词还建立了一级索引和二级索引,以便能够迅速的检索到大词。本实施例中,取N等于2,也就是大于两个字的词算作大词。对大词建立索引的具体步骤如下:

建立一级索引:

取M等于2,即选取每个大词的前两个字作为一级索引的key,例如:

词1:长江大桥,长度为4

词2:长江商学院,长度为 5

那么词1和词2的key都是“长江”,记索引为:key1:[长江];

然后将词1和词2的长度(length)存在key1命名的索引中:即value1=[4,5,…]。

建立二级索引:

先对每个词进行hash,为每个词生成一个唯一标识(unique);

然后对每个词,用这个词的key1与长度length组合,得到二级索引的key为:

new_key1=key1 + length;

每个new_key1都是一个独立的索引,此索引将存储词前两个字符与长度都与new_key1相同的词的唯一标识,以“长江大桥”和“长江大厦”为例,则这两个词语的new_key1=[长江-4],二级索引new_key1对应的new_value1=[ unique1,unique2],其中,unique1为“长江大桥”的hash结果,unique2为“长江大厦”的hash结果。

步骤2:构建基于领域词典的离线分词模型。

具体来说,训练离线分词模型主要包括两部分内容:

a.标注语料:

取大量的文章或者互联网文本进行标注,形成标注语料。本实施例中优选采用4-tag法进行标注,但其他能够达到相同目的的标注方法也应纳入本发明的保护范围之中。

b.分词算法:

分词算法可以选取现有的分词算法,例如机械分词算法(正向最大匹配法、逆向最大匹配法、最少切分法等)、基于n元语法的分词算法、基于隐马尔科夫模型的分词算法、基于条件随机场的分词算法等。

本实施例中采用jieba的方案进行离线训练:

首先基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG),然后采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;对于未登录词,采用了基于汉字成词能力的HMM模型,并使用了 Viterbi 算法进行HMM模型训练。

步骤3:对于待分词的原始文本,通过离线分词模型进行分词,得到第一分词结果。

具体来说,本步骤采用离线模型进行初步分词,得到图2所示的分词结果,将分词结果通过数组记录如下:

words:[[word1, start1, length1],[word2, start2, length2],[word3, start3,length3]..]

words中的子数组是每个词的具体信息;

word,表示词内容;

start,表示词在文本的开始位置;

length,表示词的长度。

步骤4:从原始文本中提取出所有字数超过M的词作为待搜索词;对每个待搜索词,在用户选定的领域词典内先基于一级索引进行搜索,得到一级索引结果,再对一级索引结果进行基于二级索引的搜索,得到二级索引结果。

具体来说,在步骤4中,我们先使用正则清理非中文的字符,采用的语句为:re.sub(‘[a-zA-Z0-9,。,;;!!]’, ' ', sentence);这里将非中文字符改成空格,以保证语句长度没有发生变动;

按字开始位置顺序取出待搜索词,要求是取出不含空格的连续的大于2个字符的中文,然后去重;

使用并发搜索,根据用户选取的领域词典,在不同领域词典中采用一级索引搜索这些待搜索词,也就是截取待搜索词的前两个字为索引进行搜索,这样可以得到在不同领域内,这两个字开头的词可能会有的词长;

再基于一级索引的搜索结果,进行基于二级索引的搜索,这样就可以直接得到与待搜索词开头两个字相同、长度也相同的词。

步骤5:将二级索引结果与原始文本进行匹配,去掉原始文本中没有的词;对剩下的词进行边界匹配,保留同时满足以下条件的词为候选词:

条件1:词的开始位置与第一分词结果中某一词的开始位置一致;

条件2:词的结束位置与第一分词结果中某一词的结束位置一致。

具体来说,在步骤4中,我们已经得到了候选的大词,这时,我们需要查看每个大词在原语句中是否存在,这里看一个大词是否与原文匹配要求开头的两个字可以是拼音相似,后续的字必须一致,按照这个规则找出所有与原文匹配的大词,然后将每个大词在原语句中的开始位置记做start,将大词长度记做length,得到一个大词数组如下:

new_words=[[new_word1,start1,length1],[new_word2,start2,length2],..]

然而这些大词还不一定是合适的候选词,我们还需要筛选出候选词,筛选的原则是:

我们以离线分词的边界为最优结果,这里的边界指的是离线分词中各个词语的开始位置和结束位置,将离线分词的分词结果中所有词的开始位置通过数组start记载:

Start=[start1,start2,…]

然后,用离线分词的分词结果中的每个词的开始位置加上相应词的长度,就得到每个词的结束位置,我们通过数组end来记载:

end=[end1,end2,…]。

那么一个合格的候选词,它的开始位置应该落入数组start,它的结束位置应该落入数组end,我们称这样的候选词为符合边界条件的候选词。如图3所示,new_word2和new_word3为符合边界条件的候选词,而new_word1为不符合边界条件的候选词,需要去掉。

基于上述规则,我们采用以下公式找到符合边界条件的候选词:

f(start) = max_length( 符合边界条件的(words,new_words))

其中,f(start)表示一个符合边界条件的候选词,这个候选词的开始位置落入数组start,结束位置落入数组end。

步骤6:将候选词和第一分词结果组合为顶点集,构建原始文本的有向图,有向图中每一条路径均表示完整的原始文本;设置无向图中所有边的权重为1,基于最短路径法算出最优分词结果。

具体来说,本步骤中将words和f(start)画成一个有向图,如图4所示,各个边的权重为1,那么此问题的解,就是一个最短路径算法,本实施例中优选使用Dijkstra算法来解决,但其余能够达到相同目的的算法也应纳入本发明保护范围之内。求得的最优路径就是最后的分词结果,如图5所示。

实施例2:

本实施例提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述的分词方法。

实施例3

本实施例提出支持大量词库的分词系统,用于实现所述分词方法,所述分词系统可参照图1,包括离线模型单元、领域词典模块、领域搜索模块和分词重组模块,其中:

领域词典模块存储有预先构建好的不同领域的领域词典,领域词典中每一个长度大于N的词都建立有一级索引和二级索引;此模块将词典开放给用户,让用户可以动态的增加新词,增加自定义词;此模块还具有词典管理功能,用户可以通过此模块对词典进行管理,例如:

用户可以将词标注领域,方便按领域搜索;

用户可以将词按照4-tag法进行标注,方便离线训练;

用户在管理页面,可以通过操作让这些标注立刻生效,具体体现在以下两个方面:

1、进行补充索引

2、控制离线模型模块进行补充训练,形成新的离线分词模型;

离线模型单元用于对待分词的原始文本进行基于领域词典的分词处理,以得到第一分词结果;

领域搜索模块用于对待分词的原始文本进行待搜索词提取,然后基于待搜索词在领域词典内进行一级索引搜索和二级索引搜索,最后对二级索引结果进行筛选,提取出候选词;

分词重组模块用于将候选词和第一分词结果进行重组,基于重组结果构建原始文本的有向图,并基于最短路径法算出最优分词结果。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号