對於很多自然語言處理領域的問題,比如機器翻譯,處理要確定**結果中的字詞集合以外,還有乙個非常重要的方面就是要評估文字序列是否符合人類使用的習慣。也就是要判斷文字是否通順、自然、甚至在翻譯問題上,「信」、「達」、「雅」是一種高階的要求。語言模型就是用於評估文字符合語言使用習慣程度的模型。
要讓機器來評估文字是否符合人類的使用習慣,一種方式是通過語言學方面的研究,制定出人類語言的正規化,比如:陳述句是由主謂賓構成的、定語修飾語需要加在名詞前面等等。然而,所有人類語言的共同特點就是字詞組合具有非常大的靈活性,同一語義可以有多種表達方式,甚至許多二義性的語言帶來了幽默的成分,是喜劇的重要組成部分。這種靈活性對規則的制定帶來了巨大的難題。
n-gram是一種基於統計語言模型的演算法。它的基本思想是將文字裡面的內容按照位元組進行大小為n的滑動視窗操作,形成了長度是n 的位元組片段序列。
每乙個位元組片段稱為gram,對所有gram的出現頻度進行統計,並且按照事先設定好的閾值進行過濾,形成關鍵gram列表,也就是這個文字的向量特徵空間,列表中的每一種gram就是乙個特徵向量維度。
該模型基於馬爾科夫假設即:假設在一段文字中,第n個詞的出現只與前面n-1個詞相關,而與其他任何詞都不相關。基於這樣一種假設,可以評估文字中每乙個詞出現的概率,整句的概率就是各個詞出現概率的乘積。這些概率可以通過直接從語料中統計n個詞同時出現的次數得到。常用的二元的bi-gram和三元的tri-gram.
假定s表示乙個有意義的句子,它由一串特定順序排列的詞(
w1,w2,...,
wm)組成,m表示句子的長度,即單詞個數。計算s在整個語料庫中出現的可能性p(s),或表示成p(
w1,w2,...,
wm),可根據鏈式法則分解為:
當n=1時,乙個一元模型(unigram model)即為:
當n=2時,乙個二元模型(bigram model)即為:
當n=3時,乙個三元模型(trigram model)即為:
對於每乙個詞出現的條件概率,可以通過在預料庫中統計計數的方式得出。則n元模型:
式中,c(
wi-(n-1),w
i-(n-2)
,......,
wi-1,w
i)表示字串w
i-(n-1),w
i-(n-2)
,......,
wi-1,w
i出現在語料庫中的次數。
根據上述模型定義可以看出:
當n越小時,模型只考慮領近詞語之間的關係。尤其是對於n=1時的特殊情況,被稱之為unigram,此時對於每乙個詞的概率評估實際上與文字的上下文無關,僅與當前詞語在語料庫中出現的概率有關,但人們不會以乙個詞乙個詞的方式交流,而是要以詞組成句子和段落,所以要**乙個詞是否出現,需要考慮上下文中的更多詞,即增大n 的取值,以捕捉更多的有用資訊。
然而,另一方面,當n越大時,雖然模型會考慮更長距離的上下文之間的關聯關係,但隨著n的取值增大,語言模型的引數越多,將導致引數空間過大到無法估算。若詞表集合為v,其中單詞數量為|v|,則由這些詞組成的n元組合的數目為|v|^n,也就是說,組合數目會隨著n的增大呈指數級的增長。同時,對於一條用於訓練的詞序列長度為1語料資料,可以提供的n元詞語組合的總數為(l-n+1)。
根據zipf定律,少量詞語佔據了大部分的出現頻次,若去除掉重複出現的n元組合,語料資料能提供的資訊將更少。相對於語言模型的引數估計需求來說,語料資料是非常稀疏的。除非有海量的各種型別的語料資料,負責大量的n元組合都不曾在訓練語料中出現過,依據最大似然估計得到的概率將會是0,也就是說模型可能僅僅能計算廖廖幾個句子。
針對上述出現的問題,許多學者提出了很多不同的平滑方案進行估計,比如加一平滑(add one smoothing)、good-turing平滑、katz's back-off平滑,以及插值模型等。
在實際應用方面來看,最常用是二元、三元模型。
那麼原理是什麼呢?也就是輸入:「自然」的時候,後面的「博物館」、「拼讀法」......這些備選詞是怎麼出來的,又是怎麼排序的呢?
排序過程就是:
自然語言處理(N gram語言模型)
n gram語言模型 問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用...
自然語言處理中的N Gram模型詳解
n gram 有時也稱為n元模型 是自然語言處理中乙個非常重要的概念,通常在nlp中,人們基於一定的語料庫,可以利用n gram來預計或者評估乙個句子是否合理。另外一方面,n gram的另外乙個作用是用來評估兩個字串之間的差異程度。這是模糊匹配中常用的一種手段。本文將從此開始,進而向讀者展示n gr...
自然語言處理 n gram模型深度理解
n gram模型是自然語言處理裡面的乙個傳統模型。我們來看看他是怎麼實現的吧!要了解n gram模型,我們先來看看什麼是語言模型!the students opened their 其中可以填寫books laptops exam minds 那麼語言模型就是用來 這個空當中應該填寫什麼單詞。語言模...