语言模型训练工具srilm

srilm是著名的约翰霍普金斯夏季研讨会(Johns Hopkins Summer Workshop)的产物,诞生于1995年,由SRI实验室的Andreas Stolcke负责开发维护。
srilm支持语言模型的估计和评测。估计是从训练数据(训练集)中得到一个模型,包括最大似然估计及相应的平滑算法;而评测则是从测试集中计算其困惑度。

1. 生成n-gram统计文件

ngram-count -vocab train.dict -text train.txt -order 3 -write train.count -unk

其中,-vocab train.dict中 train.dict为词典文件,每行一个词,格式如下:

科学
技术
科技
是
实现
生产力
第一
需要

-text train.txt 中 train.txt为语料库文件,每行中的词用空格隔开,表示分词结果,格式如下:

科学 技术 是 第一 生产力
实现 现代化 需要 科学 技术 因为 它 是 第一 生产力

-order 最大的n元模型,3表示unigram,bigram,trigram
-write train.count 统计文件写到train.count中
-unk 表示没有在词典中的词用<unk>表示
train.count中的内容如下(每行格式为:ngram 词频):

<s> 2
<s> 科学  1
<s> 科学 技术   1
<s> 实现  1
<s> 实现 <unk>    1
科学  2
科学 技术   2
科学 技术 是 1
科学 技术 <unk> 1
技术  2
技术 是    1
技术 是 第一 1
技术 <unk>    1
技术 <unk> <unk>  1
是   2
是 第一    2
是 第一 生产力    2
第一  2
第一 生产力  2
第一 生产力 </s> 2
生产力 2
生产力 </s>    2
</s>    2
实现  1
实现 <unk>    1
实现 <unk> 需要 1
<unk>   3
<unk> 需要    1
<unk> 需要 科学 1
<unk> <unk> 1
<unk> <unk> 是   1
<unk> 是 1
<unk> 是 第一  1
需要  1
需要 科学   1
需要 科学 技术    1

2. 生成语言模型

ngram-count  -vocab train.dict  -read train.count  -order 3 -lm train.lm -interpolate -unk

其中,-read train.count 读取上一步生成的统计文件
-lm train.lm 生成最高为trigram的语言模型train.lm
-interpolate 利用差值算法
生成的语言模型train.lm为ARPA格式的语言模型,如下:

\data\
ngram 1=11
ngram 2=13
ngram 3=2

\1-grams:
-0.9542425  </s>
-99 <s> -0.39794
-0.7781513  <unk>   -0.4259686
-1.255273   实现  -0.2218487
-0.9542425  技术  -0.3357921
-0.9542425  是   -0.4259687
-0.9542425  生产力 -0.4259687
-0.9542425  科学  -0.4259687
-1.255272   科技
-0.9542425  第一  -0.4259687
-1.255273   需要  -0.2498775

\2-grams:
-0.4771213  <s> 实现
-0.4771213  <s> 科学
-0.60206    <unk> <unk>
-0.60206    <unk> 是
-0.60206    <unk> 需要
-0.30103    实现 <unk>
-0.4771213  技术 <unk>
-0.4771213  技术 是
-0.1760913  是 第一    0
-0.1760913  生产力 </s>
-0.1760913  科学 技术
-0.1760913  第一 生产力  0
-0.30103    需要 科学

\3-grams:
-0.1760913  第一 生产力 </s>
-0.1760913  是 第一 生产力

\end\

上面的两个步骤可以直接生成,如下:

ngram-count  -vocab train.dict  -text train.txt  -order 3 -lm train2.lm -interpolate -unk

3. 计算测试数据的困惑度

上面已经生成了语言模型train.lm,利用它来测试数据的困惑度

ngram -ppl test.txt  -order 3 -lm train.lm -unk -debug 2

测试数据的格式同语料数据,每个句子内部用空格隔开表示分词。
结果如下:

reading 11 1-grams
reading 13 2-grams
reading 2 3-grams
科技 人员 需要 科学 技术
    p( 科技 | <s> )   = [1gram] 0.02222224 [ -1.653212 ]
    p( <unk> | 科技 ...)  = [1gram] 0.1666667 [ -0.7781513 ]
    p( 需要 | <unk> ...)  = [2gram] 0.25 [ -0.60206 ]
    p( 科学 | 需要 ...)     = [2gram] 0.5 [ -0.30103 ]
    p( 技术 | 科学 ...)     = [2gram] 0.6666666 [ -0.1760913 ]
    p( </s> | 技术 ...)   = [1gram] 0.05128205 [ -1.290035 ]
1 sentences, 5 words, 0 OOVs
0 zeroprobs, logprob= -4.800579 ppl= 6.310976 ppl1= 9.122542

我们 国家 需要 科技 的 大力 发展
    p( <unk> | <s> )    = [1gram] 0.06666666 [ -1.176091 ]
    p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
    p( 需要 | <unk> ...)  = [2gram] 0.25 [ -0.60206 ]
    p( 科技 | 需要 ...)     = [1gram] 0.03125004 [ -1.505149 ]
    p( <unk> | 科技 ...)  = [1gram] 0.1666667 [ -0.7781513 ]
    p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
    p( <unk> | <unk> ...)   = [2gram] 0.25 [ -0.60206 ]
    p( </s> | <unk> ...)    = [1gram] 0.04166668 [ -1.380211 ]
1 sentences, 7 words, 0 OOVs
0 zeroprobs, logprob= -7.247843 ppl= 8.053421 ppl1= 10.84941
file test.txt: 2 sentences, 12 words, 0 OOVs
0 zeroprobs, logprob= -12.04842 ppl= 7.254402 ppl1= 10.09335

参考

  1. https://blog.csdn.net/u011982340/article/details/39474857
  2. http://www.cnblogs.com/whuqin/p/7286807.html
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343