|
发表于 2015-7-21 18:55:18
|
显示全部楼层
下面是我查找到的Sunpinyin的语言模型生成步骤:
训练和构建语言模型的步骤:
首先使用 mmseg(最大正向分词),根据词表,对语料库进行分词,并将词的 ID 序列输出到临时文件中。
然后使用 ids2ngram,对所有 3 元组出现的次数进行统计,并输出到临时文件中。例如下面的句子:ABCEBCA。得到的3元列包括:(<S> A B), (A B C), (B C E) ... ( B C A), (C A '。'), (A '。' </S>)。<S>和</S>分别表示句首和句尾。
使用 slmbuild 来构造一个 back-off 的 trigram 语言模型,但是未经裁剪。
使用 slmprune 对刚输出的 trigram 语言模型进行剪裁,使用的算法是基于熵的剪裁算法。
使用 slmthread 对剪裁后的语言模型进行线索化,加快 back-off(回退)查找的速度。将最终的结果输出到 lm_sc.t3g。
$ make slm_trigram3:这个和上面的类似,不同的是使用 slmseg 进行分词,它借助刚刚生成的基于最大正向分词得到的语言模型,对语料库进行重新分词,这样可以进一步提高语言模型的精确程度。
$ make lexicon3: 根据生成语言模型中的 unigram 数据,对词表进行处理,得到一个支持不完全拼音的词库文件。
问题
1) 亲爱的程序员大大,华宇有相关类似的语料库说明没有。
2) //索引项内容
typedef struct tagGRAM_INDEX //Bigram, Trigram索引
{
int word_pos; //在词表中的位置
int word_freq; //该词词频
int item_index; //项所处于的位置
int start_count; //该项起头的数目
}GRAM_INDEX; 这个结构里面start_count是什么意思,有相关的说明没 |
|