使用kenLM訓練語言模型
阿新 • • 發佈:2019-02-16
算是我自己安裝使用過程的一個記錄,中間也遇到一些問題。
下載與安裝
下載
wget -O - https://kheafield.com/code/kenlm.tar.gz |tar xz
安裝
下載之後在kenlm目錄下有一個readme.md檔案。裡面介紹了相關操作。按步驟輸入如下命令:
mkdir -p build
cd build
cmake ..
這一步出瞭如下問題:
CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message):
Unable to find the requested Boost libraries.
說明沒有安裝Boost庫。
安裝Boost
tar --bzip2 -xf boost_1_67_0.tar.bz2
cd boost_1_67/
./bootstrap.sh --prefix=/usr/local#引數制定安裝的位置
sudo ./b2 install --with=all#編譯安裝所有的庫,根據前面設定的安裝位置的不同,這裡可能需要使用sudo許可權
安裝完成。重新執行cmake ..
,出現如下資訊:
-- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)
-- Could NOT find LibLZMA (missing: LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
採用如下命令解決:
sudo apt install libbz2-dev
sudo apt install liblzma-dev
然後重新執行cmake ..
命令。
繼續安裝:
make -j 4
到這裡,安裝就結束了。
訓練英語語言模型
資料下載
開始訓練
在build目錄下執行如下命令:
bin/lmplz -o 3 --verbose_header --text ../text-18-03/text_18-03-AU.txt --arpa MyModel/log.arpa
上述引數需要根據自己的檔案位置來調整。各個引數的含義:
-o n:最高採用n-gram語法
-verbose_header:在生成的檔案頭位置加上統計資訊
--text text_file:指定存放預料的txt檔案
--arpa:指定輸出的arpa檔案
在python中使用訓練的模型
安裝kenlm的python包
pip3 install https://github.com/kpu/kenlm/archive/master.zip
將arpa檔案轉換為binary檔案
bin/build_binary -s log.arpa log.bin
使用訓練的模型預測句子的概率
#encoding:utf8
import kenlm
model = kenlm.Model('log.arpa')
print(model.score('this is a sentence.',bos = True,eos = True))
在上述小程式中,把log.arpa
替換成為log.bin
是一樣的結果,但是速度會加快。