一種基于詞頻的skip語言模型的訓(xùn)練方法,用于得到語言模型概率表,涉及機器翻譯
技術(shù)領(lǐng)域:
,尤其涉及于語料庫的漢語統(tǒng)計語言模型的訓(xùn)練方法的
技術(shù)領(lǐng)域:
。
背景技術(shù):
:語言模型是統(tǒng)計機器翻譯技術(shù)中的基本概率模型之一,用來評價譯文句子出現(xiàn)某種詞序列的可能性,關(guān)系到譯文句子(譯文詞序列)的流暢程度。語言模型概率越高,表示譯文越合法、流暢、符合語言規(guī)律。假設(shè)w1、w2表示兩個詞匯,p(w2|w1)表示w2出現(xiàn)在w1后面的概率,即詞組w1w2可能出現(xiàn)的概率;根據(jù)語言學(xué)知識,詞組“吃面吧”出現(xiàn)的可能性會明顯大于詞組“吃飛機”,因此語言模型中p(面包|吃)的值應(yīng)該大于p(飛機|吃)。目前語言模型都是根據(jù)馬爾科夫假設(shè)(MarkovAssumption)進行建模,認(rèn)為只有前面有限數(shù)量(i)個的詞匯會影響到下一個詞匯的概率,則句子T(詞序列w1,w2,w3,...,wm)出現(xiàn)的概率p(T)計算方式為:p(T)=p(w1,w2,w3,...,wm)=p(w1)p(w2|w1)(w3|w1,w2)...p(wm|w1,w2,w3,...,wm-1)≈p(w1)p(w2|w1)(w3|w1,w2)...p(wm|wm-i,wm-i+1,...,wm-1)其中p(wm|wm-i,wm-i+1,...,wm-1)計算方式為:p(wm|wm-i,wm-i+1,...,wm-1)=count(wm-i,wm-i+1,...,wm-1)Σwcount(wm-i,wm-i+1,...,wm-2,w)]]>分子count(wm-i,wm-i+1,...,wm-1)是詞序列wm-i,wm-i+1,...,wm-1在語料中出現(xiàn)的次數(shù),分母count(wm-i,wm-i+1,...,wm-2,w)表示詞序列(wm-i,wm-i+1,...,wm-2+任意詞匯w)在語料中出現(xiàn)的次數(shù)。當(dāng)前統(tǒng)計語言模型的使用面臨的主要問題是數(shù)據(jù)稀疏造成的OOV(outofvocabulary)問題,這是統(tǒng)計模型中經(jīng)常會遇到的問題,一般是由數(shù)據(jù)量的不足造成的。對于自然語言處理來說,已有的語料庫雖然已經(jīng)很龐大,但是與歷史上人類產(chǎn)生的語言量是無法相比的,語料數(shù)據(jù)不可能涵蓋所有可能形成的句子。當(dāng)使用語言模型來進行這些未記錄句子T的概率預(yù)測時,很可能會造成預(yù)測概率P(T)=0,零概率表示這種語言情況根本不會出現(xiàn),是錯誤的。語言模型一般用于機器翻譯領(lǐng)域,零概率出現(xiàn)會導(dǎo)致翻譯結(jié)果不準(zhǔn)確。目前存在一些平滑算法對語言模型進行平滑處理,使語言模型對句子的預(yù)測中不會出現(xiàn)零概率事件。平滑算法都是對概率計算過程進行補充和改善,但是自然語言的變化各異一般是由語言使用者形成語句時的環(huán)境不同造成的,如時間、地點、事物等,這需要對語料本身進行研究和處理。因此,需要一種在語料庫方面進行改善的語言模型訓(xùn)練方法,配合已有平滑算法得到質(zhì)量更高的語言模型。技術(shù)實現(xiàn)要素:本發(fā)明針對上述不足之處提供了一種基于詞頻的skip語言模型的訓(xùn)練方法,解決現(xiàn)有技術(shù)中由于語料缺乏引起統(tǒng)計語言模型的OOV的問題。為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:一種基于詞頻的skip語言模型的訓(xùn)練方法,其特征在于,包括以下步驟:S1.收集語料,收集用于語言模型訓(xùn)練的中文句子,形成語料庫;S2.中文句子分詞:將語料庫中每個中文句子切分成一個一個單獨的詞語,詞語之間用空格分隔;S3.生成學(xué)習(xí)集corpus:將語料庫中所有的中文句子生成訓(xùn)練需要的標(biāo)準(zhǔn)輸入格式;S4.統(tǒng)計學(xué)習(xí)集corpus中的詞匯和詞頻,生成中文詞匯表wt,即遍歷所有語料庫中的中文句子,列舉其中出現(xiàn)的所有詞匯和標(biāo)點,統(tǒng)計這些詞匯和標(biāo)點的出現(xiàn)數(shù)量,形成中文詞匯表wt;S5.統(tǒng)計中文詞匯表wt中短語和短語出現(xiàn)的次數(shù),生成1-n元中文短語表pt0,即按照n-gram方式,根據(jù)選擇n值的不同,列舉所有n元短語并統(tǒng)計每個短語出現(xiàn)的次數(shù),生成中文短語表pt0;S6.設(shè)定選擇性跳過標(biāo)準(zhǔn)k,根據(jù)中文詞匯表wt中的詞頻統(tǒng)計結(jié)果進行k的判斷,當(dāng)詞匯的出現(xiàn)次數(shù)k不大于i的所有詞匯數(shù)量之和占全部詞匯數(shù)量的60%以上時,取k=i;S7.根據(jù)步驟S6中k對中文句子進行選擇性跳過處理,生成skip短語表pt1;S8.將skip短語表pt1和中文短語表pt0合并,生成新的1-n元中文短語表pt2;S9.根據(jù)步驟S8中生成的中文短語表pt2進行語言模型的訓(xùn)練,得到skip-ngram語言模型。進一步,所述步驟S2的具體步驟為:S21.準(zhǔn)備中文詞典:在互聯(lián)網(wǎng)上下載盡可能全面的詞典文件,讀取詞典中所有詞匯存儲到set集合中,取詞典中最長詞匯的字?jǐn)?shù)L作為最大匹配字?jǐn)?shù);S22.進行正向最大匹配分詞,獲得分詞結(jié)果Rf:讀入語料庫中的一個中文句子,首先從句首截取L個漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的詞匯后面截取L個漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續(xù)在詞典中搜索,直到切分出一個詞或剩余字串的長度為零為止;S23.進行逆向最大匹配分詞,獲得分詞結(jié)果Rb:讀入語料庫中的一個中文句子,首先從句尾截取L個漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的詞匯前面截取L個漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續(xù)在詞典中搜索,直到切分出一個詞或剩余字串的長度為零為止;S24.根據(jù)詞粒度選取分詞結(jié)果:依照大顆粒度詞越多越好、非詞典詞和單字詞越少越好的原則,選取Rf和Rb中的一個結(jié)果作為最終分詞結(jié)果。進一步,所述步驟S3的具體步驟為:S31.tokenisation:遍歷語料庫中所有中文句子,在詞匯和標(biāo)點之間插入空格,添加句子起始標(biāo)志“<s>”和結(jié)束標(biāo)志“</s>”;S32.truecasing:根據(jù)詞典,將語料庫中每句中文句子的字和詞組都轉(zhuǎn)換為沒有格式的形式;S33.cleaning:設(shè)置中文句子最大長度限制,將長語句和空語句刪除。進一步,所述步驟S6的具體步驟為:S61.統(tǒng)計中文詞匯表wt中出現(xiàn)的總詞匯數(shù)量s;S62.初始化詞匯出現(xiàn)次數(shù)i=1;S63.計算詞頻比例r,即中文詞匯表中出現(xiàn)次數(shù)不大于i的所有詞匯的數(shù)量之和count(wi)與s的比例:r=count(wi)s;]]>S64.進行判定:當(dāng)r≤60%時,i=i+1,轉(zhuǎn)到步驟S62;當(dāng)r>60%時,取k=i,結(jié)束。進一步,所述步驟S7的具體步驟為:S71.首先從步驟S5得到的pt0中抽取所有n元短語;S72.初始化短語表pt1,對所有n元短語中首尾詞匯以外的詞匯w進行跳過判斷,當(dāng)詞匯w的詞頻Nw滿足Nw≥k時,詞匯w為高頻詞匯,不適合被跳過,保留詞匯w不做處理;當(dāng)詞匯w的詞頻Nw滿足Nw<k時,詞匯w為低頻詞匯,適合被跳過,則刪除詞匯w并將剩下的低階短語,添加到短語表pt1中;S73.按照步驟S71和步驟S72完成所有中間詞匯的選擇性跳過處理,統(tǒng)計新短語出現(xiàn)的次數(shù),生成新的skip短語表pt1。進一步,所述步驟S9的具體步驟為:S91.定義詞匯w的歷史計數(shù):N1+(gw)=|{wi:count(wiw)>0}|;N1+(gw)表示語料庫中詞匯w在多少個詞匯后面出現(xiàn)過,符號“g”代表出現(xiàn)在w之前出現(xiàn)過的任意一個詞匯;定義詞序列的歷史計數(shù):N1+(gwi-n+2i)=|{wi-n+1:count(wi-n+1wi-n+2i)>0}|;]]>表示詞序列在多少個詞匯后面出現(xiàn)過,遍歷pt2表中的1-n元短語,利用上述公式計算pt2中每個詞匯和短語的歷史計數(shù)N1+;S92.使用歷史計數(shù)代替n-gram語言模型訓(xùn)練中的原始計數(shù),定義一元文法的概率計算公式為:pKN(w)=N1+(gw)ΣwiN1+(gwi);]]>推廣到n元文法有:pKN(wi|wi-n+2i-1)=N1+(gwi-n+2i)ΣwiN1+(gwi-n+2i-1);]]>利用上述公式計算pt2中每個詞匯和短語的計數(shù)概率;S93.根據(jù)步驟S91和步驟S92,利用Kneser-Ney平滑算法公式對pt2中每個詞匯和短語進行概率計算,即計算語言模型的概率,得到語言模型概率表,即語言模型文件;計算語言模型的概率的公式如下:pKN(wi|wi-n+1i-1)=max{c(wi-n+1i)-D,0}Σwic(wi-n+1i)+Dc(wi-n+1i)N1+(wi-n+1i-1g)pKN(wi|wi-n+2i-1)]]>其中D(0≤D≤1)是一個固定數(shù)值,計算公式如下:D=N1N1+2N2;]]>其中Ni是精確計數(shù)為i的n元短語的個數(shù)。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:一、本發(fā)明利用對中文句子的詞頻選擇性skip處理,從語料庫角度對語言模型進行優(yōu)化,變相擴大了語料資源,有利于減少數(shù)據(jù)稀疏問題、幫助模型獲取更多語言學(xué)知識;二、本發(fā)明根據(jù)中文詞匯表的詞頻選擇跳過標(biāo)準(zhǔn)k進行詞匯的選擇性刪除,從n元短語中抽取包含更多n-1元短語,擴充了原語料庫中沒有的語言學(xué)知識,達到在不擴充原有語料庫的情況下擴展了中文語料的效果,這些擴展語料中包含一些不連續(xù)的短語信息,對語言知識的訓(xùn)練起到一定的完善作用;三、本發(fā)明選取Kneser-Ney作為平滑方法是因為Kneser-Ney在語言模型的訓(xùn)練中有更好的效果,得到的語言模型困惑度更低。附圖說明圖1為本發(fā)明的總體流程圖。圖2為本發(fā)明步驟S6中確定k值的流程圖。圖3為本發(fā)明實施例中詞頻統(tǒng)計部分結(jié)果。圖4為本發(fā)明采用skip語言模型訓(xùn)練方式對4元組短語進行skip處理后得到的中文詞匯表各階短語數(shù)量與處理前各階短語數(shù)量的比較。具體實施方式以下結(jié)合說明書附圖和具體實例數(shù)據(jù)對本發(fā)明的方法做進一步詳細說明。應(yīng)理解這些實例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。skip語言模型訓(xùn)練實例中n=4,對4元組短語(ABCD)進行skip操作生成新的3元組短語(ABD/ACD),從而擴充3階短語表。如圖1為skip語言模型訓(xùn)練的總體流程圖,首先通過步驟S1和步驟S2對中文句子進行前期格式處理,生成能夠用于統(tǒng)計和訓(xùn)練的標(biāo)準(zhǔn)語料數(shù)據(jù)學(xué)習(xí)集;然后通過步驟S3和步驟S4對中文句子進行詞匯和短語信息的統(tǒng)計工作,用于skip過程的跳過判斷和訓(xùn)練過程中概率的計算;接著通過步驟S5和步驟S7進行skip過程,由原始的1-n元短語表pt0中抽取n階短語,進行選擇性skip操作生成skip短語表pt1,pt0與pt1合并得到用于訓(xùn)練的合并短語表pt2;最后使用IRSTLM工具進行語言模型的訓(xùn)練,選取Kneser-Ney平滑算法進行平滑處理,得到語言模型。具體實施步驟如下:S1.收集語料,收集用于語言模型訓(xùn)練的中文句子,形成語料庫。使用網(wǎng)絡(luò)爬蟲技術(shù)在新聞網(wǎng)站爬取新聞?wù)Z料,只保留文本,以句子作為基本單位,各句子之間以回車符分開。本實施例中從爬取數(shù)據(jù)中提取10萬句新聞中文句子作為語言模型訓(xùn)練數(shù)據(jù)。S2.對步驟S1得到的新聞?wù)Z料庫中的中文句子進行中文分詞。首先需要對中文句子進行分詞,選用雙向匹配法,切分的詞語之間用空格分隔。具體包括以下步驟:S21.準(zhǔn)備中文詞典:在互聯(lián)網(wǎng)上下載盡可能全面的詞典文件,讀取詞典中所有詞匯存儲到set集合中,取詞典中最長詞匯的字?jǐn)?shù)L作為最大匹配字?jǐn)?shù)。S22.進行正向最大匹配分詞,獲得分詞結(jié)果Rf。讀入語料中的一個句子,首先從句首截取L個漢字串,在詞典中搜索:如果詞典中存在該詞匯,分出該詞匯,在后面截取L個漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續(xù)在詞典中搜索,直到切分出一個詞或剩余字串的長度為零為止;例1,詞典中最長詞匯的字?jǐn)?shù)L=5,對“國土資源部計劃開發(fā)商圈”進行正向最大匹配分詞:第1輪搜索:“國土資源部”,掃描詞典,有該詞;第2輪搜索:“計劃開發(fā)商”,掃描詞典,無該詞;“計劃開發(fā)”,掃描詞典,無該詞;“計劃開”,掃描詞典,無該詞;“計劃”,掃描詞典,有該詞;第3輪搜索:“開發(fā)商圈”,掃描詞典,無該詞;“開發(fā)商”,掃描詞典,有該詞;第4輪搜索:“圈”,掃描詞典,有該詞;正向最大匹配分詞結(jié)果Rf為“國土資源部計劃開發(fā)商圈”。S23.進行逆向最大匹配分詞,獲得分詞果Rb。步驟和S22類似,讀入語料中的一個句子,首先從句尾截取L個漢字串,在詞典中搜索:如果詞典中存在該詞匯,分出該詞匯,在前面截取L個漢字串,繼續(xù)在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續(xù)在詞典中搜索,直到切分出一個詞或剩余字串的長度為零為止;例如,詞典中最長詞匯的字?jǐn)?shù)L=5,對“國土資源部計劃開發(fā)商圈”進行逆向最大匹配分詞,得到結(jié)果Rb為“國土資源部計劃開發(fā)商圈”。S24.根據(jù)詞粒度選取分詞結(jié)果。依照大顆粒度詞越多越好、非詞典詞和單字詞越少越好的原則,選取Rf和Rb中一個結(jié)果作為最終分詞結(jié)果。例如,根據(jù)前兩步例子中結(jié)果Rf和Rb,二者詞匯數(shù)量相同,Rb中單詞詞少,所以選取Rb為最后總分詞結(jié)果。S3.對步驟S2分詞后數(shù)據(jù)進行規(guī)范化處理,生成學(xué)習(xí)集corpus。生成訓(xùn)練需要的標(biāo)準(zhǔn)輸入格式。具體步驟如下:S31.tokenisation:遍歷中文句子中所有句子,在詞匯和標(biāo)點之間插入空格,添加句子起始標(biāo)志“<s>”和結(jié)束標(biāo)志“</s>”。S32.truecasing:根據(jù)詞典,將語料庫中每句中文句子的字和詞組都轉(zhuǎn)換為沒有格式的形式,例如將所有大寫字母轉(zhuǎn)換為小寫字母。S33.cleaning:設(shè)置中文句子最大長度限制,將長語句和空語句刪除。這里設(shè)置lengthMax=100,遍歷語料庫,將所有詞匯數(shù)量大于100的句子刪掉。例2:以語料庫中某個句子為例,步驟S2分詞后的句子:“地處西北邊陲的伊犁是我國對外開放的重要窗口,改革開放以來,伊犁經(jīng)濟獲得長足發(fā)展,人民生活水平迅速提高?!睂溥M行步驟S3處理,得到的結(jié)果是:“<s>地處西北邊陲的伊犁是我國對外開放的重要窗口,改革開放以來,伊犁經(jīng)濟獲得長足發(fā)展,人民生活水平迅速提高。</s>”。S4.統(tǒng)計學(xué)習(xí)集corpus中的詞匯和詞頻,生成中文詞匯表wt。遍歷步驟S3處理后句子,每遇到一個新詞匯a,將a寫進中文詞匯表中,初始化出現(xiàn)次數(shù)c為1;遍歷到出現(xiàn)過的詞匯時,操作對應(yīng)詞匯的出現(xiàn)次數(shù)執(zhí)行c=c+1操作,直至遍歷整個語料結(jié)束。然后按照出現(xiàn)數(shù)量降序排序,形成中文詞匯表wt。經(jīng)過步驟S4對步驟S3結(jié)果進行詞頻統(tǒng)計,得到中文詞匯表wt的部分內(nèi)容如下:的9260,3624……系統(tǒng)2424程序1619作用608……伯仲之間1會計師事務(wù)所1S5.統(tǒng)計中文詞匯表wt中短語和短語出現(xiàn)的次數(shù),生成1-4元短語表pt0。n元表示詞組中有n個詞匯,例如“今天”是1元短語,“今天天氣”是2元短語,“今天天氣晴朗”是3元短語。pt0中1元短語表和步驟S4的中文詞匯表wt相同,即將單個詞匯看成短語;設(shè)起始詞匯為w1,分別添加w1后面1個、2個、3個詞匯,組成2元、3元和4元詞組作為短語;遍歷語料庫,對每個詞匯上述操作,找到所有n(n≤4)元短語,并統(tǒng)計出現(xiàn)次數(shù),統(tǒng)計過程和步驟S4中詞匯詞頻統(tǒng)計方法相同;列舉所有n元短語并統(tǒng)計每個短語出現(xiàn)的次數(shù),生成中文短語表pt0。S6.設(shè)定選擇性跳過的選擇標(biāo)準(zhǔn)k。根據(jù)步驟S3中中文詞匯表wt的詞頻統(tǒng)計結(jié)果進行k的判斷,當(dāng)詞匯的出現(xiàn)次數(shù)k不大于i的所有詞匯數(shù)量之和占全部詞匯數(shù)量的60%以上時,取k=i。圖2展示了k值選取的流程,具體步驟如下:S61.統(tǒng)計中文詞匯表wt中出現(xiàn)的總詞匯數(shù)量s。S62.初始化詞匯出現(xiàn)次數(shù)i=1S63.計算詞頻比例r,即詞匯表中出現(xiàn)次數(shù)不大于i的所有詞匯的數(shù)量之和count(wi)與s的比例:r=count(wi)s;]]>S64.進行判定,當(dāng)r≤60%時,i=i+1,轉(zhuǎn)到步驟S62;當(dāng)r>60%時,取k=i,結(jié)束。以本實施例中10萬句語料為例:1)詞匯總數(shù)s=53710;2)i=1時,count(w1)=21015,計算3)i=2,count(w2)=28226,計算r=52.6%<60%;4)i=3,count(w3)=31688,計算r=59.0%<60%;5)i=4,count(w3)=34905,計算r=65.0%>60%,取k=i。;滿足r>60%條件是k=4,代表詞頻在4及以上的詞語占詞語總量的40%,已經(jīng)能夠排除大部分稀少詞匯。k的選取決定了擴展后語料的質(zhì)量,對skip模型的建立很重要,將詞頻作為判定標(biāo)準(zhǔn)的依據(jù)為:根據(jù)句子主干詞匯的分析經(jīng)驗和一元組的詞頻統(tǒng)計發(fā)現(xiàn):大多數(shù)能作為主語、謂語、賓語等常用句子主要成分的詞匯的詞頻都比較大,這些詞語作為句子主干不應(yīng)該在抽取過程中被跳過;一些專有名詞和修飾程度的量詞等詞語往往詞頻很小,也正是造成數(shù)據(jù)稀疏問題的重要原因。根據(jù)本實施例,圖3展示了本實施例中10萬句語料的詞匯統(tǒng)計的部分信息,可見詞頻較小的詞匯一般都是很專有的詞匯或者成語,容易造成數(shù)據(jù)稀疏問題。10萬句中共獲得中文詞匯53710個,可以看出各段詞頻的詞匯特點如下:1.出現(xiàn)次數(shù)在100次以上的詞有2718個,占詞匯總量的5%,出現(xiàn)20次以上的詞有8168個,占詞匯總量的15.2%,這些詞大部分是新聞中經(jīng)常用到的詞(如圖3a),數(shù)量最多的詞“的”出現(xiàn)134334次;2.只出現(xiàn)過1次的詞有21015個,占詞匯總量的39%;出現(xiàn)3次以下的詞共31688個,占詞匯總量的59%;這些大部分是名稱、時間等詞語(如圖3b,圖中左邊數(shù)字是詞語的序列,右邊數(shù)字是詞頻)。S7.根據(jù)步驟S6中的k=4對中文語料進行選擇性跳過處理,生成skip短語表pt1。即初始化pt1;待跳詞匯w選擇n階短語中首尾兩詞之外的中間詞匯,當(dāng)詞匯w的詞頻大于k時,被判定為不適合被跳過,保留詞匯w不做處理;當(dāng)詞匯w的詞頻小于k時,被判定為適合被跳過,跳過詞匯w并將剩下的低階短語添加到短語表pt1中;按照這個步驟完成所有中間詞匯的選擇性跳過處理,統(tǒng)計新短語出現(xiàn)的次數(shù),生成新的skip短語表pt1。S71.首先從步驟S5得到的pt0中抽取所有4元短語(ABCD);S72.對所有4元短語中首尾詞匯(A和D)以外的詞匯w(B和C)進行跳過判斷:當(dāng)詞匯w的詞頻Nw滿足Nw≥k時,詞匯w為高頻詞匯,不適合被跳過,保留詞匯w不做處理;當(dāng)詞匯w的詞頻Nw滿足Nw<k時,詞匯w為低頻詞匯,適合被跳過,則刪除詞匯w并將剩下的低階短語(ABD或ACD)添加到短語表pt1中;S73.按照步驟S71和步驟S72完成所有中間詞匯的選擇性跳過處理,統(tǒng)計新短語出現(xiàn)的次數(shù),生成新的skip短語表pt1。以句子“國土資源部計劃開發(fā)商圈”為例,假設(shè)其中各個詞的詞頻如下,生成skip短語表pt1的過程為:1)首先按照步驟S5生成中文短語表pt0;pt0中的4元短語(ABCD)為:{國土資源部計劃開發(fā)商圈};pt0中的3元短語(ABC和BCD)為:{國土資源部計劃開發(fā)}、{計劃開發(fā)商圈};2)對詞B“計劃”進行skip判斷,NB=3<k=4,“計劃”是低頻詞匯,可以被skip;3)對詞C“開發(fā)”進行skip判斷,NC=5>k=4,“開發(fā)”是高頻詞匯,不能被skip,刪除“開發(fā)”,將{國土資源部開發(fā)商圈}(ACD)添加到pt1中;skip操作后生成的pt1包含新3元短語:{國土資源部開發(fā)商圈}。S8.將S5生成的pt0和S7生成的pt1合并,生成合并短語表pt2。將pt1中n-1元短語合并到pt0中,重新統(tǒng)計短語頻數(shù),組成新短語表pt2,其中包含了skip之后的更多的語言信息,對3元短語進行了補充,變相擴大了語料庫的規(guī)模。圖4展示了進行skip操作后語料庫1-4元短語的數(shù)量變化,本實施例中對4元短語中的B和C詞匯進行選擇性跳過,得到的ABD或ACD短語添加到pt0中3元短語中,3元短語數(shù)量由253955增加到395743。S9.根據(jù)步驟S8中生成的合并短語表pt2進行語言模型的訓(xùn)練,生成語言模型文件。訓(xùn)練可采用開源語言模型工具包IRSTLM,平滑方式采用Kneser-Ney平滑算法,執(zhí)行語言模型時設(shè)置參數(shù)order為4,參數(shù)s為improved-kneser-ney。具體訓(xùn)練步驟如下:S91.定義詞w的歷史計數(shù):N1+(gw)=|{wi:count(wiw)>0}|;N1+(gw)表示語料庫中詞匯w在多少個詞匯后面出現(xiàn)過,符號“g”代表出現(xiàn)在w之前出現(xiàn)過的任意一個詞匯;定義詞序列的歷史計數(shù):N1+(gwi-n+2i)=|{wi-n+1:count(wi-n+1wi-n+2i)>0}|;]]>表示詞序列在多少個詞匯后面出現(xiàn)過。遍歷pt2表中的1-n元短語,利用上述公式計算pt2中每個詞匯和短語的歷史計數(shù)N1+。S92.使用歷史計數(shù)代替n-gram語言模型訓(xùn)練中的原始計數(shù),定義一元文法的概率計算公式為:pKN(w)=N1+(gw)ΣwiN1+(gwi);]]>推廣到n元文法有:pKN(wi|wi-n+2i-1)=N1+(gwi-n+2i)ΣwiN1+(gwi-n+2i-1);]]>利用上述公式計算pt2中每個詞匯和短語的計數(shù)概率。S93.有了步驟S91和步驟S92的準(zhǔn)備,根據(jù)Kneser-Ney平滑算法公式:pKN(wi|wi-n+1i-1)=max{c(wi-n+1i)-D,0}Σwic(wi-n+1i)+Dc(wi-n+1i)N1+(wi-n+1i-1g)pKN(wi|wi-n+2i-1);]]>計算語言模型的概率。其中D(0≤D≤1)是一個固定數(shù)值,c為count,這里由下式計算:D=N1N1+2N2;]]>其中Ni是精確計數(shù)為i的n元短語的個數(shù)。按照上述Kneser-Ney平滑算法公式對pt2中每個詞匯和短語進行計算,得到語言模型概率表,即語言模型文件。本發(fā)明在傳統(tǒng)n-gram語言模型訓(xùn)練的基礎(chǔ)上,提出一種基于詞頻的skip語言模型的訓(xùn)練方法。該方法根據(jù)中文詞匯表的詞頻選擇跳過標(biāo)準(zhǔn)k進行詞匯的選擇性刪除,從n元短語中抽取包含更多n-1元短語,擴充了原語料庫中沒有的語言學(xué)知識,達到在不擴充原有語料庫的情況下擴展了中文語料的效果,這些擴展語料中包含一些不連續(xù)的短語信息,對語言知識的訓(xùn)練起到一定的完善作用。本發(fā)明選取Kneser-Ney作為平滑方法是因為Kneser-Ney在n=4時語言模型的訓(xùn)練中有更好的效果,得到的語言模型困惑度更低,是目前適用最廣泛的平滑方法。這里所述的實例為了幫助讀者理解本發(fā)明的思想和愿意。應(yīng)別理解為發(fā)明的保護范圍并不是局限于以上的實例和陳述。凡是根據(jù)以上的描述進行相應(yīng)的可能的替換和改變,均被認(rèn)為是本發(fā)明權(quán)利保護范圍之內(nèi)。當(dāng)前第1頁1 2 3