首先放一張基於language model的nlp主要模型演算法梳理框圖。
nlp語言模型可分為傳統語言模型與神經語言模型。
簡言之,語言模型就是給句子(詞序列)分配乙個概率。這個概率表示這句話「合理程度」。舉個例子:
你兒子在我手上,快點把打過來。 prob=0.80
# 這樣乙個句子,非常「通順」,就得到乙個很高的概率值。
川普在廁所裡擺滿了多個藝員。 prob=0.20
# 這樣乙個句子,非常「怪異」,也可能是有別字、語病的,就得到乙個很低的概率值。
把語言模型(詞序列-->概率)寫成公式:
上述公式使用了鏈式法則,即當前第n個詞用哪乙個,完全取決於前n-1個詞。有了上面的公式,我們就可以基於訓練語料,計算乙個句子的概率值了。
常見的概率模型有:n-gram 模型、決策樹、最大熵模型、隱馬爾可夫模型、條件隨機場、神經網路等,目前常用於語言模型的是 n-gram 模型和神經語言模型(下面介紹)
許許多nlp 應用程式基於語言模型,語言模型定義了關於自然語言中的字、字元或位元組序列的概率分布。
最早成功的語言模型基於固定長度序列的標記模型,稱為n-gram。乙個n-gram 是乙個包含n 個標記的序列。
訓練n-gram 模型是簡單的,因為最大似然估計可以通過簡單地統計每個可能的n-gram 在訓練集**現的次數來獲得。幾十年來,基於n-gram 的模型都是統計語言模型的核心模組。
對於小的n 值,模型有特定的名稱:n = 1 稱為一元語法(unigram),n = 2 稱為二元語法(bigram)及n = 3 稱為三元語法(trigram)。
神經語言模型(neural language model, nlm)是一類用來克服維數災難的語言模型,它使用詞的分布式表示對自然語言序列建模(bengio et al., 2001b)。
不同於基於類的n-gram 模型,神經語言模型在能夠識別兩個相似的詞,並且不喪失將每個詞編碼為彼此不同的能力。神經語言模型共享乙個詞(及其上下文)和其他類似詞(和上下文之間)的統計強度。模型為每個詞學習的分布式表示,允許模型處理具有類似共同特徵的詞來實現這種共享。例如,如果詞dog 和詞cat 對映到具有許多屬性的表示,則包含詞cat 的句子可以告知模型對包含詞dog 的句子做出**,反之亦然。因為這樣的屬性很多,所以存在許多泛化的方式,可以將資訊從每個訓練語句傳遞到指數數量的語義相關語句。維數災難需要模型泛化到指數多的句子(指數相對句子長度而言)。該模型通過將每個訓練句子與指數數量的類似句子相關聯克服這個問題。
參考文獻
[1]《deep learning》
[2]語言模型系列之n-gram、nplm及word2vec
[3]nlp基礎
[4]stanford nlp第四課「語言模型(language modeling)」
NLP01 NLP基礎 語言模型
本次學習是根據貪心科技的李文哲老師的語言模型課程所整理的相關筆記,並加上自己的理解。內容包括 語言模型的介紹 chain rule 以及馬爾可夫假設 unigram,bigram,ngram 估計語言模型的概率 評估語言模型 perplexity add one 平滑,add k平滑 interpo...
NLP(四) 語言模型
這是一系列自然語言處理的介紹,本文不會涉及公式推導,主要是一些演算法思想的隨筆記錄。適用人群 自然語言處理初學者,轉ai的開發人員。程式語言 python 參考書籍 數學之美 參考教程 機器讀心術之自然語言處理 對於像漢語,英語這樣的大型自然語言系統,難以構造精確的文法 不符合人類學習語言的習慣 有...
NLP 2 語言模型
馬爾科夫假設 markov assumption 乙個詞出現的概率僅依賴於它前面的乙個或幾個詞。一元語言模型 unigram 即樸素貝葉斯假設。三元語言模型 trigram 考慮乙個詞對前兩個詞的依賴關係。關於給句子加開始符與結束符的問題 加開始符應該相應地加上結束符,至於為什麼,現在還不是很理解。...