當前位置:成語大全網 - 新華字典 - 自然語言處理(NLP)知識整理及概述(壹)

自然語言處理(NLP)知識整理及概述(壹)

這是我在留學期間選修的課程 :natura language process。 這篇文章主要是為了大致的梳理這門課上的知識點,方便日後復習。因此,語言處理的主體對象是English。

簡單來說,語言模型就是壹個對於不同單詞出現概率的統計。

然而,對於英語來說,每個單詞可能有不同的時態和單復數等形態變化。因此,在做統計前,需要先對原始數據進行預處理和歸壹化。

分割句子後,每句話應該作為壹個元素單獨存儲。

壹般來說,常用的是 unigram, bigram 和trigram, 即以1-3 個詞作為壹個對象來統計。n 越大, 統計結果也越稀疏。壹個七八個詞的組合重復出現的概率,顯然遠低於2-3個詞的組合。 另壹方面,根據馬爾科夫鏈, 壹個單詞的出現,可以認為僅跟前壹個詞有關系,所以也沒有太大必要追求過大的n。

n-gram 是壹個重要的基礎概念, 它所提供的概率分析可以做到很多事情, 例如機器翻譯“請給我打電話”:P(“please call me”) > P("please call I ")。 又比如拼寫糾正:基於概率, “its 5pm now” → 糾正為 “it's 5pm now”

沒有比較就沒有傷害。 對於語言模型的評估, 也需要有壹個比較的對象。因此,要用兩種方法建立不同的語言模型(當然也可以對比前人的工作成果)。顯然,任意給壹個測試用的句子,如果在某壹模型中的出現概率都比較大,那麽這個模型顯然更好。 具體來說, 評估方法有兩種:

首個單詞問題 :對於壹個基於bigram或trigram的模型,在計算壹個句子的perplexity時,前1或2個單詞需要不能直接得到,依賴於句子開頭的標識符。也即是說,在訓練 n-gram 模型時, 對於每個句子,分別在開頭和結尾填充n-1個<s>。從而保證在計算perplexity的時候能夠正確地從第壹個單詞開始計算。這也是為什麽前面 sentence segmentation 的時候要將句子區別存儲的原因。

顯然,無論用來生成LM的corpus多麽龐大,總會有些單詞沒有被包含其中(稱為out of vocabulary, OOV)。 解決方法有兩種, 壹是實現設定壹個固定的字典,在訓練LM過程中,所有不在字典中的單詞統壹轉換成 token <UNK>, 另壹種是將LM中出現頻率小於n次的單詞當作 <UNK>,剩下的作為字典。 根據字典對測試數據做相同操作,就可以避免OOV的問題。

在處理完OOV問題後,還有壹個問題需要處理:所有單詞都在字典中,但是單詞的組合並沒有在LM中出現這壹情況。 此時就需要對基於bigram或trigram的LM進行smooth操作,規避這壹問題。Smoothing過程有1點需要註意,就是smooth之後的模型,其所有概率加起來,必須仍然為1。常見的smoothing方法有:

特別的,工程上最適合的應該是 stupid backoff algorithm, 這壹算法並不確保整體概率為1。僅僅是在回退時乘以系數0.4計算。即如果trigram沒有找到,就使用0.4×P(bigram), 如果bigram還是沒找到, 就是要 0.4×0.4×P(unigram)。由於OOV問題已解決,所以對於任意壹個詞,必然能計算出其概率。

相關閱讀: Large Language Models in Machine Translation