[0048] 下面结合附图对本发明作进一步描述:
[0049] 如图1和2所示,一种利用部分标注集的自训练神经网络分词模型,具体包括如下步骤:
[0050] 1)利用基于词典的字符串匹配算法,从无标注集中获取部分标注集:
[0051] 1.1利用词典最大正向匹配算法,将匹配到的领域特殊词汇以及长度超过4的词汇打上确定标注。
[0052] 1.2对于一个文本序列,根据其中的确定标注词汇,划分出多个未切分文本片段。
[0053] 1.3对于每个未切分文本片段中的第i个汉字ci,计算出ci的n-grams窗口词汇,只需要3-grams以下的,如表1所示。如果ci是文本片段的第一、第二、倒数第一、倒数第二个词汇,则取值如表2所示。
[0054] 表1 3-grams以下的窗口词汇
[0055]Type Template
2-gram ci-1ci,cici+1
3-gram ci-2ci-1ci,ci-1cici+1,cici+1ci+2
[0056] 表2特殊位置的n-grams窗口词汇
[0057]
[0058]
[0059] 1.4利用窗口词汇给未标注汉字ci打上部分确定标注fi,具体算法步骤如表3。
[0060] 表3获取未标注汉字ci的部分确定标注fi
[0061]
[0062] 表3中,fij表示fi在索引j位置的值。例如,fi1=1,则fi=(1,0,0,0)。
[0063] 2)通过改进损失函数,利用有标注集和部分标注集共同训练基于双向循环神经网络(Bidirectional Long Short Term Memory,BiLSTM)的中文分词模型:
[0064] 2.1使用Word2Vec将输入序列中的每个汉字映射到其对应的词嵌入表示。
[0065] 2.2将词嵌入输入BiLSTM,其网络结构是由一个前向的LSTM和一个后向的LSTM叠加组成的。在每一个时刻i,词嵌入层会同时提供一个输入给前、后向的LSTM。然后将前后向的LSTM的输出进行拼接,就得到了BiLSTM在i时刻的输出,公式如下:
[0066]
[0067]
[0068]
[0069] 上式中,forward_LSTM()代表前向的LSTM,Ei表示第i个汉字的词嵌入, 表示i-1时刻,前向LSTM的隐层输出,θf表示网络参数。反向参数类似,不再赘述。
[0070] 2.3通过softmax非线性映射层,将BiLSTM的输出映射为预测概率。
[0071] logiti=Whi+b
[0072]
[0073] 上式中logiti表示将hi线性映射到分类上的概率结果,W与b分别是权重矩阵和偏置量。 表示模型对输入序列的第i个汉字的预测概率,n表示序列长度。
[0074] 2.4利用有标注集训练基于BiLSTM的中文分词模型时,交叉熵损失函数表示如下:
[0075]
[0076] 其中,yi表示输入序列的第i个确定标注,n表示输入序列的长度。
[0077] 2.5利用部分标注集训练基于BiLSTM的中文分词模型时,损失函数表示如下:
[0078]
[0079] 上式中N表示确定标注的索引号,|N|表示N的数量大小。yi表示输入序列在索引为i的位置的确定标注。 表示模型对输入序列索引为i位置的预测标注。M表示部分确定标注的索引号,||M||表示 其中 表示L0正则化。 表示输入序列索引为j位置的部分确定标注。 表示模型对输入序列索引为j位置的预测标注。上述公式的整体理解是,在确定标注位置,使用原来的损失函数,通过减小损失函数,让模型的预测标注更贴近确定标注;在部分确定标注位置,修改原来的损失函数,让模型最小化错误标注上的预测值。
[0080] 2.6使用Adam算法优化模型参数,使损失函数最小化。
[0081] 3)利用BiLSTM分词模型对部分标注集进行分词标注:
[0082] 这一步需要利用步骤(2)训练的BiLSTM分词模型来获得部分标注集的预测标注[0083] 4)计算每个序列的分词准确率置信度和差异置信度:
[0084] 4.1设第i个汉字的部分确定标注为(Bi,Mi,Ei,Si),其中Bi,Mi,Ei,Si的值为0或1。设模型对第i个汉字的预测概率为 其中 计算每个序列的分词准确率置信度。
[0085]
[0086] 上式中,booli表示一个布尔类型的值。max_index表示计算四个标注中最大值的位置索引的集合。上式可简单理解为:若booli=true,则预测概率 中最大值的位置索引集合是部分确定标注(Bi,Mi,Ei,Si)中最大值的位置索引集合的子集。
[0087]
[0088] 上式中Ppl表示分词准确率置信度,S表示一个序列。
[0089] 4.2对于序列的差异置信度,首先按照部分确定标注(Bi,Mi,Ei,Si)中1的个数,计算出差异均值θk。因为部分确定标注中1的个数只可能为2,3,4,所以k取值为2,3或4。例如:k=2表示计算的是部分确定标注(Bi,Mi,Ei,Si)中1的个数为2的情况。
[0090] booli,k=(sum(Bi,Mi,Ei,Si)==k)&&booli
[0091]
[0092] 上述两个式子中,L表示所有序列的总个数;sum(Bi,Mi,Ei,Si)表示(Bi,Mi,Ei,Si)中1的个数。 表示保留可能标注的位置的值。
表示将 中最大值与第二大值相减所得的值。
[0093] 一个汉字的预测标注是否满足差异置信度,表示如下:
[0094]
[0095] 最后,一个序列S的差异置信度计算如下:
[0096]
[0097] 5)将满足置信度条件的部分标注集转为有标注集。迭代步骤(2)(3)(4)(5)直到k次:
[0098] 5.1选取分词准确率高的前m条部分标注集序列。m可根据部分标注集规模来选取,需要适中。
[0099] 5.2在上述的部分标注集中选取差异置信度高的前25%的部分标注集。
[0100] 5.3对于筛选出的部分标注集,转为有标注集。具体是确定标注的位置采用最初构造部分标注集时的标注,部分确定标注的位置采用模型输出 中,最大位置值为1,其余位置标注为0。
[0101] 5.4将新的有标注集加入原始有标注集,并在部分标注集中剔除已转化的部分。
[0102] 5.5迭代步骤(2)(3)(4)(5)直到k次。k是一个可以人为设定的终止迭代条件。