官术网_书友最值得收藏!

2.2 n-gram統計語言模型

2.2.1 何為n-gram模型

n-gram,即n元組表示法,是一種基于統計的語言模型算法。其基本思想是將一個長文檔的內容按照大小為n的窗口進行截取,形成長度為n的詞序列。每一個詞序列可被稱為一個gram。不同的gram代表特征向量中不同的維度,所有的gram組成整個長文檔的特征空間。換句話說,n-gram是通過將文本拆分成長度為n的詞序列來建立概率模型,通過計算每個gram出現的頻率,來預測下一個詞或句子的概率。n-gram模型廣泛應用于文本分類、機器翻譯、語音識別、信息檢索等自然語言處理領域。

n-gram統計語言模型常常用于評估詞序列是否合理。比方說,給定一個句子“這是一個句子”,那么依據一元(unigram)統計語言模型,則gram為“這、是、一、個、句、子”,特征維度為6。如果依據二元(bigram)統計語言模型,gram為“這是、是一、一個、個句、句子”,其特征維度為5。不同的gram組成特征向量中的不同特征維度。

2.2.2 n-gram語言模型評估詞序列

相比于式(2.2),n-gram提供了更加簡單的建模語言的方法。對于任意長度的一個語句,可引入馬爾可夫假設(Markov assumption)[2],即假設當前詞出現的概率只依賴于前n-1個詞,可得到P(wi|w1,…,wi-1)≈P(wi|wi-n-1,…,wi-1)。根據上述表達式,n-gram語言模型可定義為

n>1時,為使句首詞的條件概率有意義,需要給原始的詞序列上加入一個或多個起始符,通過起始符來對句首詞出現的概率進行表征。以trigram語言模型為例,它使用的是二階馬爾可夫假設,即。對于P(wi|wi-2,wi-1),與上述通過語言模型的計算方式類似,可通過計算詞塊出現的次數來求得概率:

式中,c(wi-2,wi-1,wi)和c(wi-2,wi-1)分別表示詞塊(wi-2,wi-1,wi)和(wi-2,wi-1)在訓練集中出現的次數。引入馬爾可夫假設計算后驗概率P,可以提高語言模型的泛化能力,再根據訓練數據集對詞塊出現次數進行計算,最終可求得后驗概率。

2.2.3 n-gram統計語言模型的應用

在使用各種搜索引擎如Google或百度時,在輸入某個關鍵詞后,搜索引擎會根據關鍵詞進行猜想或者提示,出現圖2.1所示的多個備選查詢目標。這些備選查詢目標就是根據所輸入的關鍵詞進行下文預測的結果。

圖2.1的排序結果可通過n-gram語言模型得到。假設通過二元語言模型對“自然語言”這一詞塊進行下一個詞的預測,通過該結果可推測出語言模型的概率計算結果為P(分析|自然語言)>P(生成|自然語言)>…>P(是什么|自然語言),從而按概率大小的順序返回搜索結果的提示。類似地,輸入法中的自動聯想功能也是應用了語言模型的原理。

2.2.4 n-gram模型中n對性能的影響

n更大時,整個詞塊中的詞數越多,對下一個詞的出現約束性越強,有更強的語義表達能力。但會使n-gram總數大幅增加,特征維度變大,從而變得更加復雜和計算密集,語義表示更加稀疏。

圖2.1 Google上對于關鍵詞“自然語言”的搜索結果

n更小時,每個gram在訓練語料庫中出現的次數會增多,語言模型可以獲得更可靠的統計結果。但由于每個gram中的詞數減少,約束信息更少。表2.1展示n的大小對n-gram個數的影響。

表2.1 詞表中詞的個數為20000詞下,不同n對應的n-gram個數

此處以語料“我愛自然語言處理”為例。它的詞匯表中只包含三個詞,即“我”“愛”“自然語言處理”。如果采用bigram語言模型,那么gram的個數為32=9個;如果采用trigram語言模型,那么gram的個數為33=27個。可以看到,隨著n的增大,gram的個數呈指數上升。

上文提到,n-gram模型中的每一個不同的gram(wi|wi-n-1,…,wi-1)都代表模型中的一個參數,可視為特征向量的不同維度。由于gram個數隨著指數的增加而快速增加,大量的參數在訓練集中從未出現過,也就是說,c(wi|wi-n-1,…,wi-1)=0。這導致在預測時,很多句子的概率被預測為0。目前,已有大量的研究工作對該情況進行探索,其中最簡單的方法是將所有詞組的出現次數加1以做平滑處理。

2.2.5 n-gram模型小結

n-gram缺乏長期依賴,只能建模到前n-1個詞。隨著n的增大,詞的量急劇增大,參數空間(特征向量維度)呈指數爆炸,容易出現數據稀疏的問題。并且由于只對訓練語料進行詞塊頻次上的統計,盡管可以使得學習過程簡單高效,但泛化能力較差,依然沒有能夠處理字詞之間的關系問題。

但總體而言,n-gram能夠對語義進行很好的表示,這是因為n-gram統計語言模型采用極大似然估計法,有數學理論作為支撐,且參數易訓練,與此同時,根據窗口的大小,gram包含前n-1個詞的全部信息,增加了前后文信息,考慮了文本字詞之間的順序問題,能夠對語義進行很好的表示。進一步地,n-gram模型的可解釋性強,直觀易理解。所以,n-gram被廣泛使用。下一章將介紹使用深度神經網絡來建模的語言模型,它可以捕捉到更長的上下文信息以及更深層次的語義,是現代自然語言處理廣泛使用的建模語言模型。

主站蜘蛛池模板: 中宁县| 蓬安县| 方正县| 湛江市| 海盐县| 麻栗坡县| 集安市| 镶黄旗| 秦安县| 灵宝市| 寻甸| 湘潭市| 白城市| 连平县| 乐东| 普宁市| 囊谦县| 霍林郭勒市| 汾阳市| 新田县| 湖北省| 忻城县| 哈密市| 天全县| 班玛县| 天祝| 临潭县| 房山区| 内丘县| 英超| 尚义县| 酒泉市| 监利县| 吉林省| 昌黎县| 福州市| 蛟河市| 若尔盖县| 清镇市| 扬中市| 恭城|