赞
踩
下载最新版本的SRILM,官方链接可能已经失效,github上有srilm-1.7.1版本,将下载的文件移至/Home。
打开终端,输入以下命令(默认目录为 /usr/share/srilm,如果要更改,需将其替换为对应的路径):
mkdir /usr/share/srilm
mv srilm-1.7.1.tar.gz /usr/share/srilm/
cd /usr/share/srilm
tar xvf srilm-1.7.1.tar.gz
打开Makefile文件
sudo gedit Makefile
修改Makefile:在第7行中,查找以下内容
# SRILM = /home/speech/stolcke/project/srilm/devel
删除#并替换为此行:
SRILM = /usr/share/srilm
保存并关闭文件。返回终端,使用超级用户权限sudo。如果遇到错误tcsh: command not found,请在再次尝试之前键入sudo apt-get install tcsh
。如果您使用的是Ubuntu 32位:
sudo tcsh
sudo make NO_TCL=1 MACHINE_TYPE=i686-gcc4 World
sudo ./bin/i686-gcc4/ngram-count -help
或者,如果它是Ubuntu 64位:
sudo tcsh
sudo make NO_TCL=1 MACHINE_TYPE=i686-m64 World
sudo ./bin/i686-m64/ngram-count -help
vi ~/.bashrc
SRILM=/usr/share/srilm
MACHINE_TYPE=i686-m64
export PATH=.:$PATH:$SRILM/bin/$MACHINE_TYPE:$SRILM/bin
source ~/.bashrc
ngram-count -help
下载并查看训练集和测试集
### 下载训练集和测试集 $ wget http://idiom.ucsd.edu/~rlevy/teaching/2015winter/lign165/lectures/lecture13/toy-example/corpus.txt $ wget http://idiom.ucsd.edu/~rlevy/teaching/2015winter/lign165/lectures/lecture13/toy-example/test_corpus.txt ### 查看训练集 $ cat corpus.txt dogs chase cats dogs bark cats meow dogs chase birds cats chase birds dogs chase the cats the birds chirp ### 查看测试集 $ cat test_corpus.txt cats meow dogs chase the birds ### 统计词典文件并查看 $ ngram-count -text corpus.txt -order 2 -write1 corpus_1gram.count -write2 corpus_2gram.count $ cat corpus_1gram.count <s> 7 dogs 4 chase 4 cats 4 </s> 7 bark 1 meow 1 birds 3 the 2 chirp 1 $ cat corpus_2gram.count <s> dogs 4 <s> cats 2 <s> the 1 dogs chase 3 dogs bark 1 chase cats 1 chase birds 2 chase the 1 cats </s> 2 cats meow 1 cats chase 1 bark </s> 1 meow </s> 1 birds </s> 2 birds chirp 1 the cats 1 the birds 1 chirp </s> 1 ### 统计词典文件,输出为模型文件格式 $ ngram-count -text corpus.txt -debug 2 -order 2 -addsmooth 0 -lm corpus.lm corpus.txt: line 8: 7 sentences, 20 words, 0 OOVs 0 zeroprobs, logprob= 0 ppl= 1 ppl1= 1 using AddSmooth for 1-grams using AddSmooth for 2-grams discarded 1 2-gram contexts containing pseudo-events writing 10 1-grams writing 18 2-grams ### 计算测试集两个句子的困惑度 $ ngram -lm corpus.lm -ppl test_corpus.txt -debug 2 reading 10 1-grams reading 18 2-grams cats meow p( cats | <s> ) = [2gram] 0.285714 [ -0.544068 ] p( meow | cats ...) = [2gram] 0.25 [ -0.60206 ] p( </s> | meow ...) = [2gram] 1 [ 0 ] 1 sentences, 2 words, 0 OOVs 0 zeroprobs, logprob= -1.14613 ppl= 2.41014 ppl1= 3.74166 dogs chase the birds p( dogs | <s> ) = [2gram] 0.571429 [ -0.243038 ] p( chase | dogs ...) = [2gram] 0.75 [ -0.124939 ] p( the | chase ...) = [2gram] 0.25 [ -0.60206 ] p( birds | the ...) = [2gram] 0.5 [ -0.30103 ] p( </s> | birds ...) = [2gram] 0.666667 [ -0.176091 ] 1 sentences, 4 words, 0 OOVs 0 zeroprobs, logprob= -1.44716 ppl= 1.94729 ppl1= 2.30033 file test_corpus.txt: 2 sentences, 6 words, 0 OOVs 0 zeroprobs, logprob= -2.59329 ppl= 2.10941 ppl1= 2.70529 从训练结果文件你是不是已经看出来,n-gram模型就是数数,以前ZW的领导一听我跟同事说没啥神奇的就是数数,还不爱听,估计是怕我把真话说了,就没法装大尾巴狼了。其实就是那个二锅头兑的那个白开水。预测的时候就是做做四则运算。显然文件corpus_1gram.count保存的是所有1-gram词语的频次,文件corpus_2gram.count保存的是所有2-gram词组的频次。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。