1.一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于,包括以下步驟:
S1.收集語料,收集用于語言模型訓(xùn)練的中文句子,形成語料庫;
S2.中文句子分詞:將語料庫中每個(gè)中文句子切分成一個(gè)一個(gè)單獨(dú)的詞語,詞語之間用空格分隔;
S3.生成學(xué)習(xí)集corpus:將語料庫中所有的中文句子生成訓(xùn)練需要的標(biāo)準(zhǔn)輸入格式;
S4.統(tǒng)計(jì)學(xué)習(xí)集corpus中的詞匯和詞頻,生成中文詞匯表wt,即遍歷所有語料庫中的中文句子,列舉其中出現(xiàn)的所有詞匯和標(biāo)點(diǎn),統(tǒng)計(jì)這些詞匯和標(biāo)點(diǎn)的出現(xiàn)數(shù)量,形成中文詞匯表wt;
S5.統(tǒng)計(jì)中文詞匯表wt中短語和短語出現(xiàn)的次數(shù),生成1-n元中文短語表pt0,即按照n-gram方式,根據(jù)選擇n值的不同,列舉所有n元短語并統(tǒng)計(jì)每個(gè)短語出現(xiàn)的次數(shù),生成中文短語表pt0;
S6.設(shè)定選擇性跳過標(biāo)準(zhǔn)k,根據(jù)中文詞匯表wt中的詞頻統(tǒng)計(jì)結(jié)果進(jìn)行k的判斷,當(dāng)詞匯的出現(xiàn)次數(shù)k不大于i的所有詞匯數(shù)量之和占全部詞匯數(shù)量的60%以上時(shí),取k=i;
S7.根據(jù)步驟S6中k對中文句子進(jìn)行選擇性跳過處理,生成skip短語表pt1;
S8.將skip短語表pt1和中文短語表pt0合并,生成新的1-n元中文短語表pt2;
S9.根據(jù)步驟S8中生成的中文短語表pt2進(jìn)行語言模型的訓(xùn)練,得到skip-ngram語言模型。
2.根據(jù)權(quán)利要求1所述的一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于:所述步驟S2的具體步驟為:
S21.準(zhǔn)備中文詞典:在互聯(lián)網(wǎng)上下載盡可能全面的詞典文件,讀取詞典中所有詞匯存儲(chǔ)到set集合中,取詞典中最長詞匯的字?jǐn)?shù)L作為最大匹配字?jǐn)?shù);
S22.進(jìn)行正向最大匹配分詞,獲得分詞結(jié)果Rf:讀入語料庫中的一個(gè)中文句子,首先從句首截取L個(gè)漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的詞匯后面截取L個(gè)漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個(gè)漢字,對剩下的L-1個(gè)漢字串,繼續(xù)在詞典中搜索,直到切分出一個(gè)詞或剩余字串的長度為零為止;
S23.進(jìn)行逆向最大匹配分詞,獲得分詞結(jié)果Rb:讀入語料庫中的一個(gè)中文句子,首先從句尾截取L個(gè)漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的詞匯前面截取L個(gè)漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個(gè)漢字,對剩下的L-1個(gè)漢字串,繼續(xù)在詞典中搜索,直到切分出一個(gè)詞或剩余字串的長度為零為止;
S24.根據(jù)詞粒度選取分詞結(jié)果:依照大顆粒度詞越多越好、非詞典詞和單字詞越少越好的原則,選取Rf和Rb中的一個(gè)結(jié)果作為最終分詞結(jié)果。
3.根據(jù)權(quán)利要求1所述的一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于:所述步驟S3的具體步驟為:
S31.tokenisation:遍歷語料庫中所有中文句子,在詞匯和標(biāo)點(diǎn)之間插入空格,添加句子起始標(biāo)志“<s>”和結(jié)束標(biāo)志“</s>”;
S32.truecasing:根據(jù)詞典,將語料庫中每句中文句子的字和詞組都轉(zhuǎn)換為沒有格式的形式;
S33.cleaning:設(shè)置中文句子最大長度限制,將長語句和空語句刪除。
4.根據(jù)權(quán)利要求1所述的一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于:所述步驟S6的具體步驟為:
S61.統(tǒng)計(jì)中文詞匯表wt中出現(xiàn)的總詞匯數(shù)量s;
S62.初始化詞匯出現(xiàn)次數(shù)i=1;
S63.計(jì)算詞頻比例r,即中文詞匯表中出現(xiàn)次數(shù)不大于i的所有詞匯的數(shù)量之和count(wi)與s的比例:
S64.進(jìn)行判定:當(dāng)r≤60%時(shí),i=i+1,轉(zhuǎn)到步驟S62;當(dāng)r>60%時(shí),取k=i,結(jié)束。
5.根據(jù)權(quán)利要求1所述的一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于:所述步驟S7的具體步驟為:
S71.首先從步驟S5得到的pt0中抽取所有n元短語;
S72.初始化短語表pt1,對所有n元短語中首尾詞匯以外的詞匯w進(jìn)行跳過判斷,當(dāng)詞匯w的詞頻Nw滿足Nw≥k時(shí),詞匯w為高頻詞匯,不適合被跳過,保留詞匯w不做處理;當(dāng)詞匯w的詞頻Nw滿足Nw<k時(shí),詞匯w為低頻詞匯,適合被跳過,則刪除詞匯w并將剩下的低階短語,添加到短語表pt1中;
S73.按照步驟S71和步驟S72完成所有中間詞匯的選擇性跳過處理,統(tǒng)計(jì)新短語出現(xiàn)的次數(shù),生成新的skip短語表pt1。
6.根據(jù)權(quán)利要求1所述的一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于:所述步驟S9的具體步驟為:
S91.定義詞匯w的歷史計(jì)數(shù):N1+(gw)=|{wi:count(wiw)>0}|;
N1+(gw)表示語料庫中詞匯w在多少個(gè)詞匯后面出現(xiàn)過,符號“g”代表出現(xiàn)在w之前出現(xiàn)過的任意一個(gè)詞匯;
定義詞序列的歷史計(jì)數(shù):
表示詞序列在多少個(gè)詞匯后面出現(xiàn)過,
遍歷pt2表中的1-n元短語,利用上述公式計(jì)算pt2中每個(gè)詞匯和短語的歷史計(jì)數(shù)N1+;
S92.使用歷史計(jì)數(shù)代替n-gram語言模型訓(xùn)練中的原始計(jì)數(shù),定義一元文法的概率計(jì)算公式為:
推廣到n元文法有:
利用上述公式計(jì)算pt2中每個(gè)詞匯和短語的計(jì)數(shù)概率;
S93.根據(jù)步驟S91和步驟S92,利用Kneser-Ney平滑算法公式對pt2中每個(gè)詞匯和短語進(jìn)行概率計(jì)算,即計(jì)算語言模型的概率,得到語言模型概率表,即語言模型文件;
計(jì)算語言模型的概率的公式如下:
其中D(0≤D≤1)是一個(gè)固定數(shù)值,計(jì)算公式如下:
其中Ni是精確計(jì)數(shù)為i的n元短語的個(gè)數(shù)。