在學習自然語言處理是,發現CTC一般會配合語言模型(Language Model),用於提升最終的性能。那麼,語言模型是什麼呢?又是如何提升性能的?
看過一些關於語言模型的介紹,知乎上這一篇文章講的稍顯通俗易懂:https://zhuanlan.zhihu.com/p/52061158
語言模型的本質就是對語句概率的建模,輸入一個語句,給出對應的概率,看看哪個語句的概率更高,更像人話。
常見的語言模型有兩種:統計語言模型(n-gram),神經網絡語言模型(RNN)
統計語言模型
n-gram 語言模型如下:
(1)當n=1時,稱爲uni-gram,
(2)當n=2時,稱爲bi-gram,
(3)當n=3時,稱爲tri-gram,
在這種語言模型中,會用到平滑技術,那麼,平滑技術是爲了解決什麼問題?
利用n-gram生成詞的時候,由於corpus的體量和選取高頻分詞,會導致語句中的一些詞不存在,這樣,會導致語言模型計算的結果爲0,爲了避免這個問題,引入平滑技術。
常用的方法有:Laplace Smoothing,Interpolation,Kneser-Ney,。。。
常用的N-gram訓練工具有SRILM、IRSTLM、BerkeleyLM和KenLM等。目前,用的比較多的是KenLM,有點是速度快、佔用內存少。關於其使用細節,可以參考:https://zhuanlan.zhihu.com/p/84470460
神經網絡語言模型
關於神經網絡語言模型的介紹,參看上面引用的文章。