SRILMのインストール手順
1.SRILMのインストール
今回はCygwin環境にSRILMをインストールします。
Cygwinの設定は前回の記事(Windows環境のPythonで形態素解析器 -- ChaSen -- を使う方法)を参照
SRILMのダウンロードはこちらから(今回は srilm-1.7.3.tar.gz を使用しています。)
Cygwin64の直下に「srilm」というフォルダを作成
cd /
mkdir srilm
cd srilm
作成したフォルダにダウンロードしたsrilm-1.7.3.tar.gzをコピーする。
そして、作成したフォルダ内でsrilm-1.7.3.tar.gzを解凍する。
tar zxvf srilm-1.7.3.tar.gz
解凍したフォルダ内の「Makefile」を開き、次の行を見つける。
# SRILM = /home/speech/stolcke/project/srilm/devel
見つけた行を次のように書き換え、保存する。
SRILM = /srilm
Cygwinに戻り、次のように実行する。
make
2.SRILMの実行
「ngram」や「ngram-count」の実行ファイルがあるフォルダに移動する。
cd bin/cygwin64/
次のように実行する。
./ngram-count -text [input_corpus] -lm [output_language_model] -order 3 -write [output_ngram]
input_corpus:入力するファイル(文章から単語をスペースで区切ったもの)
output_language_model:出力する言語モデルのファイル名
output_ngram:出力するN-gramのファイル名
コマンドプロンプトでSRILMを実行
環境変数の変更方法は前回の記事(Windows環境のPythonで形態素解析器 -- ChaSen -- を使う方法)を参照
Windowsのコマンドプロンプトを開く。
次のように実行する。
C:\cygwin64\srilm\bin\cygwin64\ngram-count -text [input_corpus] -lm [output_language_model] -order 3 -write [output_ngram]
Cygwinの時と同じ結果が出力されればOK。
PythonでSRILMを実行
ソースコードを以下に載せております。
import subprocess
import os
def srilm(srilm_path, input_corpus, output_language_model, output_ngram):
path = os.getcwd().replace(os.sep,'/')+"/" # 実行中のパス取得
cmd = "{0} -text {1} -lm {2} -order 3 -write {3}".format(srilm_path, path+input_corpus, path+output_language_model, path+output_ngram)
proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
if __name__ == '__main__':
srilm_path = "C:/cygwin64/srilm/bin/cygwin64/ngram-count"
input_corpus = "corpus.txt"
output_language_model = "lm.txt"
output_ngram = "count.txt"
srilm(srilm_path, input_corpus, output_language_model, output_ngram)
コマンドプロンプトで実行した時と同じ結果が出力されればOK。
以上、Windows環境のPythonでSRILMを使う方法でした。
参考にしたページ