• / 16
  • 下載費用:30 金幣  

一種基于詞頻的SKIP語言模型的訓練方法.pdf

摘要
申請專利號:

CN201610522055.8

申請日:

2016.06.30

公開號:

CN106257441A

公開日:

2016.12.28

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 17/27申請日:20160630|||公開
IPC分類號: G06F17/27 主分類號: G06F17/27
申請人: 電子科技大學
發明人: 秦科; 劉貴松; 段貴多; 羅光春
地址: 611731 四川省成都市高新區(西區)西源大道2006號
優先權:
專利代理機構: 成都弘毅天承知識產權代理有限公司 51230 代理人: 徐金瓊
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201610522055.8

授權公告號:

||||||

法律狀態公告日:

2019.03.15|||2017.01.25|||2016.12.28

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公開了一種基于詞頻的skip語言模型的訓練方法,涉及機器翻譯技術領域,解決現有技術中由于語料缺乏引起統計語言模型的OOV的問題。本發明為收集中文句子;中文句子分詞;生成學習集corpus;統計學習集corpus中的詞匯和詞頻,生成中文詞匯表wt;統計語料中短語和短語出現的次數,生成1?n元中文短語表pt0;設定選擇性跳過標準k,根據中文詞匯表wt中的詞頻統計結果進行k的判斷,出現次數k不大于i的所有詞匯數量之和占全部詞匯數量的60%以上時,取k=i;根據k對中文句子進行選擇性跳過處理,生成skip短語表pt1;將skip短語表pt1和中文短語表pt0合并,生成新的1?n元中文短語表pt2;根據中文短語表pt2進行語言模型的訓練,得到skip?ngram語言模型。本發明用于得到語言模型概率表。

權利要求書

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

說明書

一種基于詞頻的skip語言模型的訓練方法

技術領域

一種基于詞頻的skip語言模型的訓練方法,用于得到語言模型概率表,涉及機器
翻譯技術領域,尤其涉及于語料庫的漢語統計語言模型的訓練方法的技術領域。

背景技術

語言模型是統計機器翻譯技術中的基本概率模型之一,用來評價譯文句子出現某
種詞序列的可能性,關系到譯文句子(譯文詞序列)的流暢程度。語言模型概率越高,表示譯
文越合法、流暢、符合語言規律。假設w1、w2表示兩個詞匯,p(w2|w1)表示w2出現在w1后面的
概率,即詞組w1w2可能出現的概率;根據語言學知識,詞組“吃面吧”出現的可能性會明顯大
于詞組“吃飛機”,因此語言模型中p(面包|吃)的值應該大于p(飛機|吃)。目前語言模型都
是根據馬爾科夫假設(Markov Assumption)進行建模,認為只有前面有限數量(i)個的詞匯
會影響到下一個詞匯的概率,則句子T(詞序列w1,w2,w3,...,wm)出現的概率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)計算方式為:

<mrow> <mi>p</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>m</mi> </msub> <mo>|</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>...</mo> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>...</mo> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>&Sigma;</mi> <mi>w</mi> </msub> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>...</mo> <mo>,</mo> <msub> <mi>w</mi> <mrow> <mi>m</mi> <mo>-</mo> <mn>2</mn> </mrow> </msub> <mo>,</mo> <mi>w</mi> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow>

分子count(wm-i,wm-i+1,...,wm-1)是詞序列wm-i,wm-i+1,...,wm-1在語料中出現的次
數,分母count(wm-i,wm-i+1,...,wm-2,w)表示詞序列(wm-i,wm-i+1,...,wm-2+任意詞匯w)在語料
中出現的次數。

當前統計語言模型的使用面臨的主要問題是數據稀疏造成的OOV(out of
vocabulary)問題,這是統計模型中經常會遇到的問題,一般是由數據量的不足造成的。對
于自然語言處理來說,已有的語料庫雖然已經很龐大,但是與歷史上人類產生的語言量是
無法相比的,語料數據不可能涵蓋所有可能形成的句子。當使用語言模型來進行這些未記
錄句子T的概率預測時,很可能會造成預測概率P(T)=0,零概率表示這種語言情況根本不
會出現,是錯誤的。語言模型一般用于機器翻譯領域,零概率出現會導致翻譯結果不準確。
目前存在一些平滑算法對語言模型進行平滑處理,使語言模型對句子的預測中不會出現零
概率事件。平滑算法都是對概率計算過程進行補充和改善,但是自然語言的變化各異一般
是由語言使用者形成語句時的環境不同造成的,如時間、地點、事物等,這需要對語料本身
進行研究和處理。因此,需要一種在語料庫方面進行改善的語言模型訓練方法,配合已有平
滑算法得到質量更高的語言模型。

發明內容

本發明針對上述不足之處提供了一種基于詞頻的skip語言模型的訓練方法,解決
現有技術中由于語料缺乏引起統計語言模型的OOV的問題。

為了實現上述目的,本發明采用的技術方案為:

一種基于詞頻的skip語言模型的訓練方法,其特征在于,包括以下步驟:

S1.收集語料,收集用于語言模型訓練的中文句子,形成語料庫;

S2.中文句子分詞:將語料庫中每個中文句子切分成一個一個單獨的詞語,詞語之
間用空格分隔;

S3.生成學習集corpus:將語料庫中所有的中文句子生成訓練需要的標準輸入格
式;

S4.統計學習集corpus中的詞匯和詞頻,生成中文詞匯表wt,即遍歷所有語料庫中
的中文句子,列舉其中出現的所有詞匯和標點,統計這些詞匯和標點的出現數量,形成中文
詞匯表wt;

S5.統計中文詞匯表wt中短語和短語出現的次數,生成1-n元中文短語表pt0,即按
照n-gram方式,根據選擇n值的不同,列舉所有n元短語并統計每個短語出現的次數,生成中
文短語表pt0;

S6.設定選擇性跳過標準k,根據中文詞匯表wt中的詞頻統計結果進行k的判斷,當
詞匯的出現次數k不大于i的所有詞匯數量之和占全部詞匯數量的60%以上時,取k=i;

S7.根據步驟S6中k對中文句子進行選擇性跳過處理,生成skip短語表pt1;

S8.將skip短語表pt1和中文短語表pt0合并,生成新的1-n元中文短語表pt2;

S9.根據步驟S8中生成的中文短語表pt2進行語言模型的訓練,得到skip-ngram語
言模型。

進一步,所述步驟S2的具體步驟為:

S21.準備中文詞典:在互聯網上下載盡可能全面的詞典文件,讀取詞典中所有詞
匯存儲到set集合中,取詞典中最長詞匯的字數L作為最大匹配字數;

S22.進行正向最大匹配分詞,獲得分詞結果Rf:讀入語料庫中的一個中文句子,首
先從句首截取L個漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的
詞匯后面截取L個漢字串,繼續在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不
存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續在詞典中搜索,直到切分出一個
詞或剩余字串的長度為零為止;

S23.進行逆向最大匹配分詞,獲得分詞結果Rb:讀入語料庫中的一個中文句子,首
先從句尾截取L個漢字串,在詞典中搜索,如果詞典中存在該詞匯,分出該詞匯,在已分出的
詞匯前面截取L個漢字串,繼續在詞典中搜索,直到中文句子被掃描完為止;如果詞典中不
存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續在詞典中搜索,直到切分出一個
詞或剩余字串的長度為零為止;

S24.根據詞粒度選取分詞結果:依照大顆粒度詞越多越好、非詞典詞和單字詞越
少越好的原則,選取Rf和Rb中的一個結果作為最終分詞結果。

進一步,所述步驟S3的具體步驟為:

S31.tokenisation:遍歷語料庫中所有中文句子,在詞匯和標點之間插入空格,添
加句子起始標志“<s>”和結束標志“</s>”;

S32.truecasing:根據詞典,將語料庫中每句中文句子的字和詞組都轉換為沒有
格式的形式;

S33.cleaning:設置中文句子最大長度限制,將長語句和空語句刪除。

進一步,所述步驟S6的具體步驟為:

S61.統計中文詞匯表wt中出現的總詞匯數量s;

S62.初始化詞匯出現次數i=1;

S63.計算詞頻比例r,即中文詞匯表中出現次數不大于i的所有詞匯的數量之和
count(wi)與s的比例:

<mrow> <mi>r</mi> <mo>=</mo> <mfrac> <mrow> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> <mi>s</mi> </mfrac> <mo>;</mo> </mrow>

S64.進行判定:當r≤60%時,i=i+1,轉到步驟S62;當r>60%時,取k=i,結束。

進一步,所述步驟S7的具體步驟為:

S71.首先從步驟S5得到的pt0中抽取所有n元短語;

S72.初始化短語表pt1,對所有n元短語中首尾詞匯以外的詞匯w進行跳過判斷,當
詞匯w的詞頻Nw滿足Nw≥k時,詞匯w為高頻詞匯,不適合被跳過,保留詞匯w不做處理;當詞匯
w的詞頻Nw滿足Nw<k時,詞匯w為低頻詞匯,適合被跳過,則刪除詞匯w并將剩下的低階短語,
添加到短語表pt1中;

S73.按照步驟S71和步驟S72完成所有中間詞匯的選擇性跳過處理,統計新短語出
現的次數,生成新的skip短語表pt1。

進一步,所述步驟S9的具體步驟為:

S91.定義詞匯w的歷史計數:N1+(gw)=|{wi:count(wiw)>0}|;

N1+(gw)表示語料庫中詞匯w在多少個詞匯后面出現過,符號“g”代表出現在w之前
出現過的任意一個詞匯;

定義詞序列的歷史計數:

<mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mo>|</mo> <mo>{</mo> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>:</mo> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>&gt;</mo> <mn>0</mn> <mo>}</mo> <mo>|</mo> <mo>;</mo> </mrow>

表示詞序列在多少個詞匯后面出現過,

遍歷pt2表中的1-n元短語,利用上述公式計算pt2中每個詞匯和短語的歷史計數
N1+;

S92.使用歷史計數代替n-gram語言模型訓練中的原始計數,定義一元文法的概率
計算公式為:

<mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <mi>g</mi> <mi>w</mi> <mo>)</mo> </mrow> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>gw</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>

推廣到n元文法有:

<mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>

利用上述公式計算pt2中每個詞匯和短語的計數概率;

S93.根據步驟S91和步驟S92,利用Kneser-Ney平滑算法公式對pt2中每個詞匯和
短語進行概率計算,即計算語言模型的概率,得到語言模型概率表,即語言模型文件;

計算語言模型的概率的公式如下:

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>max</mi> <mo>{</mo> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mi>D</mi> <mo>,</mo> <mn>0</mn> <mo>}</mo> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>+</mo> <mfrac> <mi>D</mi> <mrow> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mi>g</mi> <mo>)</mo> </mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced>

其中D(0≤D≤1)是一個固定數值,計算公式如下:

<mrow> <mi>D</mi> <mo>=</mo> <mfrac> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <msub> <mi>N</mi> <mn>1</mn> </msub> <mo>+</mo> <mn>2</mn> <msub> <mi>N</mi> <mn>2</mn> </msub> </mrow> </mfrac> <mo>;</mo> </mrow>

其中Ni是精確計數為i的n元短語的個數。

與現有技術相比,本發明的優點在于:

一、本發明利用對中文句子的詞頻選擇性skip處理,從語料庫角度對語言模型進
行優化,變相擴大了語料資源,有利于減少數據稀疏問題、幫助模型獲取更多語言學知識;

二、本發明根據中文詞匯表的詞頻選擇跳過標準k進行詞匯的選擇性刪除,從n元
短語中抽取包含更多n-1元短語,擴充了原語料庫中沒有的語言學知識,達到在不擴充原有
語料庫的情況下擴展了中文語料的效果,這些擴展語料中包含一些不連續的短語信息,對
語言知識的訓練起到一定的完善作用;

三、本發明選取Kneser-Ney作為平滑方法是因為Kneser-Ney在語言模型的訓練中
有更好的效果,得到的語言模型困惑度更低。

附圖說明

圖1為本發明的總體流程圖。

圖2為本發明步驟S6中確定k值的流程圖。

圖3為本發明實施例中詞頻統計部分結果。

圖4為本發明采用skip語言模型訓練方式對4元組短語進行skip處理后得到的中
文詞匯表各階短語數量與處理前各階短語數量的比較。

具體實施方式

以下結合說明書附圖和具體實例數據對本發明的方法做進一步詳細說明。應理解
這些實例僅用于說明本發明而不用于限制本發明的范圍。

skip語言模型訓練實例中n=4,對4元組短語(ABCD)進行skip操作生成新的3元組
短語(ABD/ACD),從而擴充3階短語表。

如圖1為skip語言模型訓練的總體流程圖,首先通過步驟S1和步驟S2對中文句子
進行前期格式處理,生成能夠用于統計和訓練的標準語料數據學習集;然后通過步驟S3和
步驟S4對中文句子進行詞匯和短語信息的統計工作,用于skip過程的跳過判斷和訓練過程
中概率的計算;接著通過步驟S5和步驟S7進行skip過程,由原始的1-n元短語表pt0中抽取n
階短語,進行選擇性skip操作生成skip短語表pt1,pt0與pt1合并得到用于訓練的合并短語
表pt2;最后使用IRSTLM工具進行語言模型的訓練,選取Kneser-Ney平滑算法進行平滑處
理,得到語言模型。

具體實施步驟如下:

S1.收集語料,收集用于語言模型訓練的中文句子,形成語料庫。使用網絡爬蟲技
術在新聞網站爬取新聞語料,只保留文本,以句子作為基本單位,各句子之間以回車符分
開。本實施例中從爬取數據中提取10萬句新聞中文句子作為語言模型訓練數據。

S2.對步驟S1得到的新聞語料庫中的中文句子進行中文分詞。首先需要對中文句
子進行分詞,選用雙向匹配法,切分的詞語之間用空格分隔。具體包括以下步驟:

S21.準備中文詞典:在互聯網上下載盡可能全面的詞典文件,讀取詞典中所有詞
匯存儲到set集合中,取詞典中最長詞匯的字數L作為最大匹配字數。

S22.進行正向最大匹配分詞,獲得分詞結果Rf。讀入語料中的一個句子,首先從句
首截取L個漢字串,在詞典中搜索:

如果詞典中存在該詞匯,分出該詞匯,在后面截取L個漢字串,繼續在詞典中搜索,
直到中文句子被掃描完為止;

如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續在詞典中
搜索,直到切分出一個詞或剩余字串的長度為零為止;

例1,詞典中最長詞匯的字數L=5,對“國土資源部計劃開發商圈”進行正向最大匹
配分詞:

第1輪搜索:“國土資源部”,掃描詞典,有該詞;

第2輪搜索:“計劃開發商”,掃描詞典,無該詞;

“計劃開發”,掃描詞典,無該詞;

“計劃開”,掃描詞典,無該詞;

“計劃”,掃描詞典,有該詞;

第3輪搜索:“開發商圈”,掃描詞典,無該詞;

“開發商”,掃描詞典,有該詞;

第4輪搜索:“圈”,掃描詞典,有該詞;

正向最大匹配分詞結果Rf為“國土資源部 計劃 開發商 圈”。

S23.進行逆向最大匹配分詞,獲得分詞果Rb。步驟和S22類似,讀入語料中的一個
句子,首先從句尾截取L個漢字串,在詞典中搜索:

如果詞典中存在該詞匯,分出該詞匯,在前面截取L個漢字串,繼續在詞典中搜索,
直到中文句子被掃描完為止;

如果詞典中不存在該詞匯,去除第L個漢字,對剩下的L-1個漢字串,繼續在詞典中
搜索,直到切分出一個詞或剩余字串的長度為零為止;

例如,詞典中最長詞匯的字數L=5,對“國土資源部計劃開發商圈”進行逆向最大
匹配分詞,得到結果Rb為“國土資源部計劃開發商圈”。

S24.根據詞粒度選取分詞結果。依照大顆粒度詞越多越好、非詞典詞和單字詞越
少越好的原則,選取Rf和Rb中一個結果作為最終分詞結果。

例如,根據前兩步例子中結果Rf和Rb,二者詞匯數量相同,Rb中單詞詞少,所以選
取Rb為最后總分詞結果。

S3.對步驟S2分詞后數據進行規范化處理,生成學習集corpus。生成訓練需要的標
準輸入格式。具體步驟如下:

S31.tokenisation:遍歷中文句子中所有句子,在詞匯和標點之間插入空格,添加
句子起始標志“<s>”和結束標志“</s>”。

S32.truecasing:根據詞典,將語料庫中每句中文句子的字和詞組都轉換為沒有
格式的形式,例如將所有大寫字母轉換為小寫字母。

S33.cleaning:設置中文句子最大長度限制,將長語句和空語句刪除。這里設置
lengthMax=100,遍歷語料庫,將所有詞匯數量大于100的句子刪掉。

例2:以語料庫中某個句子為例,步驟S2分詞后的句子:“地處西北邊陲的伊犁是我
國對外開放的重要窗口,改革開放以來,伊犁經濟獲得長足發展,人民生活水平迅速提高。”

對例句進行步驟S3處理,得到的結果是:“<s>地處西北邊陲的伊犁是我國對外開
放的重要窗口,改革開放以來,伊犁經濟獲得長足發展,人民生活水平迅速提高。</s>”。

S4.統計學習集corpus中的詞匯和詞頻,生成中文詞匯表wt。遍歷步驟S3處理后句
子,每遇到一個新詞匯a,將a寫進中文詞匯表中,初始化出現次數c為1;遍歷到出現過的詞
匯時,操作對應詞匯的出現次數執行c=c+1操作,直至遍歷整個語料結束。然后按照出現數
量降序排序,形成中文詞匯表wt。

經過步驟S4對步驟S3結果進行詞頻統計,得到中文詞匯表wt的部分內容如下:


9260

3624


系統
2424
程序
1619
作用
608


伯仲之間
1
會計師事務所
1

S5.統計中文詞匯表wt中短語和短語出現的次數,生成1-4元短語表pt0。n元表示
詞組中有n個詞匯,例如“今天”是1元短語,“今天天氣”是2元短語,“今天天氣晴朗”是3元短
語。pt0中1元短語表和步驟S4的中文詞匯表wt相同,即將單個詞匯看成短語;設起始詞匯為
w1,分別添加w1后面1個、2個、3個詞匯,組成2元、3元和4元詞組作為短語;遍歷語料庫,對每
個詞匯上述操作,找到所有n(n≤4)元短語,并統計出現次數,統計過程和步驟S4中詞匯詞
頻統計方法相同;列舉所有n元短語并統計每個短語出現的次數,生成中文短語表pt0。

S6.設定選擇性跳過的選擇標準k。根據步驟S3中中文詞匯表wt的詞頻統計結果進
行k的判斷,當詞匯的出現次數k不大于i的所有詞匯數量之和占全部詞匯數量的60%以上
時,取k=i。圖2展示了k值選取的流程,具體步驟如下:

S61.統計中文詞匯表wt中出現的總詞匯數量s。

S62.初始化詞匯出現次數i=1

S63.計算詞頻比例r,即詞匯表中出現次數不大于i的所有詞匯的數量之和count
(wi)與s的比例:

<mrow> <mi>r</mi> <mo>=</mo> <mfrac> <mrow> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> <mi>s</mi> </mfrac> <mo>;</mo> </mrow>

S64.進行判定,當r≤60%時,i=i+1,轉到步驟S62;當r>60%時,取k=i,結束。

以本實施例中10萬句語料為例:

1)詞匯總數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%,已經能夠
排除大部分稀少詞匯。

k的選取決定了擴展后語料的質量,對skip模型的建立很重要,將詞頻作為判定標
準的依據為:根據句子主干詞匯的分析經驗和一元組的詞頻統計發現:大多數能作為主語、
謂語、賓語等常用句子主要成分的詞匯的詞頻都比較大,這些詞語作為句子主干不應該在
抽取過程中被跳過;一些專有名詞和修飾程度的量詞等詞語往往詞頻很小,也正是造成數
據稀疏問題的重要原因。

根據本實施例,圖3展示了本實施例中10萬句語料的詞匯統計的部分信息,可見詞
頻較小的詞匯一般都是很專有的詞匯或者成語,容易造成數據稀疏問題。10萬句中共獲得
中文詞匯53710個,可以看出各段詞頻的詞匯特點如下:

1.出現次數在100次以上的詞有2718個,占詞匯總量的5%,出現20次以上的詞有
8168個,占詞匯總量的15.2%,這些詞大部分是新聞中經常用到的詞(如圖3a),數量最多的
詞“的”出現134334次;

2.只出現過1次的詞有21015個,占詞匯總量的39%;出現3次以下的詞共31688個,
占詞匯總量的59%;這些大部分是名稱、時間等詞語(如圖3b,圖中左邊數字是詞語的序列,
右邊數字是詞頻)。

S7.根據步驟S6中的k=4對中文語料進行選擇性跳過處理,生成skip短語表pt1。
即初始化pt1;待跳詞匯w選擇n階短語中首尾兩詞之外的中間詞匯,當詞匯w的詞頻大于k
時,被判定為不適合被跳過,保留詞匯w不做處理;當詞匯w的詞頻小于k時,被判定為適合被
跳過,跳過詞匯w并將剩下的低階短語添加到短語表pt1中;按照這個步驟完成所有中間詞
匯的選擇性跳過處理,統計新短語出現的次數,生成新的skip短語表pt1。

S71.首先從步驟S5得到的pt0中抽取所有4元短語(ABCD);

S72.對所有4元短語中首尾詞匯(A和D)以外的詞匯w(B和C)進行跳過判斷:

當詞匯w的詞頻Nw滿足Nw≥k時,詞匯w為高頻詞匯,不適合被跳過,保留詞匯w不做
處理;

當詞匯w的詞頻Nw滿足Nw<k時,詞匯w為低頻詞匯,適合被跳過,則刪除詞匯w并將剩
下的低階短語(ABD或ACD)添加到短語表pt1中;

S73.按照步驟S71和步驟S72完成所有中間詞匯的選擇性跳過處理,統計新短語出
現的次數,生成新的skip短語表pt1。

以句子“國土資源部計劃開發商圈”為例,假設其中各個詞的詞頻如下,生成skip
短語表pt1的過程為:



1)首先按照步驟S5生成中文短語表pt0;

pt0中的4元短語(ABCD)為:{國土資源部計劃開發商圈};

pt0中的3元短語(ABC和BCD)為:{國土資源部計劃開發}、{計劃開發商圈};

2)對詞B“計劃”進行skip判斷,NB=3<k=4,“計劃”是低頻詞匯,可以被skip;

3)對詞C“開發”進行skip判斷,NC=5>k=4,“開發”是高頻詞匯,不能被skip,刪除
“開發”,將{國土資源部開發商圈}(ACD)添加到pt1中;

skip操作后生成的pt1包含新3元短語:{國土資源部開發商圈}。

S8.將S5生成的pt0和S7生成的pt1合并,生成合并短語表pt2。將pt1中n-1元短語
合并到pt0中,重新統計短語頻數,組成新短語表pt2,其中包含了skip之后的更多的語言信
息,對3元短語進行了補充,變相擴大了語料庫的規模。

圖4展示了進行skip操作后語料庫1-4元短語的數量變化,本實施例中對4元短語
中的B和C詞匯進行選擇性跳過,得到的ABD或ACD短語添加到pt0中3元短語中,3元短語數量
由253955增加到395743。

S9.根據步驟S8中生成的合并短語表pt2進行語言模型的訓練,生成語言模型文
件。訓練可采用開源語言模型工具包IRSTLM,平滑方式采用Kneser-Ney平滑算法,執行語言
模型時設置參數order為4,參數s為improved-kneser-ney。具體訓練步驟如下:

S91.定義詞w的歷史計數:

N1+(gw)=|{wi:count(wiw)>0}|;

N1+(gw)表示語料庫中詞匯w在多少個詞匯后面出現過,符號“g”代表出現在w之前
出現過的任意一個詞匯;定義詞序列的歷史計數:

<mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mo>|</mo> <mo>{</mo> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>:</mo> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>&gt;</mo> <mn>0</mn> <mo>}</mo> <mo>|</mo> <mo>;</mo> </mrow>

表示詞序列在多少個詞匯后面出現過。

遍歷pt2表中的1-n元短語,利用上述公式計算pt2中每個詞匯和短語的歷史計數
N1+。

S92.使用歷史計數代替n-gram語言模型訓練中的原始計數,定義一元文法的概率
計算公式為:

<mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>w</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <mi>g</mi> <mi>w</mi> <mo>)</mo> </mrow> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>gw</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>

推廣到n元文法有:

<mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>gw</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>

利用上述公式計算pt2中每個詞匯和短語的計數概率。

S93.有了步驟S91和步驟S92的準備,根據Kneser-Ney平滑算法公式:

<mrow> <mtable> <mtr> <mtd> <mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>max</mi> <mo>{</mo> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mi>D</mi> <mo>,</mo> <mn>0</mn> <mo>}</mo> </mrow> <mrow> <munder> <mo>&Sigma;</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> </munder> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>+</mo> <mfrac> <mi>D</mi> <mrow> <mi>c</mi> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </mfrac> <msub> <mi>N</mi> <mrow> <mn>1</mn> <mo>+</mo> </mrow> </msub> <mrow> <mo>(</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mi>g</mi> <mo>)</mo> </mrow> <msub> <mi>p</mi> <mrow> <mi>K</mi> <mi>N</mi> </mrow> </msub> <mrow> <mo>(</mo> <msub> <mi>w</mi> <mi>i</mi> </msub> <mo>|</mo> <msubsup> <mi>w</mi> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> <mo>+</mo> <mn>2</mn> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> <mo>;</mo> </mrow>

計算語言模型的概率。其中D(0≤D≤1)是一個固定數值,c為count,這里由下式計
算:

<mrow> <mi>D</mi> <mo>=</mo> <mfrac> <msub> <mi>N</mi> <mn>1</mn> </msub> <mrow> <msub> <mi>N</mi> <mn>1</mn> </msub> <mo>+</mo> <mn>2</mn> <msub> <mi>N</mi> <mn>2</mn> </msub> </mrow> </mfrac> <mo>;</mo> </mrow>

其中Ni是精確計數為i的n元短語的個數。

按照上述Kneser-Ney平滑算法公式對pt2中每個詞匯和短語進行計算,得到語言
模型概率表,即語言模型文件。

本發明在傳統n-gram語言模型訓練的基礎上,提出一種基于詞頻的skip語言模型
的訓練方法。該方法根據中文詞匯表的詞頻選擇跳過標準k進行詞匯的選擇性刪除,從n元
短語中抽取包含更多n-1元短語,擴充了原語料庫中沒有的語言學知識,達到在不擴充原有
語料庫的情況下擴展了中文語料的效果,這些擴展語料中包含一些不連續的短語信息,對
語言知識的訓練起到一定的完善作用。本發明選取Kneser-Ney作為平滑方法是因為
Kneser-Ney在n=4時語言模型的訓練中有更好的效果,得到的語言模型困惑度更低,是目
前適用最廣泛的平滑方法。

這里所述的實例為了幫助讀者理解本發明的思想和愿意。應別理解為發明的保護
范圍并不是局限于以上的實例和陳述。凡是根據以上的描述進行相應的可能的替換和改
變,均被認為是本發明權利保護范圍之內。

關 鍵 詞:
一種 基于 詞頻 SKIP 語言 模型 訓練 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于詞頻的SKIP語言模型的訓練方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6100747.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图