掌桥专利:专业的专利平台
掌桥专利
首页

语言模型和词库校正的序列标注分词方法、系统及装置

文献发布时间:2023-06-19 13:49:36


语言模型和词库校正的序列标注分词方法、系统及装置

技术领域

本发明涉及分词技术领域,特别是涉及一种语言模型和词库校正的序列标注分词方法、系统及装置。

背景技术

中文分词是将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列的过程。传统基于机器学习、深度学习的序列标注分词系统,面临的两个问题:出现一些较难理解的坏例子,比如“从小吃到大”切分成“从”、“小吃”、“到”、“大”,人看起来很简单的例子,但是模型容易判错;尽管机器学习、深度学习模型在效果上整体要好,但是还是很容易产生一些低级的坏例子。在场景A(比如通用领域)调优好的系统,在迁移到场景B(比如医疗领域)时,会遇到一些全新的专业词汇,往往表现较差;比如基于机器学习、深度学习的通用场景的序列标注分词系统,遇到“肺炎链球菌”,很可能切错。

因此,希望能够解决单纯的机器学习或深度学习的序列标注分词对于一些简单词汇判断出错,以及同一个分词方法在不同领域的适用性问题。

发明内容

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种语言模型和词库校正的序列标注分词方法、系统及装置,用于解决现有技术中单纯的机器学习或深度学习的序列标注分词对于一些简单词汇判断出错,以及同一个分词方法在不同领域的适用性的问题。

为实现上述目的及其他相关目的,本发明提供一种语言模型和词库校正的序列标注分词方法,包括以下步骤:将原始文本输入训练后的序列标注模型进行切分获得模型切分结果;将所述模型切分结果输入语言模型进行矫正获得语言模型矫正结果;将所述语言模型矫正结果输入词库进行矫正获得分词结果。

为实现上述目的,本发明还提供一种语言模型和词库校正的序列标注分词系统,包括:模型切分模块、语言模型矫正模块和词库矫正模块;所述模型切分模块用于将原始文本输入训练后的序列标注模型进行切分获得模型切分结果;所述语言模型矫正模块用于将所述模型切分结果输入语言模型进行矫正获得语言模型矫正结果;所述词库矫正模块用于将所述语言模型矫正结果输入词库进行矫正获得分词结果。

为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现任一上述语言模型和词库校正的序列标注分词方法。

为实现上述目的,本发明还提供一种语言模型和词库校正的序列标注分词装置,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使所述语言模型和词库校正的序列标注分词装置执行任一上述的语言模型和词库校正的序列标注分词方法。

如上所述,本发明的一种语言模型和词库校正的序列标注分词方法、系统及装置,具有以下有益效果:用于减少原本只使用序列标注模型或语言模型造成的分词错误,适应不同领域场景间的分词。

附图说明

图1a显示为本发明的语言模型和词库校正的序列标注分词方法于一实施例中的流程图;

图1b显示为本发明的语言模型和词库校正的序列标注分词方法于一实施例中的分词示意图;

图1c显示为本发明的语言模型和词库校正的序列标注分词方法于又一实施例中的流程图;

图2显示为本发明的语言模型和词库校正的序列标注分词系统于一实施例中的结构示意图;

图3显示为本发明的语言模型和词库校正的序列标注分词装置于一实施例中的结构示意图。

元件标号说明

21 模型切分模块

22 语言模型矫正模块

23 词库矫正模块

31 处理器

32 存储器

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,故图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明的语言模型和词库校正的序列标注分词方法、系统及装置,减少原本只使用序列标注模型或语言模型造成的分词错误,适应不同领域场景间的分词。

分词主要是将一段文本,切分成一个词序列,我们下面的例子:分词前,“昨天,小明在北京大学的燕园看了中国男篮的一场比赛”。分词后“昨天”“,”、“小明”、“在”、“北京大学”、“的”、“燕园”、“看”、“了”、“中国男篮”、“的”、“一场”、“比赛”。序列标注就是对每个位置,做一个标签的分类,每个位置标签的可能为BMES。那么,如何使用序列标注来实现分词呢?问题的关键,是标签序列如何构造。如图1b所示,图中的标签有四种:B,表示一个词的开始位置;M,表示一个词的中间位置;E,表示一个词的结束位置;S,表示单字成词;具体做法:首先,针对数据,人工标注序列标签;然后,针对训练数据(如上:文本序列+标签序列),训练序列标注模型(CRF/BILSTM-CRF);然后,使用训练好的模型,预测新的数据,产生标签序列;最后,根据得到的标签序列,切分,得到分词结果。

如图1a所示,于一实施例中,本发明的语言模型和词库校正的序列标注分词方法,包括以下步骤:

步骤S11、将原始文本输入训练后的序列标注模型进行切分获得模型切分结果。

具体地,所述序列标注模型包括:CRF(Conditional Random Fields,条件随机场)模型、BiLSTM-CRF(Bi-directional Long Short-Term Memory Conditional RandomFields,双向长短期记忆条件随机场)模型、HMM(Hidden Markov Model,隐马尔可夫)模型、CNN(Convolutional Neural Networks,卷积神经网络)模型或Bert(BidirectionalEncoder Representations from Transformer,基于变压器的双向编码器表征)模型。

条件随机场(conditional random field,简称CRF),是一种鉴别式几率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量Y的分布为条件几率,给定的观察值则为随机变量X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的几率分布,没有如隐马尔可夫模型那般强烈的假设存在。线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。

CRF是一种常用的序列标注算法,可用于词性标注,分词,命名实体识别等任务。BiLSTM+CRF是目前比较流行的序列标注算法,其将BiLSTM和CRF结合在一起,使模型即可以像CRF一样考虑序列前后之间的关联性,又可以拥有LSTM的特征抽取及拟合能力。给定一个句子"什么是地摊经济",其正确的分词方式是"什么/是/地摊/经济",每个字对应的分词标签是"be/s/be/be"。从图1c可以看出LSTM在做序列标注时的问题。BiLSTM可以预测出每一个字属于不同标签的概率,然后使用Softmax得到概率最大的标签,作为该位置的预测值。这样在预测的时候会忽略了标签之间的关联性,如上图中BiLSTM把第一个词预测成s,把第二个词预测成e。但是实际上在分词时s后面是不会出现e的,因此BiLSTM没有考虑标签间联系。因此BiLSTM+CRF在BiLSTM的输出层加上一个CRF,使得模型可以考虑类标之间的相关性,标签之间的相关性就是CRF中的转移矩阵,表示从一个状态转移到另一个状态的概率。

具体地,还包括预先训练序列标注模型获得训练后的序列标注模型。具体地,所述预先训练序列标注模型获得训练后的序列标注模型包括:

获取已标注分词的训练数据。采用人工方法标注分词的训练数据,即对一堆文本,给出其正确的切分。

使用所述已标注分词的训练数据训练所述序列标注模型。即使用所述已经标注分词的训练数据训练CRF模型、BiLSTM-CRF模型、HMM模型、CNN模型或Bert模型。

使用测试数据测试训练后的序列标注模型。

判断所述训练后的序列标注模型的效果,保存效果符合预期效果的序列标注模型为训练后的序列标注模型。使用测试数据评估得到训练后的序列标注模型的效果,例如使用精确率(precision)、召回率(recall)、准确率(accuracy)等指标判断所述训练后的序列标注模型的效果,选择其中效果符合预期效果的序列标注模型为训练后的序列标注模型。

具体地,当所述序列标注模型为CRF模型时,所述将原始文本输入训练后的序列标注模型进行切分获得模型切分结果包括:针对所述原始文本生成每个时刻的状态特征函数和转移特征函数。获得所述状态特征函数和转移特征函数的权重。基于所述状态特征函数和转移特征函数及其权重获得篱笆网络。使用维特比解码算法计算所述篱笆网络的最优标签途径。基于所述最优标签途径进行标签序列切分获得模型切分结果。即使用CRF模型,CRF模型针对原始文本,生成每个时刻的状态特征函数和转移特征函数,然后从CRF模型中取出每个特征函数对应的权重,然后权重相加,最后得到一个篱笆网络,使用维特比解码算法,获得最优的一条标签路径,然后根据标签序列切分分词结果。

具体地,当所述序列标注模型为BiLSTM-CRF模型时,所述将原始文本输入训练后的序列标注模型进行切分获得模型切分结果包括:将所述原始文本输入所述训练后的序列标注模型获得词向量;基于双向LSTM提取所述词向量的特征;基于所述特征计算CRF层学习标签之间的转移概率;基于维特比解码算法计算CRF层学习标签的最优标签途径;基于所述最优标签途径进行标签序列切分获得模型切分结果。即使用BiLSTM-CRF模型,原始文本输入到模型之后,被表示为词向量的形式,然后使用双向LSTM,提取特征,产生输出,然后使用CRF层学习标签之间的转移概率,最终使用维特比算法,获得最优的一条标签路径,然后根据标签序列切分分词结果。

步骤S12、将所述模型切分结果输入语言模型进行矫正获得语言模型矫正结果。

具体地,还包括预先训练获得语言模型。语言模型是根据语言客观事实而进行的语言抽象数学建模,是一种对应关系。语言模型与语言客观事实之间的关系,如同数学上的抽象直线与具体直线之间的关系。语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率。

给定句子(词语序列)

S=W1,W2,…,Wk;

他的概率可以表示为:

P(S)=P(W1,W2,…,Wk)=p(W1)P(W2|W1)…P(Wk,W2,…,Wk-1);

可是这样的方法存在两个致命的缺陷:參数空间过大:条件概率P(wn|w1,w2,..,wn-1)的可能性太多,无法估算,不可能有用;数据稀疏严重:对于非常多词对的组合,在语料库中都没有出现,依据最大似然估计得到的概率将会是0。

马尔科夫假设:为了解决參数空间过大的问题。引入了马尔科夫假设:随意一个词出现的概率只与它前面出现的有限的一个或者几个词有关。如果一个词的出现与它周围的词是独立的,那么我们就称之为unigram也就是一元语言模型。

p(s)=p(w1)*p(w2)*p(w3)*…*p(wn);

如果一个词的出现仅依赖于它前面出现的一个词,那么我们就称之为bigram:

P(S)=P(w1,w2,w3,…,wn)=P(W1)P(W2|W1)P(W3|W1,W2)…P(Wn,W2,…,Wn-1)≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1);

假设一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram:

P(S)=P(w1,w2,w3,…,wn)=P(W1)P(W2|W1)P(W3|W1,W2)…P(Wn,W2,…,Wn-1)≈P(W1)P(W2|W1)P(W3|W2,W1)…P(Wn|Wn-1,Wn-2)。

所述语言模型包括:Bi-Gram(二元)语言模型、unigram(一元)语言模型、tri-gram(三元)语言模型。

对于语言模型的获得,通过下面流程:

准备好分词数据,即针对一系列文本,给出正确的切分结果。基于其进行统计Bi-Gram语言模型,准确上讲,是统计任一词到任意另一个词的条件概率。得到语言模型之后,用其校正分词结果。如果发现一些条件概率几乎为0,而另一切分的条件概率较高,则触发纠正。比如上面“不|少人|得|了|新冠|肺炎|病毒”,我们发现P(少人|不)的概率很低,几乎为0,而P(人|不少)的概率较高,则触发分词纠正。这一步,将“不|少人|得|了|新冠|肺炎|病毒”纠正为“不少|人|得|了|新冠|肺炎|病毒”。

步骤S13、将所述语言模型矫正结果输入词库进行矫正获得分词结果。

具体地,长词词库是由一系列的长度大于4的词组成,比如包含“新冠肺炎病毒”“沪深300指数”等长词。模型由于没有遇见过一些其他领域的新词,所以在处理某些词比如“新冠肺炎病毒”、“沪深300指数”时不能很好切分。如果文本命中词库中的长词,则一般切分很准确。这一步,模型的结果“新冠|肺炎|病毒”,命中了词库中的“新冠肺炎病毒”,于是触发了长词词库校正,我们将“不少|人|得|了|新冠|肺炎|病毒”纠正为“不少|人|得|了|新冠肺炎病毒”。这样可以适应不同领域的文本校正的需要。

通过对序列标注模型结果的两次纠正,我们最终获得“不少人得了新冠肺炎病毒”这个句子的正确切分“不少|人|得|了|新冠肺炎病毒”。

如图2所示,于一实施例中,本发明的语言模型和词库校正的序列标注分词系统,包括模型切分模块21、语言模型矫正模块22和词库矫正模块23;所述模型切分模块用于将原始文本输入训练后的序列标注模型进行切分获得模型切分结果;所述语言模型矫正模块用于将所述模型切分结果输入语言模型进行矫正获得语言模型矫正结果;所述词库矫正模块用于将所述语言模型矫正结果输入词库进行矫正获得分词结果。

需要说明的是:模型切分模块21、语言模型矫正模块22和词库矫正模块23的结构和原理与上述语言模型和词库校正的序列标注分词方法中的步骤一一对应,故在此不再赘述。

需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,某一模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上某一模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。

例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Micro Processor Uint,简称MPU),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。

于本发明一实施例中,本发明还包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一所述语言模型和词库校正的序列标注分词方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

如图3所示,于一实施例中,本发明的语言模型和词库校正的序列标注分词装置包括:处理器31和存储器32;所述存储器32用于存储计算机程序;所述处理器31与所述存储器32相连,用于执行所述存储器32存储的计算机程序,以使所述语言模型和词库校正的序列标注分词装置执行任一所述的语言模型和词库校正的序列标注分词方法。

具体地,所述存储器32包括:ROM、RAM、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。

优选地,所述处理器31可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

综上所述,本发明语言模型和词库校正的序列标注分词方法、系统及装置,用于减少原本只使用序列标注模型或语言模型造成的分词错误,适应不同领域场景间的分词。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

技术分类

06120113821777