語言模型

在學習自然語言處理是,發現CTC一般會配合語言模型(Language Model),用於提升最終的性能。那麼,語言模型是什麼呢?又是如何提升性能的?

看過一些關於語言模型的介紹,知乎上這一篇文章講的稍顯通俗易懂:https://zhuanlan.zhihu.com/p/52061158

語言模型的本質就是對語句概率的建模,輸入一個語句,給出對應的概率,看看哪個語句的概率更高,更像人話。

常見的語言模型有兩種:統計語言模型(n-gram),神經網絡語言模型(RNN)

統計語言模型

n-gram 語言模型如下:
(1)當n=1時,稱爲uni-gram,P(w1,w2,,wn)=i=1nP(wi)P\left(w_{1}, w_{2}, \ldots, w_{n}\right)=\prod_{i=1}^{n} P\left(w_{i}\right)
(2)當n=2時,稱爲bi-gram, P(w1,w2,,wn)=i=1nP(wiwi1)P\left(w_{1}, w_{2}, \ldots, w_{n}\right)=\prod_{i=1}^{n} P\left(w_{i} | w_{i-1}\right)
(3)當n=3時,稱爲tri-gram, P(w1,w2,,wn)=i=1nP(wiwi2,wi1)P\left(w_{1}, w_{2}, \ldots, w_{n}\right)=\prod_{i=1}^{n} P\left(w_{i} | w_{i-2}, w_{i-1}\right)

在這種語言模型中,會用到平滑技術,那麼,平滑技術是爲了解決什麼問題?
利用n-gram生成詞的時候,由於corpus的體量和選取高頻分詞,會導致語句中的一些詞不存在,這樣,會導致語言模型計算的結果爲0,爲了避免這個問題,引入平滑技術。
常用的方法有:Laplace Smoothing,Interpolation,Kneser-Ney,。。。

常用的N-gram訓練工具有SRILM、IRSTLM、BerkeleyLM和KenLM等。目前,用的比較多的是KenLM,有點是速度快、佔用內存少。關於其使用細節,可以參考:https://zhuanlan.zhihu.com/p/84470460

神經網絡語言模型

關於神經網絡語言模型的介紹,參看上面引用的文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章