在學習NLP過程當中,語言模型使我們都要學習的一部分知識。常用的N-gram訓練工具有SRILM、IRSTLM、BerkeleyLM和KenLM等。
在使用kenlm的過程中也是遇到了許多問題。
環境的搭建:
參照博客:https://www.cnblogs.com/jasmine-Jobs/p/7214758.html
以上親測有效,但是要熟悉的知道linux環境下的各種安裝命令,因為作者當時給出的某些下載位置已經不存在
舉例詳解kenlm的原理:
參照博客:https://blog.csdn.net/asrgreek/article/details/81979194
說的非常詳細,建議自己手寫整個運算過程。
務必注意的是,按照作者給的命令運行(lmplz -o 2 --text [inputfile] --arpa [outputfile]),會出現如下錯誤:
要解決這個問題很簡單(實際上kenlm已經說明了解決方法),
rerun with --discount_fallback
所以,改寫運行命令為:lmplz -o 2 --discount_fallback --text [inputfile] --arpa [outputfile]
在運行,就能成功(bin/lmplz -o 2 --discount_fallback --text test.txt --arpa test.apra)
運行結果如下圖:
打開生成的apra文件:
正確生成與上述作者博客相對應的效果(可能大家會注意到 作者的前兩行是:ngram 1=6 ngram 2=7 和我的結果不一樣,這是因為我在test.txt中的文本中的第二行 你我 之間沒有空格,如果加上空格,就會和博客作者的效果一樣,大家也可以自己是試一下)