該套件包含為 SRILM 語言模型產生 Perl 和 Python 包裝器的檔案。
GNU 使
簡化的包裝器和介面產生器 (SWIG)
本機 Python 和/或 Perl 安裝
SRILM 工具包 (v1.7.1)。如果您有舊版的 SRILM,例如 1.5.x 系列,那麼您應該使用old_srilm
分支。請注意,SRILM 應編譯為位置無關程式碼。您可以在編譯 SRILM 時使用指令MAKE_PIC=yes make
來完成此操作。
修改包含的 Makefile 頂部的以下環境變數:
SRILM_LIBS
:包含 SRILM 函式庫的目錄
SRILM_INC
:包含 SRILM 頭檔的目錄
PYTHON_INC
:包含 python 頭檔的目錄
PERL_INC
:包含 perl 頭檔的目錄
若要建立 Python 模組,請在此目錄中執行“make python”。將_srilm.so
和srilm.py
複製到要使用 python 模組的目錄。您可以執行包含的test.py
腳本來檢查編譯後的模組是否正常運作。 test.py 的輸出應如下所示:
1. Number of n-grams: There are 11868 unigrams in this LM There are 59481 bigrams in this LM There are 16744 trigrams in this LM There are 13787 4-grams in this LM There are 12082 5-grams in this LM 2. N-gram log probabilities: p('good') = -3.49373698235 p('of the') = -0.558740794659 p('nitin madnani') = -99.0 p('there are some') = -0.985605716705 p('do more about your') = -0.469523012638 p('or whatever has yet to') = -0.53226429224 3. Sentence log probabilities and perplexities: p('there are some good') = -9.85836982727 ppl('there are some good') = 93.6858444214 4. OOvs: nOOVs('there are some foobar') = 1 5. Corpus log probabilties and perplexities: Logprob for the file test.txt = -33.6016654968 Perplexity for the file test.txt = 94.7476806641
若要建立 Perl 模組,請在此目錄中執行make perl
。將srilm.so
和srilm.pm
複製到您選擇的目錄。執行附帶的 Perl 腳本「test.pl」來測試編譯的模組是否正常運作。輸出應該與上面相同。
注意:這僅在 OS X El Capitan 上進行了測試,並且僅使用內建版本的 python (2.7.10) 和 perl (5.18)。
查看macosx
分支。
確保您已編譯 SRILM 函式庫 ( MAKE_PIC=yes make
)。
前往包含 SRILM 頭檔的目錄 ( $SRILM/include
),開啟File.h
並註解掉#include "zio.h"
行。這是必要的,因為儘管 SRILM 在 OS X 上應該將zopen()
函數重命名為my_zopen()
因為預設安裝了zlib
,但它似乎不起作用。所以,這是一個很棘手的解決方法。
修改Makefile.osx
頂部的以下環境變數:
SRILM_LIBS
:包含 SRILM 函式庫的目錄
SRILM_INC
:包含 SRILM 頭檔的目錄
重要提示:請勿變更PYTHON_INC
和PERL_INC
變量,因為它們被設定為 OS X El Capitan 的預設值。
若要編譯 python 模組,請執行make -f Makefile.osx python
並編譯 perl 模組,請執行make -f Makefile.osx perl
。請注意,編譯的模組僅適用於預設的 OS X python 和 perl 解釋器,即/usr/bin/python
和/usr/bin/perl
。
您應該能夠運行/usr/bin/python test.py
和/usr/bin/perl test.pl
來測試模組是否工作並在 Linux 情況下獲得相同的輸出。
檔案test.pl
和test.py
清楚地說明了用法。